draft-ietf-sieve-mime-loop-07.txt   draft-ietf-sieve-mime-loop-08.txt 
Internet Engineering Task Force T. Hansen Internet Engineering Task Force T. Hansen
Internet-Draft AT&T Laboratories Internet-Draft AT&T Laboratories
Intended status: Standards Track C. Daboo Intended status: Standards Track C. Daboo
Expires: May 7, 2009 Apple Inc. Expires: May 24, 2009 Apple Inc.
November 3, 2008 November 20, 2008
Sieve Email Filtering: MIME part Tests, Iteration, Extraction, Sieve Email Filtering: MIME part Tests, Iteration, Extraction,
Replacement and Enclosure Replacement and Enclosure
draft-ietf-sieve-mime-loop-07 draft-ietf-sieve-mime-loop-08
Status of this Memo Status of this Memo
By submitting this Internet-Draft, each author represents that any By submitting this Internet-Draft, each author represents that any
applicable patent or other IPR claims of which he or she is aware applicable patent or other IPR claims of which he or she is aware
have been or will be disclosed, and any of which he or she becomes have been or will be disclosed, and any of which he or she becomes
aware will be disclosed, in accordance with Section 6 of BCP 79. aware will be disclosed, in accordance with Section 6 of BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF), its areas, and its working groups. Note that
skipping to change at page 1, line 36 skipping to change at page 1, line 36
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt. http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
This Internet-Draft will expire on May 7, 2009. This Internet-Draft will expire on May 24, 2009.
Abstract Abstract
This document defines extensions to the Sieve email filtering This document defines extensions to the Sieve email filtering
language to permit analysis and manipulation of the MIME body parts language to permit analysis and manipulation of the MIME body parts
of an email message. of an email message.
Note Note
This document is being discussed on the MTA-FILTERS mailing list, This document is being discussed on the MTA-FILTERS mailing list,
skipping to change at page 2, line 31 skipping to change at page 2, line 31
9.3. Example 3 . . . . . . . . . . . . . . . . . . . . . . . . 12 9.3. Example 3 . . . . . . . . . . . . . . . . . . . . . . . . 12
10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 13 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 13
11. Security Considerations . . . . . . . . . . . . . . . . . . . 13 11. Security Considerations . . . . . . . . . . . . . . . . . . . 13
12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14
12.1. foreverypart capability . . . . . . . . . . . . . . . . . 14 12.1. foreverypart capability . . . . . . . . . . . . . . . . . 14
12.2. mime capability . . . . . . . . . . . . . . . . . . . . . 15 12.2. mime capability . . . . . . . . . . . . . . . . . . . . . 15
12.3. replace capability . . . . . . . . . . . . . . . . . . . 15 12.3. replace capability . . . . . . . . . . . . . . . . . . . 15
12.4. enclose capability . . . . . . . . . . . . . . . . . . . 15 12.4. enclose capability . . . . . . . . . . . . . . . . . . . 15
12.5. extracttext capability . . . . . . . . . . . . . . . . . 15 12.5. extracttext capability . . . . . . . . . . . . . . . . . 15
13. Change History . . . . . . . . . . . . . . . . . . . . . . . . 16 13. Change History . . . . . . . . . . . . . . . . . . . . . . . . 16
13.1. draft-ietf-sieve-mime-07 . . . . . . . . . . . . . . . . 16 13.1. draft-ietf-sieve-mime-08 . . . . . . . . . . . . . . . . 16
13.2. draft-ietf-sieve-mime-06 . . . . . . . . . . . . . . . . 16 13.2. draft-ietf-sieve-mime-07 . . . . . . . . . . . . . . . . 16
13.3. draft-ietf-sieve-mime-05 . . . . . . . . . . . . . . . . 16 13.3. draft-ietf-sieve-mime-06 . . . . . . . . . . . . . . . . 16
13.4. draft-ietf-sieve-mime-04 . . . . . . . . . . . . . . . . 16 13.4. draft-ietf-sieve-mime-05 . . . . . . . . . . . . . . . . 16
13.5. draft-ietf-sieve-mime-03 . . . . . . . . . . . . . . . . 17 13.5. draft-ietf-sieve-mime-04 . . . . . . . . . . . . . . . . 17
13.6. draft-ietf-sieve-mime-02 . . . . . . . . . . . . . . . . 17 13.6. draft-ietf-sieve-mime-03 . . . . . . . . . . . . . . . . 17
13.7. draft-ietf-sieve-mime-01 . . . . . . . . . . . . . . . . 17 13.7. draft-ietf-sieve-mime-02 . . . . . . . . . . . . . . . . 17
13.8. draft-ietf-sieve-mime-00 . . . . . . . . . . . . . . . . 17 13.8. draft-ietf-sieve-mime-01 . . . . . . . . . . . . . . . . 17
13.9. draft-sieve-mime-loop-04 . . . . . . . . . . . . . . . . 18 13.9. draft-ietf-sieve-mime-00 . . . . . . . . . . . . . . . . 18
13.10. draft-hansen-sieve-loop-03 . . . . . . . . . . . . . . . 18 13.10. draft-sieve-mime-loop-04 . . . . . . . . . . . . . . . . 18
13.11. draft-hansen-sieve-loop-02 . . . . . . . . . . . . . . . 18 13.11. draft-hansen-sieve-loop-03 . . . . . . . . . . . . . . . 18
13.12. draft-hansen-sieve-loop-01 . . . . . . . . . . . . . . . 19 13.12. draft-hansen-sieve-loop-02 . . . . . . . . . . . . . . . 18
13.13. draft-hansen-sieve-loop-01 . . . . . . . . . . . . . . . 19
14. References . . . . . . . . . . . . . . . . . . . . . . . . . . 19 14. References . . . . . . . . . . . . . . . . . . . . . . . . . . 19
14.1. Normative References . . . . . . . . . . . . . . . . . . 19 14.1. Normative References . . . . . . . . . . . . . . . . . . 19
14.2. Informative References . . . . . . . . . . . . . . . . . 19 14.2. Informative References . . . . . . . . . . . . . . . . . 19
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 19 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 19
Intellectual Property and Copyright Statements . . . . . . . . . . 21 Intellectual Property and Copyright Statements . . . . . . . . . . 21
1. Introduction 1. Introduction
MIME messages ([RFC2045]) are often complex objects, consisting of MIME messages ([RFC2045]) are often complex objects, consisting of
many parts and sub-parts. This extension defines mechanisms for many parts and sub-parts. This extension defines mechanisms for
skipping to change at page 4, line 24 skipping to change at page 4, line 24
4. Changes to Sieve Tests 4. Changes to Sieve Tests
This specification extends the base Sieve "header", "address" and This specification extends the base Sieve "header", "address" and
"exists" tests to support targeting those tests at a specific MIME "exists" tests to support targeting those tests at a specific MIME
part or at all MIME parts in the enclosing scope. part or at all MIME parts in the enclosing scope.
4.1. Test "header" 4.1. Test "header"
The "header" test is extended with the addition of new ":mime" and The "header" test is extended with the addition of new ":mime" and
":anychild" tagged arguments and its associated options. ":anychild" tagged arguments and their associated options.
Usage: header [":mime"] [":anychild"] [MIMEOPTS] Usage: header [":mime"] [":anychild"] [MIMEOPTS]
[COMPARATOR] [MATCH-TYPE] [COMPARATOR] [MATCH-TYPE]
<header-names: string-list> <key-list: string-list> <header-names: string-list> <key-list: string-list>
Usage: The definition of [MIMEOPTS] is: Usage: The definition of [MIMEOPTS] is:
Syntax: ":type" / ":subtype" / ":contenttype" / Syntax: ":type" / ":subtype" / ":contenttype" /
":param" <param-list: string-list> ":param" <param-list: string-list>
skipping to change at page 7, line 29 skipping to change at page 7, line 29
fileinto "INBOX.part-from-tim"; fileinto "INBOX.part-from-tim";
} }
In this example, any message that contains a MIME Content-From header In this example, any message that contains a MIME Content-From header
at the top-level matching the text "tim@example.com" is saved to the at the top-level matching the text "tim@example.com" is saved to the
mailbox "INBOX.part-from-time". mailbox "INBOX.part-from-time".
4.3. Test "exists" 4.3. Test "exists"
The "exists" test is extended with the addition of the new ":mime" The "exists" test is extended with the addition of the new ":mime"
and ":anychild" tagged arguments, which takes one other argument. and ":anychild" tagged arguments and their associated options.
Usage: exists [":mime"] [":anychild"] <header-names: string-list> Usage: exists [":mime"] [":anychild"] <header-names: string-list>
When the ":mime" tagged argument is present in the "exists" test, the When the ":mime" tagged argument is present in the "exists" test, the
test is extended to check for the existence of MIME headers in MIME test is extended to check for the existence of MIME headers in MIME
parts. parts.
The behavior of the ":anychild" tagged argument and the interaction The behavior of the ":anychild" tagged argument and the interaction
with the "foreverypart" iterator is the same as for the extended with the "foreverypart" iterator is the same as for the extended
"header" test Section 4.1. "header" test Section 4.1.
skipping to change at page 9, line 34 skipping to change at page 9, line 34
If ":mime" is specified and either ":subject" or ":from" is If ":mime" is specified and either ":subject" or ":from" is
specified, the ":subject:" or ":from" parameter MUST be ignored. specified, the ":subject:" or ":from" parameter MUST be ignored.
This SHOULD be flagged as a compilation error. This SHOULD be flagged as a compilation error.
6. Action "enclose" 6. Action "enclose"
Usage: enclose <:subject string> <:headers string-list> string Usage: enclose <:subject string> <:headers string-list> string
A new Sieve action command is defined to allow an entire message to A new Sieve action command is defined to allow an entire message to
be enclosed as an attachment to a new message. After enclosure, be enclosed as an attachment to a new message. After enclosure,
subsequent actions affecting the message header or content use the subsequent actions affecting the message header or content, as well
newly created message instead of the original message; this means as tests operating on the MIME structure or accessing MIME header
that any use of a "replace" action or other similar actions should be fields, use the newly created message instead of the original
executed before the "enclose" action. message; this means that any use of a "replace" action or other
similar actions should be executed before the "enclose" action.
If multiple "enclose" actions are executed by a script, only the text If multiple "enclose" actions are executed by a script, the message
specified on the last one is used when creating the enclosed message; is enclosed multiple times. (If a Sieve script desires to choose
the message in this case would not be enclosed multiple times. between different enclosures, or wants to delay the enclosure to the
end of the script, it can use variables with appropriate tests.
[RFC5229])
This action does not affect messages that are forwarded via a This action does not affect messages that are forwarded via a
"redirect" action. "redirect" action.
Specifically, the original message becomes a multipart/mixed message Specifically, the original message becomes a multipart/mixed message
with two parts: a text/plain portion with the string argument as its with two parts: a text/plain portion with the string argument as its
body, and a message/rfc822 portion with the original message body, and a message/rfc822 portion with the original message
enclosed. The Content-Type: header field becomes multipart/mixed. enclosed. The Content-Type: header field becomes multipart/mixed.
The optional Subject: header is specified by the :subject argument; The optional Subject: header is specified by the :subject argument;
if not present the subject will be taken from the enclosed message. if not present the subject will be taken from the enclosed message.
skipping to change at page 16, line 11 skipping to change at page 16, line 11
RFC number: RFC XXXX RFC number: RFC XXXX
Contact address: The Sieve discussion list Contact address: The Sieve discussion list
<ietf-mta-filters@imc.org>. <ietf-mta-filters@imc.org>.
13. Change History 13. Change History
[[ RFC Editor NOTE: This section is to be removed prior to [[ RFC Editor NOTE: This section is to be removed prior to
publication as an RFC. ]] publication as an RFC. ]]
13.1. draft-ietf-sieve-mime-07 13.1. draft-ietf-sieve-mime-08
enhance description of enclose and multiple enclose.
Minor nits
13.2. draft-ietf-sieve-mime-07
List :anychild parameter next to :mime, where it was added. List :anychild parameter next to :mime, where it was added.
Expand description of "address" and "exists". Expand description of "address" and "exists".
In replace, discuss interaction of :mime with :subject/:from. In replace, discuss interaction of :mime with :subject/:from.
In enclose, expand discussion o fmultiple enclosures. In enclose, expand discussion o fmultiple enclosures.
Mention compilation error if extracttext is used outside of a Mention compilation error if extracttext is used outside of a
foreverypart loop. foreverypart loop.
13.2. draft-ietf-sieve-mime-06 13.3. draft-ietf-sieve-mime-06
Added note to foreverypart about nested identical names hiding outer Added note to foreverypart about nested identical names hiding outer
names. names.
Added notes to Security Considerations section about it not working Added notes to Security Considerations section about it not working
on multipart/signed sections, and how replace/enclose may affect on multipart/signed sections, and how replace/enclose may affect
signatures. signatures.
13.3. draft-ietf-sieve-mime-05 13.4. draft-ietf-sieve-mime-05
Changed for_every_part to foreverypart, and extract_text to Changed for_every_part to foreverypart, and extract_text to
extracttext. extracttext.
Add option :name parameter to foreverypart and break. break :name Add option :name parameter to foreverypart and break. break :name
"string" will break out of closest enclosing foreverypart loop "string" will break out of closest enclosing foreverypart loop
with that name. with that name.
Clarify nesting a bit more. Clarify nesting a bit more.
Minor consistency nit picking. Minor consistency nit picking.
13.4. draft-ietf-sieve-mime-04 13.5. draft-ietf-sieve-mime-04
loops are depth first loops are depth first
:anychild clarifications :anychild clarifications
update examples update examples
grammar nits grammar nits
transcoding for extract_text transcoding for extract_text
13.5. draft-ietf-sieve-mime-03 13.6. draft-ietf-sieve-mime-03
add extraction add extraction
add security considerations add security considerations
fill in iana considerations fill in iana considerations
13.6. draft-ietf-sieve-mime-02 13.7. draft-ietf-sieve-mime-02
minor syntax glitches in examples minor syntax glitches in examples
Add clarification on "replace" affecting subsequent for_every_part Add clarification on "replace" affecting subsequent for_every_part
loops? loops?
Add IANA considerations for Original-Subject: and Original-From:. Add IANA considerations for Original-Subject: and Original-From:.
Add note on "enclose" creating From: and Date: headers. Add note on "enclose" creating From: and Date: headers.
13.7. draft-ietf-sieve-mime-01 13.8. draft-ietf-sieve-mime-01
what happens when nested for_every_part loop's what happens when nested for_every_part loop's
a "mime" shorthand for testing the type/subtype, without requiring a "mime" shorthand for testing the type/subtype, without requiring
interactions with variables interactions with variables
notifications notifications
notifications to calendar service notifications to calendar service
address tests, exists tests address tests, exists tests
mimeheader, mimeparameter tests mimeheader, mimeparameter tests
13.8. draft-ietf-sieve-mime-00 13.9. draft-ietf-sieve-mime-00
Changed title and text to emphasize MIME Tests. Changed title and text to emphasize MIME Tests.
Changed for.every.part to for_every_part. Changed for.every.part to for_every_part.
Added :anychild to mime test. Default is to use the current Added :anychild to mime test. Default is to use the current
context or outer envelope; specifying :anychild will look at all context or outer envelope; specifying :anychild will look at all
children. children.
Added clarifications to replacing parts affecting the structure. Added clarifications to replacing parts affecting the structure.
Added :mime option to replace, ala draft-ietf-sieve-vacation-06. Added :mime option to replace, ala draft-ietf-sieve-vacation-06.
Various other minor nit fixes. Various other minor nit fixes.
13.9. draft-sieve-mime-loop-04 13.10. draft-sieve-mime-loop-04
update reference for recent published rfcs update reference for recent published rfcs
extract-text now required to do decode transfer encoding and extract-text now required to do decode transfer encoding and
transcode to UTF-8 transcode to UTF-8
removed editheader reference since its not actually used removed editheader reference since its not actually used
several text changes as suggested by Nigel Swinson, including re- several text changes as suggested by Nigel Swinson, including re-
writes to abstract and introduction writes to abstract and introduction
13.10. draft-hansen-sieve-loop-03 13.11. draft-hansen-sieve-loop-03
after enclosure, subsequent actions affect newly created message after enclosure, subsequent actions affect newly created message
synthesis of Date/From headers by the enclose action is no longer synthesis of Date/From headers by the enclose action is no longer
controversial controversial
Filled in Security Considerations Filled in Security Considerations
Picked up extract_text action from draft-ietf-sieve-notify Picked up extract_text action from draft-ietf-sieve-notify
Expanded the IANA considerations section Expanded the IANA considerations section
13.11. draft-hansen-sieve-loop-02 13.12. draft-hansen-sieve-loop-02
Update to 3028bis reference. Update to 3028bis reference.
Added 2119 conventions section. Added 2119 conventions section.
Terminology/title tweaks. Terminology/title tweaks.
Added informative references to body and editheader extensions. Added informative references to body and editheader extensions.
Added description of nested loops. Added description of nested loops.
Replaced mime test by extensions to header, address and exists Replaced mime test by extensions to header, address and exists
tests. tests.
13.12. draft-hansen-sieve-loop-01 13.13. draft-hansen-sieve-loop-01
Merged with draft-daboo-sieve-mime-00.txt. Merged with draft-daboo-sieve-mime-00.txt.
14. References 14. References
14.1. Normative References 14.1. Normative References
[RFC2045] Freed, N. and N. Borenstein, "Multipurpose Internet Mail [RFC2045] Freed, N. and N. Borenstein, "Multipurpose Internet Mail
Extensions (MIME) Part One: Format of Internet Message Extensions (MIME) Part One: Format of Internet Message
Bodies", RFC 2045, November 1996. Bodies", RFC 2045, November 1996.
 End of changes. 21 change blocks. 
37 lines changed or deleted 48 lines changed or added

This html diff was produced by rfcdiff 1.35. The latest version is available from http://tools.ietf.org/tools/rfcdiff/