draft-ietf-extra-imap-objectid-05.txt | draft-ietf-extra-imap-objectid-06.txt | |||
---|---|---|---|---|
EXTRA B. Gondwana, Ed. | EXTRA B. Gondwana, Ed. | |||
Internet-Draft FastMail | Internet-Draft FastMail | |||
Updates: 3501 (if approved) July 17, 2018 | Updates: 3501 (if approved) July 19, 2018 | |||
Intended status: Standards Track | Intended status: Standards Track | |||
Expires: January 18, 2019 | Expires: January 20, 2019 | |||
IMAP Extension for object identifiers | IMAP Extension for object identifiers | |||
draft-ietf-extra-imap-objectid-05 | draft-ietf-extra-imap-objectid-06 | |||
Abstract | Abstract | |||
This document updates RFC3501 (IMAP4rev1) with persistent identifiers | This document updates RFC3501 (IMAP4rev1) with persistent identifiers | |||
on mailboxes and messages to allow clients to more efficiently re-use | on mailboxes and messages to allow clients to more efficiently re-use | |||
cached data when resources have changed location on the server. | cached data when resources have changed location on the server. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
skipping to change at page 1, line 33 ¶ | skipping to change at page 1, line 33 ¶ | |||
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 January 18, 2019. | This Internet-Draft will expire on January 20, 2019. | |||
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 | |||
(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 28 ¶ | skipping to change at page 2, line 28 ¶ | |||
6. New Filters on SEARCH command . . . . . . . . . . . . . . . . 9 | 6. New Filters on SEARCH command . . . . . . . . . . . . . . . . 9 | |||
7. Formal syntax . . . . . . . . . . . . . . . . . . . . . . . . 9 | 7. Formal syntax . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
8. Implementation considerations . . . . . . . . . . . . . . . . 10 | 8. Implementation considerations . . . . . . . . . . . . . . . . 10 | |||
8.1. Assigning object identifiers . . . . . . . . . . . . . . 10 | 8.1. Assigning object identifiers . . . . . . . . . . . . . . 10 | |||
8.2. Interaction with special cases . . . . . . . . . . . . . 11 | 8.2. Interaction with special cases . . . . . . . . . . . . . 11 | |||
8.3. Client usage . . . . . . . . . . . . . . . . . . . . . . 11 | 8.3. Client usage . . . . . . . . . . . . . . . . . . . . . . 11 | |||
9. Future considerations . . . . . . . . . . . . . . . . . . . . 11 | 9. Future considerations . . . . . . . . . . . . . . . . . . . . 11 | |||
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12 | 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12 | |||
11. Security Considerations . . . . . . . . . . . . . . . . . . . 12 | 11. Security Considerations . . . . . . . . . . . . . . . . . . . 12 | |||
12. Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 | 12. Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
12.1. draft-ietf-extra-imap-objectid-05 . . . . . . . . . . . 12 | 12.1. draft-ietf-extra-imap-objectid-06 . . . . . . . . . . . 12 | |||
12.2. draft-ietf-extra-imap-objectid-04 . . . . . . . . . . . 13 | 12.2. draft-ietf-extra-imap-objectid-05 . . . . . . . . . . . 13 | |||
12.3. draft-ietf-extra-imap-objectid-03 . . . . . . . . . . . 13 | 12.3. draft-ietf-extra-imap-objectid-04 . . . . . . . . . . . 13 | |||
12.4. draft-ietf-extra-imap-objectid-02 . . . . . . . . . . . 13 | 12.4. draft-ietf-extra-imap-objectid-03 . . . . . . . . . . . 13 | |||
12.5. draft-ietf-extra-imap-objectid-01 . . . . . . . . . . . 13 | 12.5. draft-ietf-extra-imap-objectid-02 . . . . . . . . . . . 14 | |||
12.6. draft-ietf-extra-imap-objectid-00 . . . . . . . . . . . 14 | 12.6. draft-ietf-extra-imap-objectid-01 . . . . . . . . . . . 14 | |||
12.7. draft-ietf-extra-imap-uniqueid-00 . . . . . . . . . . . 14 | 12.7. draft-ietf-extra-imap-objectid-00 . . . . . . . . . . . 14 | |||
12.8. draft-gondwana-imap-uniqueid-01 . . . . . . . . . . . . 14 | 12.8. draft-ietf-extra-imap-uniqueid-00 . . . . . . . . . . . 14 | |||
12.9. draft-gondwana-imap-uniqueid-00 . . . . . . . . . . . . 15 | 12.9. draft-gondwana-imap-uniqueid-01 . . . . . . . . . . . . 15 | |||
12.10. draft-gondwana-imap-uniqueid-00 . . . . . . . . . . . . 15 | ||||
13. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 15 | 13. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 15 | |||
13.1. Appendix 1: ideas for implementing object identifiers . 15 | 13.1. Appendix 1: ideas for implementing object identifiers . 15 | |||
14. References . . . . . . . . . . . . . . . . . . . . . . . . . 16 | 14. References . . . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
14.1. Normative References . . . . . . . . . . . . . . . . . . 16 | 14.1. Normative References . . . . . . . . . . . . . . . . . . 16 | |||
14.2. Informative References . . . . . . . . . . . . . . . . . 17 | 14.2. Informative References . . . . . . . . . . . . . . . . . 17 | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 17 | Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 17 | |||
1. Introduction | 1. Introduction | |||
IMAP stores are often used by many clients. Each client may cache | IMAP stores are often used by many clients. Each client may cache | |||
skipping to change at page 4, line 9 ¶ | skipping to change at page 4, line 12 ¶ | |||
The server MUST return the same MAILBOXID for a mailbox with the same | The server MUST return the same MAILBOXID for a mailbox with the same | |||
name and UIDVALIDITY. | name and UIDVALIDITY. | |||
The server MUST NOT report the same MAILBOXID for two mailboxes at | The server MUST NOT report the same MAILBOXID for two mailboxes at | |||
the same time. | the same time. | |||
The server MUST NOT reuse the same MAILBOXID for a mailbox which does | The server MUST NOT reuse the same MAILBOXID for a mailbox which does | |||
not obey all the invarients that [RFC3501] defines for a mailbox | not obey all the invarients that [RFC3501] defines for a mailbox | |||
which does not change name or UIDVALIDITY. | which does not change name or UIDVALIDITY. | |||
The server SHOULD NOT change MAILBOXID when renaming a folder, as | The server MUST keep the same MAILBOXID for the source and | |||
this loses the main benefit of having a unique identifier. | destination when renaming a mailbox in a way which keeps the same | |||
messages (but see [RFC3501] for the special case regarding renaming | ||||
of INBOX, which is treated as creating a new mailbox and moving the | ||||
messages) | ||||
4.1. New response code for CREATE | 4.1. New response code for CREATE | |||
This document extends the CREATE command to have the response code | This document extends the CREATE command to have the response code | |||
MAILBOXID on successful mailbox creation. | MAILBOXID on successful mailbox creation. | |||
A server advertising the OBJECTID capability MUST include the | A server advertising the OBJECTID capability MUST include the | |||
MAILBOXID response code in the tagged OK response to all successful | MAILBOXID response code in the tagged OK response to all successful | |||
CREATE commands. | CREATE commands. | |||
skipping to change at page 10, line 4 ¶ | skipping to change at page 10, line 4 ¶ | |||
insensitive. The use of upper- or lowercase characters to define | insensitive. The use of upper- or lowercase characters to define | |||
token strings is for editorial clarity only. Implementations MUST | token strings is for editorial clarity only. Implementations MUST | |||
accept these strings in a case-insensitive fashion. | accept these strings in a case-insensitive fashion. | |||
capability =/ "OBJECTID" | capability =/ "OBJECTID" | |||
fetch-att =/ "EMAILID" / "THREADID" | fetch-att =/ "EMAILID" / "THREADID" | |||
fetch-emailid-resp = "EMAILID" SP "(" objectid ")" ; follows tagged- | fetch-emailid-resp = "EMAILID" SP "(" objectid ")" ; follows tagged- | |||
ext production from [RFC4466] | ext production from [RFC4466] | |||
fetch-threadid-resp = "THREADID" SP "(" objectid ")" / "THREADID" NIL | fetch-threadid-resp = "THREADID" SP ( "(" objectid ")" / nil ) ; | |||
; follows tagged-ext production from [RFC4466] | follows tagged-ext production from [RFC4466] | |||
msg-att-static =/ fetch-emailid-resp / fetch-threadid-resp | ||||
objectid = 1*255(ALPHA / DIGIT / "_" / "-") ; characters in object | objectid = 1*255(ALPHA / DIGIT / "_" / "-") ; characters in object | |||
identifiers are case ; significant | identifiers are case ; significant | |||
resp-text-code =/ "MAILBOXID" SP "(" objectid ")" ; incorporated | resp-text-code =/ "MAILBOXID" SP "(" objectid ")" ; incorporated | |||
before the expansion rule of ; atom [SP 1*<any TEXT-CHAR except "]">] | before the expansion rule of ; atom [SP 1*<any TEXT-CHAR except "]">] | |||
; that appears in [RFC3501] | ; that appears in [RFC3501] | |||
search-key =/ "EMAILID" SP objectid / "THREADID" SP objectid | search-key =/ "EMAILID" SP objectid / "THREADID" SP objectid | |||
skipping to change at page 12, line 42 ¶ | skipping to change at page 12, line 42 ¶ | |||
fetch the data directly. Servers that are expected to handle highly | fetch the data directly. Servers that are expected to handle highly | |||
sensitive data should consider using a ID generation mechanism which | sensitive data should consider using a ID generation mechanism which | |||
doesn't derive from a digest. | doesn't derive from a digest. | |||
See also the security considerations in [RFC3501] section 11. | See also the security considerations in [RFC3501] section 11. | |||
12. Changes | 12. Changes | |||
To be removed by the editor before publication | To be removed by the editor before publication | |||
12.1. draft-ietf-extra-imap-objectid-05 | 12.1. draft-ietf-extra-imap-objectid-06 | |||
o fixed one more missing space in ABNF (ad review) | ||||
o made one more MUST for mailbox being retained on rename (genart | ||||
review) | ||||
o updated ABNF to also extend msg-att-static (validator review) | ||||
o lowercased NIL => nil in ABNF (validator review) | ||||
12.2. draft-ietf-extra-imap-objectid-05 | ||||
o changed some SHOULD to lower case in advice sections (genart | o changed some SHOULD to lower case in advice sections (genart | |||
review) | review) | |||
o clarified that THREADID MUST NOT change | o clarified that THREADID MUST NOT change | |||
12.2. draft-ietf-extra-imap-objectid-04 | 12.3. draft-ietf-extra-imap-objectid-04 | |||
o described NIL THREADID in more detail (ad review) | o described NIL THREADID in more detail (ad review) | |||
o made RFC5256 a normative reference (ad review) | o made RFC5256 a normative reference (ad review) | |||
o fixed ABNF missing quote (ad review) | o fixed ABNF missing quote (ad review) | |||
o documented hash upgrade process (ad review) | o documented hash upgrade process (ad review) | |||
o referenced RFC3501 for INBOX rename (ad review) | o referenced RFC3501 for INBOX rename (ad review) | |||
skipping to change at page 13, line 32 ¶ | skipping to change at page 13, line 39 ¶ | |||
o remove suggested algorithms which are no longer legitimate (genart | o remove suggested algorithms which are no longer legitimate (genart | |||
review) | review) | |||
o updated proxy advice to suggest rewriting ids (genart review) | o updated proxy advice to suggest rewriting ids (genart review) | |||
o fixed minor gramatical issues (genart review) | o fixed minor gramatical issues (genart review) | |||
o required that EMAILID and THREADID are not identical (own | o required that EMAILID and THREADID are not identical (own | |||
decision) | decision) | |||
12.3. draft-ietf-extra-imap-objectid-03 | 12.4. draft-ietf-extra-imap-objectid-03 | |||
o added RFC3501 to Abstract | o added RFC3501 to Abstract | |||
o updated [[THIS RFC]] to not fail idnits | o updated [[THIS RFC]] to not fail idnits | |||
o changed jmap-mail to be informative rather than normative | o changed jmap-mail to be informative rather than normative | |||
o shortened IDs to stop wrapping and outdents in IMAP examples | o shortened IDs to stop wrapping and outdents in IMAP examples | |||
12.4. draft-ietf-extra-imap-objectid-02 | 12.5. draft-ietf-extra-imap-objectid-02 | |||
o added "Client usage" section | o added "Client usage" section | |||
12.5. draft-ietf-extra-imap-objectid-01 | 12.6. draft-ietf-extra-imap-objectid-01 | |||
o added "updates" for RFC3501 | o added "updates" for RFC3501 | |||
o fixed domains in thread example | o fixed domains in thread example | |||
o described threading in more detail | o described threading in more detail | |||
o added IANA request for Response Code | o added IANA request for Response Code | |||
o clarified RFC2119 references | o clarified RFC2119 references | |||
o simplified some waffle in wording | o simplified some waffle in wording | |||
o added security consideration to choose good digest | o added security consideration to choose good digest | |||
o added MAILBOXID-UID suggestion for EMAILID generation | o added MAILBOXID-UID suggestion for EMAILID generation | |||
skipping to change at page 14, line 16 ¶ | skipping to change at page 14, line 29 ¶ | |||
o clarified RFC2119 references | o clarified RFC2119 references | |||
o simplified some waffle in wording | o simplified some waffle in wording | |||
o added security consideration to choose good digest | o added security consideration to choose good digest | |||
o added MAILBOXID-UID suggestion for EMAILID generation | o added MAILBOXID-UID suggestion for EMAILID generation | |||
o updated ABNF normative reference to RFC5234 | o updated ABNF normative reference to RFC5234 | |||
12.6. draft-ietf-extra-imap-objectid-00 | 12.7. draft-ietf-extra-imap-objectid-00 | |||
o renamed draft to be objectid rather than uniqueid | o renamed draft to be objectid rather than uniqueid | |||
o renamed UNIQUEID (capability) to OBJECTID | o renamed UNIQUEID (capability) to OBJECTID | |||
o restricted objectid to 64 safe characters | o restricted objectid to 64 safe characters | |||
o added security considerations and advice about choosing objectid | o added security considerations and advice about choosing objectid | |||
o wrapped all responses in () for RFC4466 compatibility | o wrapped all responses in () for RFC4466 compatibility | |||
o signifiant rewrite of all sections | o signifiant rewrite of all sections | |||
12.7. draft-ietf-extra-imap-uniqueid-00 | 12.8. draft-ietf-extra-imap-uniqueid-00 | |||
o renamed draft to be an EXTRA document | o renamed draft to be an EXTRA document | |||
o added example for LIST RETURN STATUS | o added example for LIST RETURN STATUS | |||
o started work on ABNF | o started work on ABNF | |||
o attempted to add response codes for EMAILID and THREADID | o attempted to add response codes for EMAILID and THREADID | |||
12.8. draft-gondwana-imap-uniqueid-01 | 12.9. draft-gondwana-imap-uniqueid-01 | |||
o renamed UNIQUEID (status item) to MAILBOXID | o renamed UNIQUEID (status item) to MAILBOXID | |||
o renamed MSGID to EMAILID | o renamed MSGID to EMAILID | |||
o renamed THRID to THREADID | o renamed THRID to THREADID | |||
o added TODO section | o added TODO section | |||
12.9. draft-gondwana-imap-uniqueid-00 | 12.10. draft-gondwana-imap-uniqueid-00 | |||
o initial upload with names UNIQUEID/MSGID/THRID | o initial upload with names UNIQUEID/MSGID/THRID | |||
13. Acknowledgments | 13. Acknowledgments | |||
The EXTRA working group at IETF. In particular feedback from Arnt | The EXTRA working group at IETF. In particular feedback from Arnt | |||
Gulbrandsen, Brandon Long, Chris Newman and Josef Sipek. | Gulbrandsen, Brandon Long, Chris Newman and Josef Sipek. | |||
The Gmail X-GM-THRID and X-GM-MSGID implementation as currently | The Gmail X-GM-THRID and X-GM-MSGID implementation as currently | |||
defined at <https://developers.google.com/gmail/imap/imap- | defined at <https://developers.google.com/gmail/imap/imap- | |||
End of changes. 17 change blocks. | ||||
26 lines changed or deleted | 44 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/ |