draft-ietf-extra-sieve-fcc-09.txt | rfc8580.txt | |||
---|---|---|---|---|
EXTRA K. Murchison | Internet Engineering Task Force (IETF) K. Murchison | |||
Internet-Draft B. Gondwana | Request for Comments: 8580 B. Gondwana | |||
Updates: 5230, 5435 (if approved) FastMail | Updates: 5230, 5435 FastMail | |||
Intended status: Standards Track January 13, 2019 | Category: Standards Track May 2019 | |||
Expires: July 17, 2019 | ISSN: 2070-1721 | |||
Sieve Extension: File Carbon Copy (Fcc) | Sieve Extension: File Carbon Copy (FCC) | |||
draft-ietf-extra-sieve-fcc-09 | ||||
Abstract | Abstract | |||
The Sieve Email Filtering Language provides a number of action | The Sieve email filtering language provides a number of action | |||
commands, some of which can generate additional messages on behalf of | commands, some of which can generate additional messages on behalf of | |||
the user. This document defines an extension to such commands to | the user. This document defines an extension to such commands to | |||
allow a copy of any generated message to be filed into a target | allow a copy of any generated message to be filed into a target | |||
mailbox. | mailbox. | |||
This document updates RFC5230 and RFC5435 by adding a new tagged | This document updates RFCs 5230 and 5435 by adding a new tagged | |||
argument to the "vacation" and "enotify" actions respectively. | argument to the Vacation and Notify actions, respectively. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on July 17, 2019. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc8580. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2019 IETF Trust and the persons identified as the | Copyright (c) 2019 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
skipping to change at page 2, line 14 ¶ | skipping to change at page 2, line 10 ¶ | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
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. Tagged Argument ":fcc" . . . . . . . . . . . . . . . . . . . 3 | 3. Tagged Argument ":fcc" . . . . . . . . . . . . . . . . . . . 3 | |||
3.1. Interaction with Fileinto Extensions . . . . . . . . . . 3 | 3.1. Interaction with Extensions to the Fileinto Action . . . 3 | |||
3.1.1. Imap4flags Extension . . . . . . . . . . . . . . . . 4 | 3.1.1. Imap4flags Extension . . . . . . . . . . . . . . . . 4 | |||
3.1.2. Mailbox Extension . . . . . . . . . . . . . . . . . . 4 | 3.1.2. Mailbox Extension . . . . . . . . . . . . . . . . . . 4 | |||
3.1.3. Special-Use Extension . . . . . . . . . . . . . . . . 4 | 3.1.3. Special-Use Extension . . . . . . . . . . . . . . . . 4 | |||
3.2. Collected Grammar . . . . . . . . . . . . . . . . . . . . 5 | 3.2. Collected Grammar . . . . . . . . . . . . . . . . . . . . 5 | |||
4. Format of File Carbon Copied Messages . . . . . . . . . . . . 5 | 4. Format of FCC Messages . . . . . . . . . . . . . . . . . . . 5 | |||
5. Interaction with the Vacation Action . . . . . . . . . . . . 6 | 5. Interaction with the Vacation Action . . . . . . . . . . . . 6 | |||
6. Interaction with the Notify Action . . . . . . . . . . . . . 6 | 6. Interaction with the Notify Action . . . . . . . . . . . . . 7 | |||
6.1. Notification-Capability "fcc" . . . . . . . . . . . . . . 7 | 6.1. Notification-Capability "fcc" . . . . . . . . . . . . . . 7 | |||
7. Compatibility with the Reject and Extended Reject | 7. Compatibility with the Reject and Extended Reject | |||
Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 | Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
8. Compatibility with Other Actions . . . . . . . . . . . . . . 8 | 8. Compatibility with Other Actions . . . . . . . . . . . . . . 8 | |||
9. Implementation Status . . . . . . . . . . . . . . . . . . . . 8 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 9 | |||
10. Security Considerations . . . . . . . . . . . . . . . . . . . 9 | 10. Privacy Considerations . . . . . . . . . . . . . . . . . . . 9 | |||
11. Privacy Considerations . . . . . . . . . . . . . . . . . . . 9 | 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 | |||
12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10 | 11.1. Registration of New Sieve Extension . . . . . . . . . . 9 | |||
12.1. Registration of Sieve Extension . . . . . . . . . . . . 10 | 11.2. Registration of New Notification-Capability | |||
12.2. Registration of Notification-Capability | ||||
Parameter . . . . . . . . . . . . . . . . . . . . . . . 10 | Parameter . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
13. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 10 | 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
14. References . . . . . . . . . . . . . . . . . . . . . . . . . 11 | 12.1. Normative References . . . . . . . . . . . . . . . . . . 10 | |||
14.1. Normative References . . . . . . . . . . . . . . . . . . 11 | 12.2. Informative References . . . . . . . . . . . . . . . . . 12 | |||
14.2. Informative References . . . . . . . . . . . . . . . . . 12 | Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
14.3. URIs . . . . . . . . . . . . . . . . . . . . . . . . . . 13 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
Appendix A. Change History (To be removed by RFC Editor before | ||||
publication) . . . . . . . . . . . . . . . . . . . . 13 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 15 | ||||
1. Introduction | 1. Introduction | |||
The Sieve Email Filtering Language [RFC5228] provides a number of | The Sieve email filtering language [RFC5228] provides a number of | |||
action commands, some of which can generate additional messages on | action commands, some of which can generate additional messages on | |||
behalf of the user. It is sometimes desirable for a Sieve user to | behalf of the user. It is sometimes desirable for a Sieve user to | |||
maintain an archive of the messages generated by these commands. | maintain an archive of the messages generated by these commands. | |||
This extension defines a new optional tagged argument ":fcc" to | This extension defines ":fcc", a new optional tagged argument for | |||
action commands that generate additional messages to allow a copy of | action commands that generate additional messages. This argument | |||
the generated message to be filed into a target mailbox. | allows a copy of the generated message to be filed into a target | |||
mailbox. | ||||
The capability string associated with this extension is "fcc". | The capability string associated with this extension is "fcc". | |||
Each new action that generates additional messages will need to | Each new action that generates additional messages will need to | |||
specify how it interacts with :fcc. This document specifies the | specify how it interacts with the FCC extension. This document | |||
interaction of :fcc with the Vacation [RFC5230] and Notify [RFC5435] | specifies the interaction of the FCC extension with the Vacation | |||
extensions. | [RFC5230] and Notify [RFC5435] actions. | |||
2. Conventions Used in This Document | 2. Conventions Used in This Document | |||
Conventions for notations are as in Section 1.1 of [RFC5228], | Conventions for notations are as described in Section 1.1 of | |||
including use of the "Usage:" label for the definition of action and | [RFC5228], including use of the "Usage:" label for the definition of | |||
tagged arguments syntax. | the action and the syntax of tagged arguments. | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in | |||
14 [1] [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
3. Tagged Argument ":fcc" | 3. Tagged Argument ":fcc" | |||
This document specifies a new optional tagged argument ":fcc" that | This document specifies ":fcc", a new optional tagged argument that | |||
alters the behavior of action commands that generate additional | alters the behavior of action commands that generate additional | |||
messages on behalf of the user. | messages on behalf of the user. | |||
Usage: :fcc <mailbox: string> | Usage: :fcc <mailbox: string> | |||
The :fcc tagged argument instructs the Sieve interpreter to file a | The ":fcc" tagged argument instructs the Sieve interpreter to file a | |||
copy of the generated message into the mailbox provided in the | copy of the generated message into the mailbox provided in the | |||
subsequent argument. The semantics and treatment of the mailbox | subsequent argument. The semantics and treatment of the mailbox | |||
argument are defined to match those of the mailbox argument to the | argument are defined to match those of the mailbox argument to the | |||
"fileinto" action specified in Section 4.1 of [RFC5228]. | fileinto action specified in Section 4.1 of [RFC5228]. Specifically, | |||
Specifically, use of an invalid mailbox name MAY be treated as an | use of an invalid mailbox name MAY be treated as an error or result | |||
error or result in delivery to an implementation-defined mailbox, and | in delivery to an implementation-defined mailbox, and if the | |||
if the specified mailbox doesn't exist, the implementation MAY treat | specified mailbox doesn't exist, the implementation MAY treat it as | |||
it as an error, create the mailbox, or file the message into an | an error, create the mailbox, or file the message into an | |||
implementation-defined mailbox. | implementation-defined mailbox. | |||
3.1. Interaction with Fileinto Extensions | 3.1. Interaction with Extensions to the Fileinto Action | |||
Some tagged arguments defined in extensions to the "fileinto" action | Some tagged arguments defined in extensions to the fileinto action | |||
can be used together with ":fcc". The sections below describe these | can be used together with the ":fcc" tagged argument. The sections | |||
interactions. Tagged arguments in future extensions to the | below describe these interactions. Tagged arguments in future | |||
"fileinto" action need to describe their interaction with ":fcc", if | extensions to the fileinto action need to describe their interaction | |||
any. | with the FCC extension, if any. | |||
When any "fileinto" extension arguments are used with ":fcc", the | When any fileinto extension arguments are used with the FCC | |||
corresponding extension MUST be enabled, and the arguments are | extension, the corresponding extension MUST be enabled, and the | |||
defined to have the same syntax, semantics, and treatment as they do | arguments are defined to have the same syntax, semantics, and | |||
with "fileinto". | treatment as they do with the fileinto action. | |||
3.1.1. Imap4flags Extension | 3.1.1. Imap4flags Extension | |||
This document extends the definition of the ":flags" tagged argument | This document extends the definition of the ":flags" tagged argument | |||
(see Section 5 of [RFC5232]) so that it can optionally be used with | (see Section 5 of [RFC5232]) so that it can optionally be used with | |||
the ":fcc" argument. | the ":fcc" tagged argument. | |||
Usage: :fcc <mailbox: string> [:flags <list-of-flags: string-list>] | Usage: :fcc <mailbox: string> [:flags <list-of-flags: string-list>] | |||
If the optional ":flags" argument is specified with ":fcc", it | If the optional ":flags" tagged argument is specified with the ":fcc" | |||
instructs the Sieve interpreter to set the IMAP4 flags provided in | tagged argument, it instructs the Sieve interpreter to set the IMAP4 | |||
the subsequent argument when the generated message is filed into the | flags provided in the subsequent argument when the generated message | |||
target mailbox. | is filed into the target mailbox. | |||
3.1.2. Mailbox Extension | 3.1.2. Mailbox Extension | |||
This document extends the definition of the ":create" tagged argument | This document extends the definition of the ":create" tagged argument | |||
(see Section 3.2 of [RFC5490]) so that it can optionally be used with | (see Section 3.2 of [RFC5490]) so that it can optionally be used with | |||
the ":fcc" argument. | the ":fcc" tagged argument. | |||
Usage: :fcc <mailbox: string> [:create] | Usage: :fcc <mailbox: string> [:create] | |||
If the optional ":create" argument is specified with ":fcc", it | If the optional ":create" tagged argument is specified with the | |||
instructs the Sieve interpreter to create the target mailbox, if | ":fcc" tagged argument, it instructs the Sieve interpreter to create | |||
needed, before attempting to file the generated message into the | the target mailbox, if needed, before attempting to file the | |||
target mailbox. | generated message into the target mailbox. | |||
3.1.3. Special-Use Extension | 3.1.3. Special-Use Extension | |||
This document extends the definition of the ":specialuse" tagged | This document extends the definition of the ":specialuse" tagged | |||
argument (see Section 4 of [I-D.ietf-extra-sieve-special-use]) so | argument (see Section 4 of [RFC8579]) so that it can optionally be | |||
that it can optionally be used with the ":fcc" argument. | used with the ":fcc" tagged argument. | |||
Usage: :fcc <mailbox: string> [:specialuse <special-use-flag: string>] | Usage: :fcc <mailbox: string> [:specialuse <special-use-flag: string>] | |||
If the optional ":specialuse" argument is specified with ":fcc", it | If the optional ":specialuse" tagged argument is specified with the | |||
instructs the Sieve interpreter to check whether a mailbox exists | ":fcc" tagged argument, it instructs the Sieve interpreter to check | |||
with the specific special-use flag assigned to it. If such a mailbox | whether a mailbox exists with the specific special-use flag assigned | |||
exists, the generated message is filed into the special-use mailbox. | to it. If such a mailbox exists, the generated message is filed into | |||
Otherwise, the generated message is filed into the target mailbox. | the special-use mailbox. Otherwise, the generated message is filed | |||
into the target mailbox. | ||||
If both the optional ":specialuse" and ":create" arguments are | If the optional ":specialuse" and ":create" tagged arguments are both | |||
specified with ":fcc", the Sieve interpreter is instructed to create | specified with the ":fcc" tagged argument, the Sieve interpreter is | |||
the target mailbox per Section 4.1 of | instructed to create the target mailbox per Section 4.1 of [RFC8579], | |||
[I-D.ietf-extra-sieve-special-use], if needed. | if needed. | |||
3.2. Collected Grammar | 3.2. Collected Grammar | |||
For convenience, the "FCC" syntax element is defined here using ABNF | For convenience, the "FCC" syntax element is defined here using ABNF | |||
[RFC5234] so that it can be augmented by other extensions. | [RFC5234] so that it can be augmented by other extensions. | |||
Note that the following is the grammar of "FCC" after it has been | Note that the following is the grammar of "FCC" after it has been | |||
lexically interpreted. No whitespace or comments appear below. | lexically interpreted. No whitespace or comments appear below. | |||
FCC = ":fcc" string *FCC-OPTS | FCC = ":fcc" string *FCC-OPTS | |||
; per Section 2.6.2 of RFC5228, | ; per Section 2.6.2 of RFC 5228, | |||
; the tagged arguments in FCC may appear in any order | ; the tagged arguments in FCC may appear in any order | |||
FCC-OPTS = CREATE / IMAP-FLAGS / SPECIAL-USE | FCC-OPTS = CREATE / IMAP-FLAGS / SPECIAL-USE | |||
; each option MUST NOT appear more than once | ; each option MUST NOT appear more than once | |||
CREATE = ":create" | CREATE = ":create" | |||
IMAP-FLAGS = ":flags" string-list | IMAP-FLAGS = ":flags" string-list | |||
SPECIAL-USE = ":specialuse" string | SPECIAL-USE = ":specialuse" string | |||
4. Format of File Carbon Copied Messages | 4. Format of FCC Messages | |||
Copies of messages filed into a mailbox via this extension are | Copies of messages filed into a mailbox via this extension are | |||
REQUIRED to be in Internet Message Format [RFC5322]. Some messages | REQUIRED to be in the Internet Message Format [RFC5322]. Some | |||
generated by Sieve actions might already conform to this format and | messages generated by Sieve actions might already conform to this | |||
MAY be filed without modification. Messages generated in other | format and MAY be filed without modification. Messages generated in | |||
formats MUST be encapsulated using constructs from [RFC5322] and MIME | other formats MUST be encapsulated using constructs from the Internet | |||
([RFC2045], [RFC2046], [RFC2047], [RFC2231]). | Message Format [RFC5322] and MIME ([RFC2045], [RFC2046], [RFC2047], | |||
[RFC2231]). | ||||
The general requirements for encapsulating the copies of messages to | The general requirements for encapsulating the copies of messages to | |||
be filed are the following: | be filed are as follows: | |||
o Date: The Date header field is REQUIRED and SHOULD be set to the | o Date: The Date header field is REQUIRED and SHOULD be set to the | |||
date and time when the message was generated. | date and time when the message was generated. | |||
o From: The From header field is REQUIRED and SHOULD be set to the | o From: The From header field is REQUIRED and SHOULD be set to the | |||
email address of the owner of the Sieve script, unless explicitly | email address of the owner of the Sieve script, unless explicitly | |||
overridden by rules for encapsulating a particular message type. | overridden by rules for encapsulating a particular message type. | |||
Per Erratum ID 2035 [Err2035], | ||||
"Informative advice: Users often have multiple email addresses, | ||||
and "the email address of the owner of the Sieve script" may | ||||
offer a choice among several. If the sieve processor | ||||
recognizes an address belonging to the owner of the Sieve | ||||
script in the To or Cc fields of the input message, then it's | ||||
better to use that address for the From field of the generated | ||||
message, rather than any other addresses the script's owner may | ||||
also have". | ||||
o To: The To header field is OPTIONAL and MAY be set to the email | o To: The To header field is OPTIONAL and MAY be set to the email | |||
address of the recipient of the generated message, if available. | address of the recipient of the generated message, if available. | |||
o Subject: The Subject header field is OPTIONAL and MAY be generated | o Subject: The Subject header field is OPTIONAL and MAY be generated | |||
as follows: The subject is set to the characters "Fcc: " followed | by setting the subject to the characters "Fcc: " followed by the | |||
by the subject of the message being processed by the Sieve | subject of the message being processed by the Sieve interpreter. | |||
interpreter. | ||||
o In-Reply-To: The In-Reply-To header field is OPTIONAL and MAY be | o In-Reply-To: The In-Reply-To header field is OPTIONAL and MAY be | |||
set to the Message-ID of the message being processed by the Sieve | set to the Message-ID of the message being processed by the Sieve | |||
interpreter. | interpreter. | |||
o Message Body: The body of the filed message is REQUIRED and is | o Message Body: The body of the filed message is REQUIRED and is | |||
composed of one or more MIME-parts containing the generated | composed of one or more MIME parts containing the generated | |||
message and any related metadata. The Content-Type header | message and any related metadata. The Content-Type header | |||
field(s) MUST be set to the appropriate MIME types. If any of the | field(s) MUST be set to the appropriate MIME types. If any of the | |||
MIME-parts include 8-bit or binary data, the Content-Transfer- | MIME parts include 8-bit or binary data, the Content-Transfer- | |||
Encoding header field(s) MUST be set accordingly. | Encoding header field(s) MUST be set accordingly. | |||
5. Interaction with the Vacation Action | 5. Interaction with the Vacation Action | |||
This document extends the "vacation" [RFC5230] action (see also | This document extends the Vacation [RFC5230] action (see also | |||
"vacation-seconds" [RFC6131]) to optionally store a copy of the auto- | "Seconds" parameter [RFC6131] to optionally store a copy of the auto- | |||
reply messages into a target mailbox. | reply messages into a target mailbox. | |||
Usage: vacation [FCC] | Usage: vacation [FCC] | |||
[":days" number | ":seconds" number] | [":days" number | ":seconds" number] | |||
[":subject" string] | [":subject" string] | |||
[":from" string] | [":from" string] | |||
[":addresses" string-list] | [":addresses" string-list] | |||
[":mime"] | [":mime"] | |||
[":handle" string] | [":handle" string] | |||
<reason: string> | <reason: string> | |||
Example (with fileinto extensions): | Example (using fileinto extensions): | |||
require ["vacation", "fcc", "mailbox", "special-use", "imap4flags"]; | require ["vacation", "fcc", "mailbox", "special-use", "imap4flags"]; | |||
vacation :days 7 | vacation :days 7 | |||
:from "hemingway@example.com" "Gone Fishin'" | :from "hemingway@example.com" "Gone Fishin'" | |||
:specialuse "\\Sent" :create | :specialuse "\\Sent" :create | |||
:fcc "INBOX.Sent" :flags ["\\Seen"]; | :fcc "INBOX.Sent" :flags ["\\Seen"]; | |||
Vacation auto-reply messages are MIME-compliant and can be filed into | Vacation auto-reply messages are compliant with MIME and can be filed | |||
the target mailbox without modification. | into the target mailbox without modification. | |||
6. Interaction with the Notify Action | 6. Interaction with the Notify Action | |||
This document extends the "notify" [RFC5435] action to optionally | This document extends the Notify [RFC5435] action to optionally store | |||
store a copy of the notification messages into a target mailbox. | a copy of the notification messages into a target mailbox. | |||
Usage: notify [FCC] | Usage: notify [FCC] | |||
[":from" string] | [":from" string] | |||
[":importance" <"1" / "2" / "3">] | [":importance" <"1" / "2" / "3">] | |||
[":options" string-list] | [":options" string-list] | |||
[":message" string] | [":message" string] | |||
<method: string> | <method: string> | |||
Example: | Example: | |||
require ["enotify", "fcc"]; | require ["enotify", "fcc"]; | |||
notify :fcc "INBOX.Sent" | notify :fcc "INBOX.Sent" | |||
:message "You got mail!" | :message "You got mail!" | |||
"mailto:ken@example.com"; | "mailto:ken@example.com"; | |||
Messages generated using the "mailto" [RFC5436] notification method | Messages generated using the "mailto" [RFC5436] notification method | |||
are MIME-compliant and can be filed into the target mailbox without | are compliant with MIME and can be filed into the target mailbox | |||
modification. | without modification. | |||
Messages generated by other notification methods (e.g. "xmpp" | Messages generated by other notification methods (e.g., "xmpp" | |||
[RFC5437]) MUST be encapsulated per Section 4 before being filed. | [RFC5437]) MUST be encapsulated per Section 4 before being filed. | |||
The body of the filed message MUST include the :message parameter and | The body of the filed message MUST include the ":message" tagged | |||
MAY include one or more of the :from, :importance, or :options | argument and MAY include one or more of the ":from", ":importance", | |||
parameters. The MIME-type(s) of the body part(s) used to encapsulate | or ":options" tagged arguments. The MIME type(s) of the body part(s) | |||
the parameters is an implementation decision. | used to encapsulate the parameters is an implementation decision. | |||
An implementation MAY only support :fcc in conjunction with a subset | An implementation MAY only support the FCC extension in conjunction | |||
of the notification methods it supports. An error occurs if :fcc is | with a subset of the notification methods it supports. An error | |||
combined with a notification method that doesn't support it. | occurs if the FCC extension is used with a notification method that | |||
Notification methods that support :fcc can be discovered at run-time | doesn't support it. Notification methods that support the FCC | |||
using the mechanism described below (Section 6.1). | extension can be discovered at runtime using the mechanism described | |||
in Section 6.1. | ||||
6.1. Notification-Capability "fcc" | 6.1. Notification-Capability "fcc" | |||
This document defines a new notification-capability value "fcc" for | This document defines "fcc", a new notification-capability value for | |||
use with the notify_method_capability test (see Section 5 of | use with the notify_method_capability test (see Section 5 of | |||
[RFC5435]. For the "fcc" notification-capability, the | [RFC5435]. For the "fcc" notification-capability, the | |||
notify_method_capability test can match one of the following key-list | notify_method_capability test can match one of the following key-list | |||
values: | values: | |||
yes A copy of the notification message sent using the method | yes | |||
A copy of the notification message sent using the method | ||||
identified by the notification-uri can be filed into a target | identified by the notification-uri can be filed into a target | |||
mailbox. | mailbox. | |||
no A copy of the notification message sent using the method | no | |||
identified by the notification-uri can not be filed into a target | A copy of the notification message sent using the method | |||
identified by the notification-uri cannot be filed into a target | ||||
mailbox. | mailbox. | |||
Note that the "fcc" notify_method_capability test does not require | Note that the "fcc" notify_method_capability test does not require | |||
the notification-uri argument to specify anything other than a | the notification-uri argument to specify anything other than a | |||
scheme. | scheme. | |||
Example: | Example: | |||
require ["enotify", "fcc"]; | require ["enotify", "fcc"]; | |||
skipping to change at page 8, line 25 ¶ | skipping to change at page 8, line 35 ¶ | |||
:message "You got mail" | :message "You got mail" | |||
"xmpp:ken@example.com?message;subject=SIEVE"; | "xmpp:ken@example.com?message;subject=SIEVE"; | |||
} else { | } else { | |||
notify :fcc "INBOX.Sent" | notify :fcc "INBOX.Sent" | |||
:message "You got mail!" | :message "You got mail!" | |||
"mailto:ken@example.com"; | "mailto:ken@example.com"; | |||
} | } | |||
7. Compatibility with the Reject and Extended Reject Actions | 7. Compatibility with the Reject and Extended Reject Actions | |||
Implementations MUST NOT allow use of "fcc" with the "reject" and | Implementations MUST NOT allow use of the FCC extension with the | |||
"ereject" [RFC5429] actions. Allowing "fcc" with these actions would | reject and ereject [RFC5429] actions. Allowing use of the FCC | |||
violate the SMTP [RFC5321] principle that a message is either | extension with these actions would violate the SMTP [RFC5321] | |||
delivered or bounced back to the sender. Namely, the saved copy of | principle that a message is either delivered or bounced back to the | |||
the rejection message will contain the original message. | sender. Namely, the saved copy of the rejection message will contain | |||
the original message. | ||||
It is an error for a script to use the ":fcc" tagged argument with | It is an error for a script to use the ":fcc" tagged argument with | |||
either "reject" or "ereject". | either of the reject or ereject actions. | |||
8. Compatibility with Other Actions | 8. Compatibility with Other Actions | |||
The "fcc" extension is not compatible with any Sieve action that does | The FCC extension is not compatible with any Sieve action that does | |||
not generate an additional message on behalf of the user. It is an | not generate an additional message on behalf of the user. It is an | |||
error for a script to use the ":fcc" tagged argument with any such | error for a script to use the ":fcc" tagged argument with any such | |||
action. | action. | |||
Future extensions that define actions that generate additional | Future extensions that define actions that generate additional | |||
messages on behalf of the user need to describe their compatibility | messages on behalf of the user need to describe their compatibility | |||
with ":fcc", and how to MIME-encapsulate the message, if required. | with the FCC extension and describe how to MIME-encapsulate the | |||
message, if required. | ||||
9. Implementation Status | ||||
< RFC Editor: before publication please remove this section and the | ||||
reference to [RFC7942] > | ||||
This section records the status of known implementations of the | ||||
protocol defined by this specification at the time of posting of this | ||||
Internet-Draft, and is based on a proposal described in [RFC7942]. | ||||
The description of implementations in this section is intended to | ||||
assist the IETF in its decision processes in progressing drafts to | ||||
RFCs. Please note that the listing of any individual implementation | ||||
here does not imply endorsement by the IETF. Furthermore, no effort | ||||
has been spent to verify the information presented here that was | ||||
supplied by IETF contributors. This is not intended as, and must not | ||||
be construed to be, a catalog of available implementations or their | ||||
features. Readers are advised to note that other implementations may | ||||
exist. | ||||
According to [RFC7942], "this will allow reviewers and working groups | ||||
to assign due consideration to documents that have the benefit of | ||||
running code, which may serve as evidence of valuable experimentation | ||||
and feedback that have made the implemented protocols more mature. | ||||
It is up to the individual working groups to use this information as | ||||
they see fit". | ||||
9.1. Cyrus Server | ||||
The open source Cyrus Server [2] project is a highly scalable | ||||
enterprise mail system which supports Sieve email filtering at the | ||||
point of final delivery. This production level Sieve implementation | ||||
supports all of the requirements described in this document. This | ||||
implementation is freely distributable under a BSD style license from | ||||
Computing Services at Carnegie Mellon University [3]. | ||||
9.2. Oracle Communications Messaging Server | ||||
The Oracle Communications Messaging Server [4] is a highly scalable, | ||||
reliable, and available messaging platform. This production level | ||||
product supports the :fcc extension in conjunction with both the | ||||
notify and vacation extensions. The implementation meets all the | ||||
requirements given in this document. The product also supports the | ||||
imap4flags extension so the :flags may be used in conjunction :fcc. | ||||
10. Security Considerations | 9. Security Considerations | |||
In addition to the security considerations in [RFC5228], [RFC5230], | In addition to the security considerations in [RFC5228], [RFC5230], | |||
[RFC5435], and [RFC6131], it should be noted that filing copies of | [RFC5435], and [RFC6131], it should be noted that filing copies of | |||
generated messages may cause the Sieve script owner to exceed their | generated messages may cause the Sieve script owner to exceed the | |||
allocated storage (quota) on the mail system, thereby preventing | allocated storage (quota) on the mail system, thereby preventing | |||
delivery of future messages destined for the owner. | delivery of future messages destined for the owner. | |||
11. Privacy Considerations | 10. Privacy Considerations | |||
In addition to the privacy considerations in [RFC5228], [RFC5230], | In addition to the privacy considerations in [RFC5228], [RFC5230], | |||
[RFC5435], and [RFC6131], it should be noted that a copy of a | [RFC5435], and [RFC6131], it should be noted that a copy of a | |||
generated message filed into a shared or public maibox (as opposed to | generated message filed into a shared or public mailbox (as opposed | |||
a private mailbox) could expose private information about the Sieve | to a private mailbox) could expose private information about the | |||
script owner to third parties. For instance, users that have access | Sieve script owner to third parties. For instance, users that have | |||
to the shared/public mailbox might discover that the Sieve script | access to the shared/public mailbox might discover that the Sieve | |||
owner is on holiday or might discover the owner's physical location. | script owner is on holiday or might discover the owner's physical | |||
location. | ||||
12. IANA Considerations | ||||
12.1. Registration of Sieve Extension | 11. IANA Considerations | |||
To: iana@iana.org | 11.1. Registration of New Sieve Extension | |||
Subject: Registration of new Sieve extension | IANA has registered the following Sieve extension in the "Sieve | |||
Extensions" registry at | ||||
<https://www.iana.org/assignments/sieve-extensions>: | ||||
Capability name: fcc | Capability name: fcc | |||
Description: Adds the ":fcc" parameter to Sieve action commands | Description: Adds the ":fcc" parameter to Sieve action commands | |||
that generate additional messages. | that generate additional messages. | |||
RFC number: RFC XXXX | RFC number: RFC 8580 | |||
Contact address: The Sieve discussion list <sieve@ietf.org> | Contact address: The Sieve discussion list <sieve@ietf.org> | |||
12.2. Registration of Notification-Capability Parameter | 11.2. Registration of New Notification-Capability Parameter | |||
To: iana@iana.org | ||||
Subject: Registration of a new notification-capability parameter | IANA has registered the following notification-capability parameter | |||
in the "Notification-Capability Parameters" registry at | ||||
<https://www.iana.org/assignments/notification-capability- | ||||
parameters>: | ||||
Capability name: fcc | Capability Name: fcc | |||
Description: Returns whether a copy of the notification message | Description: Returns whether a copy of the notification message | |||
sent using the method identified by the notification-uri parameter | sent using the method identified by the notification-uri parameter | |||
to the notify_method_capability test can be filed into a target | to the notify_method_capability test can be filed into a target | |||
mailbox. | mailbox. | |||
Syntax: Can contain one of two values: "yes" or "no". Values MUST | Syntax: Can contain one of two values: "yes" or "no". Values MUST | |||
be in lowercase. | be in lowercase. | |||
Permanent and readily available reference(s): This RFC | Reference: RFC 8580 | |||
Contact information: The Sieve discussion list <ietf-mta- | ||||
filters@imc.org> | ||||
13. Acknowledgments | ||||
The authors would like to thank the following individuals for | ||||
contributing their ideas and support for writing this specification: | ||||
Ned Freed, Stan Kalisch, and Alexey Melnikov. | ||||
14. References | Contact: The Sieve discussion list <sieve@ietf.org> | |||
14.1. Normative References | 12. References | |||
[I-D.ietf-extra-sieve-special-use] | 12.1. Normative References | |||
Bosch, S., "Sieve Email Filtering: Delivering to Special- | ||||
Use Mailboxes", draft-ietf-extra-sieve-special-use-04 | ||||
(work in progress), November 2018. | ||||
[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, DOI 10.17487/RFC2045, November 1996, | Bodies", RFC 2045, DOI 10.17487/RFC2045, November 1996, | |||
<https://www.rfc-editor.org/info/rfc2045>. | <https://www.rfc-editor.org/info/rfc2045>. | |||
[RFC2046] Freed, N. and N. Borenstein, "Multipurpose Internet Mail | [RFC2046] Freed, N. and N. Borenstein, "Multipurpose Internet Mail | |||
Extensions (MIME) Part Two: Media Types", RFC 2046, | Extensions (MIME) Part Two: Media Types", RFC 2046, | |||
DOI 10.17487/RFC2046, November 1996, | DOI 10.17487/RFC2046, November 1996, | |||
<https://www.rfc-editor.org/info/rfc2046>. | <https://www.rfc-editor.org/info/rfc2046>. | |||
skipping to change at page 12, line 33 ¶ | skipping to change at page 11, line 50 ¶ | |||
[RFC5490] Melnikov, A., "The Sieve Mail-Filtering Language -- | [RFC5490] Melnikov, A., "The Sieve Mail-Filtering Language -- | |||
Extensions for Checking Mailbox Status and Accessing | Extensions for Checking Mailbox Status and Accessing | |||
Mailbox Metadata", RFC 5490, DOI 10.17487/RFC5490, March | Mailbox Metadata", RFC 5490, DOI 10.17487/RFC5490, March | |||
2009, <https://www.rfc-editor.org/info/rfc5490>. | 2009, <https://www.rfc-editor.org/info/rfc5490>. | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
14.2. Informative References | [RFC8579] Bosch, S., "Sieve Email Filtering: Delivering to Special- | |||
Use Mailboxes", RFC 8579, DOI 10.17487/RFC8579, May 2019, | ||||
<https://www.rfc-editor.org/info/rfc8579>. | ||||
12.2. Informative References | ||||
[Err2035] RFC Errata, Errata ID 2035, RFC 5230, | ||||
<https://www.rfc-editor.org/errata_search.php?eid=2035>. | ||||
[RFC5321] Klensin, J., "Simple Mail Transfer Protocol", RFC 5321, | [RFC5321] Klensin, J., "Simple Mail Transfer Protocol", RFC 5321, | |||
DOI 10.17487/RFC5321, October 2008, | DOI 10.17487/RFC5321, October 2008, | |||
<https://www.rfc-editor.org/info/rfc5321>. | <https://www.rfc-editor.org/info/rfc5321>. | |||
[RFC5436] Leiba, B. and M. Haardt, "Sieve Notification Mechanism: | [RFC5436] Leiba, B. and M. Haardt, "Sieve Notification Mechanism: | |||
mailto", RFC 5436, DOI 10.17487/RFC5436, January 2009, | mailto", RFC 5436, DOI 10.17487/RFC5436, January 2009, | |||
<https://www.rfc-editor.org/info/rfc5436>. | <https://www.rfc-editor.org/info/rfc5436>. | |||
[RFC5437] Saint-Andre, P. and A. Melnikov, "Sieve Notification | [RFC5437] Saint-Andre, P. and A. Melnikov, "Sieve Notification | |||
Mechanism: Extensible Messaging and Presence Protocol | Mechanism: Extensible Messaging and Presence Protocol | |||
(XMPP)", RFC 5437, DOI 10.17487/RFC5437, January 2009, | (XMPP)", RFC 5437, DOI 10.17487/RFC5437, January 2009, | |||
<https://www.rfc-editor.org/info/rfc5437>. | <https://www.rfc-editor.org/info/rfc5437>. | |||
[RFC6131] George, R. and B. Leiba, "Sieve Vacation Extension: | [RFC6131] George, R. and B. Leiba, "Sieve Vacation Extension: | |||
"Seconds" Parameter", RFC 6131, DOI 10.17487/RFC6131, July | "Seconds" Parameter", RFC 6131, DOI 10.17487/RFC6131, July | |||
2011, <https://www.rfc-editor.org/info/rfc6131>. | 2011, <https://www.rfc-editor.org/info/rfc6131>. | |||
[RFC7942] Sheffer, Y. and A. Farrel, "Improving Awareness of Running | Acknowledgments | |||
Code: The Implementation Status Section", BCP 205, | ||||
RFC 7942, DOI 10.17487/RFC7942, July 2016, | ||||
<https://www.rfc-editor.org/info/rfc7942>. | ||||
14.3. URIs | ||||
[1] https://tools.ietf.org/html/bcp14 | ||||
[2] http://www.cyrusimap.org/ | ||||
[3] http://www.cmu.edu/computing/ | ||||
[4] https://www.oracle.com/industries/communications/enterprise/ | ||||
products/messaging-server/index.html | ||||
Appendix A. Change History (To be removed by RFC Editor before | ||||
publication) | ||||
Changes since draft-ietf-extra-sieve-fcc-08: | ||||
o Introduced additional security and privacy considerations. | ||||
o Reintroduced text describing incompatibility with [e]reject. | ||||
o Reverted to RFC 5228 fileinto language regarding invalid/non- | ||||
existent FCC mailbox. | ||||
o Editorial changes from IESG review. | ||||
o Editorial changes from Gen-ART review. | ||||
Changes since draft-ietf-extra-sieve-fcc-07: | ||||
o Added comments regarding FCC ABNF per Alexey Melnikov. | ||||
o Reordered arguments in the "vacation" example to show ":fcc" | ||||
appearing amongst FCC-OPTS. | ||||
Changes since draft-ietf-extra-sieve-fcc-06: | ||||
o Reorganized sections. | ||||
o Switched to using proper ABNF for FCC and fileinto extensions. | ||||
o Fcc into INBOX if specified target mailbox doesn't exist. | ||||
o Editorial changes from Alexey Melnikov. | ||||
o Other minor editorial changes. | ||||
Changes since draft-ietf-extra-sieve-fcc-05: | ||||
o Editorial changes from Jiankang Yao. | ||||
Changes since draft-ietf-extra-sieve-fcc-04: | ||||
o Editorial changes from Ned Freed. | ||||
o Added information on Oracle implementation. | ||||
Changes since draft-ietf-extra-sieve-fcc-03: | ||||
o Fixed typo in ABNF. | ||||
Changes since draft-ietf-extra-sieve-fcc-02: | ||||
o Updated Keywords boilerplate. | ||||
o Noted that :fcc mailbox argument and any fileinto extension | ||||
arguments used wth :fcc have the same syntax and semantics as they | ||||
have with fileinto. | ||||
o Removed section on [e]Reject. | ||||
o Added "fcc" notification-capability. | ||||
o Added Implementation Status section. | ||||
o Editorial changes from Ned Freed. | ||||
Changes since draft-ietf-extra-sieve-fcc-01: | ||||
o Added text discussing how to handle generated messages that are | ||||
not in MIME format. | ||||
o Adjusted ABNF so that tagged arguments that supplement :fcc no | ||||
longer appear as positional. | ||||
Changes since draft-ietf-extra-sieve-fcc-00: | ||||
o Updated abstract with text from Ned. | ||||
o Added support for :fcc to notify extension. | ||||
o Prohibit use of :fcc with reject and ereject extensions. | ||||
o Added registration of the extension with IANA. | ||||
o Added Acknowledgments. | ||||
o Minor editorial changes. | The authors would like to thank the following individuals for | |||
contributing their ideas and supporting this specification: Ned | ||||
Freed, Stan Kalisch, and Alexey Melnikov. | ||||
Authors' Addresses | Authors' Addresses | |||
Kenneth Murchison | Kenneth Murchison | |||
FastMail US LLC | FastMail US LLC | |||
1429 Walnut Street - Suite 1201 | 1429 Walnut Street, Suite 1201 | |||
Philadelphia, PA 19102 | Philadelphia, PA 19102 | |||
USA | United States of America | |||
Email: murch@fastmailteam.com | Email: murch@fastmailteam.com | |||
Bron Gondwana | Bron Gondwana | |||
FastMail Pty Ltd | FastMail Pty Ltd | |||
Level 2, 114 William Street | Level 2, 114 William Street | |||
Melbourne, VIC 3000 | Melbourne, VIC 3000 | |||
Australia | Australia | |||
Email: brong@fastmailteam.com | Email: brong@fastmailteam.com | |||
End of changes. 73 change blocks. | ||||
316 lines changed or deleted | 182 lines changed or added | |||
This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |