diff options
Diffstat (limited to 'doc/rfc/rfc8474.txt')
-rw-r--r-- | doc/rfc/rfc8474.txt | 899 |
1 files changed, 899 insertions, 0 deletions
diff --git a/doc/rfc/rfc8474.txt b/doc/rfc/rfc8474.txt new file mode 100644 index 0000000..5b73014 --- /dev/null +++ b/doc/rfc/rfc8474.txt @@ -0,0 +1,899 @@ + + + + + + +Internet Engineering Task Force (IETF) B. Gondwana, Ed. +Request for Comments: 8474 FastMail +Updates: 3501 September 2018 +Category: Standards Track +ISSN: 2070-1721 + + + IMAP Extension for Object Identifiers + +Abstract + + This document updates RFC 3501 (IMAP4rev1) with persistent + identifiers on mailboxes and messages to allow clients to more + efficiently reuse cached data when resources have changed location on + the server. + +Status of This Memo + + This is an Internet Standards Track document. + + This document is a product of the Internet Engineering Task Force + (IETF). It represents the consensus of the IETF community. It has + received public review and has been approved for publication by the + Internet Engineering Steering Group (IESG). Further information on + Internet Standards is available in Section 2 of RFC 7841. + + Information about the current status of this document, any errata, + and how to provide feedback on it may be obtained at + https://www.rfc-editor.org/info/rfc8474. + +Copyright Notice + + Copyright (c) 2018 IETF Trust and the persons identified as the + document authors. All rights reserved. + + This document is subject to BCP 78 and the IETF Trust's Legal + Provisions Relating to IETF Documents + (https://trustee.ietf.org/license-info) in effect on the date of + publication of this document. Please review these documents + carefully, as they describe your rights and restrictions with respect + to this document. Code Components extracted from this document must + include Simplified BSD License text as described in Section 4.e of + the Trust Legal Provisions and are provided without warranty as + described in the Simplified BSD License. + + + + + + + +Gondwana Standards Track [Page 1] + +RFC 8474 IMAP ObjectID September 2018 + + +Table of Contents + + 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 + 2. Conventions Used in This Document . . . . . . . . . . . . . . 3 + 3. CAPABILITY Identification . . . . . . . . . . . . . . . . . . 3 + 4. MAILBOXID Object Identifier . . . . . . . . . . . . . . . . . 3 + 4.1. New Response Code for CREATE . . . . . . . . . . . . . . 4 + 4.2. New OK Untagged Response for SELECT and EXAMINE . . . . . 4 + 4.3. New Attribute for STATUS . . . . . . . . . . . . . . . . 5 + 5. EMAILID Object Identifier and THREADID Correlator . . . . . . 6 + 5.1. EMAILID Identifier for Identical Messages . . . . . . . . 6 + 5.2. THREADID Identifier for Related Messages . . . . . . . . 6 + 5.3. New Message Data Items in FETCH and UID FETCH Commands . 7 + 6. New Filters on SEARCH Command . . . . . . . . . . . . . . . . 9 + 7. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 9 + 8. Implementation Considerations . . . . . . . . . . . . . . . . 10 + 8.1. Assigning Object Identifiers . . . . . . . . . . . . . . 10 + 8.2. Interaction with Special Cases . . . . . . . . . . . . . 11 + 8.3. Client Usage . . . . . . . . . . . . . . . . . . . . . . 11 + 8.4. Advice to Client Implementers . . . . . . . . . . . . . . 12 + 9. Future Considerations . . . . . . . . . . . . . . . . . . . . 12 + 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12 + 11. Security Considerations . . . . . . . . . . . . . . . . . . . 13 + 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 13 + 12.1. Normative References . . . . . . . . . . . . . . . . . . 13 + 12.2. Informative References . . . . . . . . . . . . . . . . . 14 + Appendix A. Ideas for Implementing Object Identifiers . . . . . 15 + Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 15 + Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 16 + +1. Introduction + + IMAP stores are often used by many clients. Each client may cache + data from the server so that it doesn't need to redownload + information. [RFC3501] states that a mailbox can be uniquely + referenced by its name and UIDVALIDITY, and a message within that + mailbox can be uniquely referenced by its mailbox (name + + UIDVALIDITY) and unique identifier (UID). The triple of mailbox + name, UIDVALIDITY, and UID is guaranteed to be immutable. + + [RFC4315] defines a COPYUID response that allows a client that copies + messages to know the mapping between the UIDs in the source and + destination mailboxes and, hence, update its local cache. + + If a mailbox is successfully renamed by a client, that client will + know that the same messages exist in the destination mailbox name as + previously existed in the source mailbox name. + + + + +Gondwana Standards Track [Page 2] + +RFC 8474 IMAP ObjectID September 2018 + + + The result is that the client that copies (or moves [RFC6851]) + messages or renames a mailbox can update its local cache, but any + other client connected to the same store cannot know with certainty + that the messages are identical, so it will redownload everything. + + This extension adds new properties to a message (EMAILID) and mailbox + (MAILBOXID). These properties allow a client to quickly identify + messages or mailboxes that have been renamed by another client. + + This extension also adds an optional thread identifier (THREADID) to + messages, which can be used by the server to indicate messages that + it has identified to be related. A server that does not implement + threading will return NIL to all requests for THREADID. + +2. Conventions Used in This Document + + In examples, "C:" indicates lines sent by a client that is connected + to a server. "S:" indicates lines sent by the server to the client. + + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and + "OPTIONAL" in this document are to be interpreted as described in + BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all + capitals, as shown here. + +3. CAPABILITY Identification + + IMAP servers that support this extension MUST include "OBJECTID" in + the response list to the CAPABILITY command. + +4. MAILBOXID Object Identifier + + The MAILBOXID is a server-allocated unique identifier for each + mailbox. + + The server MUST return the same MAILBOXID for a mailbox with the same + name and UIDVALIDITY. + + The server MUST NOT report the same MAILBOXID for two mailboxes at + the same time. + + The server MUST NOT reuse the same MAILBOXID for a mailbox that does + not obey all the invariants that [RFC3501] defines for a mailbox that + does not change name or UIDVALIDITY. + + + + + + + +Gondwana Standards Track [Page 3] + +RFC 8474 IMAP ObjectID September 2018 + + + The server MUST keep the same MAILBOXID for the source and + destination when renaming a mailbox in a way that keeps the same + messages (but see [RFC3501] for the special case regarding the + renaming of INBOX, which is treated as creating a new mailbox and + moving the messages). + +4.1. New Response Code for CREATE + + This document extends the CREATE command to have the response code + MAILBOXID on successful mailbox creation. + + A server advertising the OBJECTID capability MUST include the + MAILBOXID response code in the tagged OK response to all successful + CREATE commands. + + Syntax: "MAILBOXID" SP "(" objectid ")" + + Response code in tagged OK response for successful CREATE command. + + Example: + + C: 3 create foo + S: 3 OK [MAILBOXID (F2212ea87-6097-4256-9d51-71338625)] Completed + C: 4 create bar + S: 4 OK [MAILBOXID (F6352ae03-b7f5-463c-896f-d8b48ee3)] Completed + C: 5 create foo + S: 5 NO Mailbox already exists + +4.2. New OK Untagged Response for SELECT and EXAMINE + + This document adds a new untagged response code to the SELECT and + EXAMINE commands. + + A server advertising the OBJECTID capability MUST return an untagged + OK response with the MAILBOXID response code on all successful SELECT + and EXAMINE commands. + + Syntax: "OK" SP "[" "MAILBOXID" SP "(" objectid ")" "]" SP text + + Untagged OK response to SELECT or EXAMINE. + + Example: + + C: 27 select "foo" + [...] + S: * OK [MAILBOXID (F2212ea87-6097-4256-9d51-71338625)] Ok + [...] + S: 27 OK [READ-WRITE] Completed + + + +Gondwana Standards Track [Page 4] + +RFC 8474 IMAP ObjectID September 2018 + + +4.3. New Attribute for STATUS + + This document adds the MAILBOXID attribute to the STATUS command + using the extended syntax defined in [RFC4466]. + + A server that advertises the OBJECTID capability MUST support the + MAILBOXID status attribute. + + Syntax: "MAILBOXID" + + The attribute in the STATUS command. + + Syntax: "MAILBOXID" SP "(" objectid ")" + + The response item in the STATUS response contains the ObjectID + assigned by the server for this mailbox. + + Example: + + C: 6 status foo (mailboxid) + S: * STATUS foo (MAILBOXID (F2212ea87-6097-4256-9d51-71338625)) + S: 6 OK Completed + C: 7 status bar (mailboxid) + S: * STATUS bar (MAILBOXID (F6352ae03-b7f5-463c-896f-d8b48ee3)) + S: 7 OK Completed + C: 8 rename foo renamed + S: * OK rename foo renamed + S: 8 OK Completed + C: 9 status renamed (mailboxid) + S: * STATUS renamed (MAILBOXID (F2212ea87-6097-4256-9d51-71338625)) + S: 9 OK Completed + C: 10 status bar (mailboxid) + S: * STATUS bar (MAILBOXID (F6352ae03-b7f5-463c-896f-d8b48ee3)) + S: 10 OK Completed + + When the LIST-STATUS IMAP capability defined in [RFC5819] is also + available, the STATUS command can be combined with the LIST command. + + Example: + + C: 11 list "" "*" return (status (mailboxid)) + S: * LIST (\HasNoChildren) "." INBOX + S: * STATUS INBOX (MAILBOXID (Ff8e3ead4-9389-4aff-adb1-d8d89efd8cbf)) + S: * LIST (\HasNoChildren) "." bar + S: * STATUS bar (MAILBOXID (F6352ae03-b7f5-463c-896f-d8b48ee3)) + S: * LIST (\HasNoChildren) "." renamed + S: * STATUS renamed (MAILBOXID (F2212ea87-6097-4256-9d51-71338625)) + S: 11 OK Completed (0.001 secs 3 calls) + + + +Gondwana Standards Track [Page 5] + +RFC 8474 IMAP ObjectID September 2018 + + +5. EMAILID Object Identifier and THREADID Correlator + +5.1. EMAILID Identifier for Identical Messages + + The EMAILID data item is an ObjectID that uniquely identifies the + content of a single message. Anything that must remain immutable on + a {name, uidvalidity, uid} triple must also be the same between + messages with the same EMAILID. + + The server MUST return the same EMAILID for the same triple; hence, + EMAILID is immutable. + + The server MUST return the same EMAILID as the source message for the + matching destination message in the COPYUID pairing after a COPY or + MOVE command [RFC6851]. + + The server MAY assign the same EMAILID as an existing message upon + APPEND (e.g., if it detects that the new message has exactly + identical content to that of an existing message). + + NOTE: EMAILID only identifies the immutable content of the message. + In particular, it is possible for different messages with the same + EMAILID to have different keywords. This document does not specify a + way to STORE by EMAILID. + +5.2. THREADID Identifier for Related Messages + + The THREADID data item is an ObjectID that uniquely identifies a set + of messages that the server believes should be grouped together when + presented. + + THREADID calculation is generally based on some combination of + References, In-Reply-To, and Subject, but the exact logic is left up + to the server implementation. [RFC5256] describes some algorithms + that could be used; however, this specification does not mandate any + particular strategy. + + The server MUST return the same THREADID for all messages with the + same EMAILID. + + The server SHOULD return the same THREADID for related messages, even + if they are in different mailboxes; for example, messages that would + appear in the same thread if they were in the same mailbox SHOULD + have the same THREADID, even if they are in different mailboxes. + + The server MUST NOT change the THREADID of a message once reported. + + + + + +Gondwana Standards Track [Page 6] + +RFC 8474 IMAP ObjectID September 2018 + + + THREADID is OPTIONAL; if the server doesn't support THREADID or is + unable to calculate relationships between messages, it MUST return + NIL to all FETCH responses for the THREADID data item, and a SEARCH + for THREADID MUST NOT match any messages. + + The server MUST NOT use the same ObjectID value for both EMAILIDs and + THREADIDs. If they are stored with the same value internally, the + server can generate prefixed values (as shown in the examples below + with M and T prefixes) to avoid clashes. + +5.3. New Message Data Items in FETCH and UID FETCH Commands + + This document defines two FETCH items: + + Syntax: "EMAILID" + + The EMAILID message data item causes the server to return EMAILID + FETCH response data items. + + Syntax: "THREADID" + + The THREADID message data item causes the server to return THREADID + FETCH response data items. + + This document defines the following responses: + + Syntax: "EMAILID" SP "(" objectid ")" + + The EMAILID response data item contains the server-assigned ObjectID + for each message. + + Syntax: "THREADID" SP "(" objectid ")" + + The THREADID response data item contains the server-assigned ObjectID + for the set of related messages to which this message belongs. + + Syntax: "THREADID" SP nil + + The NIL value is returned for the THREADID response data item when + the server mailbox does not support THREADID calculation. + + + + + + + + + + + +Gondwana Standards Track [Page 7] + +RFC 8474 IMAP ObjectID September 2018 + + + Example: + + C: 5 append inbox "20-Mar-2018 03:07:37 +1100" {733} + [...] + Subject: Message A + Message-ID: <fake.1521475657.54797@example.com> + [...] + S: 5 OK [APPENDUID 1521475658 1] Completed + + C: 11 append inbox "20-Mar-2018 03:07:37 +1100" {793} + [...] + Subject: Re: Message A + Message-ID: <fake.1521475657.21213@example.org> + References: <fake.1521475657.54797@example.com> + [...] + S: 11 OK [APPENDUID 1521475658 2] Completed + + C: 17 append inbox "20-Mar-2018 03:07:37 +1100" {736} + [...] + Subject: Message C + Message-ID: <fake.1521475657.60280@example.com> + [...] + S: 17 OK [APPENDUID 1521475658 3] Completed + + C: 22 fetch 1:* (emailid threadid) + S: * 1 FETCH (EMAILID (M6d99ac3275bb4e) THREADID (T64b478a75b7ea9)) + S: * 2 FETCH (EMAILID (M288836c4c7a762) THREADID (T64b478a75b7ea9)) + S: * 3 FETCH (EMAILID (M5fdc09b49ea703) THREADID (T11863d02dd95b5)) + S: 22 OK Completed (0.000 sec) + + C: 23 move 2 foo + S: * OK [COPYUID 1521475659 2 1] Completed + S: * 2 EXPUNGE + S: 23 OK Completed + + C: 24 fetch 1:* (emailid threadid) + S: * 1 FETCH (EMAILID (M6d99ac3275bb4e) THREADID (T64b478a75b7ea9)) + S: * 2 FETCH (EMAILID (M5fdc09b49ea703) THREADID (T11863d02dd95b5)) + S: 24 OK Completed (0.000 sec) + C: 25 select "foo" + + C: 25 select "foo" + [...] + S: 25 OK [READ-WRITE] Completed + C: 26 fetch 1:* (emailid threadid) + S: * 1 FETCH (EMAILID (M288836c4c7a762) THREADID (T64b478a75b7ea9)) + S: 26 OK Completed (0.000 sec) + + + + +Gondwana Standards Track [Page 8] + +RFC 8474 IMAP ObjectID September 2018 + + + Example: (no THREADID support) + + C: 26 fetch 1:* (emailid threadid) + S: * 1 FETCH (EMAILID (M00000001) THREADID NIL) + S: * 2 FETCH (EMAILID (M00000002) THREADID NIL) + S: 26 OK Completed (0.000 sec) + + +6. New Filters on SEARCH Command + + This document defines the filters EMAILID and THREADID on the SEARCH + command. + + Syntax: "EMAILID" SP objectid + + Messages whose EMAILID is exactly the specified ObjectID. + + Syntax: "THREADID" SP objectid + + Messages whose THREADID is exactly the specified ObjectID. + + Example: (as if run before the MOVE shown above when the mailbox had + three messages) + + C: 27 search emailid M6d99ac3275bb4e + S: * SEARCH 1 + S: 27 OK Completed (1 msgs in 0.000 secs) + C: 28 search threadid T64b478a75b7ea9 + S: * SEARCH 1 2 + S: 28 OK Completed (2 msgs in 0.000 secs) + +7. Formal Syntax + + The following syntax specification uses the Augmented Backus-Naur + Form (ABNF) [RFC5234] notation. Elements not defined here can be + found in the formal syntax of the ABNF [RFC5234], IMAP [RFC3501], and + IMAP ABNF extensions [RFC4466] specifications. + + Except as noted otherwise, all alphabetic characters are case + insensitive. The use of uppercase or lowercase characters to define + token strings is for editorial clarity only. Implementations MUST + accept these strings in a case-insensitive fashion. + + Please note specifically that ObjectID values are case sensitive. + + + + + + + +Gondwana Standards Track [Page 9] + +RFC 8474 IMAP ObjectID September 2018 + + + capability =/ "OBJECTID" + + fetch-att =/ "EMAILID" / "THREADID" + + fetch-emailid-resp = "EMAILID" SP "(" objectid ")" + ; follows tagged-ext production from [RFC4466] + + fetch-threadid-resp = "THREADID" SP ( "(" objectid ")" / nil ) + ; follows tagged-ext production from [RFC4466] + + msg-att-static =/ fetch-emailid-resp / fetch-threadid-resp + + objectid = 1*255(ALPHA / DIGIT / "_" / "-") + ; characters in object identifiers are case + ; significant + + resp-text-code =/ "MAILBOXID" SP "(" objectid ")" + ; incorporated before the expansion rule of + ; atom [SP 1*<any TEXT-CHAR except "]">] + ; that appears in [RFC3501] + + search-key =/ "EMAILID" SP objectid / "THREADID" SP objectid + + status-att =/ "MAILBOXID" + + status-att-val =/ "MAILBOXID" SP "(" objectid ")" + ; follows tagged-ext production from [RFC4466] + +8. Implementation Considerations + +8.1. Assigning Object Identifiers + + All ObjectID values are allocated by the server. + + In the interest of reducing the possibilities of encoding mistakes, + ObjectIDs are restricted to a safe subset of possible byte values; in + order to allow clients to allocate storage, they are restricted in + length. + + An ObjectID is a string of 1 to 255 characters from the following set + of 64 codepoints: a-z, A-Z, 0-9, _, -. These characters are safe to + use in almost any context (e.g., filesystems, URIs, IMAP atoms). + These are the same characters defined as base64url in [RFC4648]. + + + + + + + + +Gondwana Standards Track [Page 10] + +RFC 8474 IMAP ObjectID September 2018 + + + For maximum safety, servers should also follow defensive allocation + strategies to avoid creating risks where glob completion or data type + detection may be present (e.g., on filesystems or in spreadsheets). + In particular, it is wise to avoid: + + o IDs starting with a dash + + o IDs starting with digits + + o IDs that contain only digits + + o IDs that differ only by ASCII case (for example, A vs. a) + + o the specific sequence of three characters NIL in any case (because + this sequence can be confused with the IMAP protocol expression of + the null value) + + A good solution to these issues is to prefix every ID with a single + alphabetical character. + +8.2. Interaction with Special Cases + + The case of RENAME INBOX may need special handling because it has + special behavior, as defined in [RFC3501], Section 6.3.5. + + It is advisable (though not required) to have MAILBOXID be globally + 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 + proxy that aggregates multiple independent servers MUST NOT advertise + the OBJECTID capability unless it can guarantee that different + objects will never use the same identifiers, even if backend object + identifiers collide. + +8.3. Client Usage + + Servers that implement both RFC 6154 and this specification should + optimize their execution of commands 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 redownloading already-cached message details. + + + + + +Gondwana Standards Track [Page 11] + +RFC 8474 IMAP ObjectID September 2018 + + + Clients should fetch the MAILBOXID for any new mailboxes before + discarding cache data for any mailbox that is no longer present on + the server so that they can detect renames and avoid redownloading + data. + +8.4. Advice to Client Implementers + + In cases of server failure and disaster recovery, or misbehaving + servers, it is possible that a client will be sent invalid + information, e.g., identical ObjectIDs or ObjectIDs that have changed + where they MUST NOT change according to this document. + + In a case where a client detects inconsistent ObjectID responses from + a server, it SHOULD fall back to relying on the guarantees of RFC + 3501. For simplicity, a client MAY instead choose to discard its + entire cache and resync all state from the server. + + Client authors protecting against server misbehavior MUST ensure that + their design cannot get into an infinite loop of discarding cache and + fetching the same data repeatedly without user interaction. + +9. Future Considerations + + This extension is intentionally defined to be compatible with the + data model in [JMAP-MAIL]. + + A future extension could be proposed to give a way to SELECT a + mailbox by MAILBOXID rather than name. + + A future extension to [RFC5228] could allow fileinto by MAILBOXID + rather than name. + + An extension to allow fetching message content directly via EMAILID + and message listings by THREADID could be proposed. + +10. IANA Considerations + + IANA has added "OBJECTID" to the "IMAP Capabilities" registry located + at <https://www.iana.org/assignments/imap-capabilities> with a + reference to this document. + + IANA has added "MAILBOXID" to the "IMAP Response Codes" registry + located at <https://www.iana.org/assignments/imap-response-codes> + with a reference to this document. + + + + + + + +Gondwana Standards Track [Page 12] + +RFC 8474 IMAP ObjectID September 2018 + + +11. Security Considerations + + It is strongly advised that servers generate ObjectIDs that are safe + to use as filesystem names and unlikely to be autodetected as + numbers. See implementation considerations. + + If a digest is used for ID generation, it must have a collision- + resistant property, so server implementations are advised to monitor + current security research and choose secure digests. As the IDs are + generated by the server, it will be possible to migrate to a new hash + by just using the new algorithm when creating new IDs. This is + particularly true if a prefix is used on each ID, which can be + changed when the algorithm changes. + + The use of a digest for ID generation may be used as proof that a + particular sequence of bytes was seen by the server. However, this + is only a risk if IDs are leaked to clients who don't have permission + to fetch the data directly. Servers that are expected to handle + highly sensitive data should consider this when choosing how to + create IDs. + + See also the security considerations in [RFC3501], Section 11. + +12. References + +12.1. Normative References + + [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14, RFC 2119, + DOI 10.17487/RFC2119, March 1997, + <https://www.rfc-editor.org/info/rfc2119>. + + [RFC3501] Crispin, M., "INTERNET MESSAGE ACCESS PROTOCOL - VERSION + 4rev1", RFC 3501, DOI 10.17487/RFC3501, March 2003, + <https://www.rfc-editor.org/info/rfc3501>. + + [RFC4315] Crispin, M., "Internet Message Access Protocol (IMAP) - + UIDPLUS extension", RFC 4315, DOI 10.17487/RFC4315, + December 2005, <https://www.rfc-editor.org/info/rfc4315>. + + [RFC4466] Melnikov, A. and C. Daboo, "Collected Extensions to IMAP4 + ABNF", RFC 4466, DOI 10.17487/RFC4466, April 2006, + <https://www.rfc-editor.org/info/rfc4466>. + + [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>. + + + + +Gondwana Standards Track [Page 13] + +RFC 8474 IMAP ObjectID September 2018 + + + [RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax + Specifications: ABNF", STD 68, RFC 5234, + DOI 10.17487/RFC5234, January 2008, + <https://www.rfc-editor.org/info/rfc5234>. + + [RFC5256] Crispin, M. and K. Murchison, "Internet Message Access + Protocol - SORT and THREAD Extensions", RFC 5256, + DOI 10.17487/RFC5256, June 2008, + <https://www.rfc-editor.org/info/rfc5256>. + + [RFC5819] Melnikov, A. and T. Sirainen, "IMAP4 Extension for + Returning STATUS Information in Extended LIST", RFC 5819, + DOI 10.17487/RFC5819, March 2010, + <https://www.rfc-editor.org/info/rfc5819>. + + [RFC6851] Gulbrandsen, A. and N. Freed, Ed., "Internet Message + Access Protocol (IMAP) - MOVE Extension", RFC 6851, + DOI 10.17487/RFC6851, January 2013, + <https://www.rfc-editor.org/info/rfc6851>. + + [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC + 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, + May 2017, <https://www.rfc-editor.org/info/rfc8174>. + +12.2. Informative References + + [JMAP-MAIL] + Jenkins, N. and C. Newman, "JMAP for Mail", Work in + Progress, draft-ietf-jmap-mail-07, August 2018. + + [RFC4122] Leach, P., Mealling, M., and R. Salz, "A Universally + Unique IDentifier (UUID) URN Namespace", RFC 4122, + DOI 10.17487/RFC4122, July 2005, + <https://www.rfc-editor.org/info/rfc4122>. + + [RFC4648] Josefsson, S., "The Base16, Base32, and Base64 Data + Encodings", RFC 4648, DOI 10.17487/RFC4648, October 2006, + <https://www.rfc-editor.org/info/rfc4648>. + + + + + + + + + + + + + +Gondwana Standards Track [Page 14] + +RFC 8474 IMAP ObjectID September 2018 + + +Appendix A. Ideas for Implementing Object Identifiers + + Ideas for calculating MAILBOXID: + + o Universally Unique Identifier (UUID) [RFC4122] + + o Server-assigned sequence number (guaranteed not to be reused) + + Ideas for implementing EMAILID: + + o Digest of message content (RFC822 bytes) -- expensive unless + cached + + o UUID [RFC4122] + + o Server-assigned sequence number (guaranteed not to be reused) + + Ideas for implementing THREADID: + + o Derive from EMAILID of first seen message in the thread. + + o UUID [RFC4122] + + o Server-assigned sequence number (guaranteed not to be reused) + + There is a need to index and look up reference/in-reply-to data at + message creation to efficiently find matching messages for threading. + Threading may be either across mailboxes or within each mailbox only. + The server has significant leeway here. + +Acknowledgments + + The author would like to thank the EXTRA working group at IETF for + feedback and advice -- in particular, Arnt Gulbrandsen, Brandon Long, + Chris Newman, and Josef Sipek. + + This document drew inspiration from the Gmail X-GM-THRID and X-GM- + MSGID implementations as currently defined at + <https://developers.google.com/gmail/imap/imap-extensions>, as well + as the X-GUID implementation in the Dovecot server. + + + + + + + + + + + +Gondwana Standards Track [Page 15] + +RFC 8474 IMAP ObjectID September 2018 + + +Author's Address + + Bron Gondwana (editor) + FastMail + Level 2, 114 William St + Melbourne VIC 3000 + Australia + + Email: brong@fastmailteam.com + URI: https://www.fastmail.com + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Gondwana Standards Track [Page 16] + |