draft-ietf-sieve-refuse-reject-03.txt   draft-ietf-sieve-refuse-reject-04.txt 
Internet Draft M. Elvey Internet Draft M. Elvey
Document: draft-ietf-sieve-refuse-reject-03 The Elvey Partnership, Document: draft-ietf-sieve-refuse-reject-04 The Elvey Partnership,
LLC LLC
Expires: December 2006 A. Melnikov Expires: April 2007 A. Melnikov
Isode Ltd Isode Ltd
October 2006
The SIEVE mail filtering language - reject extension The SIEVE mail filtering language - reject extension
draft-ietf-sieve-refuse-reject-03.txt draft-ietf-sieve-refuse-reject-04.txt
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 line 39 skipping to change at line 41
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.
A revised version of this draft document will be submitted to the A revised version of this draft document will be submitted to the
RFC editor as a Proposed Standard for the Internet Community. RFC editor as a Proposed Standard for the Internet Community.
Discussion and suggestions for improvement are requested. Discussion and suggestions for improvement are requested.
Distribution of this draft is unlimited. Distribution of this draft is unlimited.
Abstract Abstract
This memo defines the SIEVE mail filtering language (RFC This memo updates the definition the SIEVE mail filtering language (RFC
<<3028bis>>) "reject" extension. <<3028bis>>) "reject" extension, originally defined in RFC 3028.
A Joe-job is a spam run forged to appear as though it came from an A Joe-job is a spam run forged to appear as though it came from an
innocent party, who is then generally flooded by the bounces, innocent party, who is then generally flooded by the bounces,
Message Disposition Notifications (MDNs) and messages with Message Disposition Notifications (MDNs) and messages with
complaints. The original Sieve "reject" action defined in RFC 3028 complaints. The original Sieve "reject" action defined in RFC 3028
required use of MDNs for rejecting messages, thus contributing to required use of MDNs for rejecting messages, thus contributing to
the flood of Joe-job spam to victims of Joe-jobs. This document the flood of Joe-job spam to victims of Joe-jobs. This document
updates definition of "reject" to require rejecting messages during updates the definition of "reject" to require rejecting messages
the SMTP transaction (instead of accepting them and then sending during the SMTP transaction (instead of accepting them and then
MDNs back to the alleged sender) wherever possible, thereby sending MDNs back to the alleged sender) wherever possible, thereby
reducing the problem. reducing the problem.
Table of Contents Table of Contents
1. Introduction 2 1. Introduction 2
2. Conventions Used in this Document 3 2. Conventions Used in this Document 3
3. SIEVE "reject" extension 3 3. SIEVE "reject" extension 3
3.1 Action reject 3 3.1 Action reject 3
3.2 "reject" compatibility with other actions 7 3.2 "reject" compatibility with other actions 7
4. Security Considerations 7 4. Security Considerations 7
skipping to change at line 81 skipping to change at line 83
11. Changes from RFC 3028 11 11. Changes from RFC 3028 11
12. Change Log 11 12. Change Log 11
1. Introduction 1. Introduction
The SIEVE mail filtering language [SIEVE] "reject" action defined The SIEVE mail filtering language [SIEVE] "reject" action defined
in RFC 3028 only allowed users to refuse delivery of a message by in RFC 3028 only allowed users to refuse delivery of a message by
sending an [MDN]. sending an [MDN].
This document updates definition of the "reject" action to permit This document updates definition of the "reject" action to permit
users to handle unwanted email in a way that is sometimes users to handle unwanted email in a way that is generally
preferable to the existing 'discard' and the original 'reject' preferable to the existing 'discard' and the original 'reject'
capabilities. When a spam-detection system suspects a message is capabilities. When a spam-detection system suspects a message is
spam, but isn't certain, discarding the email is considered too spam, but isn't certain, discarding the email is considered too
risky for some users, for example, those who receive sales leads by risky for some users, for example, those who receive sales leads by
email. They are willing to use the reject command. Users are email. They are willing to use the reject command. Users are
willing to reject but not discard because the sender of an email willing to reject but not discard because the sender of an email
incorrectly marked as spam will receive a notification that the incorrectly marked as spam will receive a notification that the
email was refused, and will likely try again to contact the email was refused, and will likely try again to contact the
intended recipient, perhaps via another method of communication. intended recipient, perhaps via another method of communication.
Unfortunately, this usage is problematic, because in the usual Unfortunately, this usage is problematic, because in the usual
skipping to change at line 105 skipping to change at line 107
to an innocent victim, because it requires that an implemention to an innocent victim, because it requires that an implemention
refuse to accept an email for delivery instead of accepting it and refuse to accept an email for delivery instead of accepting it and
then sending an MDN wherever possible. Much spam is sent through then sending an MDN wherever possible. Much spam is sent through
open proxies, so SMTP level refusal reduces Joe-job bounces (AKA open proxies, so SMTP level refusal reduces Joe-job bounces (AKA
backscatter) resulting from usage of MDNs. The updated "reject" backscatter) resulting from usage of MDNs. The updated "reject"
will also reduce Joe-jobs caused by virus self-propagation via will also reduce Joe-jobs caused by virus self-propagation via
emails with false sender information. SMTP level refusal helps to emails with false sender information. SMTP level refusal helps to
prevent the blacklisting of sources of backscatter and conserve prevent the blacklisting of sources of backscatter and conserve
bandwidth, by reducing the number of MDNs sent. Further discussion bandwidth, by reducing the number of MDNs sent. Further discussion
highlighting the risks of generating MDNs and the benefits of highlighting the risks of generating MDNs and the benefits of
protocol level refusal can be found in [Joe-DoS]. protocol-level refusal can be found in [Joe-DoS].
2. Conventions Used in this Document 2. Conventions Used in this Document
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in
this document are to be interpreted as described in RFC 2119. this document are to be interpreted as described in RFC 2119.
Conventions for notations are as in [SIEVE] section 1.1. Conventions for notations are as in [SIEVE] section 1.1.
This document does not attempt to define what exactly constitutes a This document does not attempt to define what exactly constitutes a
skipping to change at line 129 skipping to change at line 131
SIEVE implementations that implement the "reject" action must use SIEVE implementations that implement the "reject" action must use
the "reject" capability string. the "reject" capability string.
3.1 Action reject 3.1 Action reject
Usage: reject <reason: string> Usage: reject <reason: string>
The "reject" action cancels the implicit keep and refuses delivery The "reject" action cancels the implicit keep and refuses delivery
of a message. The reason string is a UTF-8 [UTF-8] string of a message. The reason string is a UTF-8 [UTF-8] string
specifying the reason for refusal. How message is refused depends specifying the reason for refusal. How a message is refused depends
on capabilities of mail component (MUA, MDA or MTA) executing the on the capabilities of the mail component (MUA, MDA or MTA) executing
Sieve script. The Sieve interpreter must do one of the following the Sieve script. The Sieve interpreter must do one of the following
actions, as detailed by the following priority table (items listed actions, as detailed by the following priority table (items listed
earlier take precedence). Note that if action can not be taken or earlier take precedence). Note that if an action can not be taken or
fails, the interpreter should try the next item in the list: fails, the interpreter should try the next item in the list:
1. If message return-path (MAIL FROM) is empty the message SHOULD 1. If a "reject" implementation performs a return-path verification
be accepted and discarded.
2. If a "reject" implementation performs a return-path verification
and it clearly indicates that the message has a forged return-path, and it clearly indicates that the message has a forged return-path,
the implementation need not refuse mail delivery, but rather MAY the implementation need not refuse mail delivery, but rather MAY
accept and discard it. accept and discard it.
3. Message delivery is refused by sending 5XX response code over 2. Message delivery is refused by sending 5XX response code over
SMTP [SMTP] or LMTP [LMTP]. See section 3.1.1 for more details. SMTP [SMTP] or LMTP [LMTP]. See section 3.1.1 for more details.
4. Message delivery is refused by sending a non delivery report 3. Message delivery is refused by sending a non delivery report
(DSN [DSN]). See section 3.1.2 for more details. (DSN [DSN]). See section 3.1.2 for more details.
5. Message delivery is refused by sending a message disposition 4. Message delivery is refused by sending a message disposition
notification report (MDN). See section 3.1.3 for more details. notification report (MDN). See section 3.1.3 for more details.
3.1.1 Rejecting messages at SMTP/LMTP protocol level 3.1.1 Rejecting messages at the SMTP/LMTP protocol level
Sieve implementations that are able to reject messages at SMTP/LMTP Sieve implementations that are able to reject messages at the
level SHOULD use the 550 response code. Note that if a message is SMTP/LMTP level MUST do so and SHOULD use the 550 response code. Note
arriving over SMTP and has multiple recipients, some of which have that if a message is arriving over SMTP and has multiple recipients,
accepted the message, or the Sieve implementation is part of an some of which have accepted the message, or the Sieve implementation
MUA, section 3.1.2 and section 3.1.3 define how to reject such a is part of an MUA, section 3.1.2 and section 3.1.3 define how to
message. reject such a message.
Note that SMTP [SMTP] doesn't allow for non-ASCII characters in Note that SMTP [SMTP] doesn't allow for non-ASCII characters in the
SMTP response text. If non-ASCII characters appear in the "reason" SMTP response text. If non-ASCII characters appear in the "reason"
string, they can be sent if and only if the client and the server string, they can be sent if and only if the client and the server use
use an SMTP extension that allows for transmission of non-ASCII an SMTP extension that allows for transmission of non-ASCII reply
reply text. (One example of such SMTP extension is described in text. (One example of such an SMTP extension is described in
[UTF8-RESP].) In the absence of such SMTP extension, Sieve engine [UTF8-RESP].) In the absence of such an SMTP extension, the Sieve
MUST replace any reason string containing non-ASCII characters engine MUST replace any reason string containing non-ASCII characters
with an implementation defined ASCII-only string. Implementations with an implementation-defined ASCII-only string. Implementations
SHOULD notify user that such replacement took place. SHOULD notify the user that such replacement took place. Users that
Users that don't like this behavior should consider using don't like this behavior should consider using "reject :exacttext" as
"reject :exacttext" as described in Section 3.2, if available. described in Section 3.2, if available.
If the "reason" string consist of multiple CRLF separated lines, If the "reason" string consists of multiple CRLF separated lines,
than the reason text MUST be then the reason text MUST be returned as a multiline SMTP/LMTP
returned as a multiline SMTP/LMTP response, per [SMTP], section response, per [SMTP], section 4.2.1. Any line MUST NOT exceed the
4.2.1. Any line MUST NOT exceed the SMTP limit on the maximal line SMTP limit on the maximal line length. To make the reason string
length. To make the reason string conform to any such limits the conform to any such limits the server MAY insert CRLFs and turn the
server MAY insert CRLFs and turn the response into a multiline response into a multiline response.
response.
In the following script (which assumes support for the spamtest In the following script (which assumes support for the spamtest
[SPAMTEST] and fileinto extensions), messages that test highly [SPAMTEST] and fileinto extensions), messages that test highly
positive for spam are refused. positive for spam are refused.
Example: Example:
require ["reject", "spamtest", require ["reject", "spamtest",
"comparator-i;ascii-numeric", "fileinto"]; "comparator-i;ascii-numeric", "fileinto"];
if spamtest :value "ge" :comparator "i;ascii-numeric" "6" { if spamtest :value "ge" :comparator "i;ascii-numeric" "6" {
skipping to change at line 210 skipping to change at line 209
S: 354 Send message, ending in CRLF.CRLF. S: 354 Send message, ending in CRLF.CRLF.
... ...
C: . C: .
S: 550-AntiSpam engine thinks your message is spam. S: 550-AntiSpam engine thinks your message is spam.
S: 550-It is therefore being refused. S: 550-It is therefore being refused.
S: 550 Please call 1-900-PAY-US if you want to reach us. S: 550 Please call 1-900-PAY-US if you want to reach us.
If the SMTP/LMTP server supports RFC 2034 [ENHANCED-CODES] it MUST If the SMTP/LMTP server supports RFC 2034 [ENHANCED-CODES] it MUST
prepend an appropriate Enhanced Error Code to the "reason" text. prepend an appropriate Enhanced Error Code to the "reason" text.
Enhanced Error code 5.7.1 or a more generic 5.7.0 are RECOMMENDED. Enhanced Error code 5.7.1 or a more generic 5.7.0 are RECOMMENDED.
With Enhanced Error Code the response to DATA command in the SMTP With an Enhanced Error Code, the response to DATA command in the SMTP
example below will look like: example below will look like:
S: 550-5.7.1 AntiSpam engine thinks your message is spam. S: 550-5.7.1 AntiSpam engine thinks your message is spam.
S: 550-5.7.1 It is therefore being refused. S: 550-5.7.1 It is therefore being refused.
S: 550 5.7.1 Please call 1-900-PAY-US if you want to reach us. S: 550 5.7.1 Please call 1-900-PAY-US if you want to reach us.
if the server selected "5.7.1" as appropriate. if the server selected "5.7.1" as appropriate.
If a Sieve implementation that supports "reject" doesn't wish to If a Sieve implementation that supports "reject" doesn't wish to
immediately disclose the reason for rejection (for example that it immediately disclose the reason for rejection (for example that it
detected spam), it may delay immediate sending the 550 error code detected spam), it may delay immediately sending of the 550 error
by sending a 4XX error code on the first attempt to receive the code by sending a 4XX error code on the first attempt to receive
message. the message.
3.1.2 Rejecting message by sending DSN 3.1.2 Rejecting a message by sending a DSN
If the implementation receives a message via SMTP that has more An implementation may receive a message via SMTP that has more
than one RCPT TO that has been accepted by the server, and at least than one RCPT TO that has been accepted by the server, and at least
one but not all of them are refusing delivery (whether the refusal one but not all of them are refusing delivery (whether the refusal
is caused by execution of a Sieve "reject" or for another reason). is caused by execution of a Sieve "reject" or for another reason).
In this case, the server MUST accept the message and generate DSNs In this case, the server MUST accept the message and generate DSNs
for all recipients that are refusing it. Note that this exception for all recipients that are refusing it. Note that this exception
does not apply to LMTP, as LMTP is able to reject messages on a per- does not apply to LMTP, as LMTP is able to reject messages on a per-
recipient basis. recipient basis.
3.1.3 Rejecting message by sending MDN Note that according to [DSN], Delivery Status Notifications MUST NOT
be generated if the MAIL FROM (return-path) is empty.
When Sieve engine is running inside MUA it has no ability to reject 3.1.3 Rejecting a message by sending an MDN
the message before it was delivered, as the message is already
delivered. In this case the client should send a Message When a Sieve engine is running inside an MUA, it has no ability to
Disposition Notification [MDN] back to the sender. It resends the reject a message at the SMTP/LMTP protocol level, as final delivery
message to the sender as specified in the Return-Path header field, (in the SMTP sense) is already complete. In this case the client
wrapping it in a "reject" form, noting that it was rejected by the should send a Message Disposition Notification [MDN] back to the
recipient. sender. It resends the message to the sender as specified in the
MTAs and MDAs SHOULD NOT implement "reject" by sending MDNs, they Return-Path header field, wrapping it in a "reject" form, noting that
SHOULD reject at protocol level as described in section 3.1.1. it was rejected by the recipient.
MTAs and MDAs MUST NOT implement "reject" by sending MDNs, they
SHOULD reject at the protocol level as described in section 3.1.1.
In the following script, a message is rejected and returned to the In the following script, a message is rejected and returned to the
sender. sender.
Note that according to MDN MUST NOT be generated if the MAIL FROM
(Return-path) is empty.
Example: Example:
require ["reject"]; require ["reject"];
if header :contains "from" "coyote@desert.example.org" if header :contains "from" "coyote@desert.example.org"
{ {
reject text: reject text:
I am not taking mail from you, and I don't I am not taking mail from you, and I don't
want your birdseed, either!" want your birdseed, either!"
. .
; ;
skipping to change at line 271 skipping to change at line 277
A reject message MUST take the form of a failure MDN as specified A reject message MUST take the form of a failure MDN as specified
by [MDN]. The human-readable portion of the message, the first by [MDN]. The human-readable portion of the message, the first
component of the MDN, contains the human readable message component of the MDN, contains the human readable message
describing the error, and it SHOULD contain additional text describing the error, and it SHOULD contain additional text
alerting the original sender that mail was refused by a filter. alerting the original sender that mail was refused by a filter.
This part of the MDN might appear as follows: This part of the MDN might appear as follows:
------------------------------------------------------------ ------------------------------------------------------------
The message was refused by the recipient's mail filtering program. The message was refused by the recipient's mail filtering program.
The reason The reason given was as follows:
given was as follows:
I am not taking mail from you, and I don't want your birdseed, I am not taking mail from you, and I don't want your birdseed,
either! either!
------------------------------------------------------------ ------------------------------------------------------------
The MDN action-value field as defined in the MDN specification MUST The MDN action-value field as defined in the MDN specification MUST
be "deleted" and MUST have the MDN-sent-automatically and automatic- be "deleted" and MUST have the MDN-sent-automatically and automatic-
action modes set. action modes set.
3.2 :exacttext optional argument to reject action 3.2 :exacttext optional argument to reject action
SIEVE implementations that implement the :exacttext optional argument SIEVE implementations that implement the :exacttext optional argument
to the "reject" action must advertise "rejectexact" capability in to the "reject" action must advertise the "rejectexact" capability in
addition to the "reject" capability described above. addition to the "reject" capability described above.
The :exacttext argument affects how reject processing described in The :exacttext argument affects how reject processing described in
section 3.1.1 is performed. When this argument is present, SMTP section 3.1.1 is performed. If this argument is present, and the
client and server don't support an SMTP extension that allows for SMTP client and server don't both support an SMTP extension that
transmission of non-ASCII reply text and there is non-ASCII text allows for transmission of non-ASCII reply text and there is
in the reason string, then the reason string MUST NOT be replaced non-ASCII text in the reason string, then the reason string MUST NOT
with an implementation defined ASCII-only string as defined in 3.1.1. be replaced with an implementation defined ASCII-only string as
Instead, Sieve engine MUST try to generate DSN, in order to preserve defined in 3.1.1. Instead, the Sieve engine MUST try to generate
the exact text specified in the reason string. DSN, in order to preserve the exact text specified in the reason
string.
Example: Example:
require ["reject", "rejectexact]; require ["reject", "rejectexact];
if size :over 100K { if size :over 100K {
reject :exacttext text: reject :exacttext text:
Your message is to big. If you want to send me a big attachement, Your message is to big. If you want to send me a big attachement,
put it on a public web site and send me an URL. put it on a public web site and send me an URL.
. .
; ;
} }
<<Pretend that the reason string above contains some non-ASCII text>> <<Pretend that the reason string above contains some non-ASCII text>>
NOTE: The :exacttext optional argument doesn't affect reject, if NOTE: The :exacttext argument has no effect if the Sieve engine is
Sieve engine is running in MUA, or if Sieve engine is running in running in an MUA. The :exacttext argument also has no effect if the
MTA/MDA, but it also supports an SMTP/LMTP extension for sending Sieve engine is running in an MTA/MDA, but both client and server
UTF-8 responses. support and negotiate use of an SMTP/LMTP extension for sending UTF-8
responses.
3.3 "reject" compatibility with other actions 3.3 "reject" compatibility with other actions
A "reject" action cancels the implicit keep. A "reject" action cancels the implicit keep.
Implementations MUST prohibit the execution of more than one reject Implementations MUST prohibit the execution of more than one reject
in a SIEVE script. "Reject" is also incompatible with the in a SIEVE script.
"vacation" [VACATION] extensions.
Implementations MUST prohibit the execution of more than one reject "Reject" MUST be incompatible with the "vacation" [VACATION]
in a SIEVE script. "Reject" MUST be incompatible with the "vacation" action. It is NOT RECOMMENDED that implementations permit the use of
[VACATION] action. Implementations SHOULD prohibit the use of
"reject" with actions that cause mail delivery, such as "keep", "reject" with actions that cause mail delivery, such as "keep",
"fileinto", "redirect". <<What about discard?>> "fileinto", "redirect".
Making "reject" compatible with actions that cause mail delivery Making "reject" compatible with actions that cause mail delivery
violates RFC 2821 principal that a message is either deliver or violates the RFC 2821 principle that a message is either delivered or
bounced back to the sender. So bouncing message back (rejecting) bounced back to the sender. So bouncing a message back (rejecting)
and delivering it will make the sender believe that the message was and delivering it will make the sender believe that the message was
not delivered. not delivered.
However there are existing laws requiring certain organizations to However, there are existing laws requiring certain organizations to
archive all received messages, even the rejected ones. Also, it can be archive all received messages, even the rejected ones. Also, it can
quite convenient to save copies of rejected messages for later be quite useful to save copies of rejected messages for later
analysis. analysis.
Any action that would modify the message body will not have effect Any action that would modify the message body will not have an effect
on the body of any message refused by "reject" using the 550 SMTP on the body of any message refused by "reject" using an SMTP response
response code and MUST NOT have any effect on context of generated code and MUST NOT have any effect on the content of generated
DSN/MDNs. DSN/MDNs.
4. Security Considerations 4. Security Considerations
The Introduction section talks about why rejecting messages before The Introduction section talks about why rejecting messages before
delivery is better then accepting and bouncing them. delivery is better then accepting and bouncing them.
Security issues associated with mail auto-responders are fully Security issues associated with mail auto-responders are fully
discussed in the security consideration section of [RFC3834]. This discussed in the security consideration section of [RFC3834]. This
document is believed not to introduce any additional security document is believed not to introduce any additional security
skipping to change at line 382 skipping to change at line 387
IANA is requested to remove registration of the refuse extension. IANA is requested to remove registration of the refuse extension.
<<Should this be taken care of by talking directly to IANA?>> <<Should this be taken care of by talking directly to IANA?>>
5.3 rejectexact extension registration 5.3 rejectexact extension registration
IANA is requested to add the following registration to the list of IANA is requested to add the following registration to the list of
Sieve extensions: Sieve extensions:
Capability name: rejectexact Capability name: rejectexact
Description: adds the ':exacttext' optional argument to the Description: adds the ':exacttext' optional argument to the
reject action, which instructs Sieve engine to reject action, which instructs the Sieve engine to
generate Delivery Status Notifications if rejection generate Delivery Status Notifications if rejection
reason string contains non-ASCII text. reason string contains non-ASCII text.
RFC number: this RFC (Sieve base spec) RFC number: this RFC (Sieve base spec)
Contact address: The Sieve discussion list <ietf-mta-filters@imc.org> Contact address: The Sieve discussion list <ietf-mta-filters@imc.org>
6. References 6. References
6.1 Normative References 6.1 Normative References
[KEYWORDS] Bradner, S., "Key words for use in RFCs to Indicate [KEYWORDS] Bradner, S., "Key words for use in RFCs to Indicate
skipping to change at line 442 skipping to change at line 447
[RFC3834] Moore, K., "Recommendations for Automatic Responses to [RFC3834] Moore, K., "Recommendations for Automatic Responses to
Electronic Mail", RFC 3834, August 2004. Electronic Mail", RFC 3834, August 2004.
[UTF8-RESP] A. Melnikov (Ed.), "SMTP Language Extension", [UTF8-RESP] A. Melnikov (Ed.), "SMTP Language Extension",
work in progress, draft-melnikov-smtp-lang-XX.txt work in progress, draft-melnikov-smtp-lang-XX.txt
7. Acknowledgments 7. Acknowledgments
Thanks to Ned Freed, Cyrus Daboo, Arnt Gulbrandsen, Kristin Hubner, Thanks to Ned Freed, Cyrus Daboo, Arnt Gulbrandsen, Kristin Hubner,
Mark E. Mallett, Philip Guenther and Michael Haardt for comments Mark E. Mallett, Philip Guenther, Michael Haardt, Randy Gellens
and corrections. for comments and corrections.
The authors gratefully acknowledge the extensive work of Tim The authors gratefully acknowledge the extensive work of Tim
Showalter as the author of the RFC 3028, which originally defined Showalter as the author of the RFC 3028, which originally defined
the "reject" action. the "reject" action.
8. Author's Addresses 8. Author's Addresses
Matthew Elvey Matthew Elvey
The Elvey Partnership, LLC The Elvey Partnership, LLC
3042 Sacramento-ietf St Ste 04 1819 Polk-ietf St Ste 133
San Francisco, CA San Francisco, CA
U.S.A. U.S.A.
Email: sieve3@matthew.elvey.com Email: sieve3@matthew.elvey.com
Alexey Melnikov Alexey Melnikov
Isode Limited Isode Limited
5 Castle Business Village 5 Castle Business Village
36 Station Road 36 Station Road
Hampton, Middlesex, TW12 2BX Hampton, Middlesex, TW12 2BX
skipping to change at line 543 skipping to change at line 548
action from the base spec, acknowledged Tim as the author of action from the base spec, acknowledged Tim as the author of
"reject". "reject".
04 (SIEVE WG 01) Based on WGLC feedback, the refuse and the reject 04 (SIEVE WG 01) Based on WGLC feedback, the refuse and the reject
actions were merged into a single action called reject. Text actions were merged into a single action called reject. Text
reorganized as the result. Typos and examples corrected. Updated reorganized as the result. Typos and examples corrected. Updated
IANA registration and Security Considerations sections. IANA registration and Security Considerations sections.
05 (SIEVE WG 02) Copied some security considerations from Vacation 05 (SIEVE WG 02) Copied some security considerations from Vacation
draft. Clarified that the "reason" string is in UTF-8. Clarified draft. Clarified that the "reason" string is in UTF-8. Clarified
interaction with "editheader" extension. Added text about sending interaction with "editheader" extension. Added text about sending
of 4XX instead of 550. Corrected typos in several examples. of 4XX instead of 550. Corrected typos in several examples.
06 (SIEVE WG 03) Explicitly list all actions incompable with reject. 06 (SIEVE WG 03) Explicitly list all actions incompatible with reject.
Added two paragraphs explaining why reject SHOULD (as opposed to Added two paragraphs explaining why reject SHOULD (as opposed to
MUST/MAY) be incompatible with them. Clarified that if the reason MUST/MAY) be incompatible with them. Clarified that if the reason
string contains non-ASCII and rejection over protocol is possible, string contains non-ASCII and rejection over protocol is possible,
then the reason string MUST be replaced with an implementations then the reason string MUST be replaced with an implementations
defined ASCII-only string. Added :exacttext optional argument that defined ASCII-only string. Added :exacttext optional argument that
preserves UTF-8 reason string by forcing generation of DSN. preserves UTF-8 reason string by forcing generation of DSN.
07 (SIEVE WG 04) Removed special handling of empty return path.
Several editorial changes from Randy Gellens.
Clarified :exacttext applicability, removed redundancy. Reverted
SHOULD NOT send MDNs back to MUST NOT send MDNs of earlier drafts
(section 3.1.3).
 End of changes. 41 change blocks. 
93 lines changed or deleted 98 lines changed or added

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