| < draft-ietf-extra-sieve-mailboxid-01.txt | draft-ietf-extra-sieve-mailboxid-02.txt > | |||
|---|---|---|---|---|
| EXTRA B. Gondwana, Ed. | EXTRA B. Gondwana, Ed. | |||
| Internet-Draft Fastmail | Internet-Draft Fastmail | |||
| Updates: 5228 (if approved) 30 July 2020 | Updates: 5228 (if approved) September 3, 2020 | |||
| Intended status: Standards Track | Intended status: Standards Track | |||
| Expires: 31 January 2021 | Expires: March 7, 2021 | |||
| Sieve Email Filtering: delivery by mailboxid | Sieve Email Filtering: delivery by mailboxid | |||
| draft-ietf-extra-sieve-mailboxid-01 | draft-ietf-extra-sieve-mailboxid-02 | |||
| Abstract | Abstract | |||
| The OBJECTID capability of the IMAP protocol (RFC8474) allows clients | The OBJECTID capability of the IMAP protocol (RFC8474) allows clients | |||
| to identify mailboxes by a unique identifier which survives rename. | to identify mailboxes by a unique identifier which survives rename. | |||
| This document extends the Sieve mail filtering language (RFC5228) to | This document extends the Sieve mail filtering language (RFC5228) to | |||
| allow using that same unique identifier as a target for fileinto | allow using that same unique identifier as a target for fileinto | |||
| rules, and for testing the existance of mailboxes. | rules, and for testing the existance of mailboxes. | |||
| skipping to change at page 1, line 36 ¶ | skipping to change at page 1, line 36 ¶ | |||
| 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 https://datatracker.ietf.org/drafts/current/. | Drafts is at https://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 31 January 2021. | This Internet-Draft will expire on March 7, 2021. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2020 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 (https://trustee.ietf.org/ | Provisions Relating to IETF Documents (https://trustee.ietf.org/ | |||
| license-info) in effect on the date of publication of this document. | license-info) in effect on the date of publication of this document. | |||
| Please review these documents carefully, as they describe your rights | Please review these documents carefully, as they describe your rights | |||
| skipping to change at page 2, line 22 ¶ | skipping to change at page 2, line 22 ¶ | |||
| provided without warranty as described in the Simplified BSD License. | provided without warranty as 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. Sieve capability string . . . . . . . . . . . . . . . . . . . 3 | 3. Sieve capability string . . . . . . . . . . . . . . . . . . . 3 | |||
| 4. Argument ":mailboxid" to Command "fileinto" . . . . . . . . . 3 | 4. Argument ":mailboxid" to Command "fileinto" . . . . . . . . . 3 | |||
| 4.1. Interaction with "mailbox" extension . . . . . . . . . . 4 | 4.1. Interaction with "mailbox" extension . . . . . . . . . . 4 | |||
| 4.2. Interaction with "specialuse" extension . . . . . . . . . 4 | 4.2. Interaction with "specialuse" extension . . . . . . . . . 4 | |||
| 4.3. Interaction with "fcc" extension . . . . . . . . . . . . 5 | 5. Interaction with "fcc" extension . . . . . . . . . . . . . . 5 | |||
| 5. Test ":mailboxidexists" . . . . . . . . . . . . . . . . . . . 5 | 6. Test "mailboxidexists" . . . . . . . . . . . . . . . . . . . 5 | |||
| 6. Interaction with variables extension . . . . . . . . . . . . 6 | 7. Interaction with variables extension . . . . . . . . . . . . 6 | |||
| 7. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 6 | 8. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 8. Security considerations . . . . . . . . . . . . . . . . . . . 6 | 9. Security considerations . . . . . . . . . . . . . . . . . . . 6 | |||
| 9. IANA considerations . . . . . . . . . . . . . . . . . . . . . 7 | 10. IANA considerations . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 7 | 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 11. Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 12. Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 11.1. draft-ietf-sieve-mailboxid-01 . . . . . . . . . . . . . 7 | 12.1. draft-ietf-sieve-mailboxid-02 . . . . . . . . . . . . . 7 | |||
| 11.2. draft-ietf-sieve-mailboxid-00 . . . . . . . . . . . . . 7 | 12.2. draft-ietf-sieve-mailboxid-01 . . . . . . . . . . . . . 7 | |||
| 11.3. draft-gondwana-sieve-mailboxid-02 . . . . . . . . . . . 8 | 12.3. draft-ietf-sieve-mailboxid-00 . . . . . . . . . . . . . 7 | |||
| 11.4. draft-gondwana-sieve-mailboxid-01 . . . . . . . . . . . 8 | 12.4. draft-gondwana-sieve-mailboxid-02 . . . . . . . . . . . 8 | |||
| 11.5. draft-gondwana-sieve-mailboxid-00 . . . . . . . . . . . 8 | 12.5. draft-gondwana-sieve-mailboxid-01 . . . . . . . . . . . 8 | |||
| 12. Normative References . . . . . . . . . . . . . . . . . . . . 8 | 12.6. draft-gondwana-sieve-mailboxid-00 . . . . . . . . . . . 8 | |||
| 13. Informative References . . . . . . . . . . . . . . . . . . . 9 | 13. Normative References . . . . . . . . . . . . . . . . . . . . 8 | |||
| 14. Informative References . . . . . . . . . . . . . . . . . . . 9 | ||||
| Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 9 | Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 1. Introduction | 1. Introduction | |||
| [RFC5228] Sieve rules are sometimes created using graphical | [RFC5228] Sieve rules are sometimes created using graphical | |||
| interfaces which allow users to select the mailbox to be used as a | interfaces which allow users to select the mailbox to be used as a | |||
| target for a rule. | target for a rule. | |||
| If that mailbox is renamed, the client may also update its internal | If that mailbox is renamed, the client may also update its internal | |||
| representation of the rule and update the sieve script to match, | representation of the rule and update the sieve script to match, | |||
| skipping to change at page 5, line 17 ¶ | skipping to change at page 5, line 17 ¶ | |||
| require "mailbox"; | require "mailbox"; | |||
| require "special-use"; | require "special-use"; | |||
| fileinto :mailboxid "F1234567" | fileinto :mailboxid "F1234567" | |||
| :specialuse "\\Archive" | :specialuse "\\Archive" | |||
| :create | :create | |||
| "INBOX.Archive"; | "INBOX.Archive"; | |||
| # creates INBOX.Archive with use \Archive but | # creates INBOX.Archive with use \Archive but | |||
| # with a different mailboxid. | # with a different mailboxid. | |||
| 4.3. Interaction with "fcc" extension | 5. Interaction with "fcc" extension | |||
| This document extends the definition of the ":fcc" argument defined | This document extends the definition of the ":fcc" argument defined | |||
| in [RFC8580] so that it can optionally be used with the ":mailboxid" | in [RFC8580] so that it can optionally be used with the ":mailboxid" | |||
| argument. | argument. | |||
| FCC =/ [":mailboxid" <mailboxid: string>] | FCC =/ [":mailboxid" <mailboxid: string>] | |||
| If the optional ":mailboxid" argument is specified with ":fcc", it | If the optional ":mailboxid" argument is specified with ":fcc", it | |||
| instructs the Sieve interpreter to check whether a mailbox exists | instructs the Sieve interpreter to check whether a mailbox exists | |||
| with the specific mailboxid. If such a mailbox exists, the generated | with the specific mailboxid. If such a mailbox exists, the generated | |||
| skipping to change at page 5, line 39 ¶ | skipping to change at page 5, line 39 ¶ | |||
| is filed into the ":fcc" target mailbox. | is filed into the ":fcc" target mailbox. | |||
| Example: | Example: | |||
| require ["enotify", "fcc", "mailboxid"]; | require ["enotify", "fcc", "mailboxid"]; | |||
| notify :fcc "INBOX.Sent" | notify :fcc "INBOX.Sent" | |||
| :mailboxid "F6352ae03-b7f5-463c-896f-d8b48ee3" | :mailboxid "F6352ae03-b7f5-463c-896f-d8b48ee3" | |||
| :message "You got mail!" | :message "You got mail!" | |||
| "mailto:ken@example.com"; | "mailto:ken@example.com"; | |||
| 5. Test ":mailboxidexists" | 6. Test "mailboxidexists" | |||
| The "mailboxidexists" test is true if all mailboxes listed in the | The "mailboxidexists" test is true if all mailboxes listed in the | |||
| "mailboxids" argument exist in the mailstore, and each allows the | "mailboxids" argument exist in the mailstore, and each allows the | |||
| user in whose context the Sieve script runs to "deliver" messages | user in whose context the Sieve script runs to "deliver" messages | |||
| into it. When the mailstore is an IMAP server, "delivery" of | into it. When the mailstore is an IMAP server, "delivery" of | |||
| messages is possible if: | messages is possible if: | |||
| a) the READ-WRITE response code is present for the mailbox (see | a) the READ-WRITE response code is present for the mailbox (see | |||
| Section 7.1 of [RFC3501]), if IMAP Access Control List (ACL) | Section 7.1 of [RFC3501]), if IMAP Access Control List (ACL) | |||
| [RFC4314] is not supported by the server, or | [RFC4314] is not supported by the server, or | |||
| skipping to change at page 6, line 30 ¶ | skipping to change at page 6, line 30 ¶ | |||
| "INBOX.harassment"; | "INBOX.harassment"; | |||
| } else { | } else { | |||
| fileinto "INBOX.harassment"; | fileinto "INBOX.harassment"; | |||
| } | } | |||
| } | } | |||
| Note to implementers: this test behaves identically to the | Note to implementers: this test behaves identically to the | |||
| "mailboxexists" test defined in [RFC5490] but operates on mailboxids | "mailboxexists" test defined in [RFC5490] but operates on mailboxids | |||
| rather than mailbox names. | rather than mailbox names. | |||
| 6. Interaction with variables extension | 7. Interaction with variables extension | |||
| There is no special interaction defined, however as an objectid is a | There is no special interaction defined, however as an objectid is a | |||
| string in this document, objectid values can contain variable | string in this document, objectid values can contain variable | |||
| expansions if [RFC5229] is enabled. | expansions if [RFC5229] is enabled. | |||
| 7. Formal Syntax | 8. Formal Syntax | |||
| test /= "mailboxidexists" string-list | test /= "mailboxidexists" string-list | |||
| tag /= ":mailboxid" string | tag /= ":mailboxid" string | |||
| If [RFC8580] is supported: | If [RFC8580] is supported: | |||
| FCC =/ [":mailboxid" <mailboxid: string>] | FCC =/ [":mailboxid" <mailboxid: string>] | |||
| 8. Security considerations | 9. Security considerations | |||
| Because mailboxid is always generated by the server, implementations | Because mailboxid is always generated by the server, implementations | |||
| MUST NOT allow sieve to make an endrun around this protection by | MUST NOT allow sieve to make an endrun around this protection by | |||
| creating mailboxes with the specified ID by using ":create" and | creating mailboxes with the specified ID by using ":create" and | |||
| ":mailboxid" in a fileinto rule for a non-existant mailbox. | ":mailboxid" in a fileinto rule for a non-existant mailbox. | |||
| Implementers are referred to the security considerations sections of | Implementers are referred to the security considerations sections of | |||
| [RFC5228] and [RFC8474]. | [RFC5228] and [RFC8474]. | |||
| 9. IANA considerations | 10. IANA considerations | |||
| IANA are requested to add a capability to the sieve-extensions | IANA are requested to add a capability to the sieve-extensions | |||
| registry: | registry: | |||
| To: iana@iana.org | To: iana@iana.org | |||
| Subject: Registration of new Sieve extension | Subject: Registration of new Sieve extension | |||
| Capability name: mailboxid | Capability name: mailboxid | |||
| Description: adds a test for checking mailbox existence by objectid, | Description: adds a test for checking mailbox existence by objectid, | |||
| and new optional arguments to fileinto and :fcc which | and new optional arguments to fileinto and :fcc which | |||
| allow selecting the destination mailbox by objectid. | allow selecting the destination mailbox by objectid. | |||
| RFC number: this RFC | RFC number: this RFC | |||
| Contact address: The EXTRA discussion list <extra@ietf.org> | Contact address: The EXTRA discussion list <extra@ietf.org> | |||
| 10. Acknowledgements | 11. Acknowledgements | |||
| This document borrows heavily from [RFC5490] for the matching | This document borrows heavily from [RFC5490] for the matching | |||
| mailboxexists test, and from [RFC8579] for an example of modifying | mailboxexists test, and from [RFC8579] for an example of modifying | |||
| the fileinto command. | the fileinto command. | |||
| Thanks to Ned Freed and Ken Murchison and Alexey Melnikov for | Thanks to Ned Freed and Ken Murchison and Alexey Melnikov for | |||
| feedback on the EXTRA mailing list. | feedback on the EXTRA mailing list. | |||
| 11. Changes | 12. Changes | |||
| (EDITOR: remove this section before publication) | (EDITOR: remove this section before publication) | |||
| 11.1. draft-ietf-sieve-mailboxid-01 | 12.1. draft-ietf-sieve-mailboxid-02 | |||
| * removed bogus : from "mailboxidexists" test title | ||||
| * moved FCC to its own top-level section since it is not used with | ||||
| the fileinto command. | ||||
| 12.2. draft-ietf-sieve-mailboxid-01 | ||||
| * fixed idnits - RFC5228 not mentioned in the abstract | * fixed idnits - RFC5228 not mentioned in the abstract | |||
| * fixed other I-D references I had missed, oops | * fixed other I-D references I had missed, oops | |||
| 11.2. draft-ietf-sieve-mailboxid-00 | 12.3. draft-ietf-sieve-mailboxid-00 | |||
| * Adopted into working group per adoption call on list | * Adopted into working group per adoption call on list | |||
| * Updated references to old drafts which have since been published. | * Updated references to old drafts which have since been published. | |||
| * Fixed some typoes and simplified some language. | * Fixed some typoes and simplified some language. | |||
| * Removed stray leading colon on mailboxexists (thanks Alexey) | * Removed stray leading colon on mailboxexists (thanks Alexey) | |||
| * Added :fcc to the IANA registration description (thanks Alexey) | * Added :fcc to the IANA registration description (thanks Alexey) | |||
| * Mentioned that variables can be expanded (thanks Alexey) | * Mentioned that variables can be expanded (thanks Alexey) | |||
| 11.3. draft-gondwana-sieve-mailboxid-02 | 12.4. draft-gondwana-sieve-mailboxid-02 | |||
| * Update document date by a couple of years! Ooops, it got | * Update document date by a couple of years! Ooops, it got | |||
| forgotten after a WGLC which got not dissent. | forgotten after a WGLC which got not dissent. | |||
| * Create xml2rfc v3 output. | * Create xml2rfc v3 output. | |||
| 11.4. draft-gondwana-sieve-mailboxid-01 | 12.5. draft-gondwana-sieve-mailboxid-01 | |||
| * Switch to :mailboxid tagged parameter value with fallback mailbox | * Switch to :mailboxid tagged parameter value with fallback mailbox | |||
| name. | name. | |||
| * Document interaction with "mailbox". | * Document interaction with "mailbox". | |||
| * Document interaction with "special-use". | * Document interaction with "special-use". | |||
| * Document interaction with "fcc". | * Document interaction with "fcc". | |||
| * Document security considerations around :mailboxid and :create. | * Document security considerations around :mailboxid and :create. | |||
| 11.5. draft-gondwana-sieve-mailboxid-00 | 12.6. draft-gondwana-sieve-mailboxid-00 | |||
| * Initial version. | * Initial version. | |||
| 12. Normative References | 13. Normative References | |||
| [RFC5228] Guenther, P., Ed. and T. Showalter, Ed., "Sieve: An Email | ||||
| Filtering Language", RFC 5228, DOI 10.17487/RFC5228, | ||||
| January 2008, <https://www.rfc-editor.org/info/rfc5228>. | ||||
| [RFC8474] Gondwana, B., Ed., "IMAP Extension for Object | [RFC8474] Gondwana, B., Ed., "IMAP Extension for Object | |||
| Identifiers", RFC 8474, DOI 10.17487/RFC8474, September | Identifiers", RFC 8474, DOI 10.17487/RFC8474, September | |||
| 2018, <https://www.rfc-editor.org/info/rfc8474>. | 2018, <https://www.rfc-editor.org/info/rfc8474>. | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC2342] Gahrns, M. and C. Newman, "IMAP4 Namespace", RFC 2342, | ||||
| DOI 10.17487/RFC2342, May 1998, | ||||
| <https://www.rfc-editor.org/info/rfc2342>. | ||||
| [RFC5228] Guenther, P., Ed. and T. Showalter, Ed., "Sieve: An Email | ||||
| Filtering Language", RFC 5228, DOI 10.17487/RFC5228, | ||||
| January 2008, <https://www.rfc-editor.org/info/rfc5228>. | ||||
| [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>. | |||
| [RFC2342] Gahrns, M. and C. Newman, "IMAP4 Namespace", RFC 2342, | 14. Informative References | |||
| DOI 10.17487/RFC2342, May 1998, | ||||
| <https://www.rfc-editor.org/info/rfc2342>. | ||||
| 13. Informative References | [RFC3501] Crispin, M., "INTERNET MESSAGE ACCESS PROTOCOL - VERSION | |||
| 4rev1", RFC 3501, DOI 10.17487/RFC3501, March 2003, | ||||
| <https://www.rfc-editor.org/info/rfc3501>. | ||||
| [RFC4314] Melnikov, A., "IMAP4 Access Control List (ACL) Extension", | ||||
| RFC 4314, DOI 10.17487/RFC4314, December 2005, | ||||
| <https://www.rfc-editor.org/info/rfc4314>. | ||||
| [RFC5229] Homme, K., "Sieve Email Filtering: Variables Extension", | ||||
| RFC 5229, DOI 10.17487/RFC5229, January 2008, | ||||
| <https://www.rfc-editor.org/info/rfc5229>. | ||||
| [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>. | |||
| [RFC8579] Bosch, S., "Sieve Email Filtering: Delivering to Special- | [RFC8579] Bosch, S., "Sieve Email Filtering: Delivering to Special- | |||
| Use Mailboxes", RFC 8579, DOI 10.17487/RFC8579, May 2019, | Use Mailboxes", RFC 8579, DOI 10.17487/RFC8579, May 2019, | |||
| <https://www.rfc-editor.org/info/rfc8579>. | <https://www.rfc-editor.org/info/rfc8579>. | |||
| [RFC8580] Murchison, K. and B. Gondwana, "Sieve Extension: File | [RFC8580] Murchison, K. and B. Gondwana, "Sieve Extension: File | |||
| Carbon Copy (FCC)", RFC 8580, DOI 10.17487/RFC8580, May | Carbon Copy (FCC)", RFC 8580, DOI 10.17487/RFC8580, May | |||
| 2019, <https://www.rfc-editor.org/info/rfc8580>. | 2019, <https://www.rfc-editor.org/info/rfc8580>. | |||
| [RFC3501] Crispin, M., "INTERNET MESSAGE ACCESS PROTOCOL - VERSION | ||||
| 4rev1", RFC 3501, DOI 10.17487/RFC3501, March 2003, | ||||
| <https://www.rfc-editor.org/info/rfc3501>. | ||||
| [RFC5229] Homme, K., "Sieve Email Filtering: Variables Extension", | ||||
| RFC 5229, DOI 10.17487/RFC5229, January 2008, | ||||
| <https://www.rfc-editor.org/info/rfc5229>. | ||||
| [RFC4314] Melnikov, A., "IMAP4 Access Control List (ACL) Extension", | ||||
| RFC 4314, DOI 10.17487/RFC4314, December 2005, | ||||
| <https://www.rfc-editor.org/info/rfc4314>. | ||||
| Author's Address | Author's Address | |||
| Bron Gondwana (editor) | Bron Gondwana (editor) | |||
| Fastmail | Fastmail | |||
| Level 2, 114 William St | Level 2, 114 William St | |||
| Melbourne VIC 3000 | Melbourne VIC 3000 | |||
| Australia | Australia | |||
| Email: brong@fastmailteam.com | Email: brong@fastmailteam.com | |||
| URI: https://www.fastmail.com | URI: https://www.fastmail.com | |||
| End of changes. 25 change blocks. | ||||
| 54 lines changed or deleted | 62 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||