draft-ietf-extra-sieve-mailboxid-05.txt | draft-ietf-extra-sieve-mailboxid-06.txt | |||
---|---|---|---|---|
EXTRA B. Gondwana, Ed. | EXTRA B. Gondwana, Ed. | |||
Internet-Draft Fastmail | Internet-Draft Fastmail | |||
Updates: 5228 (if approved) 19 November 2020 | Updates: 5228 (if approved) 3 December 2020 | |||
Intended status: Standards Track | Intended status: Standards Track | |||
Expires: 23 May 2021 | Expires: 6 June 2021 | |||
Sieve Email Filtering: delivery by mailboxid | Sieve Email Filtering: delivery by mailboxid | |||
draft-ietf-extra-sieve-mailboxid-05 | draft-ietf-extra-sieve-mailboxid-06 | |||
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 23 May 2021. | This Internet-Draft will expire on 6 June 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 30 ¶ | skipping to change at page 2, line 30 ¶ | |||
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 | |||
5. Interaction with "fcc" extension . . . . . . . . . . . . . . 4 | 5. Interaction with "fcc" extension . . . . . . . . . . . . . . 4 | |||
6. Test "mailboxidexists" . . . . . . . . . . . . . . . . . . . 5 | 6. Test "mailboxidexists" . . . . . . . . . . . . . . . . . . . 5 | |||
7. Interaction with variables extension . . . . . . . . . . . . 6 | 7. Interaction with variables extension . . . . . . . . . . . . 6 | |||
8. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 6 | 8. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
9. Security considerations . . . . . . . . . . . . . . . . . . . 6 | 9. Security considerations . . . . . . . . . . . . . . . . . . . 6 | |||
10. IANA considerations . . . . . . . . . . . . . . . . . . . . . 6 | 10. IANA considerations . . . . . . . . . . . . . . . . . . . . . 6 | |||
11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 7 | 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 7 | |||
12. Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 12. Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
12.1. draft-ietf-sieve-mailboxid-05 . . . . . . . . . . . . . 7 | 12.1. draft-ietf-sieve-mailboxid-06 . . . . . . . . . . . . . 7 | |||
12.2. draft-ietf-sieve-mailboxid-04 . . . . . . . . . . . . . 7 | 12.2. draft-ietf-sieve-mailboxid-05 . . . . . . . . . . . . . 7 | |||
12.3. draft-ietf-sieve-mailboxid-03 . . . . . . . . . . . . . 7 | 12.3. draft-ietf-sieve-mailboxid-04 . . . . . . . . . . . . . 7 | |||
12.4. draft-ietf-sieve-mailboxid-02 . . . . . . . . . . . . . 7 | 12.4. draft-ietf-sieve-mailboxid-03 . . . . . . . . . . . . . 7 | |||
12.5. draft-ietf-sieve-mailboxid-01 . . . . . . . . . . . . . 7 | 12.5. draft-ietf-sieve-mailboxid-02 . . . . . . . . . . . . . 7 | |||
12.6. draft-ietf-sieve-mailboxid-00 . . . . . . . . . . . . . 8 | 12.6. draft-ietf-sieve-mailboxid-01 . . . . . . . . . . . . . 8 | |||
12.7. draft-gondwana-sieve-mailboxid-02 . . . . . . . . . . . 8 | 12.7. draft-ietf-sieve-mailboxid-00 . . . . . . . . . . . . . 8 | |||
12.8. draft-gondwana-sieve-mailboxid-01 . . . . . . . . . . . 8 | 12.8. draft-gondwana-sieve-mailboxid-02 . . . . . . . . . . . 8 | |||
12.9. draft-gondwana-sieve-mailboxid-00 . . . . . . . . . . . 8 | 12.9. draft-gondwana-sieve-mailboxid-01 . . . . . . . . . . . 8 | |||
12.10. draft-gondwana-sieve-mailboxid-00 . . . . . . . . . . . 8 | ||||
13. Normative References . . . . . . . . . . . . . . . . . . . . 8 | 13. Normative References . . . . . . . . . . . . . . . . . . . . 8 | |||
14. Informative References . . . . . . . . . . . . . . . . . . . 9 | 14. Informative References . . . . . . . . . . . . . . . . . . . 9 | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 9 | Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
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, | |||
however this is a multi-step process and subject to partial failures. | however this is a multi-step process and subject to partial failures. | |||
skipping to change at page 4, line 15 ¶ | skipping to change at page 4, line 15 ¶ | |||
require "fileinto"; | require "fileinto"; | |||
require "mailboxid"; | require "mailboxid"; | |||
if header :contains ["from"] "coyote" { | if header :contains ["from"] "coyote" { | |||
fileinto :mailboxid "F6352ae03-b7f5-463c-896f-d8b48ee3" | fileinto :mailboxid "F6352ae03-b7f5-463c-896f-d8b48ee3" | |||
"INBOX.harassment"; | "INBOX.harassment"; | |||
} | } | |||
4.1. Interaction with "mailbox" extension | 4.1. Interaction with "mailbox" extension | |||
For servers which also support the [!@RFC5490] mailbox extension, the | For servers which also support the [RFC5490] mailbox extension, the | |||
":create" modifier to fileinto does not create the mailbox with the | ":create" modifier to fileinto does not create the mailbox with the | |||
specified mailboxid, however it may be specified and interacts as | specified mailboxid, however it may be specified and interacts as | |||
normal with all other extensions. | normal with all other extensions. | |||
Example: | Example: | |||
require "fileinto"; | require "fileinto"; | |||
require "mailboxid"; | require "mailboxid"; | |||
require "mailbox"; | require "mailbox"; | |||
fileinto :mailboxid "Fnosuch" | fileinto :mailboxid "Fnosuch" | |||
:create | :create | |||
"INBOX.no-such-folder"; | "INBOX.no-such-folder"; | |||
# creates INBOX.no-such-folder, but it doesn't | # creates INBOX.no-such-folder, but it doesn't | |||
# get the "Fnosuch" mailboxid. | # get the "Fnosuch" mailboxid. | |||
4.2. Interaction with "specialuse" extension | 4.2. Interaction with "specialuse" extension | |||
For servers which also support [!@RFC8579] delivery to special-use | For servers which also support [RFC8579] delivery to special-use | |||
mailboxes, it is an error to specify both ":mailboxid" and ":special- | mailboxes, it is an error to specify both ":mailboxid" and ":special- | |||
use" in the same fileinto command. | use" in the same fileinto command. | |||
Advanced filtering based on both special-use and mailboxid can be | Advanced filtering based on both special-use and mailboxid can be | |||
built with explicit "specialuse_exists" and "mailboxidexists" tests. | built with explicit "specialuse_exists" and "mailboxidexists" tests. | |||
Note to developers of sieve generation tools: it is advisable to use | Note to developers of sieve generation tools: it is advisable to use | |||
special-use rather than mailboxid when creating rules that are based | special-use rather than mailboxid when creating rules that are based | |||
on a special-use purpose (e.g. delivery directly to the Junk folder | on a special-use purpose (e.g. delivery directly to the Junk folder | |||
based on a header that was added by a scanning agent earlier in the | based on a header that was added by a scanning agent earlier in the | |||
skipping to change at page 6, line 11 ¶ | skipping to change at page 6, line 11 ¶ | |||
runs has permissions to execute "fileinto" on it. | runs has permissions to execute "fileinto" on it. | |||
Example: | Example: | |||
require "fileinto"; | require "fileinto"; | |||
require "mailboxid"; | require "mailboxid"; | |||
if header :contains ["from"] "coyote" { | if header :contains ["from"] "coyote" { | |||
if mailboxidexists "F6352ae03-b7f5-463c-896f-d8b48ee3" { | if mailboxidexists "F6352ae03-b7f5-463c-896f-d8b48ee3" { | |||
fileinto :mailboxid "F6352ae03-b7f5-463c-896f-d8b48ee3" | fileinto :mailboxid "F6352ae03-b7f5-463c-896f-d8b48ee3" | |||
"INBOX.harassment"; | "INBOX.name.will.not.be.used"; | |||
} 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. | |||
7. Interaction with variables extension | 7. Interaction with variables extension | |||
skipping to change at page 7, line 28 ¶ | skipping to change at page 7, line 28 ¶ | |||
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. | |||
12. Changes | 12. Changes | |||
(EDITOR: remove this section before publication) | (EDITOR: remove this section before publication) | |||
12.1. draft-ietf-sieve-mailboxid-05 | 12.1. draft-ietf-sieve-mailboxid-06 | |||
* GENART review - fixed example to not be semantically pointless | ||||
* GENART review - fixed !@ to @! in RFC reference mmark syntax | ||||
12.2. draft-ietf-sieve-mailboxid-05 | ||||
* disallow :mailboxid and :special-use in the same fileinto action. | * disallow :mailboxid and :special-use in the same fileinto action. | |||
12.2. draft-ietf-sieve-mailboxid-04 | 12.3. draft-ietf-sieve-mailboxid-04 | |||
* made RFC5490 and RFC8579 normative | * made RFC5490 and RFC8579 normative | |||
* clarified wording based on AD feedback from Barry | * clarified wording based on AD feedback from Barry | |||
12.3. draft-ietf-sieve-mailboxid-03 | 12.4. draft-ietf-sieve-mailboxid-03 | |||
* Fixed ABNF syntax error | * Fixed ABNF syntax error | |||
12.4. draft-ietf-sieve-mailboxid-02 | 12.5. draft-ietf-sieve-mailboxid-02 | |||
* removed bogus : from "mailboxidexists" test title | * removed bogus : from "mailboxidexists" test title | |||
* moved FCC to its own top-level section since it is not used with | * moved FCC to its own top-level section since it is not used with | |||
the fileinto command. | the fileinto command. | |||
12.5. draft-ietf-sieve-mailboxid-01 | 12.6. 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 | |||
12.6. draft-ietf-sieve-mailboxid-00 | 12.7. 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) | |||
12.7. draft-gondwana-sieve-mailboxid-02 | 12.8. 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. | |||
12.8. draft-gondwana-sieve-mailboxid-01 | 12.9. 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. | |||
12.9. draft-gondwana-sieve-mailboxid-00 | 12.10. draft-gondwana-sieve-mailboxid-00 | |||
* Initial version. | * Initial version. | |||
13. Normative References | 13. Normative References | |||
[RFC2342] Gahrns, M. and C. Newman, "IMAP4 Namespace", RFC 2342, | [RFC5228] Guenther, P., Ed. and T. Showalter, Ed., "Sieve: An Email | |||
DOI 10.17487/RFC2342, May 1998, | Filtering Language", RFC 5228, DOI 10.17487/RFC5228, | |||
<https://www.rfc-editor.org/info/rfc2342>. | January 2008, <https://www.rfc-editor.org/info/rfc5228>. | |||
[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>. | |||
[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>. | |||
[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>. | |||
[RFC5228] Guenther, P., Ed. and T. Showalter, Ed., "Sieve: An Email | [RFC2342] Gahrns, M. and C. Newman, "IMAP4 Namespace", RFC 2342, | |||
Filtering Language", RFC 5228, DOI 10.17487/RFC5228, | DOI 10.17487/RFC2342, May 1998, | |||
January 2008, <https://www.rfc-editor.org/info/rfc5228>. | <https://www.rfc-editor.org/info/rfc2342>. | |||
14. Informative References | 14. Informative References | |||
[RFC5490] Melnikov, A., "The Sieve Mail-Filtering Language -- | ||||
Extensions for Checking Mailbox Status and Accessing | ||||
Mailbox Metadata", RFC 5490, DOI 10.17487/RFC5490, March | ||||
2009, <https://www.rfc-editor.org/info/rfc5490>. | ||||
[RFC3501] Crispin, M., "INTERNET MESSAGE ACCESS PROTOCOL - VERSION | [RFC3501] Crispin, M., "INTERNET MESSAGE ACCESS PROTOCOL - VERSION | |||
4rev1", RFC 3501, DOI 10.17487/RFC3501, March 2003, | 4rev1", RFC 3501, DOI 10.17487/RFC3501, March 2003, | |||
<https://www.rfc-editor.org/info/rfc3501>. | <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>. | ||||
[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>. | |||
[RFC4314] Melnikov, A., "IMAP4 Access Control List (ACL) Extension", | [RFC4314] Melnikov, A., "IMAP4 Access Control List (ACL) Extension", | |||
RFC 4314, DOI 10.17487/RFC4314, December 2005, | RFC 4314, DOI 10.17487/RFC4314, December 2005, | |||
<https://www.rfc-editor.org/info/rfc4314>. | <https://www.rfc-editor.org/info/rfc4314>. | |||
[RFC5490] Melnikov, A., "The Sieve Mail-Filtering Language -- | ||||
Extensions for Checking Mailbox Status and Accessing | ||||
Mailbox Metadata", RFC 5490, DOI 10.17487/RFC5490, March | ||||
2009, <https://www.rfc-editor.org/info/rfc5490>. | ||||
[RFC5229] Homme, K., "Sieve Email Filtering: Variables Extension", | ||||
RFC 5229, DOI 10.17487/RFC5229, January 2008, | ||||
<https://www.rfc-editor.org/info/rfc5229>. | ||||
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. 26 change blocks. | ||||
42 lines changed or deleted | 50 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/ |