Network Working Group Arnt Gulbrandsen Internet-Draft April 2014 Intended Status: Proposed Standard The IMAP UIDONLY Extension draft-gulbrandsen-imap-uidonly-00.txt Status of this Memo This Internet-Draft is submitted to IETF in full conformance with the provisions of BCP 78 and BCP 79. Copyright (c) 2014 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 (http://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. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet- Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt. The list of Internet- Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html. This Internet-Draft expires in October 2014. Gulbrandsen Expires September 2014 [Page 1] Internet-draft April 2014 Abstract Opening a large mailbox in IMAP can take mailbox; 30 seconds is realistic if the mailbox contains ten million messages. Most of that time is needed to number the messages consecutively. This extension provides a way to avoid having to number the messages consecutively. 1. Conventions Used in This Document The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119]. Formal syntax is defined by [RFC5234]. Example lines prefaced by "C:" are sent by the client and ones prefaced by "S:" by the server. The five characters [...] means that something has been elided. 2. Overview Some/many clients do not use IMAP MSNs at all, and rely entirely on UIDs. Some servers (notably gmail) take a long time to open very large mailboxes, since they have to compute an MSN for each message. This extension allows a client to declare that it only uses UIDs, and that the server can skip all processing related to MSNs. A client declares that it wishes to use this extension with the command ENABLE UIDONLY. 3.1. Client requirements A client hat has issued ENABLE UIDONLY cannot use MSNs in any commands. This means that it MUST NOT use the FETCH, STORE and SEARCH commmands, that it MUST NOT use MSNs as search-key in the UID SEARCH command, and that it MUST NOT expect to receive an EXISTS response. While the client will still receive MSNs, it MUST NOT expect them to mean anything. (RFC editor: Remove this parenthesis. It seems to be easier to add support for UIDONLY by disregarding parsed MSNs than to change both the parser and the layer above, so I chose to leave dummy Gulbrandsen Expires September 2014 [Page 2] Internet-draft April 2014 MSNs in.) 3.1. Server requirements These rules apply from the time the server has received an ENABLE command that enables UIDONLY until the TCP connection is closed. The server MUST send the number 999999999999999 when it needs to send an MSN. [RFC Editor: Change 999999999999999 to the number of this RFC.] The server MUST send the UID data item in all FETCH responses, including untagged FETCH responses. The server MUST respond with BAD to any command that uses an MSN, including a UID SEARCH command that uses MSNs. This search command would retrieve the UID of the last message: C: a uid search * S: a BAD [CLIENTBUG] You promised not to use MSNs The following alternative is legal, since in this case the * is a UID rather than an MSN: C: a uid search uid * C: * SEARCH 10240901 S: a OK done The server MUST NOT send EXISTS responses at any time (not even during SELECT/EXAMINE processing), and MUST send UIDNEXT when it would have sent EXISTS. For example: C: a idle S: + S: * OK [UIDNEXT 10240902] next UID The server MUST send VANISHED responses (see [RFC5162], section 3.6) where it would ordinarily send EXPUNGED responses. ([RFC5162] defines a large extension called Quick Resync, of which VANISHED is a small part. Note that neither the server nor the client need support or use Quick Resync in general.) 5. Formal Syntax The following syntax specification uses the Augmented Backus-Naur Gulbrandsen Expires September 2014 [Page 3] Internet-draft April 2014 Form (ABNF) notation as specified in [RFC5234]. [RFC3501] defines the non-terminal "capability". Except as noted otherwise, all alphabetic characters are case- insensitive. The use of upper or lower case characters to define token strings is for editorial clarity only. Implementations MUST accept these strings in a case-insensitive fashion. capability =/ "UIDONLY" 6. Security Considerations This document is believed not to have any security implications. 7. IANA Considerations The IANA is requested to add UIDONLY to the list of IMAP extensions, http://www.iana.org/assignments/imap4-capabilities. 8. Acknowledgements Thanks to Brandon Long for helpful comments. 9. Normative References [RFC2119] Bradner, "Key words for use in RFCs to Indicate Requirement Levels", RFC 2119, Harvard University, March 1997. [RFC3501] Crispin, "Internet Message Access Protocol - Version 4rev1", RFC 3501, University of Washington, June 2003. [RFC5162] Melnikov, A. and D. Cridland, "IMAP4 Extensions for Quick Mailbox Resynchronization", RFC 5162, March 2008. [RFC5234] Crocker, D. and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", RFC 5234, January 2008. 10. Author's Address Arnt Gulbrandsen Schweppermannstr. 8 D-81671 Muenchen Gulbrandsen Expires September 2014 [Page 4] Internet-draft April 2014 Germany Email: arnt@gulbrandsen.priv.no Gulbrandsen Expires September 2014 [Page 5] Internet-draft April 2014 (RFC Editor: Please delete everything after this point) Open Issues None. Changes since -00 Gulbrandsen Expires September 2014 [Page 6]