Internet DRAFT - draft-leiba-imap-2177bis
draft-leiba-imap-2177bis
Network Working Group B. Leiba
Internet-Draft IBM T.J. Watson Research Center
Obsoletes: 2177 (if approved) December 7, 2005
Expires: June 10, 2006
IMAP4 IDLE command
draft-leiba-imap-2177bis-00
Status of this Memo
By submitting this Internet-Draft, each author represents that any
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
aware will be disclosed, in accordance with Section 6 of BCP 79.
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 will expire on June 10, 2006.
Copyright Notice
Copyright (C) The Internet Society (2005).
Abstract
The Internet Message Access Protocol requires a client to poll the
server for changes to the selected mailbox (new mail, deletions).
It's often more desirable to have the server transmit updates to the
client in real time. This allows a user to see new mail immediately.
It also helps some real-time applications based on IMAP, which might
otherwise need to poll extremely often (such as every few seconds).
(While the spec actually does allow a server to push EXISTS responses
asynchronously, a client can't expect this behaviour and must poll.)
Leiba Expires June 10, 2006 [Page 1]
Internet-Draft IMAP4 IDLE command December 2005
This document specifies the syntax of an IDLE command, which will
allow a client to tell the server that it's ready to accept such
real-time updates.
Note
This document is intended to be an update to the existing "IDLE"
extension to the IMAP protocol, available from the RFC repository as
ftp://ftp.isi.edu/in-notes/rfc2177.txt.
This document and other IMAP extensions are being discussed on the
imapext mailing list at mailto:ietf-imapext@imc.org. Subscription
requests can be sent to
mailto:ietf-imapext-request@imc.org?body=subscribe (send an email
message with the word "subscribe" in the body). More information on
the mailing list along with a WWW archive of back messages is
available at http://www.imc.org/ietf-imapext/.
Leiba Expires June 10, 2006 [Page 2]
Internet-Draft IMAP4 IDLE command December 2005
Table of Contents
1. Conventions used in this document . . . . . . . . . . . . . . 4
2. Specification . . . . . . . . . . . . . . . . . . . . . . . . 5
3. Example . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 8
5. Changes since RFC 2177 . . . . . . . . . . . . . . . . . . . . 9
6. Security Considerations . . . . . . . . . . . . . . . . . . . 10
7. Normative References . . . . . . . . . . . . . . . . . . . . . 10
Author's Address . . . . . . . . . . . . . . . . . . . . . . . 10
Intellectual Property and Copyright Statements . . . . . . . . 11
Leiba Expires June 10, 2006 [Page 3]
Internet-Draft IMAP4 IDLE command December 2005
1. Conventions used in this document
In examples, "C:" and "S:" indicate lines sent by the client and
server respectively.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "MAY", and "OPTIONAL" in this document are to
be interpreted as described in [Keywds].
Leiba Expires June 10, 2006 [Page 4]
Internet-Draft IMAP4 IDLE command December 2005
2. Specification
IDLE Command
Arguments: none
Responses: continuation data will be requested; the client sends the
continuation data "DONE" to end the command
Result: OK - IDLE completed after client sent "DONE"
NO - failure: the server will not allow the IDLE command
at this time
BAD - command unknown or arguments invalid
The IDLE command may be used with any IMAP4 server implementation
that returns "IDLE" as one of the supported capabilities to the
CAPABILITY command. If the server does not advertise the IDLE
capability, the client MUST NOT use the IDLE command and must poll
for mailbox updates. In particular, the client MUST continue to be
able to accept unsolicited untagged responses to ANY command (not
just to the IDLE command), as specified in the base IMAP
specification.
The IDLE command is sent from the client to the server when the
client is ready to accept unsolicited messages from the server. The
server requests a response to the IDLE command using the continuation
("+") response. The IDLE command remains active until the client
responds to the continuation, and as long as an IDLE command is
active, the server is now free to send ANY untagged responses. IMAP
servers will frequently send unsolicited responses such as these:
o EXISTS, to inform the client about a change in the number of
messages in the currently-selected mailbox.
o EXPUNGE, to inform the client that a message has been expunged.
o FETCH, to inform the client about a change in the status of a
message (usually to convey flag changes).
o RECENT, to inform the client that the number of messages with the
\Recent flag has changed. This response often accompanies EXISTS.
But note again that what the server may send is not limited to that
list -- ANY untagged response may appear.
The IDLE command is terminated by the receipt of a "DONE"
Leiba Expires June 10, 2006 [Page 5]
Internet-Draft IMAP4 IDLE command December 2005
continuation from the client; such response satisfies the server's
continuation request. At that point, the server MAY send any
remaining queued untagged responses and then MUST immediately send
the tagged response "OK" to the IDLE command and prepare to process
other commands. As in the base specification, the processing of any
new command may cause the sending of unsolicited untagged responses,
subject to the ambiguity limitations. The client MUST NOT send a
command while the server is waiting for the DONE, since the server
will not be able to distinguish a command from a continuation. If
the server receives anything other than "DONE" from the client, this
is a protocol violation and the server SHOULD terminate the IDLE
command with a tagged response of "BAD".
The server MAY consider a client inactive if it has an IDLE command
running, and if such a server has an inactivity timeout it MAY log
the client off implicitly at the end of its timeout period. Because
of that, clients using IDLE are advised to terminate the IDLE and re-
issue it at least every 29 minutes to avoid being logged off. This
still allows a client to receive immediate mailbox updates even
though it need only "poll" at half hour intervals.
Leiba Expires June 10, 2006 [Page 6]
Internet-Draft IMAP4 IDLE command December 2005
3. Example
The following is an example of an IMAP session using IDLE.
C: A001 SELECT INBOX
S: * FLAGS (Deleted Seen)
S: * 3 EXISTS
S: * 0 RECENT
S: * OK [UIDVALIDITY 1]
S: A001 OK SELECT completed
C: A002 IDLE
S: + idling
...time passes; another client sets a flag on message 2...
S: * 2 FETCH (FLAGS (\Seen \Answered \Flagged))
...time passes; new mail arrives...
S: * 4 EXISTS
C: DONE
S: A002 OK IDLE terminated
...another client expunges message 2 now...
C: A003 FETCH 4 ALL
S: * 4 FETCH (...)
S: A003 OK FETCH completed
C: A004 IDLE
S: * 2 EXPUNGE
S: * 3 EXISTS
S: + idling
...time passes; another client expunges message 3...
S: * 3 EXPUNGE
S: * 2 EXISTS
...time passes; new mail arrives...
S: * 3 EXISTS
C: DONE
S: A004 OK IDLE terminated
C: A005 FETCH 3 ALL
S: * 3 FETCH (...)
S: A005 OK FETCH completed
C: A006 IDLE
Leiba Expires June 10, 2006 [Page 7]
Internet-Draft IMAP4 IDLE command December 2005
4. Formal Syntax
The following syntax specification uses the augmented Backus-Naur
Form (BNF) notation as specified in [ABNF]. Non-terminals referenced
but not defined below are as defined by [IMAP4].
command_auth =/ idle
; Valid only in Authenticated or Selected state
idle = "IDLE" CRLF "DONE"
Leiba Expires June 10, 2006 [Page 8]
Internet-Draft IMAP4 IDLE command December 2005
5. Changes since RFC 2177
1. Updated references to current versions.
2. Updated ABNF to current syntax.
3. Added example of unsolicited FETCH response.
4. Clarified that ANY response may come from the server during IDLE,
and gave examples of the most common responses.
5. Clarified that anything other than "DONE" is "BAD".
Leiba Expires June 10, 2006 [Page 9]
Internet-Draft IMAP4 IDLE command December 2005
6. Security Considerations
There are no known security issues with this extension.
7. Normative References
[ABNF] Crocker, D. and P. Overell, "Augmented BNF for Syntax
Specifications: ABNF", RFC 4234, October 2005.
[IMAP4] Crispin, M., "Internet Message Access Protocol - Version
4rev1", RFC 3501, March 2003.
[Keywds] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", RFC 2119, March 1997.
Author's Address
Barry Leiba
IBM T.J. Watson Research Center
19 Skyline Drive
Hawthorne, NY 10532
US
Phone: +1 914 784 7941
Email: leiba@watson.ibm.com
Leiba Expires June 10, 2006 [Page 10]
Internet-Draft IMAP4 IDLE command December 2005
Intellectual Property Statement
The IETF takes no position regarding the validity or scope of any
Intellectual Property Rights or other rights that might be claimed to
pertain to the implementation or use of the technology described in
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
made any independent effort to identify any such rights. Information
on the procedures with respect to rights in RFC documents can be
found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat and any
assurances of licenses to be made available, or the result of an
attempt made to obtain a general license or permission for the use of
such proprietary rights by implementers or users of this
specification can be obtained from the IETF on-line IPR repository at
http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary
rights that may cover technology that may be required to implement
this standard. Please address the information to the IETF at
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 (2005). 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
Funding for the RFC Editor function is currently provided by the
Internet Society.
Leiba Expires June 10, 2006 [Page 11]