draft-ietf-lemonade-reconnect-client-00.txt   draft-ietf-lemonade-reconnect-client-01.txt 
Network Working Group A. Melnikov Network Working Group A. Melnikov
Internet-Draft Isode Ltd Internet-Draft Isode Ltd
Expires: December 19, 2006 D. Cridland Intended status: Standards Track D. Cridland
Inventure Systems Ltd Expires: December 3, 2006 Inventure Systems Ltd
C. Wilson C. Wilson
Nokia Nokia
June 17, 2006
IMAP4 Extensions for Quick Mailbox Resynchronization IMAP4 Extensions for Quick Mailbox Resynchronization
draft-ietf-lemonade-reconnect-client-00.txt draft-ietf-lemonade-reconnect-client-01.txt
Status of this Memo Status of this Memo
By submitting this Internet-Draft, each author represents that any By submitting this Internet-Draft, each author represents that any
applicable patent or other IPR claims of which he or she is aware applicable patent or other IPR claims of which he or she is aware
have been or will be disclosed, and any of which he or she becomes have been or will be disclosed, and any of which he or she becomes
aware will be disclosed, in accordance with Section 6 of BCP 79. aware will be disclosed, in accordance with Section 6 of BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF), its areas, and its working groups. Note that
skipping to change at page 1, line 37 skipping to change at page 1, line 35
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."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt. http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
This Internet-Draft will expire on December 19, 2006. This Internet-Draft will expire on December 3, 2006.
Copyright Notice Copyright Notice
Copyright (C) The Internet Society (2006). Copyright (C) The Internet Society (2006).
Abstract Abstract
This document defines an IMAP4 extension, which gives an IMAP client This document defines an IMAP4 extension, which gives an IMAP client
the ability to quickly resynchronize any previously opened mailbox. the ability to quickly resynchronize any previously opened mailbox as
[[anchor1: Need more text here, we already have a quick reconnect part of the SELECT command, without the need for server-side state or
extension called CONDSTORE.]] additional client round-trips.
Changes since draft-ietf-lemonade-reconnect-client-01.txt
o If client's UIDVALIDITY doesn't match server's, the server will
not return any flags anymore.
o Clarified that SELECT (QRESYNC) is a CONDSTORE-enabling command.
o Other minor editorial changes and fixes.
Changes since draft-ietf-lemonade-reconnect-client-00.txt
o Changed server behavior when the specified UIDVALIDITY doesn't
match the current. This allows the client to chose how to proceed
after that.
o Other minor editorial changes and fixes.
Table of Contents Table of Contents
1. Requirements notation . . . . . . . . . . . . . . . . . . . . . 3 1. Requirements notation . . . . . . . . . . . . . . . . . . . . 4
2. Introduction and Overview . . . . . . . . . . . . . . . . . . . 3 2. Introduction and Overview . . . . . . . . . . . . . . . . . . 4
3. Quick resynchronization extension . . . . . . . . . . . . . . . 3 3. Quick resynchronization extension . . . . . . . . . . . . . . 5
3.1. QRESYNC parameter to SELECT/EXAMINE . . . . . . . . . . . . 4 3.1. QRESYNC parameter to SELECT/EXAMINE . . . . . . . . . . . 5
4. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . . 6 4. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 7
5. Security Considerations . . . . . . . . . . . . . . . . . . . . 6 5. Security Considerations . . . . . . . . . . . . . . . . . . . 7
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 6 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8
7. Normative References . . . . . . . . . . . . . . . . . . . . . 7 7. Normative References . . . . . . . . . . . . . . . . . . . . . 8
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 8 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 8
Intellectual Property and Copyright Statements . . . . . . . . . . 9 Intellectual Property and Copyright Statements . . . . . . . . . . 10
1. Requirements notation 1. Requirements notation
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119]. document are to be interpreted as described in [RFC2119].
In examples, "C:" and "S:" indicate lines sent by the client and In examples, "C:" and "S:" indicate lines sent by the client and
server respectively. If a single "C:" or "S:" label applies to server respectively. If a single "C:" or "S:" label applies to
multiple lines, then the line breaks between those lines are for multiple lines, then the line breaks between those lines are for
skipping to change at page 3, line 37 skipping to change at page 4, line 37
provided by both [CONDSTORE] and [EXPUNGED] extensions, while provided by both [CONDSTORE] and [EXPUNGED] extensions, while
reducing one more round-trip. reducing one more round-trip.
In particular this extension can be useful for mobile clients that In particular this extension can be useful for mobile clients that
can experience frequent disconnects caused by environmental factors can experience frequent disconnects caused by environmental factors
(battery life, signal strength, etc.). Such clients would need a way (battery life, signal strength, etc.). Such clients would need a way
to quickly reconnect to the IMAP server, without forcing the user to to quickly reconnect to the IMAP server, without forcing the user to
experience long delay and pay big bills for the amount of traffic experience long delay and pay big bills for the amount of traffic
generated by resynchronization. generated by resynchronization.
[[anchor4: Note to RFC editor: This document is compliant with By extending the SELECT command to perform the additional
resynchronization, this also allows clients to reduce concurrent
connections to the IMAP server held purely for the sake of avoiding
the resynchronization.
[[anchor3: Note to RFC editor: This document is compliant with
"transitional IMAP capabilities" document [TRANS-CAPA]. Please "transitional IMAP capabilities" document [TRANS-CAPA]. Please
change the capability name below to "RECONNECT"]] change the capability name below to "QRESYNC"]]
The quick resync IMAP extension is present if an IMAP4 server returns The quick resync IMAP extension is present if an IMAP4 server returns
"X-DRAFT-W00-QRESYNC" as one of the supported capabilities to the "X-DRAFT-W01-QRESYNC" as one of the supported capabilities to the
CAPABILITY command. Note, that this extension REQUIREs support for CAPABILITY command. Note, that this extension REQUIREs support for
the [CONDSTORE] and the [EXPUNGED] IMAP extensions, so they MUST be the [CONDSTORE] and the [EXPUNGED] IMAP extensions, so they MUST be
announced in the CAPABILITY response as well. announced in the CAPABILITY response as well.
3. Quick resynchronization extension 3. Quick resynchronization extension
3.1. QRESYNC parameter to SELECT/EXAMINE 3.1. QRESYNC parameter to SELECT/EXAMINE
The Quick Resynchronization parameter to SELECT/EXAMINE commands The Quick Resynchronization parameter to SELECT/EXAMINE commands has
takes three arguments: the mailbox UIDVALIDITY, the last known three arguments:
modification sequence and the optional list of known UIDs.
o the last known UIDVALIDITY,
o the last known modification sequence
o and the optional list of known UIDs.
The parameter acts as a CONDSTORE enabling command, as defined in
[CONDSTORE]. In other words, the use of the QRESYNC parameter
implies the CONDSTORE parameter. Also, the QRESYNC parameter implies
the EXPUNGED parameter, as defined in [EXPUNGED].
Before opening the specified mailbox the server verifies all Before opening the specified mailbox the server verifies all
arguments for syntactic validity. If any parameter is not arguments for syntactic validity. If any parameter is not
syntactically valid, the server return the tagged BAD response, and syntactically valid, the server return the tagged BAD response, and
the mailbox remains unselected. Once the check is done the server the mailbox remains unselected. Once the check is done the server
opens the mailbox as if no SELECT/EXAMINE parameters are specified opens the mailbox as if no SELECT/EXAMINE parameters are specified
(this is subject to processing of other parameters as defined in (this is subject to processing of other parameters as defined in
other extensions). In particular this means that server MUST send other extensions). In particular this means that server MUST send
all untagged responses as specified in Section 6.3.1/6.3.2 of all untagged responses as specified in Section 6.3.1/6.3.2 of
[RFC3501]. [RFC3501].
After that the server checks the UIDVALIDITY value provided by the After that the server checks the UIDVALIDITY value provided by the
client. If the provided UIDVALIDITY doesn't match the UIDVALIDITY client. If the provided UIDVALIDITY doesn't match the UIDVALIDITY
for the mailbox being opened, then the server MUST ignore the for the mailbox being opened, then the server MUST ignore the
remaining parameters and behave as if each message in the mailbox had remaining parameters and behave as if no dynamic message data
some flag changed and the client specified "1:*" as the UID list changed. The client can discover this situation by comparing the
parameter. (See below.) [[anchor7: Should we give the client a UIDVALIDITY value returned by the server. This behaviour allows the
possibility not to synchronize the mailbox instead?]] client not to synchronize the mailbox or decide on the best
synchronization strategy.
Example: Attempting to resynchronize INBOX, but the provided Example: Attempting to resynchronize INBOX, but the provided
UIDVALIDITY parameter doesn't match the current UIDVALIDITY UIDVALIDITY parameter doesn't match the current UIDVALIDITY
value. value.
C: A02 SELECT INBOX (QRESYNC (67890007 20050715194045000 C: A02 SELECT INBOX (QRESYNC (67890007 20050715194045000
41,43:211,214:541)) 41,43:211,214:541))
S: * 464 EXISTS S: * 464 EXISTS
S: * 3 RECENT S: * 3 RECENT
S: * OK [UIDVALIDITY 3857529045] UIDVALIDITY S: * OK [UIDVALIDITY 3857529045] UIDVALIDITY
S: * OK [UIDNEXT 550] Predicted next UID S: * OK [UIDNEXT 550] Predicted next UID
S: * OK [HIGHESTMODSEQ 20060128194045007] S: * OK [HIGHESTMODSEQ 20060128194045007]
S: * OK [UNSEEN 12] Message 12 is first unseen S: * OK [UNSEEN 12] Message 12 is first unseen
S: * FLAGS (\Answered \Flagged \Draft \Deleted \Seen) S: * FLAGS (\Answered \Flagged \Draft \Deleted \Seen)
S: * OK [PERMANENTFLAGS (\Answered \Flagged \Draft S: * OK [PERMANENTFLAGS (\Answered \Flagged \Draft
\Deleted \Seen \*)] Permanent flags \Deleted \Seen \*)] Permanent flags
S: * 1 FETCH (UID 4 FLAGS (\Seen \Answered $MDNSent))
...
S: * 464 FETCH (UID 601 FLAGS (\Draft))
S: A02 OK [READ-WRITE] Sorry, UIDVALIDITY mismatch S: A02 OK [READ-WRITE] Sorry, UIDVALIDITY mismatch
Modification Sequence and UID Parameters: Modification Sequence and UID Parameters:
If the provided UIDVALIDITY matches that of the selected mailbox, the If the provided UIDVALIDITY matches that of the selected mailbox, the
server then checks the last known modification sequence. server then checks the last known modification sequence.
The server sends the client any pending flag changes (using FETCH The server sends the client any pending flag changes (using FETCH
responses that MUST contain UIDs) and expunges that have occurred in responses that MUST contain UIDs) and expunges that have occurred in
this mailbox since the provided modification sequence. this mailbox since the provided modification sequence.
If the list of known UIDs was also provided, the server should only If the list of known UIDs was also provided, the server should only
report flag changes and expunges for the provided messages. If the report flag changes and expunges for the provided messages. If the
client doesn't provide the list of UIDs, the server acts as if the client doesn't provide the list of UIDs, the server acts as if the
client has specified "1:*". client has specified "1:*".
Thus, the client client can process just these pending events and Thus, the client client can process just these pending events and
skipping to change at page 6, line 34 skipping to change at page 7, line 42
;; syntax defined in [IMAPABNF] ;; syntax defined in [IMAPABNF]
uidvalidity = nz-number uidvalidity = nz-number
known-uids = sequence-set known-uids = sequence-set
;; sequence of UIDs, "*" is not allowed ;; sequence of UIDs, "*" is not allowed
5. Security Considerations 5. Security Considerations
Security considerations relevant to [CONDSTORE] and [EXPUNGED] are Security considerations relevant to [CONDSTORE] and [EXPUNGED] are
also relevant to this extension. relevant to this extension.
[[anchor10: TBD]] This document doesn't raise any new security concerns not already
raised by [CONDSTORE].
6. IANA Considerations 6. IANA Considerations
IMAP4 capabilities are registered by publishing a standards track or IMAP4 capabilities are registered by publishing a standards track or
IESG approved experimental RFC. The registry is currently located IESG approved experimental RFC. The registry is currently located
at: at:
http://www.iana.org/assignments/imap4-capabilities http://www.iana.org/assignments/imap4-capabilities
This document defines the X-DRAFT-W00-QRESYNC [[anchor12: Fix This document defines the X-DRAFT-W01-QRESYNC [[anchor9: The final
capability name upon publication]] IMAP capability. IANA is capability name will be chosen during AUTH48]] IMAP capability. IANA
requested to add this capability to the registry. is requested to add this capability to the registry.
7. Normative References 7. Normative References
[ABNF] Crocker, D., Ed. and P. Overell, Ed., "Augmented BNF for [ABNF] Crocker, D., Ed. and P. Overell, Ed., "Augmented BNF for
Syntax Specifications: ABNF", RFC 4234, October 2005. Syntax Specifications: ABNF", RFC 4234, October 2005.
[CONDSTORE] [CONDSTORE]
Melnikov, A. and S. Hole, "IMAP Extension for Conditional Melnikov, A. and S. Hole, "IMAP Extension for Conditional
STORE Operation or Quick Flag Changes Resynchronization", STORE Operation or Quick Flag Changes Resynchronization",
RFC 4551, June 2006. RFC 4551, June 2006.
skipping to change at page 9, line 5 skipping to change at page 10, line 5
Email: dave.cridland@invsys.co.uk Email: dave.cridland@invsys.co.uk
Corby Wilson Corby Wilson
Nokia Nokia
5 Wayside Rd. 5 Wayside Rd.
Burlington, MA 01803 Burlington, MA 01803
USA USA
Email: corby@computer.org Email: corby@computer.org
Intellectual Property Statement Full Copyright Statement
Copyright (C) The Internet Society (2006).
This document is subject to the rights, licenses and restrictions
contained in BCP 78, and except as set forth therein, the authors
retain all their rights.
This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Intellectual Property
The IETF takes no position regarding the validity or scope of any The IETF takes no position regarding the validity or scope of any
Intellectual Property Rights or other rights that might be claimed to Intellectual Property Rights or other rights that might be claimed to
pertain to the implementation or use of the technology described in pertain to the implementation or use of the technology described in
this document or the extent to which any license under such rights this document or the extent to which any license under such rights
might or might not be available; nor does it represent that it has might or might not be available; nor does it represent that it has
made any independent effort to identify any such rights. Information made any independent effort to identify any such rights. Information
on the procedures with respect to rights in RFC documents can be on the procedures with respect to rights in RFC documents can be
found in BCP 78 and BCP 79. found in BCP 78 and BCP 79.
skipping to change at page 9, line 29 skipping to change at page 10, line 45
such proprietary rights by implementers or users of this such proprietary rights by implementers or users of this
specification can be obtained from the IETF on-line IPR repository at specification can be obtained from the IETF on-line IPR repository at
http://www.ietf.org/ipr. http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary copyrights, patents or patent applications, or other proprietary
rights that may cover technology that may be required to implement rights that may cover technology that may be required to implement
this standard. Please address the information to the IETF at this standard. Please address the information to the IETF at
ietf-ipr@ietf.org. ietf-ipr@ietf.org.
Disclaimer of Validity
This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Copyright Statement
Copyright (C) The Internet Society (2006). This document is subject
to the rights, licenses and restrictions contained in BCP 78, and
except as set forth therein, the authors retain all their rights.
Acknowledgment Acknowledgment
Funding for the RFC Editor function is currently provided by the Funding for the RFC Editor function is provided by the IETF
Internet Society. Administrative Support Activity (IASA).
 End of changes. 20 change blocks. 
54 lines changed or deleted 82 lines changed or added

This html diff was produced by rfcdiff 1.32. The latest version is available from http://www.levkowetz.com/ietf/tools/rfcdiff/