home *** CD-ROM | disk | FTP | other *** search
/ Handbook of Infosec Terms 2.0 / Handbook_of_Infosec_Terms_Version_2.0_ISSO.iso / text / rfcs / rfc1730.txt < prev    next >
Text File  |  1996-05-07  |  160KB  |  2,355 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                         M. Crispin Request for Comments: 1730                      University of Washington Category: Standards Track                                  December 1994 
  8.  
  9.                INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4 
  10.  
  11.  
  12.  
  13. Status of this Memo 
  14.  
  15.    This document specifies an Internet standards track protocol for the    Internet community, and requests discussion and suggestions for    improvements.  Please refer to the current edition of the "Internet    Official Protocol Standards" (STD 1) for the standardization state    and status of this protocol.  Distribution of this memo is unlimited. 
  16.  
  17.  Abstract 
  18.  
  19.    The Internet Message Access Protocol, Version 4 (IMAP4) allows a    client to access and manipulate electronic mail messages on a server.    IMAP4 permits manipulation of remote message folders, called    "mailboxes", in a way that is functionally equivalent to local    mailboxes.  IMAP4 also provides the capability for an offline client    to resynchronize with the server (see also [IMAP-DISC]). 
  20.  
  21.    IMAP4 includes operations for creating, deleting, and renaming    mailboxes; checking for new messages; permanently removing messages;    setting and clearing flags; RFC 822 and MIME parsing; searching; and    selective fetching of message attributes, texts, and portions    thereof.  Messages in IMAP4 are accessed by the use of numbers.    These numbers are either message sequence numbers (relative position    from 1 to the number of messages in the mailbox) or unique    identifiers (immutable, strictly ascending values assigned to each    message, but which are not necessarily contiguous). 
  22.  
  23.    IMAP4 supports a single server.  A mechanism for supporting multiple    IMAP4 servers is discussed in [IMSP]. 
  24.  
  25.    IMAP4 does not specify a means of posting mail; this function is    handled by a mail transfer protocol such as [SMTP]. 
  26.  
  27.    IMAP4 is designed to be upwards compatible from the [IMAP2] protocol.    Compatibility issues are discussed in [IMAP-COMPAT]. 
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  Crispin                                                         [Page i] 
  34.  RFC 1730                         IMAP4                     December 1994 
  35.  
  36.  
  37.  
  38.  
  39.  
  40. Table of Contents 
  41.  
  42.  
  43.  
  44. IMAP4 Protocol Specification ......................................    1 1.      Organization of this Document .............................    1 1.1.    How to Read This Document .................................    1 1.2.    Conventions Used in this Document .........................    1 2.      Protocol Overview .........................................    1 2.1.    Link Level ................................................    1 2.2.    Commands and Responses ....................................    1 2.2.1.  Client Protocol Sender and Server Protocol Receiver .......    2 2.2.2.  Server Protocol Sender and Client Protocol Receiver .......    2 3.      State and Flow Diagram ....................................    4 3.1.    Non-Authenticated State ...................................    4 3.2.    Authenticated State .......................................    4 3.3.    Selected State ............................................    4 3.4.    Logout State ..............................................    4 4.      Data Formats ..............................................    6 4.1.    Atom ......................................................    6 4.2.    Number ....................................................    6 4.3.    String ....................................................    6 4.3.1.  8-bit and Binary Strings ..................................    7 4.4.    Parenthesized List ........................................    7 4.5.    NIL .......................................................    7 5.      Operational Considerations ................................    8 5.1.    Mailbox Naming ............................................    8 5.2.    Mailbox Size and Message Status Updates ...................    8 5.3.    Response when no Command in Progress ......................    8 5.4.    Autologout Timer ..........................................    9 5.5.    Multiple Commands in Progress .............................    9 6.      Client Commands ...........................................   10 6.1.    Client Commands - Any State ...............................   10 6.1.1.  CAPABILITY Command ........................................   10 6.1.2.  NOOP Command ..............................................   11 6.1.3.  LOGOUT Command ............................................   11 6.2.    Client Commands - Non-Authenticated State .................   12 6.2.1.  AUTHENTICATE Command ......................................   12 6.2.2.  LOGIN Command .............................................   14 6.3.    Client Commands - Authenticated State .....................   14 6.3.1.  SELECT Command ............................................   15 6.3.2.  EXAMINE Command ...........................................   16 6.3.3.  CREATE Command ............................................   17 6.3.4.  DELETE Command ............................................   18 6.3.5.  RENAME Command ............................................   18 
  45.  
  46.  
  47.  
  48. Crispin                                                        [Page ii] 
  49.  RFC 1730                         IMAP4                     December 1994 
  50.  
  51.  6.3.6.  SUBSCRIBE Command .........................................   19 6.3.7.  UNSUBSCRIBE Command .......................................   19 6.3.8.  LIST Command ..............................................   20 6.3.9.  LSUB Command ..............................................   22 6.3.10. APPEND Command ............................................   22 6.4.    Client Commands - Selected State ..........................   23 6.4.1.  CHECK Command .............................................   23 6.4.2.  CLOSE Command .............................................   24 6.4.3.  EXPUNGE Command ...........................................   25 6.4.4.  SEARCH Command ............................................   25 6.4.5.  FETCH Command .............................................   29 6.4.6.  PARTIAL Command ...........................................   32 6.4.7.  STORE Command .............................................   33 6.4.8.  COPY Command ..............................................   34 6.4.9.  UID Command ...............................................   35 6.5.    Client Commands - Experimental/Expansion ..................   37 6.5.1.  X<atom> Command ...........................................   37 7.      Server Responses ..........................................   38 7.1.    Server Responses - Status Responses .......................   39 7.1.1.  OK Response ...............................................   40 7.1.2.  NO Response ...............................................   40 7.1.3.  BAD Response ..............................................   41 7.1.4.  PREAUTH Response ..........................................   41 7.1.5.  BYE Response ..............................................   41 7.2.    Server Responses - Server and Mailbox Status ..............   42 7.2.1.  CAPABILITY Response .......................................   42 7.2.2.  LIST Response .............................................   43 7.2.3.  LSUB Response .............................................   44 7.2.4.  SEARCH Response ...........................................   44 7.2.5.  FLAGS Response ............................................   44 7.3.    Server Responses - Message Status .........................   45 7.3.1.  EXISTS Response ...........................................   45 7.3.2.  RECENT Response ...........................................   45 7.3.3.  EXPUNGE Response ..........................................   45 7.3.4.  FETCH Response ............................................   46 7.3.5.  Obsolete Responses ........................................   51 7.4.    Server Responses - Command Continuation Request ...........   51 8.      Sample IMAP4 session ......................................   52 9.      Formal Syntax .............................................   53 10.     Author's Note .............................................   64 11.     Security Considerations ...................................   64 12.     Author's Address ..........................................   64 Appendices ........................................................   65 A.      Obsolete Commands .........................................   65 A.6.3.OBS.1.    FIND ALL.MAILBOXES Command ........................   65 A.6.3.OBS.2.    FIND MAILBOXES Command ............................   65 A.6.3.OBS.3.    SUBSCRIBE MAILBOX Command .........................   66 A.6.3.OBS.4.    UNSUBSCRIBE MAILBOX Command .......................   66 
  52.  
  53.  
  54.  
  55. Crispin                                                       [Page iii] 
  56.  RFC 1730                         IMAP4                     December 1994 
  57.  
  58.  B.      Obsolete Responses ........................................   68 B.7.2.OBS.1.    MAILBOX Response ..................................   68 B.7.3.OBS.1.    COPY Response .....................................   68 B.7.3.OBS.2.    STORE Response ....................................   69 C.      References ................................................   70 E.      IMAP4 Keyword Index .......................................   71 
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104. Crispin                                                        [Page iv] 
  105.  RFC 1730                         IMAP4                     December 1994 
  106.  
  107.  IMAP4 Protocol Specification 
  108.  
  109. 1.      Organization of this Document 
  110.  
  111. 1.1.    How to Read This Document 
  112.  
  113.    This document is written from the point of view of the implementor of    an IMAP4 client or server.  Beyond the protocol overview in section    2, it is not optimized for someone trying to understand the operation    of the protocol.  The material in sections 3 through 5 provides the    general context and definitions with which IMAP4 operates. 
  114.  
  115.    Sections 6, 7, and 9 describe the IMAP commands, responses, and    syntax, respectively.  The relationships among these are such that it    is almost impossible to understand any of them separately.  In    particular, one should not attempt to deduce command syntax from the    command section alone; one should instead refer to the formal syntax    section. 
  116.  
  117.  1.2.    Conventions Used in this Document 
  118.  
  119.    In examples, "C:" and "S:" indicate lines sent by the client and    server respectively. 
  120.  
  121.  2.      Protocol Overview 
  122.  
  123. 2.1.    Link Level 
  124.  
  125.    The IMAP4 protocol assumes a reliable data stream such as provided by    TCP.  When TCP is used, an IMAP4 server listens on port 143. 
  126.  
  127.  2.2.    Commands and Responses 
  128.  
  129.    An IMAP4 session consists of the establishment of a client/server    connection, an initial greeting from the server, and client/server    interactions.  These client/server interactions consist of a client    command, server data, and a server completion result response. 
  130.  
  131.    All interactions transmitted by client and server are in the form of    lines; that is, strings that end with a CRLF.  The protocol receiver    of an IMAP4 client or server is either reading a line, or is reading    a sequence of octets with a known count followed by a line. 
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  Crispin                                                         [Page 1] 
  138.  RFC 1730                         IMAP4                     December 1994 
  139.  
  140.  2.2.1.  Client Protocol Sender and Server Protocol Receiver 
  141.  
  142.    The client command begins an operation.  Each client command is    prefixed with a identifier (typically a short alphanumeric string,    e.g. A0001, A0002, etc.) called a "tag".  A different tag is    generated by the client for each command. 
  143.  
  144.    There are two cases in which a line from the client does not    represent a complete command.  In one case, a command argument is    quoted with an octet count (see the description of literal in String    under Data Formats); in the other case, the command arguments require    server feedback (see the AUTHENTICATE command).  In either case, the    server sends a command continuation request response if it is ready    for the octets (if appropriate) and the remainder of the command.    This response is prefixed with the token "+". 
  145.  
  146.         Note: If, instead, the server detected an error in the         command, it sends a BAD completion response with tag         matching the command (as described below) to reject the         command and prevent the client from sending any more of the         command. 
  147.  
  148.         It is also possible for the server to send a completion         response for some other command (if multiple commands are         in progress), or untagged data.  In either case, the         command continuation request is still pending; the client         takes the appropriate action for the response, and reads         another response from the server. 
  149.  
  150.    The protocol receiver of an IMAP4 server reads a command line from    the client, parses the command and its arguments, and transmits    server data and a server command completion result response. 
  151.  
  152.  2.2.2.  Server Protocol Sender and Client Protocol Receiver 
  153.  
  154.    Data transmitted by the server to the client and status responses    that do not indicate command completion are prefixed with the token    "*", and are called untagged responses. 
  155.  
  156.    Server data may be sent as a result of a client command, or may be    sent unilaterally by the server.  There is no syntactic difference    between server data that resulted from a specific command and server    data that were sent unilaterally. 
  157.  
  158.    The server completion result response indicates the success or    failure of the operation.  It is tagged with the same tag as the    client command which began the operation.  Thus, if more than one 
  159.  
  160.  
  161.  
  162. Crispin                                                         [Page 2] 
  163.  RFC 1730                         IMAP4                     December 1994 
  164.  
  165.     command is in progress, the tag in a server completion response    identifies the command to which the response applies.  There are    three possible server completion responses: OK (indicating success),    NO (indicating failure), or BAD (indicating protocol error such as    unrecognized command or command syntax error). 
  166.  
  167.    The protocol receiver of an IMAP4 client reads a response line from    the server.  It then takes action on the response based upon the    first token of the response, which may be a tag, a "*", or a "+".  As    described above. 
  168.  
  169.    A client MUST be prepared to accept any server response at all times.    This includes server data that it may not have requested.  Server    data SHOULD be recorded, so that the client can reference its    recorded copy rather than sending a command to the server to request    the data.  In the case of certain server data, recording the data is    mandatory. 
  170.  
  171.    This topic is discussed in greater detail in the Server Responses    section. 
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203. Crispin                                                         [Page 3] 
  204.  RFC 1730                         IMAP4                     December 1994 
  205.  
  206.  3.      State and Flow Diagram 
  207.  
  208.    An IMAP4 server is in one of four states.  Most commands are valid in    only certain states.  It is a protocol error for the client to    attempt a command while the command is in an inappropriate state.  In    this case, a server will respond with a BAD or NO (depending upon    server implementation) command completion result. 
  209.  
  210.  3.1.    Non-Authenticated State 
  211.  
  212.    In non-authenticated state, the user must supply authentication    credentials before most commands will be permitted.  This state is    entered when a connection starts unless the connection has been    pre-authenticated. 
  213.  
  214.  3.2.    Authenticated State 
  215.  
  216.    In authenticated state, the user is authenticated and must select a    mailbox to access before commands that affect messages will be    permitted.  This state is entered when a pre-authenticated connection    starts, when acceptable authentication credentials have been    provided, or after an error in selecting a mailbox. 
  217.  
  218.  3.3.    Selected State 
  219.  
  220.    In selected state, a mailbox has been selected to access.  This state    is entered when a mailbox has been successfully selected. 
  221.  
  222.  3.4.    Logout State 
  223.  
  224.    In logout state, the session is being terminated, and the server will    close the connection.  This state can be entered as a result of a    client request or by unilateral server decision. 
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  Crispin                                                         [Page 4] 
  239.  RFC 1730                         IMAP4                     December 1994 
  240.  
  241.              +--------------------------------------+             |initial connection and server greeting|             +--------------------------------------+                       || (1)       || (2)        || (3)                       VV           ||            ||             +-----------------+    ||            ||             |non-authenticated|    ||            ||             +-----------------+    ||            ||              || (7)   || (4)       ||            ||              ||       VV           VV            ||              ||     +----------------+           ||              ||     | authenticated  |<=++       ||              ||     +----------------+  ||       ||              ||       || (7)   || (5)   || (6)   ||              ||       ||       VV       ||       ||              ||       ||    +--------+  ||       ||              ||       ||    |selected|==++       ||              ||       ||    +--------+           ||              ||       ||       || (7)            ||              VV       VV       VV                VV             +--------------------------------------+             |     logout and close connection      |             +--------------------------------------+ 
  242.  
  243.          (1) connection without pre-authentication (OK greeting)          (2) pre-authenticated connection (PREAUTH greeting)          (3) rejected connection (BYE greeting)          (4) successful LOGIN or AUTHENTICATE command          (5) successful SELECT or EXAMINE command          (6) CLOSE command, or failed SELECT or EXAMINE command          (7) LOGOUT command, server shutdown, or connection closed 
  244.  
  245.  
  246.  
  247.  
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  Crispin                                                         [Page 5] 
  264.  RFC 1730                         IMAP4                     December 1994 
  265.  
  266.  4.      Data Formats 
  267.  
  268.    IMAP4 uses textual commands and responses.  Data in IMAP4 can be in    one of several forms: atom, number, string, parenthesized list, or    NIL. 
  269.  
  270.  4.1.    Atom 
  271.  
  272.    An atom consists of one or more non-special characters. 
  273.  
  274.  4.2.    Number 
  275.  
  276.    A number consists of one or more digit characters, and represents a    numeric value. 
  277.  
  278.  4.3.    String 
  279.  
  280.    A string is in one of two forms: literal and quoted string.  The    literal form is the general form of string.  The quoted string form    is an alternative that avoids the overhead of processing a literal at    the cost of restrictions of what may be in a quoted string. 
  281.  
  282.    A literal is a sequence of zero or more octets (including CR and LF),    prefix-quoted with an octet count in the form of an open brace ("{"),    the number of octets, close brace ("}"), and CRLF.  In the case of    literals transmitted from server to client, the CRLF is immediately    followed by the octet data.  In the case of literals transmitted from    client to server, the client must wait to receive a command    continuation request (described later in this document) before    sending the octet data (and the remainder of the command). 
  283.  
  284.    A quoted string is a sequence of zero or more 7-bit characters,    excluding CR and LF, with double quote (<">) characters at each end.     The empty string is respresented as either "" (a quoted string with    zero characters between double quotes) or as {0} followed by CRLF (a    literal with an octet count of 0). 
  285.  
  286.         Note: Even if the octet count is 0, a client transmitting a         literal must wait to receive a command continuation         request. 
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294. Crispin                                                         [Page 6] 
  295.  RFC 1730                         IMAP4                     December 1994 
  296.  
  297.  4.3.1.  8-bit and Binary Strings 
  298.  
  299.    8-bit textual and binary mail is supported through the use of    [MIME-1] encoding.  IMAP4 implementations MAY transmit 8-bit or    multi-octet characters in literals, but should do so only when the    character set is identified. 
  300.  
  301.    Although a BINARY body encoding is defined, unencoded binary strings    are not permitted.  A "binary string" is any string with NUL    characters.  Implementations MUST encode binary data into a textual    form such as BASE64 before transmitting the data.  A string with an    excessive amount of CTL characters may also be considered to be    binary, although this is not required. 
  302.  
  303.  4.4.    Parenthesized List 
  304.  
  305.    Data structures are represented as a "parenthesized list"; a sequence    of data items, delimited by space, and bounded at each end by    parentheses.  A parenthesized list may itself contain other    parenthesized lists, using multiple levels of parentheses to indicate    nesting. 
  306.  
  307.    The empty list is represented as () -- a parenthesized list with no    members. 
  308.  
  309.  4.5.    NIL 
  310.  
  311.    The special atom "NIL" represents the non-existence of a particular    data item that is represented as a string or parenthesized list, as    distinct from the empty string "" or the empty parenthesized list (). 
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331. Crispin                                                         [Page 7] 
  332.  RFC 1730                         IMAP4                     December 1994 
  333.  
  334.  5.      Operational Considerations 
  335.  
  336. 5.1.    Mailbox Naming 
  337.  
  338.    The interpretation of mailbox names is implementation-dependent.    However, the mailbox name INBOX is a special name reserved to mean    "the primary mailbox for this user on this server".  If it is desired    to export hierarchical mailbox names, mailbox names must be    left-to-right hierarchical using a single character to separate    levels of hierarchy.  The same hierarchy separator character is used    for all levels of hierarchy within a single name. 
  339.  
  340. 5.2.    Mailbox Size and Message Status Updates 
  341.  
  342.    At any time, a server can send data that the client did not request.    Sometimes, such behavior is required.  For example, agents other than    the server may add messages to the mailbox (e.g. new mail delivery),    change the flags of message in the mailbox (e.g. simultaneous access    to the same mailbox by multiple agents), or even remove messages from    the mailbox.  A server MUST send mailbox size updates automatically    if a mailbox size change is observed during the processing of a    command.  A server SHOULD send message flag updates automatically,    without requiring the client to request such updates explicitly.    Special rules exist for server notification of a client about the    removal of messages to prevent synchronization errors; see the    description of the EXPUNGE response for more details. 
  343.  
  344.    Regardless of what implementation decisions a client may take on    remembering data from the server, a client implementation MUST record    mailbox size updates.  It MUST NOT assume that any command after    initial mailbox selection will return the size of the mailbox. 
  345.  
  346.  5.3.    Response when no Command in Progress 
  347.  
  348.    Server implementations are permitted to send an untagged response    (except for EXPUNGE) while there is no command in progress.  Server    implementations that send such responses MUST deal with flow control    considerations.  Specifically, they must either (1) verify that the    size of the data does not exceed the underlying transport's available    window size, or (2) use non-blocking writes. 
  349.  
  350.  
  351.  
  352.  
  353.  
  354.  
  355.  
  356.  
  357.  
  358.  Crispin                                                         [Page 8] 
  359.  RFC 1730                         IMAP4                     December 1994 
  360.  
  361.  5.4.    Autologout Timer 
  362.  
  363.    If a server has an inactivity autologout timer, that timer MUST be of    at least 30 minutes' duration.  The receipt of ANY command from the    client during that interval should suffice to reset the autologout    timer. 
  364.  
  365.  5.5.    Multiple Commands in Progress 
  366.  
  367.    The client is not required to wait for the completion result response    of a command before sending another command, subject to flow control    constraints on the underlying data stream.  Similarly, a server is    not required to process a command to completion before beginning    processing of the next command, unless an ambiguity would result    because of a command that would affect the results of other commands.    If there is such an ambiguity, the server executes commands to    completion in the order given by the client. 
  368.  
  369.  
  370.  
  371.  
  372.  
  373.  
  374.  
  375.  
  376.  
  377.  
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401. Crispin                                                         [Page 9] 
  402.  RFC 1730                         IMAP4                     December 1994 
  403.  
  404.  6.      Client Commands 
  405.  
  406.    IMAP4 commands are described in this section.  Commands are organized    by the state in which the command is permitted.  Commands which are    permitted in multiple states are listed in the minimum permitted    state (for example, commands valid in authenticated and selected    state are listed in the authenticated state commands). 
  407.  
  408.    Command arguments, identified by "Arguments:" in the command    descriptions below, are described by function, not by syntax.  The    precise syntax of command arguments is described in the Formal Syntax    section. 
  409.  
  410.    Some commands cause specific server data to be returned; these are    identified by "Data:" in the command descriptions below.  See the    response descriptions in the Responses section for information on    these responses, and the Formal Syntax section for the precise syntax    of these responses.  It is possible for server data to be transmitted    as a result of any command; thus, commands that do not specifically    require server data specify "no specific data for this command"    instead of "none". 
  411.  
  412.    The "Result:" in the command description refers to the possible    tagged status responses to a command, and any special interpretation    of these status responses. 
  413.  
  414.  6.1.    Client Commands - Any State 
  415.  
  416.    The following commands are valid in any state: CAPABILITY, NOOP, and    LOGOUT. 
  417.  
  418. 6.1.1.  CAPABILITY Command 
  419.  
  420.    Arguments:  none 
  421.  
  422.    Data:       mandatory untagged response: CAPABILITY 
  423.  
  424.    Result:     OK - capability completed                BAD - command unknown or arguments invalid 
  425.  
  426.       The CAPABILITY command requests a listing of capabilities that the       server supports.  The server MUST send a single untagged       CAPABILITY response with "IMAP4" as the first listed capability       before the (tagged) OK response.  This listing of capabilities is       not dependent upon connection state or user.  It is therefore not       necessary to issue a CAPABILITY command more than once in a       session. 
  427.  
  428.  
  429.  
  430. Crispin                                                        [Page 10] 
  431.  RFC 1730                         IMAP4                     December 1994 
  432.  
  433.        Capability names other than "IMAP4" refer to extensions,       revisions, or amendments to this specification.  See the       documentation of the CAPABILITY response for additional       information.  No capabilities are enabled without explicit client       action to invoke the capability.  See the section entitled "Client       Commands - Experimental/Expansion" for information about the form       of site or implementation-specific capabilities. 
  434.  
  435.    Example:    C: abcd CAPABILITY                S: * CAPABILITY IMAP4                S: abcd OK CAPABILITY completed 
  436.  
  437.  6.1.2.  NOOP Command 
  438.  
  439.    Arguments:  none 
  440.  
  441.    Data:       no specific data for this command (but see below) 
  442.  
  443.    Result:     OK - noop completed                BAD - command unknown or arguments invalid 
  444.  
  445.       The NOOP command always succeeds.  It does nothing. 
  446.  
  447.       Since any command can return a status update as untagged data, the       NOOP command can be used as a periodic poll for new messages or       message status updates during a period of inactivity.  The NOOP       command can also be used to reset any inactivity autologout timer       on the server. 
  448.  
  449.    Example:    C: a002 NOOP                S: a002 OK NOOP completed                   . . .                C: a047 NOOP                S: * 22 EXPUNGE                S: * 23 EXISTS                S: * 3 RECENT                S: * 14 FETCH (FLAGS (\Seen \Deleted))                S: a047 OK NOOP completed 
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  Crispin                                                        [Page 11] 
  462.  RFC 1730                         IMAP4                     December 1994 
  463.  
  464.  6.1.3.  LOGOUT Command 
  465.  
  466.    Arguments:  none 
  467.  
  468.    Data:       mandatory untagged response: BYE 
  469.  
  470.    Result:     OK - logout completed                BAD - command unknown or arguments invalid 
  471.  
  472.       The LOGOUT command informs the server that the client is done with       the session.  The server must send a BYE untagged response before       the (tagged) OK response, and then close the network connection. 
  473.  
  474.    Example:    C: A023 LOGOUT                S: * BYE IMAP4 Server logging out                S: A023 OK LOGOUT completed                (Server and client then close the connection) 
  475.  
  476.  
  477.  
  478. 6.2.    Client Commands - Non-Authenticated State 
  479.  
  480.    In non-authenticated state, the AUTHENTICATE or LOGIN command    establishes authentication and enter authenticated state.  The    AUTHENTICATE command provides a general mechanism for a variety of    authentication techniques, whereas the LOGIN command uses the    traditional user name and plaintext password pair. 
  481.  
  482.    Server implementations may allow non-authenticated access to certain    mailboxes.  The convention is to use a LOGIN command with the userid    "anonymous".  A password is required.  It is implementation-dependent    what requirements, if any, are placed on the password and what access    restrictions are placed on anonymous users. 
  483.  
  484.    Once authenticated (including as anonymous), it is not possible to    re-enter non-authenticated state. 
  485.  
  486.    In addition to the universal commands (CAPABILITY, NOOP, and LOGOUT),    the following commands are valid in non-authenticated state:    AUTHENTICATE and LOGIN. 
  487.  
  488.  
  489.  
  490.  
  491.  
  492.  
  493.  
  494.  
  495.  
  496.  
  497.  
  498. Crispin                                                        [Page 12] 
  499.  RFC 1730                         IMAP4                     December 1994 
  500.  
  501.  6.2.1.  AUTHENTICATE Command 
  502.  
  503.    Arguments:  authentication mechanism name 
  504.  
  505.    Data:       continuation data may be requested 
  506.  
  507.    Result:     OK - authenticate completed, now in authenticated state                NO - authenticate failure: unsupported authentication                     mechanism, credentials rejected                BAD - command unknown or arguments invalid,                     authentication exchange cancelled 
  508.  
  509.       The AUTHENTICATE command indicates an authentication mechanism,       such as described in [IMAP-AUTH], to the server.  If the server       supports the requested authentication mechanism, it performs an       authentication protocol exchange to authenticate and identify the       user.  Optionally, it also negotiates a protection mechanism for       subsequent protocol interactions.  If the requested authentication       mechanism is not supported, the server should reject the       AUTHENTICATE command by sending a tagged NO response. 
  510.  
  511.       The authentication protocol exchange consists of a series of       server challenges and client answers that are specific to the       authentication mechanism.  A server challenge consists of a       command continuation request response with the "+" token followed       by a BASE64 encoded string.  The client answer consists of a line       consisting of a BASE64 encoded string.  If the client wishes to       cancel an authentication exchange, it should issue a line with a       single "*".  If the server receives such an answer, it must reject       the AUTHENTICATE command by sending a tagged BAD response. 
  512.  
  513.       A protection mechanism provides integrity and privacy protection       to the protocol session.  If a protection mechanism is negotiated,       it is applied to all subsequent data sent over the connection.       The protection mechanism takes effect immediately following the       CRLF that concludes the authentication exchange for the client,       and the CRLF of the tagged OK response for the server.  Once the       protection mechanism is in effect, the stream of command and       response octets is processed into buffers of ciphertext.  Each       buffer is transferred over the connection as a stream of octets       prepended with a four octet field in network byte order that       represents the length of the following data.  The maximum       ciphertext buffer length is defined by the protection mechanism. 
  514.  
  515.       The server is not required to support any particular       authentication mechanism, nor are authentication mechanisms       required to support any protection mechanisms.  If an AUTHENTICATE       command fails with a NO response, the client may try another 
  516.  
  517.  
  518.  
  519. Crispin                                                        [Page 13] 
  520.  RFC 1730                         IMAP4                     December 1994 
  521.  
  522.        authentication mechanism by issuing another AUTHENTICATE command,       or may attempt to authenticate by using the LOGIN command.  In       other words, the client may request authentication types in       decreasing order of preference, with the LOGIN command as a last       resort. 
  523.  
  524.    Example:    S: * OK KerberosV4 IMAP4 Server                C: A001 AUTHENTICATE KERBEROS_V4                S: + AmFYig==                C: BAcAQU5EUkVXLkNNVS5FRFUAOCAsho84kLN3/IJmrMG+25a4DT                   +nZImJjnTNHJUtxAA+o0KPKfHEcAFs9a3CL5Oebe/ydHJUwYFd                   WwuQ1MWiy6IesKvjL5rL9WjXUb9MwT9bpObYLGOKi1Qh                S: + or//EoAADZI=                C: DiAF5A4gA+oOIALuBkAAmw==                S: A001 OK Kerberos V4 authentication successful 
  525.  
  526.         Note: the line breaks in the first client answer are for         editorial clarity and are not in real authenticators. 
  527.  
  528.  6.2.2.  LOGIN Command 
  529.  
  530.    Arguments:  user name                password 
  531.  
  532.    Data:       no specific data for this command 
  533.  
  534.    Result:     OK - login completed, now in authenticated state                NO - login failure: user name or password rejected                BAD - command unknown or arguments invalid 
  535.  
  536.       The LOGIN command identifies the user to the server and carries       the plaintext password authenticating this user. 
  537.  
  538.    Example:    C: a001 LOGIN SMITH SESAME                S: a001 OK LOGIN completed 
  539.  
  540.  
  541.  
  542. 6.3.    Client Commands - Authenticated State 
  543.  
  544.    In authenticated state, commands that manipulate mailboxes as atomic    entities are permitted.  Of these commands, the SELECT and EXAMINE    commands will select a mailbox for access and enter selected state. 
  545.  
  546.  
  547.  
  548.  
  549.  
  550.  
  551.  
  552. Crispin                                                        [Page 14] 
  553.  RFC 1730                         IMAP4                     December 1994 
  554.  
  555.     In addition to the universal commands (CAPABILITY, NOOP, and LOGOUT),    the following commands are valid in authenticated state: SELECT,    EXAMINE, CREATE, DELETE, RENAME, SUBSCRIBE, UNSUBSCRIBE, LIST, LSUB,    and APPEND. 
  556.  
  557. 6.3.1.  SELECT Command 
  558.  
  559.    Arguments:  mailbox name 
  560.  
  561.    Data:       mandatory untagged responses: FLAGS, EXISTS, RECENT                optional OK untagged responses: UNSEEN, PERMANENTFLAGS 
  562.  
  563.    Result:     OK - select completed, now in selected state                NO - select failure, now in authenticated state: no                     such mailbox, can't access mailbox                BAD - command unknown or arguments invalid 
  564.  
  565.       The SELECT command selects a  mailbox  so  that  messages  in  the       mailbox  can  be  accessed.  Before returning an OK to the client,       the server MUST send the following untagged data to the client: 
  566.  
  567.          FLAGS       Defined flags in the mailbox 
  568.  
  569.          <n> EXISTS  The number of messages in the mailbox 
  570.  
  571.          <n> RECENT  The number of messages added to the  mailbox  since                      the previous time this mailbox was read 
  572.  
  573.          OK [UIDVALIDITY <n>]                      The unique  identifier  validity  value.   See  the                      description of the UID command for more detail. 
  574.  
  575.       to define the initial state of the mailbox at the client.  If it       is not possible to determine the messages that were added since       the previous time a mailbox was read, then all messages SHOULD be       considered recent. 
  576.  
  577.       The server SHOULD also send an UNSEEN response code in an OK       untagged response, indicating the message sequence number of the       first unseen message in the mailbox. 
  578.  
  579.       If the client can not change the permanent state of one or more of       the flags listed in the FLAGS untagged response, the server SHOULD       send a PERMANENTFLAGS response code in an OK untagged response,       listing the flags that the client may change permanently. 
  580.  
  581.       Only one mailbox may be selected at a time in a session;       simultaneous access to multiple mailboxes requires multiple 
  582.  
  583.  
  584.  
  585. Crispin                                                        [Page 15] 
  586.  RFC 1730                         IMAP4                     December 1994 
  587.  
  588.        sessions.  The SELECT command automatically deselects any       currently selected mailbox before attempting the new selection.       Consequently, if a mailbox is selected and a SELECT command that       fails is attempted, no mailbox is selected. 
  589.  
  590.       If the user is permitted to modify the mailbox, the server SHOULD       prefix the text of the tagged OK response with the "[READ-WRITE]"       response code. 
  591.  
  592.       If the user is not permitted to modify the mailbox but is       permitted read access, the mailbox is selected as read-only, and       the server MUST prefix the text of the tagged OK response to       SELECT with the "[READ-ONLY]" response code.  Read-only access       through SELECT differs from the EXAMINE command in that certain       read-only mailboxes may permit the change of permanent state on a       per-user (as opposed to global) basis.  Netnews messages marked in       a user's .newsrc file are an example of such per-user permanent       state that can be modified with read-only mailboxes. 
  593.  
  594.    Example:    C: A142 SELECT INBOX                S: * 172 EXISTS                S: * 1 RECENT                S: * OK [UNSEEN 12] Message 12 is first unseen                S: * OK [UIDVALIDITY 3857529045] UIDs valid                S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft)                S: * OK [PERMANENTFLAGS (\Deleted \Seen \*)] Limited                S: A142 OK [READ-WRITE] SELECT completed 
  595.  
  596.  6.3.2.  EXAMINE Command 
  597.  
  598.    Arguments:  mailbox name 
  599.  
  600.    Data:       mandatory untagged responses: FLAGS, EXISTS, RECENT                optional OK untagged responses: UNSEEN, PERMANENTFLAGS 
  601.  
  602.    Result:     OK - examine completed, now in selected state                NO - examine failure, now in authenticated state: no                     such mailbox, can't access mailbox                BAD - command unknown or arguments invalid 
  603.  
  604.       The EXAMINE command is identical to SELECT and returns the same       output; however, the selected mailbox is identified as read-only.       No changes to the permanent state of the mailbox, including       per-user state, are permitted. 
  605.  
  606.  
  607.  
  608.  
  609.  
  610.  Crispin                                                        [Page 16] 
  611.  RFC 1730                         IMAP4                     December 1994 
  612.  
  613.        The text of the tagged OK response to the EXAMINE command MUST       begin with the "[READ-ONLY]" response code. 
  614.  
  615.    Example:    C: A932 EXAMINE blurdybloop                S: * 17 EXISTS                S: * 2 RECENT                S: * OK [UNSEEN 8] Message 8 is first unseen                S: * OK [UIDVALIDITY 3857529045] UIDs valid                S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft)                S: * OK [PERMANENTFLAGS ()] No permanent flags permitted                S: A932 OK [READ-ONLY] EXAMINE completed 
  616.  
  617.  6.3.3.  CREATE Command 
  618.  
  619.    Arguments:  mailbox name 
  620.  
  621.    Data:       no specific data for this command 
  622.  
  623.    Result:     OK - create completed                NO - create failure: can't create mailbox with that name                BAD - command unknown or arguments invalid 
  624.  
  625.       The CREATE command creates a mailbox with the given name.  An OK       response is returned only if a new mailbox with that name has been       created.  It is an error to attempt to create INBOX or a mailbox       with a name that refers to an extant mailbox.  Any error in       creation will return a tagged NO response. 
  626.  
  627.       If the mailbox name is suffixed with the server's hierarchy       separator character (as returned from the server by a LIST       command), this is a declaration that the client may, in the       future, create mailbox names under this name in the hierarchy.       Server implementations that do not require this declaration MUST       ignore it. 
  628.  
  629.       If a new mailbox is created with the same name as a mailbox which       was deleted, its unique identifiers MUST be greater than any       unique identifiers used in the previous incarnation of the mailbox       UNLESS the new incarnation has a different unique identifier       validity value.  See the description of the UID command for more       detail. 
  630.  
  631.    Example:    C: A003 CREATE owatagusiam/                S: A003 OK CREATE completed                C: A004 CREATE owatagusiam/blurdybloop                S: A004 OK CREATE completed 
  632.  
  633.  
  634.  
  635.  Crispin                                                        [Page 17] 
  636.  RFC 1730                         IMAP4                     December 1994 
  637.  
  638.          Note: the interpretation of this example depends on whether         "/" was returned as the hierarchy separator from LIST.  If         "/" is the hierarchy separator, a new level of hierarchy         named "owatagusiam" with a member called "blurdybloop" is         created.  Otherwise, two mailboxes at the same hierarchy         level are created. 
  639.  
  640.  6.3.4.  DELETE Command 
  641.  
  642.    Arguments:  mailbox name 
  643.  
  644.    Data:       no specific data for this command 
  645.  
  646.    Result:     OK - delete completed                NO - delete failure: can't delete mailbox with that name                BAD - command unknown or arguments invalid 
  647.  
  648.       The DELETE command permanently removes the mailbox with the given       name.  A tagged OK response is returned only if the mailbox has       been deleted.  It is an error to attempt to delete INBOX or a       mailbox name that does not exist.  Any error in deletion will       return a tagged NO response. 
  649.  
  650.       The value of the highest-used unique indentifier of the deleted       mailbox MUST be preserved so that a new mailbox created with the       same name will not reuse the identifiers of the former       incarnation, UNLESS the new incarnation has a different unique       identifier validity value.  See the description of the UID command       for more detail. 
  651.  
  652.    Example:    C: A683 DELETE blurdybloop                S: A683 OK DELETE completed 
  653.  
  654.  6.3.5.  RENAME Command 
  655.  
  656.    Arguments:  existing mailbox name                new mailbox name 
  657.  
  658.    Data:       no specific data for this command 
  659.  
  660.    Result:     OK - rename completed                NO - rename failure: can't rename mailbox with that name,                     can't rename to mailbox with that name                BAD - command unknown or arguments invalid 
  661.  
  662.  
  663.  
  664.  
  665.  
  666. Crispin                                                        [Page 18] 
  667.  RFC 1730                         IMAP4                     December 1994 
  668.  
  669.        The RENAME command changes the name of a mailbox.  A tagged OK       response is returned only if the mailbox has been renamed.  It is       an error to attempt to rename from a mailbox name that does not       exist or to a mailbox name that already exists.  Any error in       renaming will return a tagged NO response. 
  670.  
  671.       Renaming INBOX is permitted; a new, empty INBOX is created in its       place. 
  672.  
  673.    Example:    C: Z4S9 RENAME blurdybloop owatagusiam                S: Z4S9 OK RENAME completed 
  674.  
  675.  6.3.6.  SUBSCRIBE Command 
  676.  
  677.    Arguments:  mailbox 
  678.  
  679.    Data:       no specific data for this command 
  680.  
  681.    Result:     OK - subscribe completed                NO - subscribe failure: can't subscribe to that name                BAD - command unknown or arguments invalid 
  682.  
  683.       The SUBSCRIBE command adds the specified mailbox name to the       server's set of "active" or "subscribed" mailboxes as returned by       the LSUB command.  This command returns a tagged OK response only       if the subscription is successful. 
  684.  
  685.    Example:    C: A002 SUBSCRIBE #news.comp.mail.mime                S: A002 OK SUBSCRIBE completed 
  686.  
  687.  6.3.7.  UNSUBSCRIBE Command 
  688.  
  689.    Arguments:  mailbox name 
  690.  
  691.    Data:       no specific data for this command 
  692.  
  693.    Result:     OK - unsubscribe completed                NO - unsubscribe failure: can't unsubscribe that name                BAD - command unknown or arguments invalid 
  694.  
  695.       The UNSUBSCRIBE command removes the specified mailbox name from       the server's set of "active" or "subscribed" mailboxes as returned       by the LSUB command.  This command returns a tagged OK response       only if the unsubscription is successful. 
  696.  
  697.  
  698.  
  699.  
  700.  
  701. Crispin                                                        [Page 19] 
  702.  RFC 1730                         IMAP4                     December 1994 
  703.  
  704.     Example:    C: A002 UNSUBSCRIBE #news.comp.mail.mime                S: A002 OK UNSUBSCRIBE completed 
  705.  
  706.  6.3.8.  LIST Command 
  707.  
  708.    Arguments:  reference name                mailbox name with possible wildcards 
  709.  
  710.    Data:       untagged responses: LIST 
  711.  
  712.    Result:     OK - list completed                NO - list failure: can't list that reference or name                BAD - command unknown or arguments invalid 
  713.  
  714.       The LIST command returns a subset of names from the complete set       of all names available to the user.  Zero or more untagged LIST       replies are returned, containing the name attributes, hierarchy       delimiter, and name; see the description of the LIST reply for       more detail. 
  715.  
  716.       An empty ("" string) reference name argument indicates that the       mailbox name is interpreted as by SELECT. The returned mailbox       names MUST match the supplied mailbox name pattern.  A non-empty       reference name argument is the name of a mailbox or a level of       mailbox hierarchy, and indicates a context in which the mailbox       name is interpreted in an implementation-defined manner. 
  717.  
  718.       The reference and mailbox name arguments are interpreted, in an       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. 
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728. Crispin                                                        [Page 20] 
  729.  RFC 1730                         IMAP4                     December 1994 
  730.  
  731.             For example, here are some examples of how references            and mailbox names might be interpreted on a UNIX-based            server: 
  732.  
  733.                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/* 
  734.  
  735.            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. 
  736.  
  737.       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 detail). 
  738.  
  739.       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. 
  740.  
  741.       The special name INBOX is included in the output from LIST if it       matches the input arguments and INBOX is supported by this server       for this user.  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. 
  742.  
  743.    Example:    C: A002 LIST "~/Mail/" "%"                S: * LIST (\Noselect) "/" ~/Mail/foo                S: * LIST () "/" ~/Mail/meetings                S: A002 OK LIST completed 
  744.  
  745.  
  746.  
  747.  
  748.  
  749.  Crispin                                                        [Page 21] 
  750.  RFC 1730                         IMAP4                     December 1994 
  751.  
  752.  6.3.9.  LSUB Command 
  753.  
  754.    Arguments:  reference name                mailbox name with possible wildcards 
  755.  
  756.    Data:       untagged responses: LSUB 
  757.  
  758.    Result:     OK - lsub completed                NO - lsub failure: can't list that reference or name                BAD - command unknown or arguments invalid 
  759.  
  760.       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. 
  761.  
  762.    Example:    C: A002 LSUB "#news." "comp.mail.*"                S: * LSUB () "." #news.comp.mail.mime                S: * LSUB () "." #news.comp.mail.misc                S: A002 OK LSUB completed 
  763.  
  764.  6.3.10. APPEND Command 
  765.  
  766.    Arguments:  mailbox name                optional flag parenthesized list                optional date/time string                message literal 
  767.  
  768.    Data:       no specific data for this command 
  769.  
  770.    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 
  771.  
  772.       The APPEND command appends the literal argument as a new message       in the specified destination mailbox.  This argument is 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 [MIME-1] encoding. 
  773.  
  774.       If a flag parenthesized list or date_time are specified, that data       SHOULD be set in the resulting message; otherwise, the defaults of       empty flags and the current date/time are used. 
  775.  
  776.  
  777.  
  778.  
  779.  
  780. Crispin                                                        [Page 22] 
  781.  RFC 1730                         IMAP4                     December 1994 
  782.  
  783.        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 mailbox is currently selected, the       normal new mail actions should occur. 
  784.  
  785.       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. 
  786.  
  787.    Example:    C: A003 APPEND saved-messages (\Seen) {310}                C: Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST)                C: From: Fred Foobar <foobar@Blurdybloop.COM>                C: Subject: afternoon meeting                C: To: mooch@owatagu.siam.edu                C: Message-Id: <B27397-0100000@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 
  788.  
  789.         Note: the APPEND command is not used for message delivery,         because it does not provide a mechanism to transfer [SMTP]         envelope information. 
  790.  
  791.  
  792.  
  793. 6.4.    Client Commands - Selected State 
  794.  
  795.    In selected state, commands that manipulate messages in a mailbox are    permitted. 
  796.  
  797.    In addition to the universal commands (CAPABILITY, NOOP, and LOGOUT),    and the authenticated state commands (SELECT, EXAMINE, CREATE,    DELETE, RENAME, SUBSCRIBE, UNSUBSCRIBE, LIST, LSUB, FIND    ALL.MAILBOXES, FIND MAILBOXES, and APPEND), the following commands    are valid in the selected state: CHECK, CLOSE, EXPUNGE, SEARCH,    FETCH, PARTIAL, STORE, COPY, and UID. 
  798.  
  799.  
  800.  
  801.  
  802.  
  803.  
  804.  
  805.  Crispin                                                        [Page 23] 
  806.  RFC 1730                         IMAP4                     December 1994 
  807.  
  808.  6.4.1.  CHECK Command 
  809.  
  810.    Arguments:  none 
  811.  
  812.    Data:       no specific data for this command 
  813.  
  814.    Result:     OK - check completed                BAD - command unknown or arguments invalid 
  815.  
  816.       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. 
  817.  
  818.       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. 
  819.  
  820.    Example:    C: FXXZ CHECK                S: FXXZ OK CHECK Completed 
  821.  
  822.  6.4.2.  CLOSE Command 
  823.  
  824.    Arguments:  none 
  825.  
  826.    Data:       no specific data for this command 
  827.  
  828.    Result:     OK - close completed, now in authenticated state                NO - close failure: no mailbox selected                BAD - command unknown or arguments invalid 
  829.  
  830.       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. 
  831.  
  832.       No messages are removed, and no error is given, if the mailbox is       selected by an EXAMINE command or is otherwise selected read-only. 
  833.  
  834.       Even when a mailbox is selected, it is not required to send a       CLOSE command before a SELECT, EXAMINE, or LOGOUT command.  The       SELECT, EXAMINE, and LOGOUT commands implicitly close the       currently selected mailbox without doing an expunge.  However, 
  835.  
  836.  
  837.  
  838. Crispin                                                        [Page 24] 
  839.  RFC 1730                         IMAP4                     December 1994 
  840.  
  841.        when many messages are deleted, a CLOSE-LOGOUT or CLOSE-SELECT       sequence is considerably faster than an EXPUNGE-LOGOUT or       EXPUNGE-SELECT because no untagged EXPUNGE responses (which the       client would probably ignore) are sent. 
  842.  
  843.    Example:    C: A341 CLOSE                S: A341 OK CLOSE completed 
  844.  
  845.  6.4.3.  EXPUNGE Command 
  846.  
  847.    Arguments:  none 
  848.  
  849.    Data:       untagged responses: EXPUNGE 
  850.  
  851.    Result:     OK - expunge completed                NO - expunge failure: can't expunge (e.g. permission                     denied)                BAD - command unknown or arguments invalid 
  852.  
  853.       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. 
  854.  
  855.    Example:    C: A202 EXPUNGE                S: * 3 EXPUNGE                S: * 3 EXPUNGE                S: * 5 EXPUNGE                S: * 8 EXPUNGE                S: A202 OK EXPUNGE completed 
  856.  
  857.         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. 
  858.  
  859.  
  860.  
  861.  
  862.  
  863.  
  864.  
  865.  
  866.  
  867.  
  868.  
  869.  
  870.  
  871.  
  872.  
  873.  Crispin                                                        [Page 25] 
  874.  RFC 1730                         IMAP4                     December 1994 
  875.  
  876.  6.4.4.  SEARCH Command 
  877.  
  878.    Arguments:  optional character set specification                searching criteria (one or more) 
  879.  
  880.    Data:       mandatory untagged response: SEARCH 
  881.  
  882.    Result:     OK - search completed                NO - search error: can't search that character set or                     criteria                BAD - command unknown or arguments invalid 
  883.  
  884.       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. 
  885.  
  886.       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 may also be a parenthesized       list of one or more search keys (e.g. for use with the OR and NOT       keys). 
  887.  
  888.       Server implementations MAY exclude [MIME-1] body parts with       terminal content types other than TEXT and MESSAGE from       consideration in SEARCH matching. 
  889.  
  890.       The optional character set specification consists of the word       "CHARSET" followed by a registered MIME character set.  It       indicates the character set of the strings that appear in the       search criteria.  [MIME-2] strings that appear in RFC 822/MIME       message headers, and [MIME-1] content transfer encodings, MUST be       decoded before matching.  Except for US-ASCII, it is not required       that any particular character set be supported.  If the server       does not support the specified character set, it MUST return a       tagged NO response (not a BAD). 
  891.  
  892.       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. 
  893.  
  894.  
  895.  
  896.  
  897.  
  898.  
  899.  
  900.  Crispin                                                        [Page 26] 
  901.  RFC 1730                         IMAP4                     December 1994 
  902.  
  903.        The defined search keys are as follows.  Refer to the Formal       Syntax section for the precise syntactic definitions of the       arguments. 
  904.  
  905.       <message set>  Messages with message sequence numbers                      corresponding to the specified message sequence                      number set 
  906.  
  907.       ALL            All messages in the mailbox; the default initial                      key for ANDing. 
  908.  
  909.       ANSWERED       Messages with the \Answered flag set. 
  910.  
  911.       BCC <string>   Messages that contain the specified string in the                      envelope structure's BCC field. 
  912.  
  913.       BEFORE <date>  Messages whose internal date is earlier than the                      specified date. 
  914.  
  915.       BODY <string>  Messages that contain the specified string in the                      body of the message. 
  916.  
  917.       CC <string>    Messages that contain the specified string in the                      envelope structure's CC field. 
  918.  
  919.       DELETED        Messages with the \Deleted flag set. 
  920.  
  921.       DRAFT          Messages with the \Draft flag set. 
  922.  
  923.       FLAGGED        Messages with the \Flagged flag set. 
  924.  
  925.       FROM <string>  Messages that contain the specified string in the                      envelope structure's FROM field. 
  926.  
  927.       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. 
  928.  
  929.       KEYWORD <flag> Messages with the specified keyword set. 
  930.  
  931.       LARGER <n>     Messages with an RFC822.SIZE larger than the                      specified number of octets. 
  932.  
  933.       NEW            Messages that have the \Recent flag set but not the                      \Seen flag.  This is functionally equivalent to                      "(RECENT UNSEEN)". 
  934.  
  935.  
  936.  
  937. Crispin                                                        [Page 27] 
  938.  RFC 1730                         IMAP4                     December 1994 
  939.  
  940.        NOT <search-key>                      Messages that do not match the specified search                      key. 
  941.  
  942.       OLD            Messages that do not have the \Recent flag set.                      This is functionally equivalent to "NOT RECENT" (as                      opposed to "NOT NEW"). 
  943.  
  944.       ON <date>      Messages whose internal date is within the                      specified date. 
  945.  
  946.       OR <search-key1> <search-key2>                      Messages that match either search key. 
  947.  
  948.       RECENT         Messages that have the \Recent flag set. 
  949.  
  950.       SEEN           Messages that have the \Seen flag set. 
  951.  
  952.       SENTBEFORE <date>                      Messages whose [RFC-822] Date: header is earlier                      than the specified date. 
  953.  
  954.       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. 
  955.  
  956.       SINCE <date>   Messages whose internal date is within or later                      than the specified date. 
  957.  
  958.       SMALLER <n>    Messages with an RFC822.SIZE smaller than the                      specified number of octets. 
  959.  
  960.       SUBJECT <string>                      Messages that contain the specified string in the                      envelope structure's SUBJECT field. 
  961.  
  962.       TEXT <string>  Messages that contain the specified string in the                      header or body of the message. 
  963.  
  964.       TO <string>    Messages that contain the specified string in the                      envelope structure's TO field. 
  965.  
  966.       UID <message set>                      Messages with unique identifiers corresponding to                      the specified unique identifier set. 
  967.  
  968.  
  969.  
  970. Crispin                                                        [Page 28] 
  971.  RFC 1730                         IMAP4                     December 1994 
  972.  
  973.        UNANSWERED     Messages that do not have the \Answered flag set. 
  974.  
  975.       UNDELETED      Messages that do not have the \Deleted flag set. 
  976.  
  977.       UNDRAFT        Messages that do not have the \Draft flag set. 
  978.  
  979.       UNFLAGGED      Messages that do not have the \Flagged flag set. 
  980.  
  981.       UNKEYWORD <flag>                      Messages that do not have the specified keyword                      set. 
  982.  
  983.       UNSEEN         Messages that do not have the \Seen flag set. 
  984.  
  985.     Example:    C: A282 SEARCH FLAGGED SINCE 1-Feb-1994 NOT FROM "Smith"                S: * SEARCH 2 84 882                S: A282 OK SEARCH completed 
  986.  
  987.  6.4.5.  FETCH Command 
  988.  
  989.    Arguments:  message set                message data item names 
  990.  
  991.    Data:       untagged responses: FETCH 
  992.  
  993.    Result:     OK - fetch completed                NO - fetch error: can't fetch that data                BAD - command unknown or arguments invalid 
  994.  
  995.       The FETCH command retrieves data associated with a message in the       mailbox.  The data items to be fetched may be either a single atom       or a parenthesized list.  The currently defined data items that       can be fetched are: 
  996.  
  997.       ALL            Macro equivalent to: (FLAGS INTERNALDATE                      RFC822.SIZE ENVELOPE) 
  998.  
  999.       BODY           Non-extensible form of BODYSTRUCTURE. 
  1000.  
  1001.       BODY[<section>]                      The text of a particular body section.  The section                      specification is a set of one or more part numbers                      delimited by periods. 
  1002.  
  1003.                      Single-part messages only have a part 1. 
  1004.  
  1005.  
  1006.  
  1007.  Crispin                                                        [Page 29] 
  1008.  RFC 1730                         IMAP4                     December 1994 
  1009.  
  1010.                       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.                      It is not permitted to fetch a multipart part                      itself, only its individual members. 
  1011.  
  1012.                      A part of type MESSAGE and subtype RFC822 also has                      nested parts.  These are the parts of the MESSAGE                      part's body.  Nested part 0 of a part of type                      MESSAGE and subtype RFC822 is the [RFC-822] header                      of the message. 
  1013.  
  1014.                      Every message has at least one part. 
  1015.  
  1016.                           Here is an example of a complex message                           with its associated section                           specifications: 
  1017.  
  1018.                            0   ([RFC-822] header of the message)                                MULTIPART/MIXED                            1   TEXT/PLAIN                            2   APPLICATION/OCTET-STREAM                            3   MESSAGE/RFC822                            3.0   ([RFC-822] header of the message)                            3.1   TEXT/PLAIN                            3.2   APPLICATION/OCTET-STREAM                                  MULTIPART/MIXED                            4.1   IMAGE/GIF                            4.2   MESSAGE/RFC822                            4.2.0   ([RFC-822] header of the message)                            4.2.1   TEXT/PLAIN                                    MULTIPART/ALTERNATIVE                            4.2.2.1  TEXT/PLAIN                            4.2.2.2  TEXT/RICHTEXT 
  1019.  
  1020.                           Note that there is no section                           specification for the Multi-part parts                           (no section 4 or 4.2.2). 
  1021.  
  1022.                      The \Seen flag is implicitly set; if this causes                      the flags to change they should be included as part                      of the fetch responses. 
  1023.  
  1024.       BODY.PEEK[<section>]                      An alternate form of BODY[section] that does not                      implicitly set the \Seen flag. 
  1025.  
  1026.  
  1027.  
  1028. Crispin                                                        [Page 30] 
  1029.  RFC 1730                         IMAP4                     December 1994 
  1030.  
  1031.        BODYSTRUCTURE  The [MIME-1] body structure of the message.  This                      is computed by the server by parsing the [MIME-1]                      header lines. 
  1032.  
  1033.       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. 
  1034.  
  1035.       FAST           Macro equivalent to: (FLAGS INTERNALDATE                      RFC822.SIZE) 
  1036.  
  1037.       FLAGS          The flags that are set for this message. 
  1038.  
  1039.       FULL           Macro equivalent to: (FLAGS INTERNALDATE                      RFC822.SIZE ENVELOPE BODY) 
  1040.  
  1041.       INTERNALDATE   The date and time of final delivery of the message                      as defined by RFC 821. 
  1042.  
  1043.       RFC822         The message in [RFC-822] format.  The \Seen flag is                      implicitly set; if this causes the flags to change                      they should be included as part of the fetch                      responses.  This is the concatenation of                      RFC822.HEADER and RFC822.TEXT. 
  1044.  
  1045.       RFC822.PEEK    An alternate form of RFC822 that does not                      implicitly set the \Seen flag. 
  1046.  
  1047.       RFC822.HEADER  The [RFC-822] format header of the message as                      stored on the server including the delimiting blank                      line between the header and the body. 
  1048.  
  1049.       RFC822.HEADER.LINES <header_list>                      All header lines (including continuation lines) of                      the [RFC-822] format header of the message with a                      field-name (as defined in [RFC-822]) that matches                      any of the strings in header_list.  The matching is                      case-insensitive but otherwise exact.  The                      delimiting blank line between the header and the                      body is always included. 
  1050.  
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  Crispin                                                        [Page 31] 
  1060.  RFC 1730                         IMAP4                     December 1994 
  1061.  
  1062.        RFC822.HEADER.LINES.NOT <header_list>                      All header lines (including continuation lines) of                      the [RFC-822] format header of the message with a                      field-name (as defined in [RFC-822]) that does not                      match any of the strings in header_list.  The                      matching is case-insensitive but otherwise exact.                      The delimiting blank line between the header and                      the body is always included. 
  1063.  
  1064.       RFC822.SIZE    The number of octets in the message, as expressed                      in [RFC-822] format. 
  1065.  
  1066.       RFC822.TEXT    The text body of the message, omitting the                      [RFC-822] header.  The \Seen flag is implicitly                      set; if this causes the flags to change they should                      be included as part of the fetch responses. 
  1067.  
  1068.       RFC822.TEXT.PEEK                      An alternate form of RFC822.TEXT that does not                      implicitly set the \Seen flag. 
  1069.  
  1070.       UID            The unique identifier for the message. 
  1071.  
  1072.     Example:    C: A654 FETCH 2:4 (FLAGS RFC822.HEADER.LINES (DATE FROM))                S: * 2 FETCH ....                S: * 3 FETCH ....                S: * 4 FETCH ....                S: A003 OK FETCH completed 
  1073.  
  1074.  6.4.6.  PARTIAL Command 
  1075.  
  1076.    Arguments:  message sequence number                message data item name                position of first octet                number of octets 
  1077.  
  1078.    Data:       untagged responses: FETCH 
  1079.  
  1080.    Result:     OK - partial completed                NO - partial error: can't fetch that data                BAD - command unknown or arguments invalid 
  1081.  
  1082.       The PARTIAL command is equivalent to the associated FETCH command,       with the added functionality that only the specified number of       octets, beginning at the specified starting octet, are returned.       Only a single message can be fetched at a time.  The first octet 
  1083.  
  1084.  
  1085.  
  1086. Crispin                                                        [Page 32] 
  1087.  RFC 1730                         IMAP4                     December 1994 
  1088.  
  1089.        of a message, and hence the minimum for the starting octet, is       octet 1. 
  1090.  
  1091.       The following FETCH items are valid data for PARTIAL: RFC822,       RFC822.HEADER, RFC822.TEXT, BODY[section], as well as any .PEEK       forms of these. 
  1092.  
  1093.       Any partial fetch that attempts to read beyond the end of the text       is truncated as appropriate.  If the starting octet is beyond the       end of the text, an empty string is returned. 
  1094.  
  1095.       The data are returned with the FETCH response.  There is no       indication of the range of the partial data in this response.  It       is not possible to stream multiple PARTIAL commands of the same       data item without processing and synchronizing at each step, since       streamed commands may be executed out of order. 
  1096.  
  1097.       There is no requirement that partial fetches follow any sequence.       For example, if a partial fetch of octets 1 through 10000 breaks       in an awkward place for BASE64 decoding, it is permitted to       continue with a partial fetch of 9987 through 19987, etc. 
  1098.  
  1099.       The handling of the \Seen flag is the same as in the associated       FETCH command. 
  1100.  
  1101.    Example:    C: A005 PARTIAL 4 RFC822 1 1024                S: * 1 FETCH (RFC822 {1024}                S: Return-Path: <gray@cac.washington.edu>                S: ...                S: .........  FLAGS (\Seen))                S: A005 OK PARTIAL completed 
  1102.  
  1103.  6.4.7.  STORE Command 
  1104.  
  1105.    Arguments:  message set                message data item name                value for message data item 
  1106.  
  1107.    Data:       untagged responses: FETCH 
  1108.  
  1109.    Result:     OK - store completed                NO - store error: can't store that data                BAD - command unknown or arguments invalid 
  1110.  
  1111.       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 
  1112.  
  1113.  
  1114.  
  1115. Crispin                                                        [Page 33] 
  1116.  RFC 1730                         IMAP4                     December 1994 
  1117.  
  1118.        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. 
  1119.  
  1120.       The currently defined data items that can be stored are: 
  1121.  
  1122.       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. 
  1123.  
  1124.       FLAGS.SILENT <flag list>                      Equivalent to FLAGS, but without returning a new                      value. 
  1125.  
  1126.       +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. 
  1127.  
  1128.       +FLAGS.SILENT <flag list>                      Equivalent to +FLAGS, but without returning a new                      value. 
  1129.  
  1130.       -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. 
  1131.  
  1132.       -FLAGS.SILENT <flag list>                      Equivalent to -FLAGS, but without returning a new                      value. 
  1133.  
  1134.     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 
  1135.  
  1136.  
  1137.  
  1138.  
  1139.  
  1140.  
  1141.  
  1142.  
  1143.  
  1144.  
  1145.  
  1146.  Crispin                                                        [Page 34] 
  1147.  RFC 1730                         IMAP4                     December 1994 
  1148.  
  1149.  6.4.8.  COPY Command 
  1150.  
  1151.    Arguments:  message set                mailbox name 
  1152.  
  1153.    Data:       no specific data for this command 
  1154.  
  1155.    Result:     OK - copy completed                NO - copy error: can't copy those messages or to that                     name                BAD - command unknown or arguments invalid 
  1156.  
  1157.       The COPY command copies the specified message(s) to the specified       destination mailbox.  The flags and internal date of the       message(s) SHOULD be preserved in the copy. 
  1158.  
  1159.       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. 
  1160.  
  1161.       If the COPY command is unsuccessful for any reason, server       implementations MUST restore the destination mailbox to its state       before the COPY attempt. 
  1162.  
  1163.    Example:    C: A003 COPY 2:4 MEETING                S: A003 OK COPY completed 
  1164.  
  1165.  6.4.9.  UID Command 
  1166.  
  1167.    Arguments:  command name                command arguments 
  1168.  
  1169.    Data:       untagged responses: FETCH, SEARCH 
  1170.  
  1171.    Result:     OK - UID command completed                NO - UID command error                BAD - command unknown or arguments invalid 
  1172.  
  1173.       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. 
  1174.  
  1175.  
  1176.  
  1177. Crispin                                                        [Page 35] 
  1178.  RFC 1730                         IMAP4                     December 1994 
  1179.  
  1180.        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. 
  1181.  
  1182.       A unique identifier of a message is a number, and is guaranteed       not to refer to any other message in the mailbox.  Unique       identifiers are assigned in a strictly ascending fashion for each       message added to the mailbox.  Unlike message sequence numbers,       unique identifiers persist across sessions.  This permits a client       to resynchronize its state from a previous session with the server       (e.g.  disconnected or offline access clients); this is discussed       further in [IMAP-DISC]. 
  1183.  
  1184.       Associated with every mailbox is a unique identifier validity       value, which is sent in an UIDVALIDITY response code in an OK       untagged response at message selection time.  If unique       identifiers from an earlier session fail to persist to this       session, the unique identifier validity value MUST be greater than       in the earlier session. 
  1185.  
  1186.            Note: An example of a good value to use for the unique            identifier validity value would be a 32-bit            representation of the creation date/time of the mailbox.            It is alright to use a constant such as 1, but only if            it guaranteed that unique identifers will never be            reused, even in the case of a mailbox being deleted and            a new mailbox by the same name created at some future            time. 
  1187.  
  1188.        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. 
  1189.  
  1190.       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 UID was specified       as a message data item to the FETCH. 
  1191.  
  1192.  
  1193.  
  1194.  
  1195.  
  1196. Crispin                                                        [Page 36] 
  1197.  RFC 1730                         IMAP4                     December 1994 
  1198.  
  1199.     Example:    C: A003 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 
  1200.  
  1201.  
  1202.  
  1203. 6.5.    Client Commands - Experimental/Expansion 
  1204.  
  1205.  6.5.1.  X<atom> Command 
  1206.  
  1207.    Arguments:  implementation defined 
  1208.  
  1209.    Data:       implementation defined 
  1210.  
  1211.    Result:     OK - command completed                NO - failure                BAD - command unknown or arguments invalid 
  1212.  
  1213.       Any command prefixed with an X is an experimental command.       Commands which are not part of this specification, or a standard       or standards-track revision of this specification, MUST use the X       prefix. 
  1214.  
  1215.       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. 
  1216.  
  1217.    Example:    C: a441 CAPABILITY                S: * CAPABILITY IMAP4 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 
  1218.  
  1219.  
  1220.  
  1221.  
  1222.  
  1223.  
  1224.  
  1225.  
  1226.  
  1227.  
  1228.  
  1229.  
  1230.  
  1231.  Crispin                                                        [Page 37] 
  1232.  RFC 1730                         IMAP4                     December 1994 
  1233.  
  1234.  7.      Server Responses 
  1235.  
  1236.    Server responses are in three forms: status responses, server data,    and command continuation request. 
  1237.  
  1238.    Server response data, identified by "Data:" in the response    descriptions below, are described by function, not by syntax.  The    precise syntax of server response data is described in the Formal    Syntax section. 
  1239.  
  1240.    The client MUST be prepared to accept any response at all times. 
  1241.  
  1242.    Status responses that are tagged indicate the completion result of a    client command, and have a tag matching the command. 
  1243.  
  1244.    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 historical    reasons, untagged server data responses are also called "unsolicited    data", although strictly speaking only unilateral server data is    truly "unsolicited". 
  1245.  
  1246.    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 messags). 
  1247.  
  1248.    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. 
  1249.  
  1250.    An example of unilateral untagged responses occurs when the IMAP    connection is in selected state.  In selected state, the server    checks the mailbox for new messages as part of the execution of each    command.  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. 
  1251.  
  1252.    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. 
  1253.  
  1254.  
  1255.  
  1256. Crispin                                                        [Page 38] 
  1257.  RFC 1730                         IMAP4                     December 1994 
  1258.  
  1259.  7.1.    Server Responses - Status Responses 
  1260.  
  1261.    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    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. 
  1262.  
  1263.    The currently defined response codes are: 
  1264.  
  1265.       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. 
  1266.  
  1267.       PARSE          The human-readable text represents an error in                      parsing the [RFC-822] or [MIME-1] headers of a                      message in the mailbox. 
  1268.  
  1269.       PERMANENTFLAGS Followed by a parenthesized list of flags,                      indicates which of the known flags that the client                      may 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 may also include the special                      flag \*, which indicates that it is possible to                      create new keywords by attempting to store those                      flags in the mailbox. 
  1270.  
  1271.       READ-ONLY      The mailbox is selected read-only, or its access                      while selected has changed from read-write to                      read-only. 
  1272.  
  1273.       READ-WRITE     The mailbox is selected read-write, or its access                      while selected has changed from read-only to                      read-write. 
  1274.  
  1275.       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 may succeed if the mailbox is first                      created by the CREATE command. 
  1276.  
  1277.  
  1278.  
  1279.  Crispin                                                        [Page 39] 
  1280.  RFC 1730                         IMAP4                     December 1994 
  1281.  
  1282.        UIDVALIDITY    Followed by a decimal number, indicates the unique                      identifier validity value.  See the description of                      the UID command for more detail. 
  1283.  
  1284.       UNSEEN         Followed by a decimal number, indicates the number                      of the first message without the \Seen flag set. 
  1285.  
  1286.       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. 
  1287.  
  1288.  7.1.1.  OK Response 
  1289.  
  1290.    Data:       optional response code                human-readable text 
  1291.  
  1292.       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. 
  1293.  
  1294.       The untagged form is also used as one of three possible greetings       at session startup.  It indicates that the session is not yet       authenticated and that a LOGIN command is needed. 
  1295.  
  1296.    Example:    S: * OK IMAP4 server ready                C: A001 LOGIN fred blurdybloop                S: * OK [ALERT] System shutdown in 10 minutes                S: A001 OK LOGIN Completed 
  1297.  
  1298.  7.1.2.  NO Response 
  1299.  
  1300.    Data:       optional response code                human-readable text 
  1301.  
  1302.       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 may still complete successfully.  The human-readable text       describes the condition. 
  1303.  
  1304.  
  1305.  
  1306.  
  1307.  
  1308.  Crispin                                                        [Page 40] 
  1309.  RFC 1730                         IMAP4                     December 1994 
  1310.  
  1311.     Example:    C: A222 COPY 1:2 owatagusiam                S: * NO Disk is 98% full, please delete unnecessary data                S: A222 OK COPY completed                C: A222 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: A222 NO COPY failed: disk is full 
  1312.  
  1313.  7.1.3.  BAD Response 
  1314.  
  1315.    Data:       optional response code                human-readable text 
  1316.  
  1317.       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 may also indicate an internal       server failure.  The human-readable text describes the condition. 
  1318.  
  1319.    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 
  1320.  
  1321.  7.1.4.  PREAUTH Response 
  1322.  
  1323.    Data:       optional response code                human-readable text 
  1324.  
  1325.       The PREAUTH response is always untagged, and is one of three       possible greetings at session startup.  It indicates that the       session has already been authenticated by external means and thus       no LOGIN command is needed. 
  1326.  
  1327.    Example:    S: * PREAUTH IMAP4 server ready and logged in as Smith 
  1328.  
  1329.  
  1330.  
  1331.  
  1332.  
  1333.  
  1334.  
  1335.  
  1336.  
  1337. Crispin                                                        [Page 41] 
  1338.  RFC 1730                         IMAP4                     December 1994 
  1339.  
  1340.  7.1.5.  BYE Response 
  1341.  
  1342.    Data:       optional response code                human-readable text 
  1343.  
  1344.       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 may be sent as part of a normal logout sequence, or as a       panic shutdown announcement by the server.  It is also used by       some server implementations as an announcement of an inactivity       autologout. 
  1345.  
  1346.       This response is also used as one of three possible greetings at       session startup.  It indicates that the server is not willing to       accept a session from this client. 
  1347.  
  1348.    Example:    S: * BYE Autologout; idle for too long 
  1349.  
  1350.  
  1351.  
  1352. 7.2.    Server Responses - Server and Mailbox Status 
  1353.  
  1354.    These responses are always untagged.  This is how server data are    transmitted from the server to the client, often as a result of a    command with the same name. 
  1355.  
  1356. 7.2.1.  CAPABILITY Response 
  1357.  
  1358.    Data:       capability listing 
  1359.  
  1360.       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 first       name in the capability listing MUST be the atom "IMAP4". 
  1361.  
  1362.       A capability name other than IMAP4 indicates that the server       supports an extension, revision, or amendment to the IMAP4       protocol.  Server responses MUST conform to this document until       the client issues a command that uses the associated capability. 
  1363.  
  1364.       Capability names MUST either begin with "X" or be standard or       standards-track IMAP4 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". 
  1365.  
  1366.  
  1367.  
  1368.  
  1369.  
  1370. Crispin                                                        [Page 42] 
  1371.  RFC 1730                         IMAP4                     December 1994 
  1372.  
  1373.        Client implementations SHOULD NOT require any capability name       other than "IMAP4", and MUST ignore any unknown capability names. 
  1374.  
  1375.    Example:    S: * CAPABILITY IMAP4 XPIG-LATIN 
  1376.  
  1377.  7.2.2.  LIST Response 
  1378.  
  1379.    Data:       name attributes                hierarchy delimiter                name 
  1380.  
  1381.       The LIST response occurs as a result of a LIST command.  It       returns a single name that matches the LIST specification.  There       may be multiple LIST responses for a single LIST command. 
  1382.  
  1383.       Four name attributes are defined: 
  1384.  
  1385.       \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. 
  1386.  
  1387.       \Noselect      It is not possible to use this name as a selectable                      mailbox. 
  1388.  
  1389.       \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. 
  1390.  
  1391.       \Unmarked      The mailbox does not contain any additional                      messages since the last time the mailbox was                      selected. 
  1392.  
  1393.       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. 
  1394.  
  1395.       The hierarchy delimiter is a character used to delimit levels of       hierarchy in a mailbox name.  A client may 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. 
  1396.  
  1397.  
  1398.  
  1399.  
  1400.  
  1401.  
  1402.  
  1403. Crispin                                                        [Page 43] 
  1404.  RFC 1730                         IMAP4                     December 1994 
  1405.  
  1406.        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. 
  1407.  
  1408.    Example:    S: * LIST (\Noselect) "/" ~/Mail/foo 
  1409.  
  1410.  7.2.3.  LSUB Response 
  1411.  
  1412.    Data:       name attributes                hierarchy delimiter                name 
  1413.  
  1414.       The LSUB response occurs as a result of an LSUB command.  It       returns a single name that matches the LSUB specification.  There       may be multiple LSUB responses for a single LSUB command.  The       data is identical in format to the LIST response. 
  1415.  
  1416.    Example:    S: * LSUB () "." #news.comp.mail.misc 
  1417.  
  1418.  7.2.4.  SEARCH Response 
  1419.  
  1420.    Data:       zero or more numbers 
  1421.  
  1422.       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. 
  1423.  
  1424.    Example:    S: * SEARCH 2 3 6 
  1425.  
  1426.  7.2.5.  FLAGS Response 
  1427.  
  1428.    Data:       flag parenthesized list 
  1429.  
  1430.       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 may also exist,       depending on server implementation. 
  1431.  
  1432.       The update from the FLAGS response MUST be recorded by the client. 
  1433.  
  1434.    Example:    S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft) 
  1435.  
  1436.  
  1437.  
  1438. Crispin                                                        [Page 44] 
  1439.  RFC 1730                         IMAP4                     December 1994 
  1440.  
  1441.  7.3.    Server Responses - Message Status 
  1442.  
  1443.    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 either a message sequence number or a message    count. 
  1444.  
  1445. 7.3.1.  EXISTS Response 
  1446.  
  1447.    Data:       none 
  1448.  
  1449.       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). 
  1450.  
  1451.       The update from the EXISTS response MUST be recorded by the       client. 
  1452.  
  1453.    Example:    S: * 23 EXISTS 
  1454.  
  1455.  7.3.2.  RECENT Response 
  1456.  
  1457.    Data:       none 
  1458.  
  1459.       The RECENT response reports the number of messages that have       arrived since the previous time a SELECT command was done on this       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). 
  1460.  
  1461.       The update from the RECENT response MUST be recorded by the       client. 
  1462.  
  1463.    Example:    S: * 5 RECENT 
  1464.  
  1465.  7.3.3.  EXPUNGE Response 
  1466.  
  1467.    Data:       none 
  1468.  
  1469.       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). 
  1470.  
  1471.  
  1472.  
  1473.  Crispin                                                        [Page 45] 
  1474.  RFC 1730                         IMAP4                     December 1994 
  1475.  
  1476.        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       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. 
  1477.  
  1478.       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. 
  1479.  
  1480.       The update from the EXPUNGE response MUST be recorded by the       client. 
  1481.  
  1482.    Example:    S: * 44 EXPUNGE 
  1483.  
  1484.  7.3.4.  FETCH Response 
  1485.  
  1486.    Data:       message data 
  1487.  
  1488.       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). 
  1489.  
  1490.       The current data items are: 
  1491.  
  1492.       BODY           A form of BODYSTRUCTURE without extension data. 
  1493.  
  1494.       BODY[section]  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. 
  1495.  
  1496.                      8-bit textual data is permitted if a character set                      identifier is part of the body parameter                      parenthesized list for this section. 
  1497.  
  1498.                      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 
  1499.  
  1500.  
  1501.  
  1502. Crispin                                                        [Page 46] 
  1503.  RFC 1730                         IMAP4                     December 1994 
  1504.  
  1505.                       original binary data, the client must decode the                      transfer encoded string. 
  1506.  
  1507.       BODYSTRUCTURE  A parenthesized list that describes the body                      structure of a message.  This is computed by the                      server by parsing the [RFC-822] header and body                      into the component parts, defaulting various fields                      as necessary. 
  1508.  
  1509.                      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.). 
  1510.  
  1511.                      Extension data follows the multipart subtype.                      Extension data is never returned with the BODY                      fetch, but may be returned with a BODYSTRUCTURE                      fetch.  Extension data, if present, must be in the                      defined order. 
  1512.  
  1513.                      The extension data of a multipart body part are in                      the following order: 
  1514.  
  1515.                      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-1]. 
  1516.  
  1517.                      Any following extension data are not yet defined in                      this version of the protocol.  Such extension data                      may 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. 
  1518.  
  1519.                      The basic fields of a non-multipart body part are                      in the following order: 
  1520.  
  1521.                      body type                         A string giving the content type name as defined                         in [MIME-1]. 
  1522.  
  1523.  
  1524.  
  1525.  Crispin                                                        [Page 47] 
  1526.  RFC 1730                         IMAP4                     December 1994 
  1527.  
  1528.                       body subtype                         A string giving the content subtype name as                         defined in [MIME-1]. 
  1529.  
  1530.                      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-1]. 
  1531.  
  1532.                      body id                         A string giving the content id as defined in                         [MIME-1]. 
  1533.  
  1534.                      body description                         A string giving the content description as                         defined in [MIME-1]. 
  1535.  
  1536.                      body encoding                         A string giving the content transfer encoding as                         defined in [MIME-1]. 
  1537.  
  1538.                      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. 
  1539.  
  1540.                      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. 
  1541.  
  1542.                      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                      transfer encoding and not the resulting size after                      any decoding. 
  1543.  
  1544.                      Extension data follows the basic fields and the                      type-specific fields listed above.  Extension data                      is never returned with the BODY fetch, but may be                      returned with a BODYSTRUCTURE fetch.  Extension                      data, if present, must be in the defined order. 
  1545.  
  1546.                      The extension data of a non-multipart body part are                      in the following order: 
  1547.  
  1548.  
  1549.  
  1550.  Crispin                                                        [Page 48] 
  1551.  RFC 1730                         IMAP4                     December 1994 
  1552.  
  1553.                       body MD5                         A string giving the content MD5 value as defined                         in [MIME-1]. 
  1554.  
  1555.                      Any following extension data are not yet defined in                      this version of the protocol, and would be as                      described above under multipart extension data. 
  1556.  
  1557.       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. 
  1558.  
  1559.                      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. 
  1560.  
  1561.                      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. 
  1562.  
  1563.                      [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. 
  1564.  
  1565.                      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. 
  1566.  
  1567.  
  1568.  
  1569.  
  1570.  
  1571.  
  1572.  
  1573.  
  1574.  
  1575.  Crispin                                                        [Page 49] 
  1576.  RFC 1730                         IMAP4                     December 1994 
  1577.  
  1578.        FLAGS          A parenthesized list of flags that are set for this                      message.  This may include keywords as well as the                      following system flags: 
  1579.  
  1580.                      \Seen       Message has been read 
  1581.  
  1582.                      \Answered   Message has been answered 
  1583.  
  1584.                      \Flagged    Message is "flagged" for urgent/special                                  attention 
  1585.  
  1586.                      \Deleted    Message is "deleted" for removal by                                  later EXPUNGE 
  1587.  
  1588.                      \Draft      Message has not completed composition                                  (marked as a draft). 
  1589.  
  1590.                      as well as the following special flag, which may be                      fetched but not stored: 
  1591.  
  1592.                      \Recent     Message has arrived since the previous                                  time this mailbox was selected. 
  1593.  
  1594.       INTERNALDATE   A string containing the date and time of final                      delivery of the message as defined by [SMTP]. 
  1595.  
  1596.       RFC822         A string expressing the message in [RFC-822]                      format.  The header portion of the message must be                      7-bit.  8-bit characters are permitted only in the                      non-header portion of the message only if there are                      [MIME-1] data in the message that identify the                      character set of the message. 
  1597.  
  1598.       RFC822.HEADER  A string expressing the [RFC-822] format header of                      the message, including the delimiting blank line                      between the header and the body.  The entire string                      must be 7-bit; 8-bit characters are not permitted                      in headers.  RFC822.HEADER is used to return data                      for the RFC822.HEADER, RFC822.HEADER.LINES, and                      RFC822.HEADER.LINES.NOT FETCH data items.  Note                      that a blank line is always included regardless of                      header line restrictions. 
  1599.  
  1600.       RFC822.SIZE    A number expressing the number of octets in the                      message in [RFC-822] format. 
  1601.  
  1602.  
  1603.  
  1604.  
  1605.  
  1606.  Crispin                                                        [Page 50] 
  1607.  RFC 1730                         IMAP4                     December 1994 
  1608.  
  1609.        RFC822.TEXT    A string expressing the text body of the message,                      omitting the [RFC-822] header.  8-bit characters                      are permitted only if there are [MIME-1] data in                      the message that identify the character set of the                      message. 
  1610.  
  1611.       UID            A number expressing the unique identifier of the                      message. 
  1612.  
  1613.     Example:    S: * 23 FETCH (FLAGS (\Seen) RFC822.SIZE 44827) 
  1614.  
  1615.  7.3.5.  Obsolete Responses 
  1616.  
  1617.    In addition to the responses listed in here, client implementations    MUST accept and implement the obsolete responses described in    Appendix B. 
  1618.  
  1619.  
  1620.  
  1621. 7.4.    Server Responses - Command Continuation Request 
  1622.  
  1623.    The command completion 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. 
  1624.  
  1625.    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. 
  1626.  
  1627.    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. 
  1628.  
  1629.    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" 
  1630.  
  1631.  
  1632.  
  1633. Crispin                                                        [Page 51] 
  1634.  RFC 1730                         IMAP4                     December 1994 
  1635.  
  1636.  8.      Sample IMAP4 session 
  1637.  
  1638.    The following is a transcript of an IMAP4 session.  A long line in    this sample is broken for editorial clarity. 
  1639.  
  1640.    S:   * OK IMAP4 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    S:   a002 OK [READ-WRITE] SELECT completed    C:   a003 fetch 12 full    S:   * 12 FETCH (FLAGS (\Seen) INTERNALDATE "14-Jul-1993 02:44:25 -0700"          RFC822.SIZE 4282 ENVELOPE ("Wed, 14 Jul 1993 02:23:25 -0700 (PDT)"          "IMAP4 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          "<B27397-0100000@cac.washington.edu>")           BODY ("TEXT" "PLAIN" ("CHARSET" "US-ASCII") NIL NIL "7BIT" 3028 92))    S:    a003 OK FETCH completed    C:    a004 fetch 12 rfc822.header    S:    * 12 FETCH (RFC822.HEADER {346}    S:    Date: Wed, 14 Jul 1993 02:23:25 -0700 (PDT)    S:    From: Terry Gray <gray@cac.washington.edu>    S:    Subject: IMAP4 WG mtg summary and minutes    S:    To: imap@cac.washington.edu    S:    cc: minutes@CNRI.Reston.VA.US, John Klensin <KLENSIN@INFOODS.MIT.EDU>    S:    Message-Id: <B27397-0100000@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 IMAP4 server terminating connection    S:    a006 OK LOGOUT completed 
  1641.  
  1642.  
  1643.  
  1644.  Crispin                                                        [Page 52] 
  1645.  RFC 1730                         IMAP4                     December 1994 
  1646.  
  1647.  9.      Formal Syntax 
  1648.  
  1649.    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 a comma. 
  1650.  
  1651.    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. 
  1652.  
  1653.    Syntax marked as obsolete may be encountered with implementations    written for an earlier version of this protocol (e.g. IMAP2).  New    implementations SHOULD accept obsolete syntax as input, but MUST NOT    otherwise use such syntax. 
  1654.  
  1655.    address         ::= "(" addr_name SPACE addr_adl SPACE addr_mailbox                        SPACE addr_host ")" 
  1656.  
  1657.    addr_adl        ::= nstring 
  1658.  
  1659.    addr_host       ::= nstring                        ;; NIL indicates [RFC-822] group syntax 
  1660.  
  1661.    addr_mailbox    ::= nstring                        ;; NIL indicates end of [RFC-822] group; if                        ;; non-NIL and addr_host is NIL, holds                        ;; [RFC-822] group name 
  1662.  
  1663.    addr_name       ::= nstring 
  1664.  
  1665.    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 
  1666.  
  1667.    append          ::= "APPEND" SPACE mailbox [SPACE flag_list]                        [SPACE date_time] SPACE literal 
  1668.  
  1669.    astring         ::= atom / string 
  1670.  
  1671.  
  1672.  
  1673.  
  1674.  
  1675. Crispin                                                        [Page 53] 
  1676.  RFC 1730                         IMAP4                     December 1994 
  1677.  
  1678.     atom            ::= 1*ATOM_CHAR 
  1679.  
  1680.    ATOM_CHAR       ::= <any CHAR except atom_specials> 
  1681.  
  1682.    atom_specials   ::= "(" / ")" / "{" / SPACE / CTLs / list_wildcards /                        quoted_specials 
  1683.  
  1684.    authenticate    ::= "AUTHENTICATE" SPACE auth_type *(CRLF base64) 
  1685.  
  1686.    auth_type       ::= atom 
  1687.  
  1688.    base64          ::= *(4base64_char) [base64_terminal] 
  1689.  
  1690.    base64_char     ::= alpha / digit / "+" / "/" 
  1691.  
  1692.    base64_terminal ::= (2base64_char "==") / (3base64_char "=") 
  1693.  
  1694.    body            ::= "(" body_type_1part / body_type_mpart ")" 
  1695.  
  1696.    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. 
  1697.  
  1698.    body_ext_1part  ::= body_fld_md5 [SPACE 1#body_extension]                        ;; MUST NOT be returned on non-extensible                        ;; "BODY" fetch 
  1699.  
  1700.    body_ext_mpart  ::= body_fld_param [SPACE 1#body_extension]]                        ;; MUST NOT be returned on non-extensible                        ;; "BODY" fetch 
  1701.  
  1702.    body_fields     ::= body_fld_param SPACE body_fld_id SPACE                        body_fld_desc SPACE body_fld_enc SPACE                        body_fld_octets 
  1703.  
  1704.    body_fld_desc   ::= nstring 
  1705.  
  1706.    body_fld_enc    ::= (<"> ("7BIT" / "8BIT" / "BINARY" / "BASE64"/                        "QUOTED-PRINTABLE") <">) / string 
  1707.  
  1708.    body_fld_id     ::= nstring 
  1709.  
  1710.    body_fld_lines  ::= number 
  1711.  
  1712.  
  1713.  
  1714.  Crispin                                                        [Page 54] 
  1715.  RFC 1730                         IMAP4                     December 1994 
  1716.  
  1717.     body_fld_md5    ::= nstring 
  1718.  
  1719.    body_fld_octets ::= number 
  1720.  
  1721.    body_fld_param  ::= "(" 1#(string string) ")" / nil 
  1722.  
  1723.    body_fld_subtyp ::= string 
  1724.  
  1725.    body_type_1part ::= (body_type_basic / body_type_msg / body_type_text)                        [SPACE body_ext_1part] 
  1726.  
  1727.    body_type_basic ::= (<"> ("APPLICATION" / "AUDIO" / "IMAGE" /                        "MESSAGE" / "VIDEO") <">) / string) SPACE                        body_fld_subtyp SPACE body_fields                        ;; MESSAGE subtype MUST NOT be "RFC822" 
  1728.  
  1729.    body_type_mpart ::= 1*body SPACE body_fld_subtyp                        [SPACE body_ext_mpart] 
  1730.  
  1731.    body_type_msg   ::= <"> "MESSAGE" <"> SPACE <"> "RFC822" <"> SPACE                        body_fields SPACE envelope SPACE body SPACE                        body_fld_lines 
  1732.  
  1733.    body_type_text  ::= <"> "TEXT" <"> SPACE body_fld_subtyp SPACE                         body_fields SPACE body_fld_lines 
  1734.  
  1735.    capability      ::= atom                        ;; Must begin with "X" or be registered with                        ;; IANA as standard or standards-track 
  1736.  
  1737.    capability_data ::= "CAPABILITY" SPACE "IMAP4" [SPACE 1#capability] 
  1738.  
  1739.    CHAR            ::= <any 7-bit US-ASCII character except NUL,                         0x01 - 0x7f> 
  1740.  
  1741.    CHAR8           ::= <any 8-bit octet except NUL, 0x01 - 0xff> 
  1742.  
  1743.    command         ::= tag SPACE (command_any / command_auth /                        command_nonauth / command_select) CRLF                        ;; Modal based on state 
  1744.  
  1745.    command_any     ::= "CAPABILITY" / "LOGOUT" / "NOOP" / x_command                        ;; Valid in all states 
  1746.  
  1747.    command_auth    ::= append / create / delete / examine / find / list /                        lsub / rename / select / subscribe / unsubscribe /                        ;; Valid only in Authenticated or Selected state 
  1748.  
  1749.  
  1750.  
  1751.  Crispin                                                        [Page 55] 
  1752.  RFC 1730                         IMAP4                     December 1994 
  1753.  
  1754.     command_nonauth ::= login / authenticate                        ;; Valid only when in Non-Authenticated state 
  1755.  
  1756.    command_select  ::= "CHECK" / "CLOSE" / "EXPUNGE" /                         copy / fetch / partial / store / uid / search                        ;; Valid only when in Selected state 
  1757.  
  1758.    continue_req    ::= "+" SPACE (resp_text / base64) 
  1759.  
  1760.    copy            ::= "COPY" SPACE set SPACE mailbox 
  1761.  
  1762.    CR              ::= <ASCII CR, carriage return, 0x0C> 
  1763.  
  1764.    create          ::= "CREATE" SPACE mailbox                        ;; Use of INBOX gives a NO error 
  1765.  
  1766.    CRLF            ::= CR LF 
  1767.  
  1768.    CTL             ::= <any ASCII control character and DEL,                         0x00 - 0x1f, 0x7f> 
  1769.  
  1770.    date            ::= date_text / <"> date_text <"> 
  1771.  
  1772.    date_day        ::= 1*2digit                        ;; Day of month 
  1773.  
  1774.    date_day_fixed  ::= (SPACE digit) / 2digit                        ;; Fixed-format version of date_day 
  1775.  
  1776.    date_month      ::= "Jan" / "Feb" / "Mar" / "Apr" / "May" / "Jun" /                        "Jul" / "Aug" / "Sep" / "Oct" / "Nov" / "Dec" 
  1777.  
  1778.    date_text       ::= date_day "-" date_month "-" (date_year /                        date_year_old) 
  1779.  
  1780.    date_year       ::= 4digit 
  1781.  
  1782.    date_year_old   ::= 2digit                        ;; OBSOLETE, (year - 1900) 
  1783.  
  1784.    date_time       ::= <"> (date_time_new / date_time_old) <"> 
  1785.  
  1786.    date_time_new   ::= date_day_fixed "-" date_month "-" date_year                        SPACE time SPACE zone 
  1787.  
  1788.    date_time_old   ::= date_day_fixed "-" date_month "-" date_year_old                        SPACE time "-" zone_old                        ;; OBSOLETE 
  1789.  
  1790.  
  1791.  
  1792. Crispin                                                        [Page 56] 
  1793.  RFC 1730                         IMAP4                     December 1994 
  1794.  
  1795.     delete          ::= "DELETE" SPACE mailbox                        ;; Use of INBOX gives a NO error 
  1796.  
  1797.    digit           ::= "0" / digit_nz 
  1798.  
  1799.    digit_nz        ::= "1" / "2" / "3" / "4" / "5" / "6" / "7" / "8" /                        "9" 
  1800.  
  1801.    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 ")" 
  1802.  
  1803.    env_bcc         ::= "(" 1*address ")" / nil 
  1804.  
  1805.    env_cc          ::= "(" 1*address ")" / nil 
  1806.  
  1807.    env_date        ::= nstring 
  1808.  
  1809.    env_from        ::= "(" 1*address ")" / nil 
  1810.  
  1811.    env_in-reply-to ::= nstring 
  1812.  
  1813.    env_message-id  ::= nstring 
  1814.  
  1815.    env_reply-to    ::= "(" 1*address ")" / nil 
  1816.  
  1817.    env_sender      ::= "(" 1*address ")" / nil 
  1818.  
  1819.    env_subject     ::= nstring 
  1820.  
  1821.    env_to          ::= "(" 1*address ")" / nil 
  1822.  
  1823.    examine         ::= "EXAMINE" SPACE mailbox 
  1824.  
  1825.    fetch           ::= "FETCH" SPACE set SPACE ("ALL" / "FULL" /                        "FAST" / fetch_att / "(" 1#fetch_att ")") 
  1826.  
  1827.    fetch_att       ::= "BODY" / "BODYSTRUCTURE" /                        "BODY" [".PEEK"] "[" section "]" / "ENVELOPE" /                        "FLAGS" / "INTERNALDATE" / "UID" /                        "RFC822" (([".TEXT"] [".PEEK"]) / ".SIZE" /                        (".HEADER" [".LINES" [".NOT"] SPACE header_list]) 
  1828.  
  1829.    find            ::= "FIND" SPACE ["ALL."] "MAILBOXES" SPACE                        list_mailbox                        ;; OBSOLETE 
  1830.  
  1831.  
  1832.  
  1833.  Crispin                                                        [Page 57] 
  1834.  RFC 1730                         IMAP4                     December 1994 
  1835.  
  1836.     flag            ::= "\Answered" / "\Flagged" / "\Deleted" /                        "\Seen" / "\Draft" / flag_keyword  /                        flag_extension 
  1837.  
  1838.    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. 
  1839.  
  1840.    flag_keyword    ::= atom 
  1841.  
  1842.    flag_list       ::= "(" #flag ")" 
  1843.  
  1844.    greeting        ::= "*" SPACE (resp_cond_auth / resp_cond_bye) CRLF 
  1845.  
  1846.    header_line     ::= astring 
  1847.  
  1848.    header_list     ::= "(" 1#header_line ")" 
  1849.  
  1850.    LF              ::= <ASCII LF, line feed, 0x0A> 
  1851.  
  1852.    list            ::= "LIST" SPACE mailbox SPACE list_mailbox 
  1853.  
  1854.    list_mailbox    ::= 1*(ATOM_CHAR / list_wildcards) / string 
  1855.  
  1856.    list_wildcards  ::= "%" / "*" 
  1857.  
  1858.    literal         ::= "{" number "}" CRLF *CHAR8                        ;; Number represents the number of CHAR8 octets 
  1859.  
  1860.    login           ::= "LOGIN" SPACE userid SPACE password 
  1861.  
  1862.    lsub            ::= "LSUB" SPACE mailbox SPACE list_mailbox 
  1863.  
  1864.    mailbox         ::= "INBOX" / astring                        ;; INBOX is case-insensitive; other names may be                        ;; case-sensitive depending on implementation. 
  1865.  
  1866.    mailbox_data    ::=  "FLAGS" SPACE flag_list /                         "LIST" SPACE mailbox_list /                         "LSUB" SPACE mailbox_list /                         "MAILBOX" SPACE text /                         "SEARCH" [SPACE 1#nz_number] /                         number SPACE "EXISTS" / number SPACE "RECENT" 
  1867.  
  1868.  
  1869.  
  1870.  Crispin                                                        [Page 58] 
  1871.  RFC 1730                         IMAP4                     December 1994 
  1872.  
  1873.     mailbox_list    ::= "(" #("\Marked" / "\Noinferiors" /                        "\Noselect" / "\Unmarked" / flag_extension) ")"                        SPACE (<"> QUOTED_CHAR <"> / nil) SPACE mailbox 
  1874.  
  1875.    message_data    ::= nz_number SPACE ("EXPUNGE" /                        ("FETCH" SPACE msg_fetch) / msg_obsolete) 
  1876.  
  1877.    msg_fetch       ::= "(" 1#("BODY" SPACE body /                        "BODYSTRUCTURE" SPACE body /                        "BODY[" section "]" SPACE nstring /                        "ENVELOPE" SPACE envelope /                        "FLAGS" SPACE "(" #(flag / "\Recent") ")" /                        "INTERNALDATE" SPACE date_time /                        "RFC822" [".HEADER" / ".TEXT"] SPACE nstring /                        "RFC822.SIZE" SPACE number /                        "UID" SPACE uniqueid) ")" 
  1878.  
  1879.    msg_obsolete    ::= "COPY" / ("STORE" SPACE msg_fetch)                        ;; OBSOLETE untagged data responses 
  1880.  
  1881.    nil             ::= "NIL" 
  1882.  
  1883.    nstring         ::= string / nil 
  1884.  
  1885.    number          ::= 1*digit                        ;; Unsigned 32-bit integer                        ;; (0 <= n < 4,294,967,296) 
  1886.  
  1887.    nz_number       ::= digit_nz *digit                        ;; Non-zero unsigned 32-bit integer                        ;; (0 < n < 4,294,967,296) 
  1888.  
  1889.    partial         ::= "PARTIAL" SPACE nz_number SPACE                        ("BODY" [".PEEK"] "[" section "]" /                        "RFC822" (([".TEXT"] [".PEEK"]) / ".HEADER")                        SPACE number SPACE number 
  1890.  
  1891.    password        ::= astring 
  1892.  
  1893.    quoted          ::= <"> *QUOTED_CHAR <"> 
  1894.  
  1895.    QUOTED_CHAR     ::= <any TEXT_CHAR except quoted_specials> /                        "\" quoted_specials 
  1896.  
  1897.    quoted_specials ::= <"> / "\" 
  1898.  
  1899.    rename          ::= "RENAME" SPACE mailbox SPACE mailbox                        ;; Use of INBOX as a destination gives a NO error 
  1900.  
  1901.  
  1902.  
  1903. Crispin                                                        [Page 59] 
  1904.  RFC 1730                         IMAP4                     December 1994 
  1905.  
  1906.     response        ::= *response_data response_done 
  1907.  
  1908.    response_data   ::= "*" SPACE (resp_cond_state / resp_cond_bye /                        mailbox_data / message_data / capability_data)                        CRLF 
  1909.  
  1910.    response_done   ::= response_tagged / response_fatal 
  1911.  
  1912.    response_fatal  ::= "*" SPACE resp_cond_bye CRLF 
  1913.  
  1914.    response_tagged ::= tag SPACE resp_cond_state CRLF 
  1915.  
  1916.    resp_cond_auth  ::= ("OK" / "PREAUTH") SPACE resp_text                        ;; Authentication condition 
  1917.  
  1918.    resp_cond_bye   ::= "BYE" SPACE resp_text                        ;; Server will disconnect condition 
  1919.  
  1920.    resp_cond_state ::= ("OK" / "NO" / "BAD") SPACE resp_text                        ;; Status condition 
  1921.  
  1922.    resp_text       ::= ["[" resp_text_code "]" SPACE] (text_mime2 / text) 
  1923.  
  1924.    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 "]">] 
  1925.  
  1926.    search          ::= "SEARCH" SPACE ["CHARSET" SPACE astring SPACE]                        search_criteria                        ;; Character set must be registered with IANA                        ;; as a MIME character set 
  1927.  
  1928.    search_criteria ::= 1#search_key 
  1929.  
  1930.    search_key      ::= search_new / search_old 
  1931.  
  1932.    search_new      ::= "DRAFT" /                        "HEADER" SPACE header_line 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 /                        "UID" SPACE set / "UNDRAFT" / set /                        "(" search_criteria ")"                        ;; New in IMAP4 
  1933.  
  1934.  
  1935.  
  1936. Crispin                                                        [Page 60] 
  1937.  RFC 1730                         IMAP4                     December 1994 
  1938.  
  1939.     search_old      ::= "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"                        ;; Defined in [IMAP2] 
  1940.  
  1941.    section         ::= "0" / nz_number ["." section] 
  1942.  
  1943.    select          ::= "SELECT" SPACE mailbox 
  1944.  
  1945.    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. 
  1946.  
  1947.    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. 
  1948.  
  1949.    SPACE           ::= <ASCII SP, space, 0x20> 
  1950.  
  1951.    store           ::= "STORE" SPACE set SPACE store_att_flags 
  1952.  
  1953.    store_att_flags ::= (["+" / "-"] "FLAGS" [".SILENT"]) SPACE                        (flag_list / #flag) 
  1954.  
  1955.    string          ::= quoted / literal 
  1956.  
  1957.    subscribe       ::= ("SUBSCRIBE" SPACE mailbox) / subscribe_obs 
  1958.  
  1959.    subscribe_obs   ::= "SUBSCRIBE" SPACE "MAILBOX" SPACE mailbox                        ;;OBSOLETE 
  1960.  
  1961.  
  1962.  
  1963.  Crispin                                                        [Page 61] 
  1964.  RFC 1730                         IMAP4                     December 1994 
  1965.  
  1966.     tag             ::= 1*<any ATOM_CHAR except "+"> 
  1967.  
  1968.    text            ::= 1*TEXT_CHAR 
  1969.  
  1970.    text_mime2       ::= "=?" <charset> "?" <encoding> "?"                         <encoded-text> "?="                         ;; Syntax defined in [MIME-2] 
  1971.  
  1972.    TEXT_CHAR       ::= <any CHAR except CR and LF> 
  1973.  
  1974.    time            ::= 2digit ":" 2digit ":" 2digit                        ;; Hours minutes seconds 
  1975.  
  1976.    uid             ::= "UID" SPACE (copy / fetch / search / store)                        ;; Unique identifiers used instead of message                        ;; sequence numbers 
  1977.  
  1978.    uniqueid        ::= nz_number                        ;; Strictly ascending 
  1979.  
  1980.    unsubscribe     ::= ("UNSUBSCRIBE" SPACE mailbox) / unsubscribe_obs 
  1981.  
  1982.    unsubscribe_obs ::= "UNSUBSCRIBE" SPACE "MAILBOX" SPACE mailbox                        ;;OBSOLETE 
  1983.  
  1984.    userid          ::= astring 
  1985.  
  1986.    x_command       ::= "X" atom <experimental command arguments> 
  1987.  
  1988.    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". 
  1989.  
  1990.  
  1991.  
  1992.  
  1993.  
  1994.  
  1995.  
  1996.  
  1997.  
  1998.  
  1999.  
  2000.  
  2001.  
  2002.  
  2003.  
  2004. Crispin                                                        [Page 62] 
  2005.  RFC 1730                         IMAP4                     December 1994 
  2006.  
  2007.     zone_old        ::= "UT" / "GMT" / "Z" /                ;; +0000                        "AST" / "EDT" /                     ;; -0400                        "EST" / "CDT" /                     ;; -0500                        "CST" / "MDT" /                     ;; -0600                        "MST" / "PDT" /                     ;; -0700                        "PST" / "YDT" /                     ;; -0800                        "YST" / "HDT" /                     ;; -0900                        "HST" / "BDT" /                     ;; -1000                        "BST" /                             ;; -1100                        "A" / "B" / "C" / "D" / "E" / "F" / ;; +1 to +6                        "G" / "H" / "I" / "K" / "L" / "M" / ;; +7 to +12                        "N" / "O" / "P" / "Q" / "R" / "S" / ;; -1 to -6                        "T" / "U" / "V" / "W" / "X" / "Y"   ;; -7 to -12                        ;; OBSOLETE 
  2008.  
  2009.  
  2010.  
  2011.  
  2012.  
  2013.  
  2014.  
  2015.  
  2016.  
  2017.  
  2018.  
  2019.  
  2020.  
  2021.  
  2022.  
  2023.  
  2024.  
  2025.  
  2026.  
  2027.  
  2028.  
  2029.  
  2030.  
  2031.  
  2032.  
  2033.  
  2034.  
  2035.  
  2036.  
  2037.  
  2038.  
  2039.  
  2040.  
  2041.  
  2042.  
  2043.  
  2044.  
  2045. Crispin                                                        [Page 63] 
  2046.  RFC 1730                         IMAP4                     December 1994 
  2047.  
  2048.  10.     Author's Note 
  2049.  
  2050.    This document is a revision or rewrite of earlier documents, and    supercedes the protocol specification in those documents: IMAP4    Internet drafts, the IMAP2bis Internet drafts, unpublished    IMAP2bis.TXT document, RFC 1176, and RFC 1064. 
  2051.  
  2052.  11.     Security Considerations 
  2053.  
  2054.    IMAP4 protocol transactions, including electronic mail data, are sent    in the clear over the network unless the optional privacy protection    is negotiated in the AUTHENTICATE command. 
  2055.  
  2056.    A server error message for an AUTHENTICATE command which fails due to    invalid credentials should not detail why the credentials are    invalid. 
  2057.  
  2058.    Use of the LOGIN command sends passwords in the clear.  This can be    avoided by using the AUTHENTICATE command instead. 
  2059.  
  2060.    A server error message for a failing LOGIN command should not specify    that the user name, as opposed to the password, is invalid. 
  2061.  
  2062.    Additional security considerations are discussed in the section    discussing the AUTHENTICATE and LOGIN commands. 
  2063.  
  2064.  12.     Author's Address 
  2065.  
  2066.    Mark R. Crispin    Networks and Distributed Computing, JE-30    University of Washington    Seattle, WA  98195 
  2067.  
  2068.    Phone: (206) 543-5762 
  2069.  
  2070.    EMail: MRC@CAC.Washington.EDU 
  2071.  
  2072.  
  2073.  
  2074.  
  2075.  
  2076.  
  2077.  
  2078.  
  2079.  
  2080.  
  2081.  
  2082.  
  2083.  
  2084. Crispin                                                        [Page 64] 
  2085.  RFC 1730                         IMAP4                     December 1994 
  2086.  
  2087.  Appendices 
  2088.  
  2089. A.      Obsolete Commands 
  2090.  
  2091.    The following commands are OBSOLETE.  It is NOT required to support    any of these commands in new server implementations.  These commands    are documented here for the benefit of implementors who may wish to    support them for compatibility with old client implementations. 
  2092.  
  2093.    The section headings of these commands are intended to correspond    with where they would be located in the main document if they were    not obsoleted. 
  2094.  
  2095.  A.6.3.OBS.1.    FIND ALL.MAILBOXES Command 
  2096.  
  2097.    Arguments:  mailbox name with possible wildcards 
  2098.  
  2099.    Data:       untagged responses: MAILBOX 
  2100.  
  2101.    Result:     OK - find completed                NO - find failure: can't list that name                BAD - command unknown or arguments invalid 
  2102.  
  2103.       The FIND ALL.MAILBOXES command returns a subset of names from the       complete set of all names available to the user.  It returns zero       or more untagged MAILBOX replies.  The mailbox argument to FIND       ALL.MAILBOXES is similar to that for LIST with an empty reference,       except that the characters "%" and "?" match a single character. 
  2104.  
  2105.    Example:    C: A002 FIND ALL.MAILBOXES *                S: * MAILBOX blurdybloop                S: * MAILBOX INBOX                S: A002 OK FIND ALL.MAILBOXES completed 
  2106.  
  2107.  A.6.3.OBS.2.    FIND MAILBOXES Command 
  2108.  
  2109.    Arguments:  mailbox name with possible wildcards 
  2110.  
  2111.    Data:       untagged responses: MAILBOX 
  2112.  
  2113.    Result:     OK - find completed                NO - find failure: can't list that name                BAD - command unknown or arguments invalid 
  2114.  
  2115.       The FIND MAILBOXES command returns a subset of names from the set       of names that the user has declared as being "active" or 
  2116.  
  2117.  
  2118.  
  2119. Crispin                                                        [Page 65] 
  2120.  RFC 1730                         IMAP4                     December 1994 
  2121.  
  2122.        "subscribed".  It returns zero or more untagged MAILBOX replies.       The mailbox argument to FIND MAILBOXES is similar to that for LSUB       with an empty reference, except that the characters "%" and "?"       match a single character. 
  2123.  
  2124.    Example:    C: A002 FIND MAILBOXES *                S: * MAILBOX blurdybloop                S: * MAILBOX INBOX                S: A002 OK FIND MAILBOXES completed 
  2125.  
  2126.  A.6.3.OBS.3.    SUBSCRIBE MAILBOX Command 
  2127.  
  2128.    Arguments:  mailbox name 
  2129.  
  2130.    Data:       no specific data for this command 
  2131.  
  2132.    Result:     OK - subscribe completed                NO - subscribe failure: can't subscribe to that name                BAD - command unknown or arguments invalid 
  2133.  
  2134.       The SUBSCRIBE MAILBOX command is identical in effect to the       SUBSCRIBE command.  A server which implements this command must be       able to distinguish between a SUBSCRIBE MAILBOX command and a       SUBSCRIBE command with a mailbox name argument of "MAILBOX". 
  2135.  
  2136.    Example:    C: A002 SUBSCRIBE MAILBOX #news.comp.mail.mime                S: A002 OK SUBSCRIBE MAILBOX to #news.comp.mail.mime                completed                C: A003 SUBSCRIBE MAILBOX                S: A003 OK SUBSCRIBE to MAILBOX completed 
  2137.  
  2138.  A.6.3.OBS.4.    UNSUBSCRIBE MAILBOX Command 
  2139.  
  2140.    Arguments:  mailbox name 
  2141.  
  2142.    Data:       no specific data for this command 
  2143.  
  2144.    Result:     OK - unsubscribe completed                NO - unsubscribe failure: can't unsubscribe that name                BAD - command unknown or arguments invalid 
  2145.  
  2146.       The UNSUBSCRIBE MAILBOX command is identical in effect to the       UNSUBSCRIBE command.  A server which implements this command must       be able to distinguish between a UNSUBSCRIBE MAILBOX command and       an UNSUBSCRIBE command with a mailbox name argument of "MAILBOX". 
  2147.  
  2148.  
  2149.  
  2150.  Crispin                                                        [Page 66] 
  2151.  RFC 1730                         IMAP4                     December 1994 
  2152.  
  2153.     Example:    C: A002 UNSUBSCRIBE MAILBOX #news.comp.mail.mime                S: A002 OK UNSUBSCRIBE MAILBOX from #news.comp.mail.mime                completed                C: A003 UNSUBSCRIBE MAILBOX                S: A003 OK UNSUBSCRIBE from MAILBOX completed 
  2154.  
  2155.  
  2156.  
  2157.  
  2158.  
  2159.  
  2160.  
  2161.  
  2162.  
  2163.  
  2164.  
  2165.  
  2166.  
  2167.  
  2168.  
  2169.  
  2170.  
  2171.  
  2172.  
  2173.  
  2174.  
  2175.  
  2176.  
  2177.  
  2178.  
  2179.  
  2180.  
  2181.  
  2182.  
  2183.  
  2184.  
  2185.  
  2186.  
  2187.  
  2188.  
  2189.  
  2190.  
  2191.  
  2192.  
  2193.  
  2194.  
  2195.  
  2196.  
  2197.  
  2198.  
  2199.  Crispin                                                        [Page 67] 
  2200.  RFC 1730                         IMAP4                     December 1994 
  2201.  
  2202.  B.      Obsolete Responses 
  2203.  
  2204.    The following responses are OBSOLETE.  Except as noted below, these    responses MUST NOT be transmitted by new server implementations. 
  2205.  
  2206.    The section headings of these responses are intended to correspond    with where they would be located in the main document if they were    not obsoleted. 
  2207.  
  2208.  B.7.2.OBS.1.    MAILBOX Response 
  2209.  
  2210.    Data:       name 
  2211.  
  2212.       The MAILBOX response MUST NOT be transmitted by server       implementations except in response to the obsolete FIND MAILBOXES       and FIND ALL.MAILBOXES commands.  Client implementations that do       not use these commands MAY ignore this response.  It is documented       here for the benefit of implementors who may wish to support it       for compatibility with old client implementations. 
  2213.  
  2214.       This response occurs as a result of the FIND MAILBOXES and FIND       ALL.MAILBOXES commands.  It returns a single name that matches the       FIND specification.  There are no attributes or hierarchy       delimiter. 
  2215.  
  2216.    Example:    S: * MAILBOX blurdybloop 
  2217.  
  2218.  B.7.3.OBS.1.    COPY Response 
  2219.  
  2220.    Data:       none 
  2221.  
  2222.       The COPY response MUST NOT be transmitted by new server       implementations.  Client implementations MUST ignore the COPY       response.  It is documented here for the benefit of client       implementors who may encounter this response from old server       implementations. 
  2223.  
  2224.       In some experimental versions of this protocol, this response was       returned in response to a COPY command to indicate on a       per-message basis that the message was copied successfully. 
  2225.  
  2226.    Example:    S: * 44 COPY 
  2227.  
  2228.  
  2229.  
  2230.  
  2231.  
  2232.  
  2233.  
  2234. Crispin                                                        [Page 68] 
  2235.  RFC 1730                         IMAP4                     December 1994 
  2236.  
  2237.  B.7.3.OBS.2.    STORE Response 
  2238.  
  2239.    Data:       message data 
  2240.  
  2241.       The STORE response MUST NOT be transmitted by new server       implementations.  Client implementations MUST treat the STORE       response as equivalent to the FETCH response.  It is documented       here for the benefit of client implementors who may encounter this       response from old server implementations. 
  2242.  
  2243.       In some experimental versions of this protocol, this response was       returned instead of FETCH in response to a STORE command to report       the new value of the flags. 
  2244.  
  2245.    Example:    S: * 69 STORE (FLAGS (\Deleted)) 
  2246.  
  2247.  
  2248.  
  2249.  
  2250.  
  2251.  
  2252.  
  2253.  
  2254.  
  2255.  
  2256.  
  2257.  
  2258.  
  2259.  
  2260.  
  2261.  
  2262.  
  2263.  
  2264.  
  2265.  
  2266.  
  2267.  
  2268.  
  2269.  
  2270.  
  2271.  
  2272.  
  2273.  
  2274.  
  2275.  
  2276.  
  2277.  
  2278.  
  2279.  
  2280.  
  2281.  Crispin                                                        [Page 69] 
  2282.  RFC 1730                         IMAP4                     December 1994 
  2283.  
  2284.  C.      References 
  2285.  
  2286.     [IMAP-AUTH] Myers, J., "IMAP4 Authentication Mechanism", RFC 1731.    Carnegie-Mellon University, December 1994. 
  2287.  
  2288.    [IMAP-COMPAT] Crispin, M. "IMAP4 Compatibility with IMAP2 and    IMAP2bis", RFC 1732, University of Washington, December 1994. 
  2289.  
  2290.    [IMAP-DISC] Austein, R. "Synchronization Operations for Disconnected    IMAP4 Clients", Work in Progress. 
  2291.  
  2292.    [IMAP-MODEL] Crispin, M. "Distributed Electronic Mail Models in    IMAP4", RFC 1733, University of Washington, December 1994. 
  2293.  
  2294.    [IMAP-NAMING] Crispin, M. "Mailbox Naming Convention in IMAP4", Work    in Progress. 
  2295.  
  2296.    [IMAP2] Crispin, M., "Interactive Mail Access Protocol - Version 2",    RFC 1176, University of Washington, August 1990. 
  2297.  
  2298.    [IMSP] Myers, J. "IMSP -- Internet Message Support Protocol", Work in    Progress. 
  2299.  
  2300.    [MIME-1] Borenstein, N., and Freed, N., "MIME (Multipurpose Internet    Mail Extensions) Part One: Mechanisms for Specifying and Describing    the Format of Internet Message Bodies", RFC 1521, Bellcore, Innosoft,    September 1993. 
  2301.  
  2302.    [MIME-2] Moore, K., "MIME (Multipurpose Internet Mail Extensions)    Part Two: Message Header Extensions for Non-ASCII Text", RFC 1522,    University of Tennessee, September 1993. 
  2303.  
  2304.    [RFC-822] Crocker, D., "Standard for the Format of ARPA Internet Text    Messages", STD 11, RFC 822, University of Delaware, August 1982. 
  2305.  
  2306.    [SMTP] Postel, Jonathan B. "Simple Mail Transfer Protocol", STD 10,    RFC 821, USC/Information Sciences Institute, August 1982. 
  2307.  
  2308.  
  2309.  
  2310.  
  2311.  
  2312.  
  2313.  
  2314.  
  2315.  
  2316.  
  2317.  
  2318.  
  2319.  
  2320. Crispin                                                        [Page 70] 
  2321.  RFC 1730                         IMAP4                     December 1994 
  2322.  
  2323.  E.      IMAP4 Keyword Index 
  2324.  
  2325.         +FLAGS <flag list> (store command data item) ...............   34        +FLAGS.SILENT <flag list> (store command data item) ........   34        -FLAGS <flag list> (store command data item) ...............   34        -FLAGS.SILENT <flag list> (store command data item) ........   34        ALERT (response code) ......................................   39        ALL (fetch item) ...........................................   29        ALL (search key) ...........................................   27        ANSWERED (search key) ......................................   27        APPEND (command) ...........................................   22        AUTHENTICATE (command) .....................................   12        BAD (response) .............................................   41        BCC <string> (search key) ..................................   27        BEFORE <date> (search key) .................................   27        BODY (fetch item) ..........................................   29        BODY (fetch result) ........................................   46        BODY <string> (search key) .................................   27        BODY.PEEK[<section>] (fetch item) ..........................   30        BODYSTRUCTURE (fetch item) .................................   31        BODYSTRUCTURE (fetch result) ...............................   47        BODY[<section>] (fetch item) ...............................   29        BODY[section] (fetch result) ...............................   46        BYE (response) .............................................   41        CAPABILITY (command) .......................................   10        CAPABILITY (response) ......................................   42        CC <string> (search key) ...................................   27        CHECK (command) ............................................   23        CLOSE (command) ............................................   24        COPY (command) .............................................   34        COPY (response) ............................................   68        CREATE (command) ...........................................   17        DELETE (command) ...........................................   18        DELETED (search key) .......................................   27        DRAFT (search key) .........................................   27        ENVELOPE (fetch item) ......................................   31        ENVELOPE (fetch result) ....................................   49        EXAMINE (command) ..........................................   16        EXISTS (response) ..........................................   45        EXPUNGE (command) ..........................................   25        EXPUNGE (response) .........................................   45        FAST (fetch item) ..........................................   31        FETCH (command) ............................................   29        FETCH (response) ...........................................   46        FIND ALL.MAILBOXES (command) ...............................   65        FIND MAILBOXES (command) ...................................   65        FLAGGED (search key) .......................................   27        FLAGS (fetch item) .........................................   31 
  2326.  
  2327.  
  2328.  
  2329. Crispin                                                        [Page 71] 
  2330.  RFC 1730                         IMAP4                     December 1994 
  2331.  
  2332.  
  2333.  
  2334.        FLAGS (fetch result) .......................................   50        FLAGS (response) ...........................................   44        FLAGS <flag list> (store command data item) ................   34        FLAGS.SILENT <flag list> (store command data item) .........   34        FROM <string> (search key) .................................   27        FULL (fetch item) ..........................................   31        HEADER <field-name> <string> (search key) ..................   27        INTERNALDATE (fetch item) ..................................   31        INTERNALDATE (fetch result) ................................   50        KEYWORD <flag> (search key) ................................   27        LARGER <n> (search key) ....................................   27        LIST (command) .............................................   20        LIST (response) ............................................   43        LOGIN (command) ............................................   14        LOGOUT (command) ...........................................   11        LSUB (command) .............................................   22        LSUB (response) ............................................   44        MAILBOX (response) .........................................   68        NEW (search key) ...........................................   27        NO (response) ..............................................   40        NOOP (command) .............................................   11        NOT <search-key> (search key) ..............................   28        OK (response) ..............................................   40        OLD (search key) ...........................................   28        ON <date> (search key) .....................................   28        OR <search-key1> <search-key2> (search key) ................   28        PARSE (response code) ......................................   39        PARTIAL (command) ..........................................   32        PERMANENTFLAGS (response code) .............................   39        PREAUTH (response) .........................................   41        READ-ONLY (response code) ..................................   39        READ-WRITE (response code) .................................   39        RECENT (response) ..........................................   45        RECENT (search key) ........................................   28        RENAME (command) ...........................................   18        RFC822 (fetch item) ........................................   31        RFC822 (fetch result) ......................................   50        RFC822.HEADER (fetch item) .................................   31        RFC822.HEADER (fetch result) ...............................   50        RFC822.HEADER.LINES <header_list> (fetch item) .............   31        RFC822.HEADER.LINES.NOT <header_list> (fetch item) .........   32        RFC822.PEEK (fetch item) ...................................   31        RFC822.SIZE (fetch item) ...................................   32        RFC822.SIZE (fetch result) .................................   50        RFC822.TEXT (fetch item) ...................................   32        RFC822.TEXT (fetch result) .................................   51        RFC822.TEXT.PEEK (fetch item) ..............................   32        SEARCH (command) ...........................................   25 
  2335.  
  2336.  
  2337.  
  2338. Crispin                                                        [Page 72] 
  2339.  RFC 1730                         IMAP4                     December 1994 
  2340.  
  2341.  
  2342.  
  2343.        SEARCH (response) ..........................................   44        SEEN (search key) ..........................................   28        SELECT (command) ...........................................   15        SENTBEFORE <date> (search key) .............................   28        SENTON <date> (search key) .................................   28        SENTSINCE <date> (search key) ..............................   28        SINCE <date> (search key) ..................................   28        SMALLER <n> (search key) ...................................   28        STORE (command) ............................................   33        STORE (response) ...........................................   69        SUBJECT <string> (search key) ..............................   28        SUBSCRIBE (command) ........................................   19        SUBSCRIBE MAILBOX (command) ................................   66        TEXT <string> (search key) .................................   28        TO <string> (search key) ...................................   28        TRYCREATE (response code) ..................................   39        UID (command) ..............................................   35        UID (fetch item) ...........................................   32        UID (fetch result) .........................................   51        UID <message set> (search key) .............................   28        UIDVALIDITY (response code) ................................   40        UNANSWERED (search key) ....................................   29        UNDELETED (search key) .....................................   29        UNDRAFT (search key) .......................................   29        UNFLAGGED (search key) .....................................   29        UNKEYWORD <flag> (search key) ..............................   29        UNSEEN (response code) .....................................   40        UNSEEN (search key) ........................................   29        UNSUBSCRIBE (command) ......................................   19        UNSUBSCRIBE MAILBOX (command) ..............................   66        X<atom> (command) ..........................................   37        \Answered (system flag) ....................................   50        \Deleted (system flag) .....................................   50        \Draft (system flag) .......................................   50        \Flagged (system flag) .....................................   50        \Marked (mailbox name attribute) ...........................   43        \Noinferiors (mailbox name attribute) ......................   43        \Noselect (mailbox name attribute) .........................   43        \Recent (system flag) ......................................   50        \Seen (system flag) ........................................   50        \Unmarked (mailbox name attribute) .........................   43 
  2344.  
  2345.  
  2346.  
  2347.  
  2348.  
  2349.  
  2350.  
  2351.  
  2352.  
  2353.  Crispin                                                        [Page 73] 
  2354.  
  2355.