You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by da...@apache.org on 2002/01/15 12:45:52 UTC

cvs commit: jakarta-james/www/rfclist/imap4 rfc2060.txt

darrell     02/01/15 03:45:52

  Modified:    www/rfclist/imap4 rfc2060.txt
  Log:
  Replace rfc2060 with complete version. Copy in CVS was corrupted.
  
  Revision  Changes    Path
  1.2       +2901 -1   jakarta-james/www/rfclist/imap4/rfc2060.txt
  
  Index: rfc2060.txt
  ===================================================================
  RCS file: /home/cvs/jakarta-james/www/rfclist/imap4/rfc2060.txt,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- rfc2060.txt	16 Jun 2001 17:07:39 -0000	1.1
  +++ rfc2060.txt	15 Jan 2002 11:45:52 -0000	1.2
  @@ -1692,5 +1692,2905 @@
         exist.
   
         The reference and mailbox name arguments are interpreted, in an
  -      implem
  +      implementation-dependent fashion, into a canonical form that
  +      represents an unambiguous left-to-right hierarchy.  The returned
  +      mailbox names will be in the interpreted form.
  +
  +      Any part of the reference argument that is included in the
  +      interpreted form SHOULD prefix the interpreted form.  It SHOULD
  +      also be in the same form as the reference name argument.  This
  +      rule permits the client to determine if the returned mailbox name
  +      is in the context of the reference argument, or if something about
  +      the mailbox argument overrode the reference argument.  Without
  +      this rule, the client would have to have knowledge of the server's
  +      naming semantics including what characters are "breakouts" that
  +      override a naming context.
  +
  +      For example, here are some examples of how references and mailbox
  +      names might be interpreted on a UNIX-based server:
  +
  +               Reference     Mailbox Name  Interpretation
  +               ------------  ------------  --------------
  +               ~smith/Mail/  foo.*         ~smith/Mail/foo.*
  +               archive/      %             archive/%
  +               #news.        comp.mail.*   #news.comp.mail.*
  +               ~smith/Mail/  /usr/doc/foo  /usr/doc/foo
  +               archive/      ~fred/Mail/*  ~fred/Mail/*
  +
  +      The first three examples demonstrate interpretations in the
  +      context of the reference argument.  Note that "~smith/Mail" SHOULD
  +      NOT be transformed into something like "/u2/users/smith/Mail", or
  +      it would be impossible for the client to determine that the
  +      interpretation was in the context of the reference.
  +
  +      The character "*" is a wildcard, and matches zero or more
  +      characters at this position.  The character "%" is similar to "*",
  +      but it does not match a hierarchy delimiter.  If the "%" wildcard
  +      is the last character of a mailbox name argument, matching levels
  +      of hierarchy are also returned.  If these levels of hierarchy are
  +      not also selectable mailboxes, they are returned with the
  +      \Noselect mailbox name attribute (see the description of the LIST
  +      response for more details).
  +
  +
  +
  +Crispin                     Standards Track                    [Page 31]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +      Server implementations are permitted to "hide" otherwise
  +      accessible mailboxes from the wildcard characters, by preventing
  +      certain characters or names from matching a wildcard in certain
  +      situations.  For example, a UNIX-based server might restrict the
  +      interpretation of "*" so that an initial "/" character does not
  +      match.
  +
  +      The special name INBOX is included in the output from LIST, if
  +      INBOX is supported by this server for this user and if the
  +      uppercase string "INBOX" matches the interpreted reference and
  +      mailbox name arguments with wildcards as described above.  The
  +      criteria for omitting INBOX is whether SELECT INBOX will return
  +      failure; it is not relevant whether the user's real INBOX resides
  +      on this or some other server.
  +
  +   Example:    C: A101 LIST "" ""
  +               S: * LIST (\Noselect) "/" ""
  +               S: A101 OK LIST Completed
  +               C: A102 LIST #news.comp.mail.misc ""
  +               S: * LIST (\Noselect) "." #news.
  +               S: A102 OK LIST Completed
  +               C: A103 LIST /usr/staff/jones ""
  +               S: * LIST (\Noselect) "/" /
  +               S: A103 OK LIST Completed
  +               C: A202 LIST ~/Mail/ %
  +               S: * LIST (\Noselect) "/" ~/Mail/foo
  +               S: * LIST () "/" ~/Mail/meetings
  +               S: A202 OK LIST completed
  +
  +6.3.9.  LSUB Command
  +
  +   Arguments:  reference name
  +               mailbox name with possible wildcards
  +
  +   Responses:  untagged responses: LSUB
  +
  +   Result:     OK - lsub completed
  +               NO - lsub failure: can't list that reference or name
  +               BAD - command unknown or arguments invalid
  +
  +      The LSUB command returns a subset of names from the set of names
  +      that the user has declared as being "active" or "subscribed".
  +      Zero or more untagged LSUB replies are returned.  The arguments to
  +      LSUB are in the same form as those for LIST.
  +
  +      A server MAY validate the subscribed names to see if they still
  +      exist.  If a name does not exist, it SHOULD be flagged with the
  +      \Noselect attribute in the LSUB response.  The server MUST NOT
  +
  +
  +
  +Crispin                     Standards Track                    [Page 32]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +      unilaterally remove an existing mailbox name from the subscription
  +      list even if a mailbox by that name no longer exists.
  +
  +   Example:    C: A002 LSUB "#news." "comp.mail.*"
  +               S: * LSUB () "." #news.comp.mail.mime
  +               S: * LSUB () "." #news.comp.mail.misc
  +               S: A002 OK LSUB completed
  +
  +6.3.10. STATUS Command
  +
  +   Arguments:  mailbox name
  +               status data item names
  +
  +   Responses:  untagged responses: STATUS
  +
  +   Result:     OK - status completed
  +               NO - status failure: no status for that name
  +               BAD - command unknown or arguments invalid
  +
  +      The STATUS command requests the status of the indicated mailbox.
  +      It does not change the currently selected mailbox, nor does it
  +      affect the state of any messages in the queried mailbox (in
  +      particular, STATUS MUST NOT cause messages to lose the \Recent
  +      flag).
  +
  +      The STATUS command provides an alternative to opening a second
  +      IMAP4rev1 connection and doing an EXAMINE command on a mailbox to
  +      query that mailbox's status without deselecting the current
  +      mailbox in the first IMAP4rev1 connection.
  +
  +      Unlike the LIST command, the STATUS command is not guaranteed to
  +      be fast in its response.  In some implementations, the server is
  +      obliged to open the mailbox read-only internally to obtain certain
  +      status information.  Also unlike the LIST command, the STATUS
  +      command does not accept wildcards.
  +
  +      The currently defined status data items that can be requested are:
  +
  +      MESSAGES       The number of messages in the mailbox.
  +
  +      RECENT         The number of messages with the \Recent flag set.
  +
  +      UIDNEXT        The next UID value that will be assigned to a new
  +                     message in the mailbox.  It is guaranteed that this
  +                     value will not change unless new messages are added
  +                     to the mailbox; and that it will change when new
  +                     messages are added even if those new messages are
  +                     subsequently expunged.
  +
  +
  +
  +Crispin                     Standards Track                    [Page 33]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +      UIDVALIDITY    The unique identifier validity value of the
  +                     mailbox.
  +
  +      UNSEEN         The number of messages which do not have the \Seen
  +                     flag set.
  +
  +
  +      Example:    C: A042 STATUS blurdybloop (UIDNEXT MESSAGES)
  +                  S: * STATUS blurdybloop (MESSAGES 231 UIDNEXT 44292)
  +                  S: A042 OK STATUS completed
  +
  +6.3.11. APPEND Command
  +
  +   Arguments:  mailbox name
  +               OPTIONAL flag parenthesized list
  +               OPTIONAL date/time string
  +               message literal
  +
  +   Responses:  no specific responses for this command
  +
  +   Result:     OK - append completed
  +               NO - append error: can't append to that mailbox, error
  +                    in flags or date/time or message text
  +               BAD - command unknown or arguments invalid
  +
  +      The APPEND command appends the literal argument as a new message
  +      to the end of the specified destination mailbox.  This argument
  +      SHOULD be in the format of an [RFC-822] message.  8-bit characters
  +      are permitted in the message.  A server implementation that is
  +      unable to preserve 8-bit data properly MUST be able to reversibly
  +      convert 8-bit APPEND data to 7-bit using a [MIME-IMB] content
  +      transfer encoding.
  +
  +      Note: There MAY be exceptions, e.g. draft messages, in which
  +      required [RFC-822] header lines are omitted in the message literal
  +      argument to APPEND.  The full implications of doing so MUST be
  +      understood and carefully weighed.
  +
  +   If a flag parenthesized list is specified, the flags SHOULD be set in
  +   the resulting message; otherwise, the flag list of the resulting
  +   message is set empty by default.
  +
  +   If a date_time is specified, the internal date SHOULD be set in the
  +   resulting message; otherwise, the internal date of the resulting
  +   message is set to the current date and time by default.
  +
  +
  +
  +
  +
  +
  +Crispin                     Standards Track                    [Page 34]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +   If the append is unsuccessful for any reason, the mailbox MUST be
  +   restored to its state before the APPEND attempt; no partial appending
  +   is permitted.
  +
  +   If the destination mailbox does not exist, a server MUST return an
  +   error, and MUST NOT automatically create the mailbox.  Unless it is
  +   certain that the destination mailbox can not be created, the server
  +   MUST send the response code "[TRYCREATE]" as the prefix of the text
  +   of the tagged NO response.  This gives a hint to the client that it
  +   can attempt a CREATE command and retry the APPEND if the CREATE is
  +   successful.
  +
  +   If the mailbox is currently selected, the normal new mail actions
  +   SHOULD occur.  Specifically, the server SHOULD notify the client
  +   immediately via an untagged EXISTS response.  If the server does not
  +   do so, the client MAY issue a NOOP command (or failing that, a CHECK
  +   command) after one or more APPEND commands.
  +
  +   Example:    C: A003 APPEND saved-messages (\Seen) {310}
  +               C: Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST)
  +               C: From: Fred Foobar <fo...@Blurdybloop.COM>
  +               C: Subject: afternoon meeting
  +               C: To: mooch@owatagu.siam.edu
  +               C: Message-Id: <B2...@Blurdybloop.COM>
  +               C: MIME-Version: 1.0
  +               C: Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
  +               C:
  +               C: Hello Joe, do you think we can meet at 3:30 tomorrow?
  +               C:
  +               S: A003 OK APPEND completed
  +
  +      Note: the APPEND command is not used for message delivery, because
  +      it does not provide a mechanism to transfer [SMTP] envelope
  +      information.
  +
  +6.4.    Client Commands - Selected State
  +
  +   In selected state, commands that manipulate messages in a mailbox are
  +   permitted.
  +
  +   In addition to the universal commands (CAPABILITY, NOOP, and LOGOUT),
  +   and the authenticated state commands (SELECT, EXAMINE, CREATE,
  +   DELETE, RENAME, SUBSCRIBE, UNSUBSCRIBE, LIST, LSUB, STATUS, and
  +   APPEND), the following commands are valid in the selected state:
  +   CHECK, CLOSE, EXPUNGE, SEARCH, FETCH, STORE, COPY, and UID.
  +
  +
  +
  +
  +
  +
  +Crispin                     Standards Track                    [Page 35]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +6.4.1.  CHECK Command
  +
  +   Arguments:  none
  +
  +   Responses:  no specific responses for this command
  +
  +   Result:     OK - check completed
  +               BAD - command unknown or arguments invalid
  +
  +      The CHECK command requests a checkpoint of the currently selected
  +      mailbox.  A checkpoint refers to any implementation-dependent
  +      housekeeping associated with the mailbox (e.g. resolving the
  +      server's in-memory state of the mailbox with the state on its
  +      disk) that is not normally executed as part of each command.  A
  +      checkpoint MAY take a non-instantaneous amount of real time to
  +      complete.  If a server implementation has no such housekeeping
  +      considerations, CHECK is equivalent to NOOP.
  +
  +      There is no guarantee that an EXISTS untagged response will happen
  +      as a result of CHECK.  NOOP, not CHECK, SHOULD be used for new
  +      mail polling.
  +
  +   Example:    C: FXXZ CHECK
  +               S: FXXZ OK CHECK Completed
  +
  +6.4.2.  CLOSE Command
  +
  +   Arguments:  none
  +
  +   Responses:  no specific responses for this command
  +
  +   Result:     OK - close completed, now in authenticated state
  +               NO - close failure: no mailbox selected
  +               BAD - command unknown or arguments invalid
  +
  +      The CLOSE command permanently removes from the currently selected
  +      mailbox all messages that have the \Deleted flag set, and returns
  +      to authenticated state from selected state.  No untagged EXPUNGE
  +      responses are sent.
  +
  +      No messages are removed, and no error is given, if the mailbox is
  +      selected by an EXAMINE command or is otherwise selected read-only.
  +
  +      Even if a mailbox is selected, a SELECT, EXAMINE, or LOGOUT
  +      command MAY be issued without previously issuing a CLOSE command.
  +      The SELECT, EXAMINE, and LOGOUT commands implicitly close the
  +      currently selected mailbox without doing an expunge.  However,
  +      when many messages are deleted, a CLOSE-LOGOUT or CLOSE-SELECT
  +
  +
  +
  +Crispin                     Standards Track                    [Page 36]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +      sequence is considerably faster than an EXPUNGE-LOGOUT or
  +      EXPUNGE-SELECT because no untagged EXPUNGE responses (which the
  +      client would probably ignore) are sent.
  +
  +   Example:    C: A341 CLOSE
  +               S: A341 OK CLOSE completed
  +
  +6.4.3.  EXPUNGE Command
  +
  +   Arguments:  none
  +
  +   Responses:  untagged responses: EXPUNGE
  +
  +   Result:     OK - expunge completed
  +               NO - expunge failure: can't expunge (e.g. permission
  +                    denied)
  +               BAD - command unknown or arguments invalid
  +
  +      The EXPUNGE command permanently removes from the currently
  +      selected mailbox all messages that have the \Deleted flag set.
  +      Before returning an OK to the client, an untagged EXPUNGE response
  +      is sent for each message that is removed.
  +
  +   Example:    C: A202 EXPUNGE
  +               S: * 3 EXPUNGE
  +               S: * 3 EXPUNGE
  +               S: * 5 EXPUNGE
  +               S: * 8 EXPUNGE
  +               S: A202 OK EXPUNGE completed
  +
  +      Note: in this example, messages 3, 4, 7, and 11 had the
  +      \Deleted flag set.  See the description of the EXPUNGE
  +      response for further explanation.
  +
  +6.4.4.  SEARCH Command
  +
  +   Arguments:  OPTIONAL [CHARSET] specification
  +               searching criteria (one or more)
  +
  +   Responses:  REQUIRED untagged response: SEARCH
  +
  +   Result:     OK - search completed
  +               NO - search error: can't search that [CHARSET] or
  +                    criteria
  +               BAD - command unknown or arguments invalid
  +
  +
  +
  +
  +
  +
  +Crispin                     Standards Track                    [Page 37]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +      The SEARCH command searches the mailbox for messages that match
  +      the given searching criteria.  Searching criteria consist of one
  +      or more search keys.  The untagged SEARCH response from the server
  +      contains a listing of message sequence numbers corresponding to
  +      those messages that match the searching criteria.
  +
  +      When multiple keys are specified, the result is the intersection
  +      (AND function) of all the messages that match those keys.  For
  +      example, the criteria DELETED FROM "SMITH" SINCE 1-Feb-1994 refers
  +      to all deleted messages from Smith that were placed in the mailbox
  +      since February 1, 1994.  A search key can also be a parenthesized
  +      list of one or more search keys (e.g. for use with the OR and NOT
  +      keys).
  +
  +      Server implementations MAY exclude [MIME-IMB] body parts with
  +      terminal content media types other than TEXT and MESSAGE from
  +      consideration in SEARCH matching.
  +
  +      The OPTIONAL [CHARSET] specification consists of the word
  +      "CHARSET" followed by a registered [CHARSET].  It indicates the
  +      [CHARSET] of the strings that appear in the search criteria.
  +      [MIME-IMB] content transfer encodings, and [MIME-HDRS] strings in
  +      [RFC-822]/[MIME-IMB] headers, MUST be decoded before comparing
  +      text in a [CHARSET] other than US-ASCII.  US-ASCII MUST be
  +      supported; other [CHARSET]s MAY be supported.  If the server does
  +      not support the specified [CHARSET], it MUST return a tagged NO
  +      response (not a BAD).
  +
  +      In all search keys that use strings, a message matches the key if
  +      the string is a substring of the field.  The matching is case-
  +      insensitive.
  +
  +      The defined search keys are as follows.  Refer to the Formal
  +      Syntax section for the precise syntactic definitions of the
  +      arguments.
  +
  +      <message set>  Messages with message sequence numbers
  +                     corresponding to the specified message sequence
  +                     number set
  +
  +      ALL            All messages in the mailbox; the default initial
  +                     key for ANDing.
  +
  +      ANSWERED       Messages with the \Answered flag set.
  +
  +      BCC <string>   Messages that contain the specified string in the
  +                     envelope structure's BCC field.
  +
  +
  +
  +
  +Crispin                     Standards Track                    [Page 38]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +      BEFORE <date>  Messages whose internal date is earlier than the
  +                     specified date.
  +
  +      BODY <string>  Messages that contain the specified string in the
  +                     body of the message.
  +
  +      CC <string>    Messages that contain the specified string in the
  +                     envelope structure's CC field.
  +
  +      DELETED        Messages with the \Deleted flag set.
  +
  +      DRAFT          Messages with the \Draft flag set.
  +
  +      FLAGGED        Messages with the \Flagged flag set.
  +
  +      FROM <string>  Messages that contain the specified string in the
  +                     envelope structure's FROM field.
  +
  +      HEADER <field-name> <string>
  +                     Messages that have a header with the specified
  +                     field-name (as defined in [RFC-822]) and that
  +                     contains the specified string in the [RFC-822]
  +                     field-body.
  +
  +      KEYWORD <flag> Messages with the specified keyword set.
  +
  +      LARGER <n>     Messages with an [RFC-822] size larger than the
  +                     specified number of octets.
  +
  +      NEW            Messages that have the \Recent flag set but not the
  +                     \Seen flag.  This is functionally equivalent to
  +                     "(RECENT UNSEEN)".
  +
  +      NOT <search-key>
  +                     Messages that do not match the specified search
  +                     key.
  +
  +      OLD            Messages that do not have the \Recent flag set.
  +                     This is functionally equivalent to "NOT RECENT" (as
  +                     opposed to "NOT NEW").
  +
  +      ON <date>      Messages whose internal date is within the
  +                     specified date.
  +
  +      OR <search-key1> <search-key2>
  +                     Messages that match either search key.
  +
  +      RECENT         Messages that have the \Recent flag set.
  +
  +
  +
  +Crispin                     Standards Track                    [Page 39]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +      SEEN           Messages that have the \Seen flag set.
  +
  +      SENTBEFORE <date>
  +                     Messages whose [RFC-822] Date: header is earlier
  +                     than the specified date.
  +
  +      SENTON <date>  Messages whose [RFC-822] Date: header is within the
  +                     specified date.
  +
  +      SENTSINCE <date>
  +                     Messages whose [RFC-822] Date: header is within or
  +                     later than the specified date.
  +
  +      SINCE <date>   Messages whose internal date is within or later
  +                     than the specified date.
  +
  +      SMALLER <n>    Messages with an [RFC-822] size smaller than the
  +                     specified number of octets.
  +
  +      SUBJECT <string>
  +                     Messages that contain the specified string in the
  +                     envelope structure's SUBJECT field.
  +
  +      TEXT <string>  Messages that contain the specified string in the
  +                     header or body of the message.
  +
  +      TO <string>    Messages that contain the specified string in the
  +                     envelope structure's TO field.
  +
  +      UID <message set>
  +                     Messages with unique identifiers corresponding to
  +                     the specified unique identifier set.
  +
  +      UNANSWERED     Messages that do not have the \Answered flag set.
  +
  +      UNDELETED      Messages that do not have the \Deleted flag set.
  +
  +      UNDRAFT        Messages that do not have the \Draft flag set.
  +
  +      UNFLAGGED      Messages that do not have the \Flagged flag set.
  +
  +      UNKEYWORD <flag>
  +                     Messages that do not have the specified keyword
  +                     set.
  +
  +      UNSEEN         Messages that do not have the \Seen flag set.
  +
  +
  +
  +
  +
  +Crispin                     Standards Track                    [Page 40]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +   Example:    C: A282 SEARCH FLAGGED SINCE 1-Feb-1994 NOT FROM "Smith"
  +               S: * SEARCH 2 84 882
  +               S: A282 OK SEARCH completed
  +
  +6.4.5.  FETCH Command
  +
  +   Arguments:  message set
  +               message data item names
  +
  +   Responses:  untagged responses: FETCH
  +
  +   Result:     OK - fetch completed
  +               NO - fetch error: can't fetch that data
  +               BAD - command unknown or arguments invalid
  +
  +      The FETCH command retrieves data associated with a message in the
  +      mailbox.  The data items to be fetched can be either a single atom
  +      or a parenthesized list.
  +
  +      The currently defined data items that can be fetched are:
  +
  +      ALL            Macro equivalent to: (FLAGS INTERNALDATE
  +                     RFC822.SIZE ENVELOPE)
  +
  +      BODY           Non-extensible form of BODYSTRUCTURE.
  +
  +      BODY[<section>]<<partial>>
  +                     The text of a particular body section.  The section
  +                     specification is a set of zero or more part
  +                     specifiers delimited by periods.  A part specifier
  +                     is either a part number or one of the following:
  +                     HEADER, HEADER.FIELDS, HEADER.FIELDS.NOT, MIME, and
  +                     TEXT.  An empty section specification refers to the
  +                     entire message, including the header.
  +
  +                     Every message has at least one part number.
  +                     Non-[MIME-IMB] messages, and non-multipart
  +                     [MIME-IMB] messages with no encapsulated message,
  +                     only have a part 1.
  +
  +                     Multipart messages are assigned consecutive part
  +                     numbers, as they occur in the message.  If a
  +                     particular part is of type message or multipart,
  +                     its parts MUST be indicated by a period followed by
  +                     the part number within that nested multipart part.
  +
  +
  +
  +
  +
  +
  +Crispin                     Standards Track                    [Page 41]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +                     A part of type MESSAGE/RFC822 also has nested part
  +                     numbers, referring to parts of the MESSAGE part's
  +                     body.
  +
  +                     The HEADER, HEADER.FIELDS, HEADER.FIELDS.NOT, and
  +                     TEXT part specifiers can be the sole part specifier
  +                     or can be prefixed by one or more numeric part
  +                     specifiers, provided that the numeric part
  +                     specifier refers to a part of type MESSAGE/RFC822.
  +                     The MIME part specifier MUST be prefixed by one or
  +                     more numeric part specifiers.
  +
  +                     The HEADER, HEADER.FIELDS, and HEADER.FIELDS.NOT
  +                     part specifiers refer to the [RFC-822] header of
  +                     the message or of an encapsulated [MIME-IMT]
  +                     MESSAGE/RFC822 message.  HEADER.FIELDS and
  +                     HEADER.FIELDS.NOT are followed by a list of
  +                     field-name (as defined in [RFC-822]) names, and
  +                     return a subset of the header.  The subset returned
  +                     by HEADER.FIELDS contains only those header fields
  +                     with a field-name that matches one of the names in
  +                     the list; similarly, the subset returned by
  +                     HEADER.FIELDS.NOT contains only the header fields
  +                     with a non-matching field-name.  The field-matching
  +                     is case-insensitive but otherwise exact.  In all
  +                     cases, the delimiting blank line between the header
  +                     and the body is always included.
  +
  +                     The MIME part specifier refers to the [MIME-IMB]
  +                     header for this part.
  +
  +                     The TEXT part specifier refers to the text body of
  +                     the message, omitting the [RFC-822] header.
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +Crispin                     Standards Track                    [Page 42]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +                       Here is an example of a complex message
  +                       with some of its part specifiers:
  +
  +                        HEADER     ([RFC-822] header of the message)
  +                        TEXT       MULTIPART/MIXED
  +                        1          TEXT/PLAIN
  +                        2          APPLICATION/OCTET-STREAM
  +                        3          MESSAGE/RFC822
  +                        3.HEADER   ([RFC-822] header of the message)
  +                        3.TEXT     ([RFC-822] text body of the message)
  +                        3.1        TEXT/PLAIN
  +                        3.2        APPLICATION/OCTET-STREAM
  +                        4          MULTIPART/MIXED
  +                        4.1        IMAGE/GIF
  +                        4.1.MIME   ([MIME-IMB] header for the IMAGE/GIF)
  +                        4.2        MESSAGE/RFC822
  +                        4.2.HEADER ([RFC-822] header of the message)
  +                        4.2.TEXT   ([RFC-822] text body of the message)
  +                        4.2.1      TEXT/PLAIN
  +                        4.2.2      MULTIPART/ALTERNATIVE
  +                        4.2.2.1    TEXT/PLAIN
  +                        4.2.2.2    TEXT/RICHTEXT
  +
  +
  +                     It is possible to fetch a substring of the
  +                     designated text.  This is done by appending an open
  +                     angle bracket ("<"), the octet position of the
  +                     first desired octet, a period, the maximum number
  +                     of octets desired, and a close angle bracket (">")
  +                     to the part specifier.  If the starting octet is
  +                     beyond the end of the text, an empty string is
  +                     returned.
  +
  +                     Any partial fetch that attempts to read beyond the
  +                     end of the text is truncated as appropriate.  A
  +                     partial fetch that starts at octet 0 is returned as
  +                     a partial fetch, even if this truncation happened.
  +
  +                          Note: this means that BODY[]<0.2048> of a
  +                          1500-octet message will return BODY[]<0>
  +                          with a literal of size 1500, not BODY[].
  +
  +                          Note: a substring fetch of a
  +                          HEADER.FIELDS or HEADER.FIELDS.NOT part
  +                          specifier is calculated after subsetting
  +                          the header.
  +
  +
  +
  +
  +
  +Crispin                     Standards Track                    [Page 43]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +                     The \Seen flag is implicitly set; if this causes
  +                     the flags to change they SHOULD be included as part
  +                     of the FETCH responses.
  +
  +      BODY.PEEK[<section>]<<partial>>
  +                     An alternate form of BODY[<section>] that does not
  +                     implicitly set the \Seen flag.
  +
  +      BODYSTRUCTURE  The [MIME-IMB] body structure of the message.  This
  +                     is computed by the server by parsing the [MIME-IMB]
  +                     header fields in the [RFC-822] header and
  +                     [MIME-IMB] headers.
  +
  +      ENVELOPE       The envelope structure of the message.  This is
  +                     computed by the server by parsing the [RFC-822]
  +                     header into the component parts, defaulting various
  +                     fields as necessary.
  +
  +      FAST           Macro equivalent to: (FLAGS INTERNALDATE
  +                     RFC822.SIZE)
  +
  +      FLAGS          The flags that are set for this message.
  +
  +      FULL           Macro equivalent to: (FLAGS INTERNALDATE
  +                     RFC822.SIZE ENVELOPE BODY)
  +
  +      INTERNALDATE   The internal date of the message.
  +
  +      RFC822         Functionally equivalent to BODY[], differing in the
  +                     syntax of the resulting untagged FETCH data (RFC822
  +                     is returned).
  +
  +      RFC822.HEADER  Functionally equivalent to BODY.PEEK[HEADER],
  +                     differing in the syntax of the resulting untagged
  +                     FETCH data (RFC822.HEADER is returned).
  +
  +      RFC822.SIZE    The [RFC-822] size of the message.
  +
  +      RFC822.TEXT    Functionally equivalent to BODY[TEXT], differing in
  +                     the syntax of the resulting untagged FETCH data
  +                     (RFC822.TEXT is returned).
  +
  +      UID            The unique identifier for the message.
  +
  +
  +
  +
  +
  +
  +
  +
  +Crispin                     Standards Track                    [Page 44]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +   Example:    C: A654 FETCH 2:4 (FLAGS BODY[HEADER.FIELDS (DATE FROM)])
  +               S: * 2 FETCH ....
  +               S: * 3 FETCH ....
  +               S: * 4 FETCH ....
  +               S: A654 OK FETCH completed
  +
  +6.4.6.  STORE Command
  +
  +   Arguments:  message set
  +               message data item name
  +               value for message data item
  +
  +   Responses:  untagged responses: FETCH
  +
  +   Result:     OK - store completed
  +               NO - store error: can't store that data
  +               BAD - command unknown or arguments invalid
  +
  +      The STORE command alters data associated with a message in the
  +      mailbox.  Normally, STORE will return the updated value of the
  +      data with an untagged FETCH response.  A suffix of ".SILENT" in
  +      the data item name prevents the untagged FETCH, and the server
  +      SHOULD assume that the client has determined the updated value
  +      itself or does not care about the updated value.
  +
  +         Note: regardless of whether or not the ".SILENT" suffix was
  +         used, the server SHOULD send an untagged FETCH response if a
  +         change to a message's flags from an external source is
  +         observed.  The intent is that the status of the flags is
  +         determinate without a race condition.
  +
  +      The currently defined data items that can be stored are:
  +
  +      FLAGS <flag list>
  +                     Replace the flags for the message with the
  +                     argument.  The new value of the flags are returned
  +                     as if a FETCH of those flags was done.
  +
  +      FLAGS.SILENT <flag list>
  +                     Equivalent to FLAGS, but without returning a new
  +                     value.
  +
  +      +FLAGS <flag list>
  +                     Add the argument to the flags for the message.  The
  +                     new value of the flags are returned as if a FETCH
  +                     of those flags was done.
  +
  +
  +
  +
  +
  +Crispin                     Standards Track                    [Page 45]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +      +FLAGS.SILENT <flag list>
  +                     Equivalent to +FLAGS, but without returning a new
  +                     value.
  +
  +      -FLAGS <flag list>
  +                     Remove the argument from the flags for the message.
  +                     The new value of the flags are returned as if a
  +                     FETCH of those flags was done.
  +
  +      -FLAGS.SILENT <flag list>
  +                     Equivalent to -FLAGS, but without returning a new
  +                     value.
  +
  +   Example:    C: A003 STORE 2:4 +FLAGS (\Deleted)
  +               S: * 2 FETCH FLAGS (\Deleted \Seen)
  +               S: * 3 FETCH FLAGS (\Deleted)
  +               S: * 4 FETCH FLAGS (\Deleted \Flagged \Seen)
  +               S: A003 OK STORE completed
  +
  +6.4.7.  COPY Command
  +
  +   Arguments:  message set
  +               mailbox name
  +
  +   Responses:  no specific responses for this command
  +
  +   Result:     OK - copy completed
  +               NO - copy error: can't copy those messages or to that
  +                    name
  +               BAD - command unknown or arguments invalid
  +
  +      The COPY command copies the specified message(s) to the end of the
  +      specified destination mailbox.  The flags and internal date of the
  +      message(s) SHOULD be preserved in the copy.
  +
  +      If the destination mailbox does not exist, a server SHOULD return
  +      an error.  It SHOULD NOT automatically create the mailbox.  Unless
  +      it is certain that the destination mailbox can not be created, the
  +      server MUST send the response code "[TRYCREATE]" as the prefix of
  +      the text of the tagged NO response.  This gives a hint to the
  +      client that it can attempt a CREATE command and retry the COPY if
  +      the CREATE is successful.
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +Crispin                     Standards Track                    [Page 46]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +      If the COPY command is unsuccessful for any reason, server
  +      implementations MUST restore the destination mailbox to its state
  +      before the COPY attempt.
  +
  +   Example:    C: A003 COPY 2:4 MEETING
  +               S: A003 OK COPY completed
  +
  +6.4.8.  UID Command
  +
  +   Arguments:  command name
  +               command arguments
  +
  +   Responses:  untagged responses: FETCH, SEARCH
  +
  +   Result:     OK - UID command completed
  +               NO - UID command error
  +               BAD - command unknown or arguments invalid
  +
  +      The UID command has two forms.  In the first form, it takes as its
  +      arguments a COPY, FETCH, or STORE command with arguments
  +      appropriate for the associated command.  However, the numbers in
  +      the message set argument are unique identifiers instead of message
  +      sequence numbers.
  +
  +      In the second form, the UID command takes a SEARCH command with
  +      SEARCH command arguments.  The interpretation of the arguments is
  +      the same as with SEARCH; however, the numbers returned in a SEARCH
  +      response for a UID SEARCH command are unique identifiers instead
  +      of message sequence numbers.  For example, the command UID SEARCH
  +      1:100 UID 443:557 returns the unique identifiers corresponding to
  +      the intersection of the message sequence number set 1:100 and the
  +      UID set 443:557.
  +
  +      Message set ranges are permitted; however, there is no guarantee
  +      that unique identifiers be contiguous.  A non-existent unique
  +      identifier within a message set range is ignored without any error
  +      message generated.
  +
  +      The number after the "*" in an untagged FETCH response is always a
  +      message sequence number, not a unique identifier, even for a UID
  +      command response.  However, server implementations MUST implicitly
  +      include the UID message data item as part of any FETCH response
  +      caused by a UID command, regardless of whether a UID was specified
  +      as a message data item to the FETCH.
  +
  +
  +
  +
  +
  +
  +
  +Crispin                     Standards Track                    [Page 47]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +   Example:    C: A999 UID FETCH 4827313:4828442 FLAGS
  +               S: * 23 FETCH (FLAGS (\Seen) UID 4827313)
  +               S: * 24 FETCH (FLAGS (\Seen) UID 4827943)
  +               S: * 25 FETCH (FLAGS (\Seen) UID 4828442)
  +               S: A999 UID FETCH completed
  +
  +6.5.    Client Commands - Experimental/Expansion
  +
  +6.5.1.  X<atom> Command
  +
  +   Arguments:  implementation defined
  +
  +   Responses:  implementation defined
  +
  +   Result:     OK - command completed
  +               NO - failure
  +               BAD - command unknown or arguments invalid
  +
  +      Any command prefixed with an X is an experimental command.
  +      Commands which are not part of this specification, a standard or
  +      standards-track revision of this specification, or an IESG-
  +      approved experimental protocol, MUST use the X prefix.
  +
  +      Any added untagged responses issued by an experimental command
  +      MUST also be prefixed with an X.  Server implementations MUST NOT
  +      send any such untagged responses, unless the client requested it
  +      by issuing the associated experimental command.
  +
  +   Example:    C: a441 CAPABILITY
  +               S: * CAPABILITY IMAP4rev1 AUTH=KERBEROS_V4 XPIG-LATIN
  +               S: a441 OK CAPABILITY completed
  +               C: A442 XPIG-LATIN
  +               S: * XPIG-LATIN ow-nay eaking-spay ig-pay atin-lay
  +               S: A442 OK XPIG-LATIN ompleted-cay
  +
  +7.      Server Responses
  +
  +   Server responses are in three forms: status responses, server data,
  +   and command continuation request.  The information contained in a
  +   server response, identified by "Contents:" in the response
  +   descriptions below, is described by function, not by syntax.  The
  +   precise syntax of server responses is described in the Formal Syntax
  +   section.
  +
  +   The client MUST be prepared to accept any response at all times.
  +
  +
  +
  +
  +
  +
  +Crispin                     Standards Track                    [Page 48]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +   Status responses can be tagged or untagged.  Tagged status responses
  +   indicate the completion result (OK, NO, or BAD status) of a client
  +   command, and have a tag matching the command.
  +
  +   Some status responses, and all server data, are untagged.  An
  +   untagged response is indicated by the token "*" instead of a tag.
  +   Untagged status responses indicate server greeting, or server status
  +   that does not indicate the completion of a command (for example, an
  +   impending system shutdown alert).  For historical reasons, untagged
  +   server data responses are also called "unsolicited data", although
  +   strictly speaking only unilateral server data is truly "unsolicited".
  +
  +   Certain server data MUST be recorded by the client when it is
  +   received; this is noted in the description of that data.  Such data
  +   conveys critical information which affects the interpretation of all
  +   subsequent commands and responses (e.g. updates reflecting the
  +   creation or destruction of messages).
  +
  +   Other server data SHOULD be recorded for later reference; if the
  +   client does not need to record the data, or if recording the data has
  +   no obvious purpose (e.g. a SEARCH response when no SEARCH command is
  +   in progress), the data SHOULD be ignored.
  +
  +   An example of unilateral untagged server data occurs when the IMAP
  +   connection is in selected state.  In selected state, the server
  +   checks the mailbox for new messages as part of command execution.
  +   Normally, this is part of the execution of every command; hence, a
  +   NOOP command suffices to check for new messages.  If new messages are
  +   found, the server sends untagged EXISTS and RECENT responses
  +   reflecting the new size of the mailbox.  Server implementations that
  +   offer multiple simultaneous access to the same mailbox SHOULD also
  +   send appropriate unilateral untagged FETCH and EXPUNGE responses if
  +   another agent changes the state of any message flags or expunges any
  +   messages.
  +
  +   Command continuation request responses use the token "+" instead of a
  +   tag.  These responses are sent by the server to indicate acceptance
  +   of an incomplete client command and readiness for the remainder of
  +   the command.
  +
  +7.1.    Server Responses - Status Responses
  +
  +   Status responses are OK, NO, BAD, PREAUTH and BYE.  OK, NO, and BAD
  +   may be tagged or untagged.  PREAUTH and BYE are always untagged.
  +
  +   Status responses MAY include an OPTIONAL "response code".  A response
  +   code consists of data inside square brackets in the form of an atom,
  +   possibly followed by a space and arguments.  The response code
  +
  +
  +
  +Crispin                     Standards Track                    [Page 49]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +   contains additional information or status codes for client software
  +   beyond the OK/NO/BAD condition, and are defined when there is a
  +   specific action that a client can take based upon the additional
  +   information.
  +
  +   The currently defined response codes are:
  +
  +      ALERT          The human-readable text contains a special alert
  +                     that MUST be presented to the user in a fashion
  +                     that calls the user's attention to the message.
  +
  +      NEWNAME        Followed by a mailbox name and a new mailbox name.
  +                     A SELECT or EXAMINE is failing because the target
  +                     mailbox name no longer exists because it was
  +                     renamed to the new mailbox name.  This is a hint to
  +                     the client that the operation can succeed if the
  +                     SELECT or EXAMINE is reissued with the new mailbox
  +                     name.
  +
  +      PARSE          The human-readable text represents an error in
  +                     parsing the [RFC-822] header or [MIME-IMB] headers
  +                     of a message in the mailbox.
  +
  +      PERMANENTFLAGS Followed by a parenthesized list of flags,
  +                     indicates which of the known flags that the client
  +                     can change permanently.  Any flags that are in the
  +                     FLAGS untagged response, but not the PERMANENTFLAGS
  +                     list, can not be set permanently.  If the client
  +                     attempts to STORE a flag that is not in the
  +                     PERMANENTFLAGS list, the server will either reject
  +                     it with a NO reply or store the state for the
  +                     remainder of the current session only.  The
  +                     PERMANENTFLAGS list can also include the special
  +                     flag \*, which indicates that it is possible to
  +                     create new keywords by attempting to store those
  +                     flags in the mailbox.
  +
  +      READ-ONLY      The mailbox is selected read-only, or its access
  +                     while selected has changed from read-write to
  +                     read-only.
  +
  +      READ-WRITE     The mailbox is selected read-write, or its access
  +                     while selected has changed from read-only to
  +                     read-write.
  +
  +
  +
  +
  +
  +
  +
  +Crispin                     Standards Track                    [Page 50]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +      TRYCREATE      An APPEND or COPY attempt is failing because the
  +                     target mailbox does not exist (as opposed to some
  +                     other reason).  This is a hint to the client that
  +                     the operation can succeed if the mailbox is first
  +                     created by the CREATE command.
  +
  +      UIDVALIDITY    Followed by a decimal number, indicates the unique
  +                     identifier validity value.
  +
  +      UNSEEN         Followed by a decimal number, indicates the number
  +                     of the first message without the \Seen flag set.
  +
  +      Additional response codes defined by particular client or server
  +      implementations SHOULD be prefixed with an "X" until they are
  +      added to a revision of this protocol.  Client implementations
  +      SHOULD ignore response codes that they do not recognize.
  +
  +7.1.1.  OK Response
  +
  +   Contents:   OPTIONAL response code
  +               human-readable text
  +
  +      The OK response indicates an information message from the server.
  +      When tagged, it indicates successful completion of the associated
  +      command.  The human-readable text MAY be presented to the user as
  +      an information message.  The untagged form indicates an
  +      information-only message; the nature of the information MAY be
  +      indicated by a response code.
  +
  +      The untagged form is also used as one of three possible greetings
  +      at connection startup.  It indicates that the connection is not
  +      yet authenticated and that a LOGIN command is needed.
  +
  +   Example:    S: * OK IMAP4rev1 server ready
  +               C: A001 LOGIN fred blurdybloop
  +               S: * OK [ALERT] System shutdown in 10 minutes
  +               S: A001 OK LOGIN Completed
  +
  +7.1.2.  NO Response
  +
  +      Contents:   OPTIONAL response code
  +                  human-readable text
  +
  +      The NO response indicates an operational error message from the
  +      server.  When tagged, it indicates unsuccessful completion of the
  +      associated command.  The untagged form indicates a warning; the
  +      command can still complete successfully.  The human-readable text
  +      describes the condition.
  +
  +
  +
  +Crispin                     Standards Track                    [Page 51]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +   Example:    C: A222 COPY 1:2 owatagusiam
  +               S: * NO Disk is 98% full, please delete unnecessary data
  +               S: A222 OK COPY completed
  +               C: A223 COPY 3:200 blurdybloop
  +               S: * NO Disk is 98% full, please delete unnecessary data
  +               S: * NO Disk is 99% full, please delete unnecessary data
  +               S: A223 NO COPY failed: disk is full
  +
  +7.1.3.  BAD Response
  +
  +   Contents:   OPTIONAL response code
  +               human-readable text
  +
  +      The BAD response indicates an error message from the server.  When
  +      tagged, it reports a protocol-level error in the client's command;
  +      the tag indicates the command that caused the error.  The untagged
  +      form indicates a protocol-level error for which the associated
  +      command can not be determined; it can also indicate an internal
  +      server failure.  The human-readable text describes the condition.
  +
  +   Example:    C: ...very long command line...
  +               S: * BAD Command line too long
  +               C: ...empty line...
  +               S: * BAD Empty command line
  +               C: A443 EXPUNGE
  +               S: * BAD Disk crash, attempting salvage to a new disk!
  +               S: * OK Salvage successful, no data lost
  +               S: A443 OK Expunge completed
  +
  +7.1.4.  PREAUTH Response
  +
  +   Contents:   OPTIONAL response code
  +               human-readable text
  +
  +      The PREAUTH response is always untagged, and is one of three
  +      possible greetings at connection startup.  It indicates that the
  +      connection has already been authenticated by external means and
  +      thus no LOGIN command is needed.
  +
  +   Example:    S: * PREAUTH IMAP4rev1 server logged in as Smith
  +
  +7.1.5.  BYE Response
  +
  +   Contents:   OPTIONAL response code
  +               human-readable text
  +
  +
  +
  +
  +
  +
  +Crispin                     Standards Track                    [Page 52]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +      The BYE response is always untagged, and indicates that the server
  +      is about to close the connection.  The human-readable text MAY be
  +      displayed to the user in a status report by the client.  The BYE
  +      response is sent under one of four conditions:
  +
  +         1) as part of a normal logout sequence.  The server will close
  +            the connection after sending the tagged OK response to the
  +            LOGOUT command.
  +
  +         2) as a panic shutdown announcement.  The server closes the
  +            connection immediately.
  +
  +         3) as an announcement of an inactivity autologout.  The server
  +            closes the connection immediately.
  +
  +         4) as one of three possible greetings at connection startup,
  +            indicating that the server is not willing to accept a
  +            connection from this client.  The server closes the
  +            connection immediately.
  +
  +      The difference between a BYE that occurs as part of a normal
  +      LOGOUT sequence (the first case) and a BYE that occurs because of
  +      a failure (the other three cases) is that the connection closes
  +      immediately in the failure case.
  +
  +   Example:    S: * BYE Autologout; idle for too long
  +
  +7.2.    Server Responses - Server and Mailbox Status
  +
  +   These responses are always untagged.  This is how server and mailbox
  +   status data are transmitted from the server to the client.  Many of
  +   these responses typically result from a command with the same name.
  +
  +7.2.1.  CAPABILITY Response
  +
  +   Contents:   capability listing
  +
  +      The CAPABILITY response occurs as a result of a CAPABILITY
  +      command.  The capability listing contains a space-separated
  +      listing of capability names that the server supports.  The
  +      capability listing MUST include the atom "IMAP4rev1".
  +
  +      A capability name which begins with "AUTH=" indicates that the
  +      server supports that particular authentication mechanism.
  +
  +
  +
  +
  +
  +
  +
  +Crispin                     Standards Track                    [Page 53]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +      Other capability names indicate that the server supports an
  +      extension, revision, or amendment to the IMAP4rev1 protocol.
  +      Server responses MUST conform to this document until the client
  +      issues a command that uses the associated capability.
  +
  +      Capability names MUST either begin with "X" or be standard or
  +      standards-track IMAP4rev1 extensions, revisions, or amendments
  +      registered with IANA.  A server MUST NOT offer unregistered or
  +      non-standard capability names, unless such names are prefixed with
  +      an "X".
  +
  +      Client implementations SHOULD NOT require any capability name
  +      other than "IMAP4rev1", and MUST ignore any unknown capability
  +      names.
  +
  +   Example:    S: * CAPABILITY IMAP4rev1 AUTH=KERBEROS_V4 XPIG-LATIN
  +
  +7.2.2.  LIST Response
  +
  +   Contents:   name attributes
  +               hierarchy delimiter
  +               name
  +
  +      The LIST response occurs as a result of a LIST command.  It
  +      returns a single name that matches the LIST specification.  There
  +      can be multiple LIST responses for a single LIST command.
  +
  +      Four name attributes are defined:
  +
  +      \Noinferiors   It is not possible for any child levels of
  +                     hierarchy to exist under this name; no child levels
  +                     exist now and none can be created in the future.
  +
  +      \Noselect      It is not possible to use this name as a selectable
  +                     mailbox.
  +
  +      \Marked        The mailbox has been marked "interesting" by the
  +                     server; the mailbox probably contains messages that
  +                     have been added since the last time the mailbox was
  +                     selected.
  +
  +      \Unmarked      The mailbox does not contain any additional
  +                     messages since the last time the mailbox was
  +                     selected.
  +
  +      If it is not feasible for the server to determine whether the
  +      mailbox is "interesting" or not, or if the name is a \Noselect
  +      name, the server SHOULD NOT send either \Marked or \Unmarked.
  +
  +
  +
  +Crispin                     Standards Track                    [Page 54]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +      The hierarchy delimiter is a character used to delimit levels of
  +      hierarchy in a mailbox name.  A client can use it to create child
  +      mailboxes, and to search higher or lower levels of naming
  +      hierarchy.  All children of a top-level hierarchy node MUST use
  +      the same separator character.  A NIL hierarchy delimiter means
  +      that no hierarchy exists; the name is a "flat" name.
  +
  +      The name represents an unambiguous left-to-right hierarchy, and
  +      MUST be valid for use as a reference in LIST and LSUB commands.
  +      Unless \Noselect is indicated, the name MUST also be valid as an
  +            argument for commands, such as SELECT, that accept mailbox
  +      names.
  +
  +   Example:    S: * LIST (\Noselect) "/" ~/Mail/foo
  +
  +7.2.3.  LSUB Response
  +
  +   Contents:   name attributes
  +               hierarchy delimiter
  +               name
  +
  +      The LSUB response occurs as a result of an LSUB command.  It
  +      returns a single name that matches the LSUB specification.  There
  +      can be multiple LSUB responses for a single LSUB command.  The
  +      data is identical in format to the LIST response.
  +
  +   Example:    S: * LSUB () "." #news.comp.mail.misc
  +
  +7.2.4   STATUS Response
  +
  +   Contents:   name
  +               status parenthesized list
  +
  +      The STATUS response occurs as a result of an STATUS command.  It
  +      returns the mailbox name that matches the STATUS specification and
  +      the requested mailbox status information.
  +
  +   Example:    S: * STATUS blurdybloop (MESSAGES 231 UIDNEXT 44292)
  +
  +7.2.5.  SEARCH Response
  +
  +   Contents:   zero or more numbers
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +Crispin                     Standards Track                    [Page 55]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +      The SEARCH response occurs as a result of a SEARCH or UID SEARCH
  +      command.  The number(s) refer to those messages that match the
  +      search criteria.  For SEARCH, these are message sequence numbers;
  +      for UID SEARCH, these are unique identifiers.  Each number is
  +      delimited by a space.
  +
  +   Example:    S: * SEARCH 2 3 6
  +
  +7.2.6.  FLAGS Response
  +
  +   Contents:   flag parenthesized list
  +
  +      The FLAGS response occurs as a result of a SELECT or EXAMINE
  +      command.  The flag parenthesized list identifies the flags (at a
  +      minimum, the system-defined flags) that are applicable for this
  +      mailbox.  Flags other than the system flags can also exist,
  +      depending on server implementation.
  +
  +      The update from the FLAGS response MUST be recorded by the client.
  +
  +   Example:    S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
  +
  +7.3.    Server Responses - Mailbox Size
  +
  +   These responses are always untagged.  This is how changes in the size
  +   of the mailbox are trasnmitted from the server to the client.
  +   Immediately following the "*" token is a number that represents a
  +   message count.
  +
  +7.3.1.  EXISTS Response
  +
  +   Contents:   none
  +
  +      The EXISTS response reports the number of messages in the mailbox.
  +      This response occurs as a result of a SELECT or EXAMINE command,
  +      and if the size of the mailbox changes (e.g. new mail).
  +
  +      The update from the EXISTS response MUST be recorded by the
  +      client.
  +
  +   Example:    S: * 23 EXISTS
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +Crispin                     Standards Track                    [Page 56]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +7.3.2.  RECENT Response
  +
  +      Contents:   none
  +
  +      The RECENT response reports the number of messages with the
  +      \Recent flag set.  This response occurs as a result of a SELECT or
  +      EXAMINE command, and if the size of the mailbox changes (e.g. new
  +      mail).
  +
  +         Note: It is not guaranteed that the message sequence numbers of
  +         recent messages will be a contiguous range of the highest n
  +         messages in the mailbox (where n is the value reported by the
  +         RECENT response).  Examples of situations in which this is not
  +         the case are: multiple clients having the same mailbox open
  +         (the first session to be notified will see it as recent, others
  +         will probably see it as non-recent), and when the mailbox is
  +         re-ordered by a non-IMAP agent.
  +
  +         The only reliable way to identify recent messages is to look at
  +         message flags to see which have the \Recent flag set, or to do
  +         a SEARCH RECENT.
  +
  +         The update from the RECENT response MUST be recorded by the
  +         client.
  +
  +   Example:    S: * 5 RECENT
  +
  +7.4.    Server Responses - Message Status
  +
  +   These responses are always untagged.  This is how message data are
  +   transmitted from the server to the client, often as a result of a
  +   command with the same name.  Immediately following the "*" token is a
  +   number that represents a message sequence number.
  +
  +7.4.1.  EXPUNGE Response
  +
  +   Contents:   none
  +
  +      The EXPUNGE response reports that the specified message sequence
  +      number has been permanently removed from the mailbox.  The message
  +      sequence number for each successive message in the mailbox is
  +      immediately decremented by 1, and this decrement is reflected in
  +      message sequence numbers in subsequent responses (including other
  +      untagged EXPUNGE responses).
  +
  +      As a result of the immediate decrement rule, message sequence
  +      numbers that appear in a set of successive EXPUNGE responses
  +      depend upon whether the messages are removed starting from lower
  +
  +
  +
  +Crispin                     Standards Track                    [Page 57]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +      numbers to higher numbers, or from higher numbers to lower
  +      numbers.  For example, if the last 5 messages in a 9-message
  +      mailbox are expunged; a "lower to higher" server will send five
  +      untagged EXPUNGE responses for message sequence number 5, whereas
  +      a "higher to lower server" will send successive untagged EXPUNGE
  +      responses for message sequence numbers 9, 8, 7, 6, and 5.
  +
  +      An EXPUNGE response MUST NOT be sent when no command is in
  +      progress; nor while responding to a FETCH, STORE, or SEARCH
  +      command.  This rule is necessary to prevent a loss of
  +      synchronization of message sequence numbers between client and
  +      server.
  +
  +      The update from the EXPUNGE response MUST be recorded by the
  +      client.
  +
  +   Example:    S: * 44 EXPUNGE
  +
  +7.4.2.  FETCH Response
  +
  +   Contents:   message data
  +
  +      The FETCH response returns data about a message to the client.
  +      The data are pairs of data item names and their values in
  +      parentheses.  This response occurs as the result of a FETCH or
  +      STORE command, as well as by unilateral server decision (e.g. flag
  +      updates).
  +
  +      The current data items are:
  +
  +      BODY           A form of BODYSTRUCTURE without extension data.
  +
  +      BODY[<section>]<<origin_octet>>
  +                     A string expressing the body contents of the
  +                     specified section.  The string SHOULD be
  +                     interpreted by the client according to the content
  +                     transfer encoding, body type, and subtype.
  +
  +                     If the origin octet is specified, this string is a
  +                     substring of the entire body contents, starting at
  +                     that origin octet.  This means that BODY[]<0> MAY
  +                     be truncated, but BODY[] is NEVER truncated.
  +
  +                     8-bit textual data is permitted if a [CHARSET]
  +                     identifier is part of the body parameter
  +                     parenthesized list for this section.  Note that
  +                     headers (part specifiers HEADER or MIME, or the
  +                     header portion of a MESSAGE/RFC822 part), MUST be
  +
  +
  +
  +Crispin                     Standards Track                    [Page 58]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +                     7-bit; 8-bit characters are not permitted in
  +                     headers.  Note also that the blank line at the end
  +                     of the header is always included in header data.
  +
  +                     Non-textual data such as binary data MUST be
  +                     transfer encoded into a textual form such as BASE64
  +                     prior to being sent to the client.  To derive the
  +                     original binary data, the client MUST decode the
  +                     transfer encoded string.
  +
  +      BODYSTRUCTURE  A parenthesized list that describes the [MIME-IMB]
  +                     body structure of a message.  This is computed by
  +                     the server by parsing the [MIME-IMB] header fields,
  +                     defaulting various fields as necessary.
  +
  +                     For example, a simple text message of 48 lines and
  +                     2279 octets can have a body structure of: ("TEXT"
  +                     "PLAIN" ("CHARSET" "US-ASCII") NIL NIL "7BIT" 2279
  +                     48)
  +
  +                     Multiple parts are indicated by parenthesis
  +                     nesting.  Instead of a body type as the first
  +                     element of the parenthesized list there is a nested
  +                     body.  The second element of the parenthesized list
  +                     is the multipart subtype (mixed, digest, parallel,
  +                     alternative, etc.).
  +
  +                     For example, a two part message consisting of a
  +                     text and a BASE645-encoded text attachment can have
  +                     a body structure of: (("TEXT" "PLAIN" ("CHARSET"
  +                     "US-ASCII") NIL NIL "7BIT" 1152 23)("TEXT" "PLAIN"
  +                     ("CHARSET" "US-ASCII" "NAME" "cc.diff")
  +                     "<96...@cac.washington.edu>"
  +                     "Compiler diff" "BASE64" 4554 73) "MIXED"))
  +
  +                     Extension data follows the multipart subtype.
  +                     Extension data is never returned with the BODY
  +                     fetch, but can be returned with a BODYSTRUCTURE
  +                     fetch.  Extension data, if present, MUST be in the
  +                     defined order.
  +
  +                     The extension data of a multipart body part are in
  +                     the following order:
  +
  +                     body parameter parenthesized list
  +                        A parenthesized list of attribute/value pairs
  +                        [e.g. ("foo" "bar" "baz" "rag") where "bar" is
  +                        the value of "foo" and "rag" is the value of
  +
  +
  +
  +Crispin                     Standards Track                    [Page 59]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +                        "baz"] as defined in [MIME-IMB].
  +
  +                     body disposition
  +                        A parenthesized list, consisting of a
  +                        disposition type string followed by a
  +                        parenthesized list of disposition
  +                        attribute/value pairs.  The disposition type and
  +                        attribute names will be defined in a future
  +                        standards-track revision to [DISPOSITION].
  +
  +                     body language
  +                        A string or parenthesized list giving the body
  +                        language value as defined in [LANGUAGE-TAGS].
  +
  +                     Any following extension data are not yet defined in
  +                     this version of the protocol.  Such extension data
  +                     can consist of zero or more NILs, strings, numbers,
  +                     or potentially nested parenthesized lists of such
  +                     data.  Client implementations that do a
  +                     BODYSTRUCTURE fetch MUST be prepared to accept such
  +                     extension data.  Server implementations MUST NOT
  +                     send such extension data until it has been defined
  +                     by a revision of this protocol.
  +
  +                     The basic fields of a non-multipart body part are
  +                     in the following order:
  +
  +                     body type
  +                        A string giving the content media type name as
  +                        defined in [MIME-IMB].
  +
  +                     body subtype
  +                        A string giving the content subtype name as
  +                        defined in [MIME-IMB].
  +
  +                     body parameter parenthesized list
  +                        A parenthesized list of attribute/value pairs
  +                        [e.g. ("foo" "bar" "baz" "rag") where "bar" is
  +                        the value of "foo" and "rag" is the value of
  +                        "baz"] as defined in [MIME-IMB].
  +
  +                     body id
  +                        A string giving the content id as defined in
  +                        [MIME-IMB].
  +
  +                     body description
  +                        A string giving the content description as
  +                        defined in [MIME-IMB].
  +
  +
  +
  +Crispin                     Standards Track                    [Page 60]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +                     body encoding
  +                        A string giving the content transfer encoding as
  +                        defined in [MIME-IMB].
  +
  +                     body size
  +                        A number giving the size of the body in octets.
  +                        Note that this size is the size in its transfer
  +                        encoding and not the resulting size after any
  +                        decoding.
  +
  +                     A body type of type MESSAGE and subtype RFC822
  +                     contains, immediately after the basic fields, the
  +                     envelope structure, body structure, and size in
  +                     text lines of the encapsulated message.
  +
  +                     A body type of type TEXT contains, immediately
  +                     after the basic fields, the size of the body in
  +                     text lines.  Note that this size is the size in its
  +                     content transfer encoding and not the resulting
  +                     size after any decoding.
  +
  +                     Extension data follows the basic fields and the
  +                     type-specific fields listed above.  Extension data
  +                     is never returned with the BODY fetch, but can be
  +                     returned with a BODYSTRUCTURE fetch.  Extension
  +                     data, if present, MUST be in the defined order.
  +
  +                     The extension data of a non-multipart body part are
  +                     in the following order:
  +
  +                     body MD5
  +                        A string giving the body MD5 value as defined in
  +                        [MD5].
  +
  +                     body disposition
  +                        A parenthesized list with the same content and
  +                        function as the body disposition for a multipart
  +                        body part.
  +
  +                     body language
  +                        A string or parenthesized list giving the body
  +                        language value as defined in [LANGUAGE-TAGS].
  +
  +                     Any following extension data are not yet defined in
  +                     this version of the protocol, and would be as
  +                     described above under multipart extension data.
  +
  +
  +
  +
  +
  +Crispin                     Standards Track                    [Page 61]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +      ENVELOPE       A parenthesized list that describes the envelope
  +                     structure of a message.  This is computed by the
  +                     server by parsing the [RFC-822] header into the
  +                     component parts, defaulting various fields as
  +                     necessary.
  +
  +                     The fields of the envelope structure are in the
  +                     following order: date, subject, from, sender,
  +                     reply-to, to, cc, bcc, in-reply-to, and message-id.
  +                     The date, subject, in-reply-to, and message-id
  +                     fields are strings.  The from, sender, reply-to,
  +                     to, cc, and bcc fields are parenthesized lists of
  +                     address structures.
  +
  +                     An address structure is a parenthesized list that
  +                     describes an electronic mail address.  The fields
  +                     of an address structure are in the following order:
  +                     personal name, [SMTP] at-domain-list (source
  +                     route), mailbox name, and host name.
  +
  +                     [RFC-822] group syntax is indicated by a special
  +                     form of address structure in which the host name
  +                     field is NIL.  If the mailbox name field is also
  +                     NIL, this is an end of group marker (semi-colon in
  +                     RFC 822 syntax).  If the mailbox name field is
  +                     non-NIL, this is a start of group marker, and the
  +                     mailbox name field holds the group name phrase.
  +
  +                     Any field of an envelope or address structure that
  +                     is not applicable is presented as NIL.  Note that
  +                     the server MUST default the reply-to and sender
  +                     fields from the from field; a client is not
  +                     expected to know to do this.
  +
  +      FLAGS          A parenthesized list of flags that are set for this
  +                     message.
  +
  +      INTERNALDATE   A string representing the internal date of the
  +                     message.
  +
  +      RFC822         Equivalent to BODY[].
  +
  +      RFC822.HEADER  Equivalent to BODY.PEEK[HEADER].
  +
  +      RFC822.SIZE    A number expressing the [RFC-822] size of the
  +                     message.
  +
  +      RFC822.TEXT    Equivalent to BODY[TEXT].
  +
  +
  +
  +Crispin                     Standards Track                    [Page 62]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +      UID            A number expressing the unique identifier of the
  +                     message.
  +
  +
  +   Example:    S: * 23 FETCH (FLAGS (\Seen) RFC822.SIZE 44827)
  +
  +7.5.    Server Responses - Command Continuation Request
  +
  +   The command continuation request response is indicated by a "+" token
  +   instead of a tag.  This form of response indicates that the server is
  +   ready to accept the continuation of a command from the client.  The
  +   remainder of this response is a line of text.
  +
  +   This response is used in the AUTHORIZATION command to transmit server
  +   data to the client, and request additional client data.  This
  +   response is also used if an argument to any command is a literal.
  +
  +   The client is not permitted to send the octets of the literal unless
  +   the server indicates that it expects it.  This permits the server to
  +   process commands and reject errors on a line-by-line basis.  The
  +   remainder of the command, including the CRLF that terminates a
  +   command, follows the octets of the literal.  If there are any
  +   additional command arguments the literal octets are followed by a
  +   space and those arguments.
  +
  +   Example:    C: A001 LOGIN {11}
  +               S: + Ready for additional command text
  +               C: FRED FOOBAR {7}
  +               S: + Ready for additional command text
  +               C: fat man
  +               S: A001 OK LOGIN completed
  +               C: A044 BLURDYBLOOP {102856}
  +               S: A044 BAD No such command as "BLURDYBLOOP"
  +
  +8.      Sample IMAP4rev1 connection
  +
  +   The following is a transcript of an IMAP4rev1 connection.  A long
  +   line in this sample is broken for editorial clarity.
  +
  +S:   * OK IMAP4rev1 Service Ready
  +C:   a001 login mrc secret
  +S:   a001 OK LOGIN completed
  +C:   a002 select inbox
  +S:   * 18 EXISTS
  +S:   * FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
  +S:   * 2 RECENT
  +S:   * OK [UNSEEN 17] Message 17 is the first unseen message
  +S:   * OK [UIDVALIDITY 3857529045] UIDs valid
  +
  +
  +
  +Crispin                     Standards Track                    [Page 63]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +S:   a002 OK [READ-WRITE] SELECT completed
  +C:   a003 fetch 12 full
  +S:   * 12 FETCH (FLAGS (\Seen) INTERNALDATE "17-Jul-1996 02:44:25 -0700"
  +      RFC822.SIZE 4286 ENVELOPE ("Wed, 17 Jul 1996 02:23:25 -0700 (PDT)"
  +      "IMAP4rev1 WG mtg summary and minutes"
  +      (("Terry Gray" NIL "gray" "cac.washington.edu"))
  +      (("Terry Gray" NIL "gray" "cac.washington.edu"))
  +      (("Terry Gray" NIL "gray" "cac.washington.edu"))
  +      ((NIL NIL "imap" "cac.washington.edu"))
  +      ((NIL NIL "minutes" "CNRI.Reston.VA.US")
  +      ("John Klensin" NIL "KLENSIN" "INFOODS.MIT.EDU")) NIL NIL
  +      "<B2...@cac.washington.edu>")
  +       BODY ("TEXT" "PLAIN" ("CHARSET" "US-ASCII") NIL NIL "7BIT" 3028 92))
  +S:    a003 OK FETCH completed
  +C:    a004 fetch 12 body[header]
  +S:    * 12 FETCH (BODY[HEADER] {350}
  +S:    Date: Wed, 17 Jul 1996 02:23:25 -0700 (PDT)
  +S:    From: Terry Gray <gr...@cac.washington.edu>
  +S:    Subject: IMAP4rev1 WG mtg summary and minutes
  +S:    To: imap@cac.washington.edu
  +S:    cc: minutes@CNRI.Reston.VA.US, John Klensin <KL...@INFOODS.MIT.EDU>
  +S:    Message-Id: <B2...@cac.washington.edu>
  +S:    MIME-Version: 1.0
  +S:    Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
  +S:
  +S:    )
  +S:    a004 OK FETCH completed
  +C:    a005 store 12 +flags \deleted
  +S:    * 12 FETCH (FLAGS (\Seen \Deleted))
  +S:    a005 OK +FLAGS completed
  +C:    a006 logout
  +S:    * BYE IMAP4rev1 server terminating connection
  +S:    a006 OK LOGOUT completed
  +
  +9.      Formal Syntax
  +
  +   The following syntax specification uses the augmented Backus-Naur
  +   Form (BNF) notation as specified in [RFC-822] with one exception; the
  +   delimiter used with the "#" construct is a single space (SPACE) and
  +   not one or more commas.
  +
  +   In the case of alternative or optional rules in which a later rule
  +   overlaps an earlier rule, the rule which is listed earlier MUST take
  +   priority.  For example, "\Seen" when parsed as a flag is the \Seen
  +   flag name and not a flag_extension, even though "\Seen" could be
  +   parsed as a flag_extension.  Some, but not all, instances of this
  +   rule are noted below.
  +
  +
  +
  +
  +Crispin                     Standards Track                    [Page 64]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +   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.
  +
  +address         ::= "(" addr_name SPACE addr_adl SPACE addr_mailbox
  +                    SPACE addr_host ")"
  +
  +addr_adl        ::= nstring
  +                    ;; Holds route from [RFC-822] route-addr if
  +                    ;; non-NIL
  +
  +addr_host       ::= nstring
  +                    ;; NIL indicates [RFC-822] group syntax.
  +                    ;; Otherwise, holds [RFC-822] domain name
  +
  +addr_mailbox    ::= nstring
  +                    ;; NIL indicates end of [RFC-822] group; if
  +                    ;; non-NIL and addr_host is NIL, holds
  +                    ;; [RFC-822] group name.
  +                    ;; Otherwise, holds [RFC-822] local-part
  +
  +addr_name       ::= nstring
  +                    ;; Holds phrase from [RFC-822] mailbox if
  +                    ;; non-NIL
  +
  +alpha           ::= "A" / "B" / "C" / "D" / "E" / "F" / "G" / "H" /
  +                    "I" / "J" / "K" / "L" / "M" / "N" / "O" / "P" /
  +                    "Q" / "R" / "S" / "T" / "U" / "V" / "W" / "X" /
  +                    "Y" / "Z" /
  +                    "a" / "b" / "c" / "d" / "e" / "f" / "g" / "h" /
  +                    "i" / "j" / "k" / "l" / "m" / "n" / "o" / "p" /
  +                    "q" / "r" / "s" / "t" / "u" / "v" / "w" / "x" /
  +                    "y" / "z"
  +                    ;; Case-sensitive
  +
  +append          ::= "APPEND" SPACE mailbox [SPACE flag_list]
  +                    [SPACE date_time] SPACE literal
  +
  +astring         ::= atom / string
  +
  +atom            ::= 1*ATOM_CHAR
  +
  +ATOM_CHAR       ::= <any CHAR except atom_specials>
  +
  +atom_specials   ::= "(" / ")" / "{" / SPACE / CTL / list_wildcards /
  +                    quoted_specials
  +
  +
  +
  +
  +Crispin                     Standards Track                    [Page 65]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +authenticate    ::= "AUTHENTICATE" SPACE auth_type *(CRLF base64)
  +
  +auth_type       ::= atom
  +                    ;; Defined by [IMAP-AUTH]
  +
  +base64          ::= *(4base64_char) [base64_terminal]
  +
  +base64_char     ::= alpha / digit / "+" / "/"
  +
  +base64_terminal ::= (2base64_char "==") / (3base64_char "=")
  +
  +body            ::= "(" body_type_1part / body_type_mpart ")"
  +
  +body_extension  ::= nstring / number / "(" 1#body_extension ")"
  +                    ;; Future expansion.  Client implementations
  +                    ;; MUST accept body_extension fields.  Server
  +                    ;; implementations MUST NOT generate
  +                    ;; body_extension fields except as defined by
  +                    ;; future standard or standards-track
  +                    ;; revisions of this specification.
  +
  +body_ext_1part  ::= body_fld_md5 [SPACE body_fld_dsp
  +                    [SPACE body_fld_lang
  +                    [SPACE 1#body_extension]]]
  +                    ;; MUST NOT be returned on non-extensible
  +                    ;; "BODY" fetch
  +
  +body_ext_mpart  ::= body_fld_param
  +                    [SPACE body_fld_dsp SPACE body_fld_lang
  +                    [SPACE 1#body_extension]]
  +                    ;; MUST NOT be returned on non-extensible
  +                    ;; "BODY" fetch
  +
  +body_fields     ::= body_fld_param SPACE body_fld_id SPACE
  +                    body_fld_desc SPACE body_fld_enc SPACE
  +                    body_fld_octets
  +
  +body_fld_desc   ::= nstring
  +
  +body_fld_dsp    ::= "(" string SPACE body_fld_param ")" / nil
  +
  +body_fld_enc    ::= (<"> ("7BIT" / "8BIT" / "BINARY" / "BASE64"/
  +                    "QUOTED-PRINTABLE") <">) / string
  +
  +body_fld_id     ::= nstring
  +
  +body_fld_lang   ::= nstring / "(" 1#string ")"
  +
  +
  +
  +
  +Crispin                     Standards Track                    [Page 66]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +body_fld_lines  ::= number
  +
  +body_fld_md5    ::= nstring
  +
  +body_fld_octets ::= number
  +
  +body_fld_param  ::= "(" 1#(string SPACE string) ")" / nil
  +
  +body_type_1part ::= (body_type_basic / body_type_msg / body_type_text)
  +                    [SPACE body_ext_1part]
  +
  +body_type_basic ::= media_basic SPACE body_fields
  +                    ;; MESSAGE subtype MUST NOT be "RFC822"
  +
  +body_type_mpart ::= 1*body SPACE media_subtype
  +                    [SPACE body_ext_mpart]
  +
  +body_type_msg   ::= media_message SPACE body_fields SPACE envelope
  +                    SPACE body SPACE body_fld_lines
  +
  +body_type_text  ::= media_text SPACE body_fields SPACE body_fld_lines
  +
  +capability      ::= "AUTH=" auth_type / atom
  +                    ;; New capabilities MUST begin with "X" or be
  +                    ;; registered with IANA as standard or
  +                    ;; standards-track
  +
  +capability_data ::= "CAPABILITY" SPACE [1#capability SPACE] "IMAP4rev1"
  +                    [SPACE 1#capability]
  +                    ;; IMAP4rev1 servers which offer RFC 1730
  +                    ;; compatibility MUST list "IMAP4" as the first
  +                    ;; capability.
  +
  +CHAR            ::= <any 7-bit US-ASCII character except NUL,
  +                     0x01 - 0x7f>
  +
  +CHAR8           ::= <any 8-bit octet except NUL, 0x01 - 0xff>
  +
  +command         ::= tag SPACE (command_any / command_auth /
  +                    command_nonauth / command_select) CRLF
  +                    ;; Modal based on state
  +
  +command_any     ::= "CAPABILITY" / "LOGOUT" / "NOOP" / x_command
  +                    ;; Valid in all states
  +
  +command_auth    ::= append / create / delete / examine / list / lsub /
  +                    rename / select / status / subscribe / unsubscribe
  +                    ;; Valid only in Authenticated or Selected state
  +
  +
  +
  +Crispin                     Standards Track                    [Page 67]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +command_nonauth ::= login / authenticate
  +                    ;; Valid only when in Non-Authenticated state
  +
  +command_select  ::= "CHECK" / "CLOSE" / "EXPUNGE" /
  +                     copy / fetch / store / uid / search
  +                    ;; Valid only when in Selected state
  +
  +continue_req    ::= "+" SPACE (resp_text / base64)
  +
  +copy            ::= "COPY" SPACE set SPACE mailbox
  +
  +CR              ::= <ASCII CR, carriage return, 0x0D>
  +
  +create          ::= "CREATE" SPACE mailbox
  +                    ;; Use of INBOX gives a NO error
  +
  +CRLF            ::= CR LF
  +
  +CTL             ::= <any ASCII control character and DEL,
  +                        0x00 - 0x1f, 0x7f>
  +
  +date            ::= date_text / <"> date_text <">
  +
  +date_day        ::= 1*2digit
  +                    ;; Day of month
  +
  +date_day_fixed  ::= (SPACE digit) / 2digit
  +                    ;; Fixed-format version of date_day
  +
  +date_month      ::= "Jan" / "Feb" / "Mar" / "Apr" / "May" / "Jun" /
  +                    "Jul" / "Aug" / "Sep" / "Oct" / "Nov" / "Dec"
  +
  +date_text       ::= date_day "-" date_month "-" date_year
  +
  +date_year       ::= 4digit
  +
  +date_time       ::= <"> date_day_fixed "-" date_month "-" date_year
  +                    SPACE time SPACE zone <">
  +
  +delete          ::= "DELETE" SPACE mailbox
  +                    ;; Use of INBOX gives a NO error
  +
  +digit           ::= "0" / digit_nz
  +
  +digit_nz        ::= "1" / "2" / "3" / "4" / "5" / "6" / "7" / "8" /
  +                    "9"
  +
  +
  +
  +
  +
  +Crispin                     Standards Track                    [Page 68]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +envelope        ::= "(" env_date SPACE env_subject SPACE env_from
  +                    SPACE env_sender SPACE env_reply_to SPACE env_to
  +                    SPACE env_cc SPACE env_bcc SPACE env_in_reply_to
  +                    SPACE env_message_id ")"
  +
  +env_bcc         ::= "(" 1*address ")" / nil
  +
  +env_cc          ::= "(" 1*address ")" / nil
  +
  +env_date        ::= nstring
  +
  +env_from        ::= "(" 1*address ")" / nil
  +
  +env_in_reply_to ::= nstring
  +
  +env_message_id  ::= nstring
  +
  +env_reply_to    ::= "(" 1*address ")" / nil
  +
  +env_sender      ::= "(" 1*address ")" / nil
  +
  +env_subject     ::= nstring
  +
  +env_to          ::= "(" 1*address ")" / nil
  +
  +examine         ::= "EXAMINE" SPACE mailbox
  +
  +fetch           ::= "FETCH" SPACE set SPACE ("ALL" / "FULL" /
  +                    "FAST" / fetch_att / "(" 1#fetch_att ")")
  +
  +fetch_att       ::= "ENVELOPE" / "FLAGS" / "INTERNALDATE" /
  +                    "RFC822" [".HEADER" / ".SIZE" / ".TEXT"] /
  +                    "BODY" ["STRUCTURE"] / "UID" /
  +                    "BODY" [".PEEK"] section
  +                    ["<" number "." nz_number ">"]
  +
  +flag            ::= "\Answered" / "\Flagged" / "\Deleted" /
  +                    "\Seen" / "\Draft" / flag_keyword / flag_extension
  +
  +flag_extension  ::= "\" atom
  +                    ;; Future expansion.  Client implementations
  +                    ;; MUST accept flag_extension flags.  Server
  +                    ;; implementations MUST NOT generate
  +                    ;; flag_extension flags except as defined by
  +                    ;; future standard or standards-track
  +                    ;; revisions of this specification.
  +
  +flag_keyword    ::= atom
  +
  +
  +
  +Crispin                     Standards Track                    [Page 69]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +flag_list       ::= "(" #flag ")"
  +
  +greeting        ::= "*" SPACE (resp_cond_auth / resp_cond_bye) CRLF
  +
  +header_fld_name ::= astring
  +
  +header_list     ::= "(" 1#header_fld_name ")"
  +
  +LF              ::= <ASCII LF, line feed, 0x0A>
  +
  +list            ::= "LIST" SPACE mailbox SPACE list_mailbox
  +
  +list_mailbox    ::= 1*(ATOM_CHAR / list_wildcards) / string
  +
  +list_wildcards  ::= "%" / "*"
  +
  +literal         ::= "{" number "}" CRLF *CHAR8
  +                    ;; Number represents the number of CHAR8 octets
  +
  +login           ::= "LOGIN" SPACE userid SPACE password
  +
  +lsub            ::= "LSUB" SPACE mailbox SPACE list_mailbox
  +
  +mailbox         ::= "INBOX" / astring
  +                    ;; INBOX is case-insensitive.  All case variants of
  +                    ;; INBOX (e.g. "iNbOx") MUST be interpreted as INBOX
  +                    ;; not as an astring.  Refer to section 5.1 for
  +                    ;; further semantic details of mailbox names.
  +
  +mailbox_data    ::=  "FLAGS" SPACE flag_list /
  +                     "LIST" SPACE mailbox_list /
  +                     "LSUB" SPACE mailbox_list /
  +                     "MAILBOX" SPACE text /
  +                     "SEARCH" [SPACE 1#nz_number] /
  +                     "STATUS" SPACE mailbox SPACE
  +                     "(" #<status_att number ")" /
  +                     number SPACE "EXISTS" / number SPACE "RECENT"
  +
  +mailbox_list    ::= "(" #("\Marked" / "\Noinferiors" /
  +                    "\Noselect" / "\Unmarked" / flag_extension) ")"
  +                    SPACE (<"> QUOTED_CHAR <"> / nil) SPACE mailbox
  +
  +media_basic     ::= (<"> ("APPLICATION" / "AUDIO" / "IMAGE" /
  +                    "MESSAGE" / "VIDEO") <">) / string)
  +                    SPACE media_subtype
  +                    ;; Defined in [MIME-IMT]
  +
  +media_message   ::= <"> "MESSAGE" <"> SPACE <"> "RFC822" <">
  +
  +
  +
  +Crispin                     Standards Track                    [Page 70]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +                    ;; Defined in [MIME-IMT]
  +
  +media_subtype   ::= string
  +                    ;; Defined in [MIME-IMT]
  +
  +media_text      ::= <"> "TEXT" <"> SPACE media_subtype
  +                    ;; Defined in [MIME-IMT]
  +
  +message_data    ::= nz_number SPACE ("EXPUNGE" /
  +                                    ("FETCH" SPACE msg_att))
  +
  +msg_att         ::= "(" 1#("ENVELOPE" SPACE envelope /
  +                    "FLAGS" SPACE "(" #(flag / "\Recent") ")" /
  +                    "INTERNALDATE" SPACE date_time /
  +                    "RFC822" [".HEADER" / ".TEXT"] SPACE nstring /
  +                    "RFC822.SIZE" SPACE number /
  +                    "BODY" ["STRUCTURE"] SPACE body /
  +                    "BODY" section ["<" number ">"] SPACE nstring /
  +                    "UID" SPACE uniqueid) ")"
  +
  +nil             ::= "NIL"
  +
  +nstring         ::= string / nil
  +
  +number          ::= 1*digit
  +                    ;; Unsigned 32-bit integer
  +                    ;; (0 <= n < 4,294,967,296)
  +
  +nz_number       ::= digit_nz *digit
  +                    ;; Non-zero unsigned 32-bit integer
  +                    ;; (0 < n < 4,294,967,296)
  +
  +password        ::= astring
  +
  +quoted          ::= <"> *QUOTED_CHAR <">
  +
  +QUOTED_CHAR     ::= <any TEXT_CHAR except quoted_specials> /
  +                    "\" quoted_specials
  +
  +quoted_specials ::= <"> / "\"
  +
  +rename          ::= "RENAME" SPACE mailbox SPACE mailbox
  +                    ;; Use of INBOX as a destination gives a NO error
  +
  +response        ::= *(continue_req / response_data) response_done
  +
  +response_data   ::= "*" SPACE (resp_cond_state / resp_cond_bye /
  +                    mailbox_data / message_data / capability_data)
  +
  +
  +
  +Crispin                     Standards Track                    [Page 71]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +                    CRLF
  +
  +response_done   ::= response_tagged / response_fatal
  +
  +response_fatal  ::= "*" SPACE resp_cond_bye CRLF
  +                    ;; Server closes connection immediately
  +
  +response_tagged ::= tag SPACE resp_cond_state CRLF
  +
  +resp_cond_auth  ::= ("OK" / "PREAUTH") SPACE resp_text
  +                    ;; Authentication condition
  +
  +resp_cond_bye   ::= "BYE" SPACE resp_text
  +
  +resp_cond_state ::= ("OK" / "NO" / "BAD") SPACE resp_text
  +                    ;; Status condition
  +
  +resp_text       ::= ["[" resp_text_code "]" SPACE] (text_mime2 / text)
  +                    ;; text SHOULD NOT begin with "[" or "="
  +
  +resp_text_code  ::= "ALERT" / "PARSE" /
  +                    "PERMANENTFLAGS" SPACE "(" #(flag / "\*") ")" /
  +                    "READ-ONLY" / "READ-WRITE" / "TRYCREATE" /
  +                    "UIDVALIDITY" SPACE nz_number /
  +                    "UNSEEN" SPACE nz_number /
  +                    atom [SPACE 1*<any TEXT_CHAR except "]">]
  +
  +search          ::= "SEARCH" SPACE ["CHARSET" SPACE astring SPACE]
  +                    1#search_key
  +                    ;; [CHARSET] MUST be registered with IANA
  +
  +search_key      ::= "ALL" / "ANSWERED" / "BCC" SPACE astring /
  +                    "BEFORE" SPACE date / "BODY" SPACE astring /
  +                    "CC" SPACE astring / "DELETED" / "FLAGGED" /
  +                    "FROM" SPACE astring /
  +                    "KEYWORD" SPACE flag_keyword / "NEW" / "OLD" /
  +                    "ON" SPACE date / "RECENT" / "SEEN" /
  +                    "SINCE" SPACE date / "SUBJECT" SPACE astring /
  +                    "TEXT" SPACE astring / "TO" SPACE astring /
  +                    "UNANSWERED" / "UNDELETED" / "UNFLAGGED" /
  +                    "UNKEYWORD" SPACE flag_keyword / "UNSEEN" /
  +                    ;; Above this line were in [IMAP2]
  +                    "DRAFT" /
  +                    "HEADER" SPACE header_fld_name SPACE astring /
  +                    "LARGER" SPACE number / "NOT" SPACE search_key /
  +                    "OR" SPACE search_key SPACE search_key /
  +                    "SENTBEFORE" SPACE date / "SENTON" SPACE date /
  +                    "SENTSINCE" SPACE date / "SMALLER" SPACE number /
  +
  +
  +
  +Crispin                     Standards Track                    [Page 72]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +                    "UID" SPACE set / "UNDRAFT" / set /
  +                    "(" 1#search_key ")"
  +
  +section         ::= "[" [section_text / (nz_number *["." nz_number]
  +                    ["." (section_text / "MIME")])] "]"
  +
  +section_text    ::= "HEADER" / "HEADER.FIELDS" [".NOT"]
  +                    SPACE header_list / "TEXT"
  +
  +select          ::= "SELECT" SPACE mailbox
  +
  +sequence_num    ::= nz_number / "*"
  +                    ;; * is the largest number in use.  For message
  +                    ;; sequence numbers, it is the number of messages
  +                    ;; in the mailbox.  For unique identifiers, it is
  +                    ;; the unique identifier of the last message in
  +                    ;; the mailbox.
  +
  +set             ::= sequence_num / (sequence_num ":" sequence_num) /
  +                    (set "," set)
  +                    ;; Identifies a set of messages.  For message
  +                    ;; sequence numbers, these are consecutive
  +                    ;; numbers from 1 to the number of messages in
  +                    ;; the mailbox
  +                    ;; Comma delimits individual numbers, colon
  +                    ;; delimits between two numbers inclusive.
  +                    ;; Example: 2,4:7,9,12:* is 2,4,5,6,7,9,12,13,
  +                    ;; 14,15 for a mailbox with 15 messages.
  +
  +SPACE           ::= <ASCII SP, space, 0x20>
  +
  +status          ::= "STATUS" SPACE mailbox SPACE "(" 1#status_att ")"
  +
  +status_att      ::= "MESSAGES" / "RECENT" / "UIDNEXT" / "UIDVALIDITY" /
  +                    "UNSEEN"
  +
  +store           ::= "STORE" SPACE set SPACE store_att_flags
  +
  +store_att_flags ::= (["+" / "-"] "FLAGS" [".SILENT"]) SPACE
  +                    (flag_list / #flag)
  +
  +string          ::= quoted / literal
  +
  +subscribe       ::= "SUBSCRIBE" SPACE mailbox
  +
  +tag             ::= 1*<any ATOM_CHAR except "+">
  +
  +text            ::= 1*TEXT_CHAR
  +
  +
  +
  +Crispin                     Standards Track                    [Page 73]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +text_mime2       ::= "=?" <charset> "?" <encoding> "?"
  +                     <encoded-text> "?="
  +                     ;; Syntax defined in [MIME-HDRS]
  +
  +TEXT_CHAR       ::= <any CHAR except CR and LF>
  +
  +time            ::= 2digit ":" 2digit ":" 2digit
  +                    ;; Hours minutes seconds
  +
  +uid             ::= "UID" SPACE (copy / fetch / search / store)
  +                    ;; Unique identifiers used instead of message
  +                    ;; sequence numbers
  +
  +uniqueid        ::= nz_number
  +                    ;; Strictly ascending
  +
  +unsubscribe     ::= "UNSUBSCRIBE" SPACE mailbox
  +
  +userid          ::= astring
  +
  +x_command       ::= "X" atom <experimental command arguments>
  +
  +zone            ::= ("+" / "-") 4digit
  +                    ;; Signed four-digit value of hhmm representing
  +                    ;; hours and minutes west of Greenwich (that is,
  +                    ;; (the amount that the given time differs from
  +                    ;; Universal Time).  Subtracting the timezone
  +                    ;; from the given time will give the UT form.
  +                    ;; The Universal Time zone is "+0000".
  +
  +10.     Author's Note
  +
  +   This document is a revision or rewrite of earlier documents, and
  +   supercedes the protocol specification in those documents: RFC 1730,
  +   unpublished IMAP2bis.TXT document, RFC 1176, and RFC 1064.
  +
  +11.     Security Considerations
  +
  +   IMAP4rev1 protocol transactions, including electronic mail data, are
  +   sent in the clear over the network unless privacy protection is
  +   negotiated in the AUTHENTICATE command.
  +
  +   A server error message for an AUTHENTICATE command which fails due to
  +   invalid credentials SHOULD NOT detail why the credentials are
  +   invalid.
  +
  +   Use of the LOGIN command sends passwords in the clear.  This can be
  +   avoided by using the AUTHENTICATE command instead.
  +
  +
  +
  +Crispin                     Standards Track                    [Page 74]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +   A server error message for a failing LOGIN command SHOULD NOT specify
  +   that the user name, as opposed to the password, is invalid.
  +
  +   Additional security considerations are discussed in the section
  +   discussing the AUTHENTICATE and LOGIN commands.
  +
  +12.     Author's Address
  +
  +   Mark R. Crispin
  +   Networks and Distributed Computing
  +   University of Washington
  +   4545 15th Aveneue NE
  +   Seattle, WA  98105-4527
  +
  +   Phone: (206) 543-5762
  +
  +   EMail: MRC@CAC.Washington.EDU
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +
  +Crispin                     Standards Track                    [Page 75]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +Appendices
  +
  +A.      References
  +
  +[ACAP] Myers, J. "ACAP -- Application Configuration Access Protocol",
  +Work in Progress.
  +
  +[CHARSET] Reynolds, J., and J. Postel, "Assigned Numbers", STD 2,
  +RFC 1700, USC/Information Sciences Institute, October 1994.
  +
  +[DISPOSITION] Troost, R., and Dorner, S., "Communicating Presentation
  +Information in Internet Messages: The Content-Disposition Header",
  +RFC 1806, June 1995.
  +
  +[IMAP-AUTH] Myers, J., "IMAP4 Authentication Mechanism", RFC 1731.
  +Carnegie-Mellon University, December 1994.
  +
  +[IMAP-COMPAT] Crispin, M., "IMAP4 Compatibility with IMAP2bis", RFC
  +2061, University of Washington, November 1996.
  +
  +[IMAP-DISC] Austein, R., "Synchronization Operations for Disconnected
  +IMAP4 Clients", Work in Progress.
  +
  +[IMAP-HISTORICAL] Crispin, M. "IMAP4 Compatibility with IMAP2 and
  +IMAP2bis", RFC 1732, University of Washington, December 1994.
  +
  +[IMAP-MODEL] Crispin, M., "Distributed Electronic Mail Models in
  +IMAP4", RFC 1733, University of Washington, December 1994.
  +
  +[IMAP-OBSOLETE] Crispin, M., "Internet Message Access Protocol -
  +Obsolete Syntax", RFC 2062, University of Washington, November 1996.
  +
  +[IMAP2] Crispin, M., "Interactive Mail Access Protocol - Version 2",
  +RFC 1176, University of Washington, August 1990.
  +
  +[LANGUAGE-TAGS] Alvestrand, H., "Tags for the Identification of
  +Languages", RFC 1766, March 1995.
  +
  +[MD5] Myers, J., and M. Rose, "The Content-MD5 Header Field", RFC
  +1864, October 1995.
  +
  +[MIME-IMB] Freed, N., and N. Borenstein, "MIME (Multipurpose Internet
  +Mail Extensions) Part One: Format of Internet Message Bodies", RFC
  +2045, November 1996.
  +
  +[MIME-IMT] Freed, N., and N. Borenstein, "MIME (Multipurpose
  +Internet Mail Extensions) Part Two: Media Types", RFC 2046,
  +November 1996.
  +
  +
  +
  +Crispin                     Standards Track                    [Page 76]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +[MIME-HDRS] Moore, K., "MIME (Multipurpose Internet Mail Extensions)
  +Part Three: Message Header Extensions for Non-ASCII Text", RFC
  +2047, November 1996.
  +
  +[RFC-822] Crocker, D., "Standard for the Format of ARPA Internet Text
  +Messages", STD 11, RFC 822, University of Delaware, August 1982.
  +
  +[SMTP] Postel, J., "Simple Mail Transfer Protocol", STD 10,
  +RFC 821, USC/Information Sciences Institute, August 1982.
  +
  +[UTF-7] Goldsmith, D., and Davis, M., "UTF-7: A Mail-Safe
  +Transformation Format of Unicode", RFC 1642, July 1994.
  +
  +B.      Changes from RFC 1730
  +
  +1) The STATUS command has been added.
  +
  +2) Clarify in the formal syntax that the "#" construct can never
  +refer to multiple spaces.
  +
  +3) Obsolete syntax has been moved to a separate document.
  +
  +4) The PARTIAL command has been obsoleted.
  +
  +5) The RFC822.HEADER.LINES, RFC822.HEADER.LINES.NOT, RFC822.PEEK, and
  +RFC822.TEXT.PEEK fetch attributes have been obsoleted.
  +
  +6) The "<" origin "." size ">" suffix for BODY text attributes has
  +been added.
  +
  +7) The HEADER, HEADER.FIELDS, HEADER.FIELDS.NOT, MIME, and TEXT part
  +specifiers have been added.
  +
  +8) Support for Content-Disposition and Content-Language has been
  +added.
  +
  +9) The restriction on fetching nested MULTIPART parts has been
  +removed.
  +
  +10) Body part number 0 has been obsoleted.
  +
  +11) Server-supported authenticators are now identified by
  +capabilities.
  +
  +
  +
  +
  +
  +
  +
  +
  +Crispin                     Standards Track                    [Page 77]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +12) The capability that identifies this protocol is now called
  +"IMAP4rev1".  A server that provides backwards support for RFC 1730
  +SHOULD emit the "IMAP4" capability in addition to "IMAP4rev1" in its
  +CAPABILITY response.  Because RFC-1730 required "IMAP4" to appear as
  +the first capability, it MUST listed first in the response.
  +
  +13) A description of the mailbox name namespace convention has been
  +added.
  +
  +14) A description of the international mailbox name convention has
  +been added.
  +
  +15) The UID-NEXT and UID-VALIDITY status items are now called UIDNEXT
  +and UIDVALIDITY.  This is a change from the IMAP STATUS
  +Work in Progress and not from RFC-1730
  +
  +16) Add a clarification that a null mailbox name argument to the LIST
  +command returns an untagged LIST response with the hierarchy
  +delimiter and root of the reference argument.
  +
  +17) Define terms such as "MUST", "SHOULD", and "MUST NOT".
  +
  +18) Add a section which defines message attributes and more
  +thoroughly details the semantics of message sequence numbers, UIDs,
  +and flags.
  +
  +19) Add a clarification detailing the circumstances when a client may
  +send multiple commands without waiting for a response, and the
  +circumstances in which ambiguities may result.
  +
  +20) Add a recommendation on server behavior for DELETE and RENAME
  +when inferior hierarchical names of the given name exist.
  +
  +21) Add a clarification that a mailbox name may not be unilaterally
  +unsubscribed by the server, even if that mailbox name no longer
  +exists.
  +
  +22) Add a clarification that LIST should return its results quickly
  +without undue delay.
  +
  +23) Add a clarification that the date_time argument to APPEND sets
  +the internal date of the message.
  +
  +24) Add a clarification on APPEND behavior when the target mailbox is
  +the currently selected mailbox.
  +
  +
  +
  +
  +
  +
  +Crispin                     Standards Track                    [Page 78]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +25) Add a clarification that external changes to flags should be
  +always announced via an untagged FETCH even if the current command is
  +a STORE with the ".SILENT" suffix.
  +
  +26) Add a clarification that COPY appends to the target mailbox.
  +
  +27) Add the NEWNAME response code.
  +
  +28) Rewrite the description of the untagged BYE response to clarify
  +its semantics.
  +
  +29) Change the reference for the body MD5 to refer to the proper RFC.
  +
  +30) Clarify that the formal syntax contains rules which may overlap,
  +and that in the event of such an overlap the rule which occurs first
  +takes precedence.
  +
  +31) Correct the definition of body_fld_param.
  +
  +32) More formal syntax for capability_data.
  +
  +33) Clarify that any case variant of "INBOX" must be interpreted as
  +INBOX.
  +
  +34) Clarify that the human-readable text in resp_text should not
  +begin with "[" or "=".
  +
  +35) Change MIME references to Draft Standard documents.
  +
  +36) Clarify \Recent semantics.
  +
  +37) Additional examples.
  +
  +C.      Key Word Index
  +
  +       +FLAGS <flag list> (store command data item) ...............   45
  +       +FLAGS.SILENT <flag list> (store command data item) ........   46
  +       -FLAGS <flag list> (store command data item) ...............   46
  +       -FLAGS.SILENT <flag list> (store command data item) ........   46
  +       ALERT (response code) ......................................   50
  +       ALL (fetch item) ...........................................   41
  +       ALL (search key) ...........................................   38
  +       ANSWERED (search key) ......................................   38
  +       APPEND (command) ...........................................   34
  +       AUTHENTICATE (command) .....................................   20
  +       BAD (response) .............................................   52
  +       BCC <string> (search key) ..................................   38
  +       BEFORE <date> (search key) .................................   39
  +
  +
  +
  +Crispin                     Standards Track                    [Page 79]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +       BODY (fetch item) ..........................................   41
  +       BODY (fetch result) ........................................   58
  +       BODY <string> (search key) .................................   39
  +       BODY.PEEK[<section>]<<partial>> (fetch item) ...............   44
  +       BODYSTRUCTURE (fetch item) .................................   44
  +       BODYSTRUCTURE (fetch result) ...............................   59
  +       BODY[<section>]<<origin_octet>> (fetch result) .............   58
  +       BODY[<section>]<<partial>> (fetch item) ....................   41
  +       BYE (response) .............................................   52
  +       Body Structure (message attribute) .........................   11
  +       CAPABILITY (command) .......................................   18
  +       CAPABILITY (response) ......................................   53
  +       CC <string> (search key) ...................................   39
  +       CHECK (command) ............................................   36
  +       CLOSE (command) ............................................   36
  +       COPY (command) .............................................   46
  +       CREATE (command) ...........................................   25
  +       DELETE (command) ...........................................   26
  +       DELETED (search key) .......................................   39
  +       DRAFT (search key) .........................................   39
  +       ENVELOPE (fetch item) ......................................   44
  +       ENVELOPE (fetch result) ....................................   62
  +       EXAMINE (command) ..........................................   24
  +       EXISTS (response) ..........................................   56
  +       EXPUNGE (command) ..........................................   37
  +       EXPUNGE (response) .........................................   57
  +       Envelope Structure (message attribute) .....................   11
  +       FAST (fetch item) ..........................................   44
  +       FETCH (command) ............................................   41
  +       FETCH (response) ...........................................   58
  +       FLAGGED (search key) .......................................   39
  +       FLAGS (fetch item) .........................................   44
  +       FLAGS (fetch result) .......................................   62
  +       FLAGS (response) ...........................................   56
  +       FLAGS <flag list> (store command data item) ................   45
  +       FLAGS.SILENT <flag list> (store command data item) .........   45
  +       FROM <string> (search key) .................................   39
  +       FULL (fetch item) ..........................................   44
  +       Flags (message attribute) ..................................    9
  +       HEADER (part specifier) ....................................   41
  +       HEADER <field-name> <string> (search key) ..................   39
  +       HEADER.FIELDS <header_list> (part specifier) ...............   41
  +       HEADER.FIELDS.NOT <header_list> (part specifier) ...........   41
  +       INTERNALDATE (fetch item) ..................................   44
  +       INTERNALDATE (fetch result) ................................   62
  +       Internal Date (message attribute) ..........................   10
  +       KEYWORD <flag> (search key) ................................   39
  +       Keyword (type of flag) .....................................   10
  +
  +
  +
  +Crispin                     Standards Track                    [Page 80]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +       LARGER <n> (search key) ....................................   39
  +       LIST (command) .............................................   30
  +       LIST (response) ............................................   54
  +       LOGIN (command) ............................................   22
  +       LOGOUT (command) ...........................................   20
  +       LSUB (command) .............................................   32
  +       LSUB (response) ............................................   55
  +       MAY (specification requirement term) .......................    5
  +       MESSAGES (status item) .....................................   33
  +       MIME (part specifier) ......................................   42
  +       MUST (specification requirement term) ......................    4
  +       MUST NOT (specification requirement term) ..................    4
  +       Message Sequence Number (message attribute) ................    9
  +       NEW (search key) ...........................................   39
  +       NEWNAME (response code) ....................................   50
  +       NO (response) ..............................................   51
  +       NOOP (command) .............................................   19
  +       NOT <search-key> (search key) ..............................   39
  +       OK (response) ..............................................   51
  +       OLD (search key) ...........................................   39
  +       ON <date> (search key) .....................................   39
  +       OPTIONAL (specification requirement term) ..................    5
  +       OR <search-key1> <search-key2> (search key) ................   39
  +       PARSE (response code) ......................................   50
  +       PERMANENTFLAGS (response code) .............................   50
  +       PREAUTH (response) .........................................   52
  +       Permanent Flag (class of flag) .............................   10
  +       READ-ONLY (response code) ..................................   50
  +       READ-WRITE (response code) .................................   50
  +       RECENT (response) ..........................................   57
  +       RECENT (search key) ........................................   39
  +       RECENT (status item) .......................................   33
  +       RENAME (command) ...........................................   27
  +       REQUIRED (specification requirement term) ..................    4
  +       RFC822 (fetch item) ........................................   44
  +       RFC822 (fetch result) ......................................   63
  +       RFC822.HEADER (fetch item) .................................   44
  +       RFC822.HEADER (fetch result) ...............................   62
  +       RFC822.SIZE (fetch item) ...................................   44
  +       RFC822.SIZE (fetch result) .................................   62
  +       RFC822.TEXT (fetch item) ...................................   44
  +       RFC822.TEXT (fetch result) .................................   62
  +       SEARCH (command) ...........................................   37
  +       SEARCH (response) ..........................................   55
  +       SEEN (search key) ..........................................   40
  +       SELECT (command) ...........................................   23
  +       SENTBEFORE <date> (search key) .............................   40
  +       SENTON <date> (search key) .................................   40
  +
  +
  +
  +Crispin                     Standards Track                    [Page 81]
  +
  +RFC 2060                       IMAP4rev1                   December 1996
  +
  +
  +       SENTSINCE <date> (search key) ..............................   40
  +       SHOULD (specification requirement term) ....................    5
  +       SHOULD NOT (specification requirement term) ................    5
  +       SINCE <date> (search key) ..................................   40
  +       SMALLER <n> (search key) ...................................   40
  +       STATUS (command) ...........................................   33
  +       STATUS (response) ..........................................   55
  +       STORE (command) ............................................   45
  +       SUBJECT <string> (search key) ..............................   40
  +       SUBSCRIBE (command) ........................................   29
  +       Session Flag (class of flag) ...............................   10
  +       System Flag (type of flag) .................................    9
  +       TEXT (part specifier) ......................................   42
  +       TEXT <string> (search key) .................................   40
  +       TO <string> (search key) ...................................   40
  +       TRYCREATE (response code) ..................................   51
  +       UID (command) ..............................................   47
  +       UID (fetch item) ...........................................   44
  +       UID (fetch result) .........................................   63
  +       UID <message set> (search key) .............................   40
  +       UIDNEXT (status item) ......................................   33
  +       UIDVALIDITY (response code) ................................   51
  +       UIDVALIDITY (status item) ..................................   34
  +       UNANSWERED (search key) ....................................   40
  +       UNDELETED (search key) .....................................   40
  +       UNDRAFT (search key) .......................................   40
  +       UNFLAGGED (search key) .....................................   40
  +       UNKEYWORD <flag> (search key) ..............................   40
  +       UNSEEN (response code) .....................................   51
  +       UNSEEN (search key) ........................................   40
  +       UNSEEN (status item) .......................................   34
  +       UNSUBSCRIBE (command) ......................................   30
  +       Unique Identifier (UID) (message attribute) ................    7
  +       X<atom> (command) ..........................................   48
  +       [RFC-822] Size (message attribute) .........................   11
  +       \Answered (system flag) ....................................    9
  +       \Deleted (system flag) .....................................    9
  +       \Draft (system flag) .......................................    9
  +       \Flagged (system flag) .....................................    9
  +       \Marked (mailbox name attribute) ...........................   54
  +       \Noinferiors (mailbox name attribute) ......................   54
  +       \Noselect (mailbox name attribute) .........................   54
  +       \Recent (system flag) ......................................   10
  +       \Seen (system flag) ........................................    9
  +       \Unmarked (mailbox name attribute) .........................   54
  +
  +
  +
  +
  +
  +
  +Crispin                     Standards Track                    [Page 82]
  +
  +
   
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>