draft-ietf-extra-imap-objectid-01.txt   draft-ietf-extra-imap-objectid-02.txt 
EXTRA B. Gondwana EXTRA B. Gondwana, Ed.
Internet-Draft FastMail Internet-Draft FastMail
Intended status: Standards Track April 24, 2018 Updates: 3501 (if approved) May 26, 2018
Expires: October 26, 2018 Intended status: Standards Track
Expires: November 27, 2018
IMAP Extension for object identifiers IMAP Extension for object identifiers
draft-ietf-extra-imap-objectid-01 draft-ietf-extra-imap-objectid-02
Abstract Abstract
This document adds new properties to IMAP mailboxes and messages to This document adds new properties to IMAP mailboxes and messages to
allow clients to more efficiently re-use cached data for resources allow clients to more efficiently re-use cached data for resources
which have changed location on the server. which 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 32 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 October 26, 2018. This Internet-Draft will expire on November 27, 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
(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 23 skipping to change at page 2, line 23
4.3. New attribute for STATUS . . . . . . . . . . . . . . . . 5 4.3. New attribute for STATUS . . . . . . . . . . . . . . . . 5
5. EMAILID object identifier and THREADID correlator . . . . . . 6 5. EMAILID object identifier and THREADID correlator . . . . . . 6
5.1. EMAILID identifier for identical messages . . . . . . . . 6 5.1. EMAILID identifier for identical messages . . . . . . . . 6
5.2. THREADID identifer for related messages . . . . . . . . . 6 5.2. THREADID identifer for related messages . . . . . . . . . 6
5.3. New Message Data Items in FETCH and UID FETCH Commands . 7 5.3. New Message Data Items in FETCH and UID FETCH Commands . 7
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
9. Future considerations . . . . . . . . . . . . . . . . . . . . 11 9. Future considerations . . . . . . . . . . . . . . . . . . . . 11
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 11 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12
11. Security Considerations . . . . . . . . . . . . . . . . . . . 11 11. Security Considerations . . . . . . . . . . . . . . . . . . . 12
12. Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 12. Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
12.1. draft-ietf-extra-imap-objectid-01 . . . . . . . . . . . 12 12.1. draft-ietf-extra-imap-objectid-02 . . . . . . . . . . . 12
12.2. draft-ietf-extra-imap-objectid-00 . . . . . . . . . . . 12 12.2. draft-ietf-extra-imap-objectid-01 . . . . . . . . . . . 12
12.3. draft-ietf-extra-imap-uniqueid-00 . . . . . . . . . . . 13 12.3. draft-ietf-extra-imap-objectid-00 . . . . . . . . . . . 13
12.4. draft-gondwana-imap-uniqueid-01 . . . . . . . . . . . . 13 12.4. draft-ietf-extra-imap-uniqueid-00 . . . . . . . . . . . 13
12.5. draft-gondwana-imap-uniqueid-00 . . . . . . . . . . . . 13 12.5. draft-gondwana-imap-uniqueid-01 . . . . . . . . . . . . 13
12.6. draft-gondwana-imap-uniqueid-00 . . . . . . . . . . . . 13
13. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 13 13. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 13
13.1. Appendix 1: ideas for implementing object identifiers . 13 13.1. Appendix 1: ideas for implementing object identifiers . 14
14. References . . . . . . . . . . . . . . . . . . . . . . . . . 14 14. References . . . . . . . . . . . . . . . . . . . . . . . . . 14
14.1. Normative References . . . . . . . . . . . . . . . . . . 14 14.1. Normative References . . . . . . . . . . . . . . . . . . 14
14.2. Informative References . . . . . . . . . . . . . . . . . 15 14.2. Informative References . . . . . . . . . . . . . . . . . 15
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 15 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 16
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
data from the server so that they don't need to re-download data from the server so that they don't need to re-download
information. [RFC3501] defines that a mailbox can be uniquely information. [RFC3501] defines that a mailbox can be uniquely
referenced by its name and UIDVALIDITY, and a message within that referenced by its name and UIDVALIDITY, and a message within that
mailbox can be uniquely referenced by its mailbox (name + mailbox can be uniquely referenced by its mailbox (name +
UIDVALIDITY) and UID. The triple of mailbox name, UIDVALIDITY and UIDVALIDITY) and UID. The triple of mailbox name, UIDVALIDITY and
UID is guaranteed to be immutable. UID is guaranteed to be immutable.
skipping to change at page 9, line 48 skipping to change at page 9, line 48
Except as noted otherwise, all alphabetic characters are case- Except as noted otherwise, all alphabetic characters are case-
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 ")" fetch-emailid-resp = "EMAILID" SP "(" objectid ")" ; follows tagged-
ext production from [RFC4466]
; follows tagged-ext production from [@!RFC4466] fetch-threadid-resp = "THREADID" SP "(" objectid ")" / "THREADID NIL
; follows tagged-ext production from [RFC4466]
fetch-threadid-resp = "THREADID" SP "(" objectid ")" /
"THREADID NIL
; follows tagged-ext production from [@!RFC4466]
objectid = 1*255(ALPHA / DIGIT / "_" / "-")
; characters in object identifiers are case
; significant
resp-text-code =/ "MAILBOXID" SP "(" objectid ")" objectid = 1*255(ALPHA / DIGIT / "_" / "-") ; characters in object
identifiers are case ; significant
; incorporated before the expansion rule of resp-text-code =/ "MAILBOXID" SP "(" objectid ")" ; incorporated
; atom [SP 1*&lt;any TEXT-CHAR except "]"&gt;] 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
status-att =/ "MAILBOXID" status-att =/ "MAILBOXID"
status-att-value =/ "MAILBOXID" SP "(" objectid ")" status-att-value =/ "MAILBOXID" SP "(" objectid ")" ; follows tagged-
ext production from [RFC4466]
; follows tagged-ext production from [@!RFC4466]
8. Implementation considerations 8. Implementation considerations
8.1. Assigning object identifiers 8.1. Assigning object identifiers
All objectid values are allocated by the server. All objectid values are allocated by the server.
In the interests of reducing the possibilities of encoding mistakes, In the interests of reducing the possibilities of encoding mistakes,
objectids are restricted to a safe subset of possible byte values, objectids are restricted to a safe subset of possible byte values,
and in order to allow clients to allocate storage, they are and in order to allow clients to allocate storage, they are
skipping to change at page 11, line 24 skipping to change at page 11, line 18
The case of RENAME INBOX may need special handling for unique ids. The case of RENAME INBOX may need special handling for unique ids.
It is advisable (though not required) to have MAILBOXID be globally It is advisable (though not required) to have MAILBOXID be globally
unique, but it is only required to be unique within messages offered unique, but it is only required to be unique within messages offered
to a single client login to a single server hostname. For example, a to a single client login to a single server hostname. For example, a
proxy which aggregates multiple independent servers MUST NOT proxy which aggregates multiple independent servers MUST NOT
advertise the OBJECTID capability unless it can guarantee that the advertise the OBJECTID capability unless it can guarantee that the
backends will not use the same identifiers for different objects. backends will not use the same identifiers for different objects.
8.3. Client usage
Servers that implement both RFC 6154 and this specification SHOULD
optimize their execution of command like UID SEARCH OR EMAILID 1234
EMAILID 4321.
Clients can assume that searching the all-mail mailbox using OR/
EMAILID or OR/THREADID is a fast way to find messages again if some
other client has moved them out of the mailbox where they were
previously seen.
Clients that cache data offline SHOULD fetch the EMAILID of all new
messages to avoid re-downloading already cached message details.
Clients SHOULD fetch the MAILBOXID for any new mailboxes before
discarding cache data for any mailbox which is no longer present on
the server, so that they can detect renames and avoid re-downloading
data.
9. Future considerations 9. Future considerations
This extension is intentionally defined to be compatible with the This extension is intentionally defined to be compatible with the
data model in [I-D.ietf-jmap-mail]. data model in [I-D.ietf-jmap-mail].
A future extension could be proposed to give a way to SELECT a A future extension could be proposed to give a way to SELECT a
mailbox by MAILBOXID rather than name. mailbox by MAILBOXID rather than name.
An extension to allow fetching message content directly via EMAILID An extension to allow fetching message content directly via EMAILID
and message listings by THREADID could be proposed. and message listings by THREADID could be proposed.
skipping to change at page 12, line 16 skipping to change at page 12, line 32
resistent property, so server implementations are advised to monitor resistent property, so server implementations are advised to monitor
current security research and choose secure digests. current security research and choose secure digests.
The use of a digest for ID generation may be used as proof that a The use of a digest for ID generation may be used as proof that a
particular sequence of bytes was seen by the server. particular sequence of bytes was seen by the server.
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-01 12.1. draft-ietf-extra-imap-objectid-02
o added "Client usage" section
12.2. 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
skipping to change at page 12, line 33 skipping to change at page 13, line 4
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
o updated ABNF normative reference to RFC5234 o updated ABNF normative reference to RFC5234
12.2. draft-ietf-extra-imap-objectid-00 12.3. 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.3. draft-ietf-extra-imap-uniqueid-00 12.4. 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.4. draft-gondwana-imap-uniqueid-01 12.5. 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.5. draft-gondwana-imap-uniqueid-00 12.6. 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-
skipping to change at page 14, line 35 skipping to change at page 14, line 50
There is a need to index and look up reference/in-reply-to data at There is a need to index and look up reference/in-reply-to data at
message creation to efficiently find matching messages for threading. message creation to efficiently find matching messages for threading.
Threading may be either across folders, or within each folder only. Threading may be either across folders, or within each folder only.
The server has significant leeway here. The server has significant leeway here.
14. References 14. References
14.1. Normative References 14.1. Normative References
[I-D.ietf-jmap-mail] [I-D.ietf-jmap-mail]
Jenkins, N., "JMAP for Mail", draft-ietf-jmap-mail-04 Jenkins, N., "JMAP for Mail", draft-ietf-jmap-mail-05
(work in progress), March 2018. (work in progress), May 2018.
[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>.
[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>.
skipping to change at page 15, line 38 skipping to change at page 16, line 7
DOI 10.17487/RFC4122, July 2005, DOI 10.17487/RFC4122, July 2005,
<https://www.rfc-editor.org/info/rfc4122>. <https://www.rfc-editor.org/info/rfc4122>.
[RFC5256] Crispin, M. and K. Murchison, "Internet Message Access [RFC5256] Crispin, M. and K. Murchison, "Internet Message Access
Protocol - SORT and THREAD Extensions", RFC 5256, Protocol - SORT and THREAD Extensions", RFC 5256,
DOI 10.17487/RFC5256, June 2008, DOI 10.17487/RFC5256, June 2008,
<https://www.rfc-editor.org/info/rfc5256>. <https://www.rfc-editor.org/info/rfc5256>.
Author's Address Author's Address
Bron Gondwana 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. 22 change blocks. 
43 lines changed or deleted 59 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/