This is a pre-production deployment of Warehouse, however changes made here WILL affect the production instance of PyPI.
Latest Version Dependencies status unknown Test status unknown Test coverage unknown
Project Description

Python implementation of the Sieve email filtering language (RFC 5228).

https://github.com/garyp/sifter

FEATURES

  • Supports all of the base Sieve spec from RFC 5228, except for features still listed under TODO below
  • Extensions supported:
    • regex (draft-ietf-sieve-regex-01)

EXAMPLE

import email
import sifter.parser
rules = sifter.parser.parse_file(open('my_rules.sieve'))
msg = email.message_from_file(open('an_email_to_me.eml'))
msg_actions = rules.evaluate(msg)

In the above example, msg_actions is a list of actions to apply to the email message. Each action is a tuple consisting of the action name and action-specific arguments. It is up to the caller to manipulate the message and message store based on the actions returned.

WARNINGS

  • No thought has been given yet to hardening against malicious user input. The current implementation is aimed at users that are running their own sieve scripts.
  • The current implementation is not optimized for performance, though hopefully it’s not too slow for normal inputs.

TODO

In rough order of importance:

  • An example adaptor that provides Unix LDA behavior using sieve for filtering
  • Base spec features not yet implemented:
    • encoded characters (section 2.4.2.4)
    • multi-line strings (section 2.4.2)
    • bracketed comments (section 2.3)
    • message uniqueness (section 2.10.3)
    • envelope test (section 5.4)
    • handle message loops (section 10)
    • limit abuse of redirect action (section 10)
    • address test should limit allowed headers to those that contain addresses (section 5.1)
  • Make sure character sets are actually handled according to the spec
  • Make string parsing comply with the grammar in section 8.1 and the features described in section 2.4.2
  • Check that python’s email.message implements header comparisons the same way as the sieve spec
  • Make sure regular expressions are actually handled according to the extension spec
  • Add support for various extensions:
    • variables (RFC 5229)
    • externally stored lists (draft-melnikov-sieve-external-lists)
    • body (RFC 5173)
    • relational (RFC 5231)
    • subaddress (RFC 5233)
    • copy (RFC 3894)
    • environment (RFC 5183)
    • date and index (RFC 5260)
    • editheader (RFC 5293)
    • ihave (RFC 5463)
    • mailbox metadata (RFC 5490)
    • notifications (RFC 5435), mailto notifications (RFC 5436), xmpp notifications (RFC 5437)
Release History

Release History

0.1

This version

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

Download Files

Download Files

TODO: Brief introduction on what you do with files - including link to relevant help section.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
sifter-0.1.tar.gz (16.6 kB) Copy SHA256 Checksum SHA256 Source Sep 28, 2011

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS HPE HPE Development Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting