2.1.9 Sieve Mail Filtering Language (sieve)

NOTE: This charter is a snapshot of the 63rd IETF Meeting in Paris, France. It may now be out-of-date.

Last Modified: 2005-07-06


Cyrus Daboo <daboo@isamet.com>
Alexey Melnikov <alexey.melnikov@isode.com>

Applications Area Director(s):

Ted Hardie <hardie@qualcomm.com>
Scott Hollenbeck <sah@428cobrajet.net>

Applications Area Advisor:

Scott Hollenbeck <sah@428cobrajet.net>

Mailing Lists:

General Discussion: ietf-mta-filters@imc.org
To Subscribe: ietf-mta-filters-request@imc.org
In Body: body=subscribe
Archive: http://www.imc.org/ietf-mta-filters/mail-archive/

Description of Working Group:

The sieve mail filtering language specified in RFC 3028 has now been
implemented in a wide variety of user agents (UAs), mail delivery
(MDAs), and mail transfer agents (MTAs). Several extensions have been
specified (RFCs 3431, 3598, 3685, 3894) and have also been widely
implemented. Several additional sieve extensions have been defined in
various internet-drafts.

All of these documents are individual submissions; up to this point
work on sieve has been done informally and not under the auspices of
any IETF working group.

The sieve working group is being chartered to:

(1) Revise the base sieve specification, RFC 3028, with the intention
moving it to draft standard. Substantive additions or revisions to the
base specification are out of scope of this working group. However, the
need to loosen current restrictions on side effects of tests as well as
the need for a normative reference to the newly-defined comparators
registry may necessitate a recycle at proposed.

(2) Produce updated sieve relational (RFC 3431), subaddress (RFC 3598),
spamtest/virustest (RFC 3685), and copy (RFC 3894) extension
specifications, again with the intention of making a move to
draft standard possible. It may be necessary to recycle some or all
of these documents at proposed, depending on the scope of any changes.

(3) Finalize and publish the sieve extensions as proposed standards:

(a) Variables (draft-homme-sieve-variables-04.txt)
(b) Vacation action (draft-showalter-sieve-vacation-05.txt)
(c) Message body tests (draft-degener-sieve-body-02.txt)
(d) Regular expressions (draft-murchison-sieve-regex-07.txt)
(e) MIME part tests (draft-daboo-sieve-mime-00.txt)
(f) Notification action (draft-martin-sieve-notify-02.txt)
(g) IMAP flags (draft-melnikov-sieve-imapflags-06.txt)
(h) Header editing actions (draft-degener-sieve-editheader-01.txt)
(i) Reject before delivery (draft-elvey-refuse-sieve-01.txt)

Additional drafts may be added this list, but only via a charter
revision. There must also be demonstrable willingness in the sieve
development community to actually implement a given extension before
it can be added to this charter.

Some aspects of sieve have complex internationalization issues; the
working group will seek out internationalization expertise as needed
complete its work.

Goals and Milestones:

Done  Submit revised variables draft.
Done  Submit revised vacation draft.
Done  WG last call for variables draft.
Done  Initial submission of RFC 3028bis.
Dec 04  WG last call for vacation draft.
Jan 05  WG last call for RFC 3028bis.
Done  Initial submission of revised relational draft.
Done  Initial submission of revised subaddress draft.
Jan 05  Submit variables draft to IESG.
Jan 05  Submit vacation draft to IESG.
Done  Initial submission of revised spamtest/virustest draft.
Done  Submit revised editheader draft.
Done  Submit revised imapflags draft.
Feb 05  Submit RFC 3028bis to IESG.
Feb 05  WG last call of revised relational draft.
Feb 05  WG last call of revised subaddress draft.
Feb 05  WG last call of revised spamtest/virustest draft.
Done  Submit revised body test draft.
Feb 05  Submit revised relational draft to IESG.
Feb 05  Submit revised subaddress draft to IESG.
Done  WG last call for editheader draft.
Done  Submit revised reject before delivery draft.
Feb 05  Submit revised spamtest/virustest draft to IESG.
Feb 05  WG last call for imapflags draft.
Mar 05  Submit revised notification action draft.
Done  WG last call for body test draft.
Mar 05  WG last call for reject before delivery draft.
Mar 05  Submit editheader draft to IESG.
Mar 05  Submit imapflags draft to IESG.
Apr 05  Submit revised MIME part tests draft.
Apr 05  WG last call for notification action draft.
Apr 05  Submit body test draft to IESG.
Apr 05  Submit revised reject before delivery draft to IESG.
May 05  Submit notification action draft to IESG.
May 05  WG last call for MIME part tests draft.
May 05  Create list of core sieve features; collect implementation information for interoperability report.
Jun 05  Submit MIME part tests draft to IESG.


  • draft-ietf-sieve-variables-04.txt
  • draft-ietf-sieve-spamtestbis-01.txt
  • draft-ietf-sieve-body-02.txt
  • draft-ietf-sieve-editheader-01.txt
  • draft-ietf-sieve-imapflags-01.txt
  • draft-ietf-sieve-rfc3598bis-00.txt
  • draft-ietf-sieve-3431bis-01.txt
  • draft-ietf-sieve-vacation-02.txt
  • draft-ietf-sieve-3028bis-04.txt
  • draft-ietf-sieve-refuse-reject-00.txt

    No Request For Comments

    Current Meeting Report

    SIEVE WG meeting, August 2nd, 2005 Meeting Notes, SIEVE WG, Tuesday, August 2nd, 2005, 18:15-19:45.


    Thanks to Pete Resnick and Tony Finch for taking Jabber notes.
    Thanks to Dave Cridland for helping out with slides.

    The WG had an 1:30 minutes long meeting on Tuesday, August 2nd. Several WG members have participated through Jabber (Cyrus, Ned, Matthew, Ken).

    TOPIC: Base spec discussion (Alexey)
    WGLC for the base spec has ended. There were some minor editorial comments on the mailing list, in particular suggestion to change "Syntax:" to "Usage:" everywhere in the document. Philip has also pointed out that he has to change "header" to "header field" to use terminology consistent with RFC 2822.

    TOPIC: Vacation draft (Alexey)
    Vacation draft is ready for WGLC. Jeffrey Hutzelman have done a security review and didn't find any issues.

    TOPIC: Variables draft (Kjetil)
    Recent changes include:
    - allow sub-namespaces to be all-numeric (e.g. ${foo.1.2})
    - allow to SET variables in namespaces that allow for modifications
    - ${0} is now referencing the entire match, not the number of matching groups
    - new modifiers :quotewildcard and :quoteregex.
    One remaining issue is whether regex related text (i.e. :quoteregex) should be moved to the Regex draft.
    Alexey was trying to convince everybody that dependency on a document-which-might-take-arbitrary-long-time is a bad thing, in particular because Regex hasn't addressed I18N issues yet. General consensus from people in the room to move :quoteregex to Regex draft, Ned agrees in Jabber.

    Q: Security review of Variables has pointed out issue with silent truncation of variables.
    A: There is a new text in Security Considerations section. Sorry, this should have been listed in the "recent changes".
    Philip has repeated the argument that Ned has made on the mailing list: if there is a language facility to test if a truncation has occurred, nobody would use it anyway. Jeffrey has replied that he is Ok with not having a test for truncation, as long as the document discusses the issue. The room agrees.

    TOPIC: Body draft. (Philip)
    A new revision was published as a result of WGLC. Recent changes include:
    1). Charset wording aligned with base spec
    2). Clarified the implicit content-type rules.
    New issue: what does it mean to match against non-textual content? Matching is defined for Unicode characters, so what would it mean to convert a sound or image to Unicode?
    Alexey has pointed out that IMAP SEARCH only required to work on text/* parts, suggested to do the same.
    Philip has mentioned that we could assume that bytes are in iso-8859-1. Many people in the room disagree.
    David Cridland has suggested that comparators could control which mime types could be searched with them.
    William Leibzon has pointed out that it would be desirable to be able to search a MIME prolog and epilogue, several people seemed to agree.
    Pete Resnick has asked Ned about default charset for prolog/epilog. Ned has replied that it is US-ASCII, as defined in RFC 2822.
    Cyrus (in Jabber) has suggested to use a separate MIME extension(s) to work with MIME bodyparts properly.
    Alexey has suggested that maybe we should drop :content, this will certainly make the document simpler.
    Cyrus has suggested to leave :content as a simple/quick short time solution.
    Philip has asked the attendees if anybody but Sendmail have implemented Body. David said that Exim might.

    TOPIC: Edit header draft. (Philip)
    Philip thought that it should be ready for IETF wide LC, chairs agreed.
    Scott Hollenbeck reinforced that "writeup" meant that chairs were going to shepherd the document as per new IESG rules. Chaired confirmed that they were aware of that.

    TOPIC: Spamtest draft. (Alexey, using slides from Cyrus)
    Recent changes include:
    - removing "-1" from :percent test and a new text explaining how to test that spam checks hasn't been performed on the message.
    - New capability "spamtestplus" was added as the result.
    The document should be ready for WGLC.

    TOPIC: IMAPflags draft. (Alexey)
    The latest revision got published in spring. It added back internal variable (so that the extension can be used without "Variables", e.g. in Cyrus Sieve), syntax is backward compatible with the old IMAPFlags (revision -03) as implemented by CMU. Cyrus has confirmed that the document should be ready for WGLC, Ned agreed.

    TOPIC: Refuse/Reject draft. (Alexey)
    He thinks that the document is ready for WGLC. Matthew (in jabber) has reminded him that there is one open issue: what should happen if "refuse" is called more than once for a message. This needs to be discussed on the mailing list (can be done during WGLC).
    Philip has mentioned that he didn't like the text on joe jobs in the Introduction/Abstract sections. Alexey has asked for specific suggestions, which Philip has promised to provide on the mailing list. Cyrus should issue a WGLC for the document.

    TOPIC: Date and Index extensions. (Chris on behalf of Ned)
    It adds date test. Can search for a date at the end of any header, so this works with Date, Received and even X400-recieved. Ned has added a comment in Jabber saying that the date stuff was structured the way it was to avoid requiring variables for everything.
    It is possible to test year, month, day, julian (day number on julian calendar), hour, minute, second, iso8601, or timezone. There is also a test for the current date/time. Ned has asked the WG if any test is missing or should be removed. Cyrus suggested to add "day-of-week". Somebody else has suggested "day-of-year".
    Also seconds should be allowed to have value 60.
    Tony Finch has suggested to use modified Julian day, which starts counting from the mid-19thc (1863 i think)and days start at midnight, not midday as in the Julian day. Ned agreed with the change.
    Cyrus has brought the question about :zone and daylight savings.
    Ned/Pete said that zones in the document are numeric, so this shouldn't be an issue.
    Ned also pointed out that if timezone is not explicitly specified, than a local timezone is assumed and things should work as expected.
    Alexey mentioned that the document is not in WG Charter, but it is Ok to discuss it on the mailing list. Ned replied that he didn't really care.

    TOPIC: MIME parts tests. (Tony Hansen)
    "for.every.part" construct allows to iterate through the MIME body parts, there is a new "break" construct as well. Inside the iterator loop the current message is the body part. Alexey has asked if one can use "fileinto" on a body part. It is not currently clear, many other Sieve extensions can also be meaningless.
    The document also defines a new MIME test, which allows to examine MIME headers/parameters for the current part. If the test is used outside of a loop, the test return true if any MIME part has a particular header/parameter.
    Two other extensions are also described in the draft: body part replacement action (it allows to replace a body part with a text/plain string) and enclose action (encapsulate the entire message in a message/rfc822) Alexey suggested that replace and enclose can be combined.

    Q: Is this worth doing?
    Alexey: Seems complex, but worth doing. This is in our Charter.

    Suggestion to make this Experimental. Alexey replied that we don't need to decide on Experimental versa Standard Track until we get to WGLC. We might get some implementations before the WGLC. Ned commented in Jabber that this might be very difficult to implement for Sun. Jeffrey has asked Ned if making iterator separate from MIME test would help. Ned said that it would.

    TOPIC: Subaddress draft. (Alexey)
    There were some minor editorial issues identified during WGLC, also the document is not quite clear that both prefix and suffix forms are allowed, also that multiple characters can be used as a delimiter. Ken needs to submit a new revision before this can be sent off to IESG.

    TOPIC: Editor for SMTP AUTH envelope tests.
    WG needs an editor for SMTP AUTH test (this can't be a part of the base document, as we don't want to have a normative reference to SMTP AUTH document). Ned agreed to take this one.

    TOPIC: Notify draft.
    Alexey has asked the WG about the state of Notify draft. Barry will start a thread about it, so that the WG can figure out which notification mechanisms should be present and which can be dropped.

    TOPIC: Relational draft.
    Barry has asked about the state of Relational draft. Alexey thinks that it is ready for WGLC.

    Action items:
    Philip to publish a new revision of base spec to address editorial comments raised during WGLC.
    Jeffrey should post a short message about security review of the Vacation document.
    Ned to post an update to vacation, if he has any changes pending.
    Ned to repost his old message about addressing I18N in Regex.
    Philip to post a new revision of Body to address searching of non-textual bodyparts.
    Alexey/Cyrus to send Edit header to IESG (do writeup, etc.)
    Alexey to issue WGLC for Spamtest.
    Cyrus to issue WGLC for IMAPFlags.
    Cyrus to issue WGLC for Refuse/Reject.
    Alexey/Cyrus to issue WGLC for Relational.
    Kjetil to fix editorial issues in the Variables draft.
    Ken to address comments raised during WGLC for Subaddress draft.
    Ken to submit a new revision of Regex to incorporate Sieve :quoteregex text.
    Tony/Cyrus to publish combined MIME test draft.
    Ned to create a new draft for testing SMTP AUTH.
    Barry to revive the Notify draft.
    Alexey/Cyrus to propose updated WG milestones on the mailing list.


    Agenda/document status
    Sieve Date and Index
    Sieve Loops