draft-ietf-extra-sieve-special-use-01.txt   draft-ietf-extra-sieve-special-use-02.txt 
EXTRA S. Bosch EXTRA S. Bosch
Internet-Draft Dovecot Oy Internet-Draft Dovecot Oy
Intended status: Standards Track January 7, 2018 Intended status: Standards Track March 5, 2018
Expires: July 11, 2018 Expires: September 6, 2018
Sieve Email Filtering: Delivering to Special-Use Mailboxes Sieve Email Filtering: Delivering to Special-Use Mailboxes
draft-ietf-extra-sieve-special-use-01 draft-ietf-extra-sieve-special-use-02
Abstract Abstract
The SPECIAL-USE capability of the IMAP protocol (RFC 6154) allows The SPECIAL-USE capability of the IMAP protocol (RFC 6154) allows
clients to identify special-use mailboxes; e.g., where draft or sent clients to identify special-use mailboxes; e.g., where draft or sent
messages should be put. This simplifies client configuration. In messages should be put. This simplifies client configuration. In
contrast, the Sieve mail filtering language (RFC 5228) currently has contrast, the Sieve mail filtering language (RFC 5228) currently has
no such capability. This memo defines a Sieve extension that fills no such capability. This memo defines a Sieve extension that fills
this gap: it adds a test for checking whether a special-use attribute this gap: it adds a test for checking whether a special-use attribute
is assigned for a particular mailbox or any mailbox, and it adds the is assigned for a particular mailbox or any mailbox, and it adds the
skipping to change at page 1, line 38 skipping to change at page 1, line 38
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
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."
This Internet-Draft will expire on July 11, 2018. This Internet-Draft will expire on September 6, 2018.
Copyright Notice Copyright Notice
Copyright (c) 2018 IETF Trust and the persons identified as the Copyright (c) 2018 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
(http://trustee.ietf.org/license-info) in effect on the date of (http://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 19 skipping to change at page 2, line 19
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. Test "specialuse_exists" . . . . . . . . . . . . . . . . . . 3 3. Test "specialuse_exists" . . . . . . . . . . . . . . . . . . 3
4. ":specialuse" Argument to "fileinto" Command . . . . . . . . 4 4. ":specialuse" Argument to "fileinto" Command . . . . . . . . 4
4.1. Interaction with ":create" Argument to "fileinto" Command 5 4.1. Interaction with ":create" Argument to "fileinto" Command 5
5. Sieve Capability Strings . . . . . . . . . . . . . . . . . . 5 5. Sieve Capability Strings . . . . . . . . . . . . . . . . . . 5
6. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 5 6. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 5
7. Security Considerations . . . . . . . . . . . . . . . . . . . 6 7. Security Considerations . . . . . . . . . . . . . . . . . . . 6
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 6 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7
9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 7 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 7
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 7 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 7
10.1. Normative References . . . . . . . . . . . . . . . . . . 7 10.1. Normative References . . . . . . . . . . . . . . . . . . 7
10.2. Informative References . . . . . . . . . . . . . . . . . 8 10.2. Informative References . . . . . . . . . . . . . . . . . 8
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 8 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 8
1. Introduction 1. Introduction
Commonly, several mailboxes in an IMAP message store [IMAP] have a Commonly, several mailboxes in an IMAP message store [IMAP] have a
special use; e.g. it is where the user's draft messages are stored, special use; e.g. it is where the user's draft messages are stored,
skipping to change at page 3, line 9 skipping to change at page 3, line 9
testing for the presence of a special-use attribute in the "/private/ testing for the presence of a special-use attribute in the "/private/
specialuse" IMAP METADATA [IMAP-METADATA] entry of a mailbox. Still, specialuse" IMAP METADATA [IMAP-METADATA] entry of a mailbox. Still,
not all implementers will be willing to add the complexity of the not all implementers will be willing to add the complexity of the
IMAP METADATA capability, just to provide access to special-use IMAP METADATA capability, just to provide access to special-use
attributes to the Sieve interpreter. attributes to the Sieve interpreter.
This document defines an extension to the Sieve mail filtering This document defines an extension to the Sieve mail filtering
language that adds the ability to freely access mailbox special-use language that adds the ability to freely access mailbox special-use
attributes. It adds a test called "specialuse_exists" that checks attributes. It adds a test called "specialuse_exists" that checks
whether a special-use attribute is assigned for a particular mailbox whether a special-use attribute is assigned for a particular mailbox
or - if omitted - any mailbox. It also adds the ability to file or - if omitted - any of the user's personal mailboxes. It also adds
messages into an anonymous mailbox that has a particular special-use the ability to file messages into an anonymous personal mailbox that
attribute assigned using a ":specialuse" argument for the "fileinto" has a particular special-use attribute assigned using a ":specialuse"
command [SIEVE]. argument for the "fileinto" command [SIEVE].
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 this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [KEYWORDS]. document are to be interpreted as described in [KEYWORDS].
Conventions for notations are as in [SIEVE] Section 1.1, including Conventions for notations are as in [SIEVE] Section 1.1, including
use of the "Usage:" label for the definition of action and tagged use of the "Usage:" label for the definition of action and tagged
arguments syntax. arguments syntax.
3. Test "specialuse_exists" 3. Test "specialuse_exists"
Usage: specialuse_exists [<mailbox: string>] Usage: specialuse_exists [<mailbox: string>]
<special-use-flags: string-list> <special-use-flags: string-list>
If the "mailbox" string argument is omitted, the "specialuse_exists" If the "mailbox" string argument is omitted, the "specialuse_exists"
test yields true if all of the following statements are true for each test yields true if all of the following statements are true for each
of the special-use flags listed in the "special-use-flags" argument: of the special-use flags listed in the "special-use-flags" argument:
a. at least one mailbox exists in the mail store that has that a. at least one mailbox exists in the user's personal namespace
particular special-use flag assigned, and [NAMESPACE] that has that particular special-use flag assigned,
and
b. that mailbox allows the user in whose context the Sieve script b. that mailbox allows the user in whose context the Sieve script
runs to "deliver" messages into it. runs to "deliver" messages into it.
If the "mailbox" argument is specified, the "specialuse_exists" test If the "mailbox" argument is specified, the "specialuse_exists" test
yields true if all of the following statements are true: yields true if all of the following statements are true:
a. the indicated mailbox exists, a. the indicated mailbox exists,
b. that mailbox allows the user in whose context the Sieve script b. that mailbox allows the user in whose context the Sieve script
skipping to change at page 4, line 13 skipping to change at page 4, line 17
messages into a mailbox is deemed possible. messages into a mailbox is deemed possible.
4. ":specialuse" Argument to "fileinto" Command 4. ":specialuse" Argument to "fileinto" Command
Usage: fileinto [:specialuse <special-use-flag: string>] Usage: fileinto [:specialuse <special-use-flag: string>]
<mailbox: string> <mailbox: string>
Normally, the "fileinto" command delivers the message in the mailbox Normally, the "fileinto" command delivers the message in the mailbox
specified using its positional mailbox argument. However, if the specified using its positional mailbox argument. However, if the
optional ":specialuse" argument is also specified, the "fileinto" optional ":specialuse" argument is also specified, the "fileinto"
command first checks whether a mailbox exists with the specified command first checks whether a mailbox exists in the user's personal
special-use flag assigned to it. If that is the case, that special- namespace [NAMESPACE] with the specified special-use flag assigned to
use mailbox is used for delivery instead. If there is no such it. If that is the case, that special-use mailbox is used for
mailbox or if the specified special-use flag is unknown to the delivery instead. If there is no such mailbox or if the specified
implementation in general, the "fileinto" action proceeds as it would special-use flag is unknown to the implementation in general, the
without the ":specialuse" argument. "fileinto" action proceeds as it would without the ":specialuse"
argument.
Summarizing, if the ":specialuse" argument is specified, the fileinto Summarizing, if the ":specialuse" argument is specified, the fileinto
command deals with two mailboxes that may or may not exist: command deals with two mailboxes that may or may not exist:
o An anonymous special-use mailbox, which has at least the special- o An anonymous special-use mailbox in the user's personal namespace,
use flag specified with the ":specialuse" argument assigned to it. which has at least the special-use flag specified with the
":specialuse" argument assigned to it.
o The default mailbox named by the positional string argument of the o The default mailbox named by the positional string argument of the
"fileinto" command, which is used when the special-use mailbox is "fileinto" command, which is used when the special-use mailbox is
not found. not found.
The special-use flag specified with the ":specialuse" argument MUST The special-use flag specified with the ":specialuse" argument MUST
conform to the "use-attr" syntax described in Section 6 of RFC6154 conform to the "use-attr" syntax described in Section 6 of RFC6154
[SIEVE-MAILBOX]. Implementations SHOULD handle an invalid special- [SIEVE-MAILBOX]. Implementations SHOULD handle an invalid special-
use flag in the same way as an invalid mailbox name is handled. The use flag in the same way as an invalid mailbox name is handled. The
string parameter of the ":specialuse" argument is not a constant string parameter of the ":specialuse" argument is not a constant
string, which means that variable substitutions are allowed when the string, which means that variable substitutions are allowed when the
"variables" extension [VARIABLES] is active. In that case, the "variables" extension [VARIABLES] is active. In that case, the
syntax of the special-use flag is only verified at runtime. syntax of the special-use flag is only verified at runtime.
If neither the special-use mailbox nor the default mailbox exists, If neither the special-use mailbox nor the default mailbox exists,
the "fileinto" action MUST proceed exactly as it does in case the the "fileinto" action MUST proceed exactly as it does in case the
":specialuse" is argument is absent and the mailbox named by its ":specialuse" is argument is absent and the mailbox named by its
positional argument does not exist. The various options for handling positional argument does not exist. The various options for handling
this situation are described in Section 4.1 of RFC5228 [SIEVE]. this situation are described in Section 4.1 of RFC5228 [SIEVE].
More than one mailbox can have a particular special-use flag More than one mailbox in the user's personal namespace can have a
assigned. In that case, the mailbox that is chosen for delivery is particular special-use flag assigned. In case of such ambiguity, the
implementation-defined. However, implementations MUST ensure that mailbox that is chosen for delivery is implementation-defined.
this choice is made consistently, so that the same mailbox is used However, while the set of mailboxes to which the involved special-use
every time. flags are assigned remains unchanged, implementations MUST ensure
that the mailbox choice is made consistently, so that the same
mailbox is used every time. Conversely, the chosen mailbox MAY
change once the special-use flag assignments that are relevant for
the mailbox choice are changed (usually by user interaction).
If delivery to the special-use mailbox fails for reasons not relating If delivery to the special-use mailbox fails for reasons not relating
to its existence, the Sieve interpreter MUST NOT subsequently attempt to its existence, the Sieve interpreter MUST NOT subsequently attempt
delivery in the indicated default mailbox as a fall-back. Instead, delivery in the indicated default mailbox as a fall-back. Instead,
it MUST proceed exactly as it does in case the ":specialuse" argument it MUST proceed exactly as it does in case the ":specialuse" argument
is absent and delivery to the mailbox named by its positional is absent and delivery to the mailbox named by its positional
argument fails. This prevents the situation where messages are argument fails. This prevents the situation where messages are
unexpectedly spread over two mailboxes in case transient or unexpectedly spread over two mailboxes in case transient or
intermittent delivery failures occur. intermittent delivery failures occur.
skipping to change at page 6, line 40 skipping to change at page 6, line 49
specialuse_exists "${mailbox}" "\\Junk") { specialuse_exists "${mailbox}" "\\Junk") {
redirect "spam-report@example.org"; redirect "spam-report@example.org";
} }
7. Security Considerations 7. Security Considerations
Security considerations are discussed in [SIEVE], [VARIABLES], and Security considerations are discussed in [SIEVE], [VARIABLES], and
[SPECIAL-USE]. It is believed that this extension does not introduce [SPECIAL-USE]. It is believed that this extension does not introduce
any additional security concerns. any additional security concerns.
Note that this specification explicitly restricts the anonymous
special-use mailbox to the user's personal namespace. First, this
avoids the need to search the entire mail storage for mailboxes that
have a particular special-use flag assigned. This could put undue
load on the system, while shared special-use mailboxes are deemed of
limited use with the currently defined special-use flags. Secondly,
it prevents security concerns with shared mailboxes that have
special-use flags assigned that apply to all users. Searching the
entire mail storage for special-use mailboxes could lead to messages
unexpectedly or even maliciously being filed to shared mailboxes.
This restriction could be lifted for particular future special-use
flags, but such new flags should have a clear application for shared
mailboxes and the security concerns should be considered carefully.
8. IANA Considerations 8. IANA Considerations
The following template specifies the IANA registration of the Sieve The following template specifies the IANA registration of the Sieve
extension specified in this document: extension specified in this document:
To: iana@iana.org To: iana@iana.org
Subject: Registration of new Sieve extension Subject: Registration of new Sieve extension
Capability name: special-use Capability name: special-use
Description: adds a test for checking whether an IMAP Description: adds a test for checking whether an IMAP
skipping to change at page 7, line 42 skipping to change at page 8, line 9
[IMAP-METADATA] [IMAP-METADATA]
Daboo, C., "The IMAP METADATA Extension", RFC 5464, Daboo, C., "The IMAP METADATA Extension", RFC 5464,
DOI 10.17487/RFC5464, February 2009, DOI 10.17487/RFC5464, February 2009,
<http://www.rfc-editor.org/info/rfc5464>. <http://www.rfc-editor.org/info/rfc5464>.
[KEYWORDS] [KEYWORDS]
Bradner, S., "Key words for use in RFCs to Indicate Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997. Requirement Levels", BCP 14, RFC 2119, March 1997.
[NAMESPACE]
Gahrns, M. and C. Newman, "IMAP4 Namespace", RFC 2342,
DOI 10.17487/RFC2342, May 1998, <https://www.rfc-
editor.org/info/rfc2342>.
[SIEVE] Guenther, P. and T. Showalter, "Sieve: An Email Filtering [SIEVE] Guenther, P. and T. Showalter, "Sieve: An Email Filtering
Language", RFC 5228, January 2008. Language", RFC 5228, January 2008.
[SIEVE-MAILBOX] [SIEVE-MAILBOX]
Melnikov, A., "The Sieve Mail-Filtering Language -- 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, March 2009. Mailbox Metadata", RFC 5490, March 2009.
[SPECIAL-USE] [SPECIAL-USE]
Leiba, B. and J. Nicolson, "IMAP LIST Extension for Leiba, B. and J. Nicolson, "IMAP LIST Extension for
 End of changes. 11 change blocks. 
24 lines changed or deleted 51 lines changed or added

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