Network Working Group                                           B. Leiba
Internet Draft                           IBM T.J. Watson Research Center
Document: draft-leiba-imap-idle-01.txt                     February 1997


                         IMAP4 IDLE command

Status of this Memo

   This document is an Internet Draft.  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.  Internet Drafts may be updated, replaced, or obsoleted by
   other documents at any time.  It is not appropriate to use Internet
   Drafts as reference material or to cite them other than as a
   ``working draft'' or ``work in progress''.

   To learn the current status of any Internet-Draft, please check the
   1id-abstracts.txt listing contained in the Internet-Drafts Shadow
   Directories on ds.internic.net, nic.nordu.net, ftp.isi.edu, or
   munnari.oz.au.

   A revised version of this draft document will be submitted to the RFC
   editor as a Proposed Standard for the Internet Community.  Discussion
   and suggestions for improvement are requested.  This document will
   expire before August 1997.  Distribution of this draft is unlimited.


1.   Abstract

   The Internet Message Access Protocol [IMAP4] 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
   aysynchronously, a client can't expect this behaviour and must poll.)





B. Leiba                                                        [Page 1]


Internet DRAFT                   IDLE                  February 26, 1997


   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.

2.   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", "SHOULD", "SHOULD NOT", and "MAY" in
   this document are to be interpreted as described in RFC 2060 [IMAP4].

3.   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, 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 mailbox update messages.  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 untagged EXISTS, EXPUNGE, and
   other messages at any time.

   The IDLE command is terminated by the receipt of a "DONE" 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 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.

B. Leiba                                                        [Page 2]


Internet DRAFT                   IDLE                  February 26, 1997


   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.

   Example:    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; 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










B. Leiba                                                        [Page 3]


Internet DRAFT                   IDLE                  February 26, 1997


4.   Formal Syntax

   The following syntax specification uses the augmented Backus-Naur
   Form (BNF) notation as specified in [RFC-822] as modified by [IMAP4].
   Non-terminals referenced but not defined below are as defined by
   [IMAP4].

   command_auth    ::= append / create / delete / examine / list / lsub /
                       rename / select / status / subscribe / unsubscribe
                       / idle
                       ;; Valid only in Authenticated or Selected state

   idle            ::= "IDLE" CRLF "DONE"



5.   References

   [IMAP4] Crispin, M., "Internet Message Access Protocol - Version
   4rev1", RFC 2060


6.   Security Considerations

   There are no known security issues with this extension.


7.   Author's Address

   Barry Leiba
   IBM T.J. Watson Research Center
   30 Saw Mill River Road
   Hawthorne, NY  10532

   Email: leiba@watson.ibm.com















B. Leiba                                                        [Page 4]