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]