aboutsummaryrefslogtreecommitdiffstats
path: root/RFC/rfc1730.txt
diff options
context:
space:
mode:
Diffstat (limited to 'RFC/rfc1730.txt')
-rw-r--r--RFC/rfc1730.txt4318
1 files changed, 0 insertions, 4318 deletions
diff --git a/RFC/rfc1730.txt b/RFC/rfc1730.txt
deleted file mode 100644
index fcf72ad7..00000000
--- a/RFC/rfc1730.txt
+++ /dev/null
@@ -1,4318 +0,0 @@
-
-
-
-
-
-
-Network Working Group M. Crispin
-Request for Comments: 1730 University of Washington
-Category: Standards Track December 1994
-
-
- INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4
-
-
-
-Status of this Memo
-
- 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.
-
-
-Abstract
-
- 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]).
-
- 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).
-
- IMAP4 supports a single server. A mechanism for supporting multiple
- IMAP4 servers is discussed in [IMSP].
-
- IMAP4 does not specify a means of posting mail; this function is
- handled by a mail transfer protocol such as [SMTP].
-
- IMAP4 is designed to be upwards compatible from the [IMAP2] protocol.
- Compatibility issues are discussed in [IMAP-COMPAT].
-
-
-
-
-
-
-Crispin [Page i]
-
-RFC 1730 IMAP4 December 1994
-
-
-
-
-
-Table of Contents
-
-
-
-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
-
-
-
-Crispin [Page ii]
-
-RFC 1730 IMAP4 December 1994
-
-
-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
-
-
-
-Crispin [Page iii]
-
-RFC 1730 IMAP4 December 1994
-
-
-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
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Crispin [Page iv]
-
-RFC 1730 IMAP4 December 1994
-
-
-IMAP4 Protocol Specification
-
-1. Organization of this Document
-
-1.1. How to Read This Document
-
- 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.
-
- 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.
-
-
-1.2. Conventions Used in this Document
-
- In examples, "C:" and "S:" indicate lines sent by the client and
- server respectively.
-
-
-2. Protocol Overview
-
-2.1. Link Level
-
- The IMAP4 protocol assumes a reliable data stream such as provided by
- TCP. When TCP is used, an IMAP4 server listens on port 143.
-
-
-2.2. Commands and Responses
-
- 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.
-
- 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.
-
-
-
-
-
-
-Crispin [Page 1]
-
-RFC 1730 IMAP4 December 1994
-
-
-2.2.1. Client Protocol Sender and Server Protocol Receiver
-
- 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.
-
- 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 "+".
-
- 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.
-
- 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.
-
- 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.
-
-
-2.2.2. Server Protocol Sender and Client Protocol Receiver
-
- 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.
-
- 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.
-
- 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
-
-
-
-Crispin [Page 2]
-
-RFC 1730 IMAP4 December 1994
-
-
- 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).
-
- 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.
-
- 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.
-
- This topic is discussed in greater detail in the Server Responses
- section.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Crispin [Page 3]
-
-RFC 1730 IMAP4 December 1994
-
-
-3. State and Flow Diagram
-
- 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.
-
-
-3.1. Non-Authenticated State
-
- 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.
-
-
-3.2. Authenticated State
-
- 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.
-
-
-3.3. Selected State
-
- In selected state, a mailbox has been selected to access. This state
- is entered when a mailbox has been successfully selected.
-
-
-3.4. Logout State
-
- 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.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Crispin [Page 4]
-
-RFC 1730 IMAP4 December 1994
-
-
- +--------------------------------------+
- |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 |
- +--------------------------------------+
-
- (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
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Crispin [Page 5]
-
-RFC 1730 IMAP4 December 1994
-
-
-4. Data Formats
-
- IMAP4 uses textual commands and responses. Data in IMAP4 can be in
- one of several forms: atom, number, string, parenthesized list, or
- NIL.
-
-
-4.1. Atom
-
- An atom consists of one or more non-special characters.
-
-
-4.2. Number
-
- A number consists of one or more digit characters, and represents a
- numeric value.
-
-
-4.3. String
-
- 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.
-
- 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).
-
- 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).
-
- Note: Even if the octet count is 0, a client transmitting a
- literal must wait to receive a command continuation
- request.
-
-
-
-
-
-
-
-Crispin [Page 6]
-
-RFC 1730 IMAP4 December 1994
-
-
-4.3.1. 8-bit and Binary Strings
-
- 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.
-
- 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.
-
-
-4.4. Parenthesized List
-
- 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.
-
- The empty list is represented as () -- a parenthesized list with no
- members.
-
-
-4.5. NIL
-
- 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 ().
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Crispin [Page 7]
-
-RFC 1730 IMAP4 December 1994
-
-
-5. Operational Considerations
-
-5.1. Mailbox Naming
-
- 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.
-
-5.2. Mailbox Size and Message Status Updates
-
- 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.
-
- 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.
-
-
-5.3. Response when no Command in Progress
-
- 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.
-
-
-
-
-
-
-
-
-
-
-Crispin [Page 8]
-
-RFC 1730 IMAP4 December 1994
-
-
-5.4. Autologout Timer
-
- 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.
-
-
-5.5. Multiple Commands in Progress
-
- 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.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Crispin [Page 9]
-
-RFC 1730 IMAP4 December 1994
-
-
-6. Client Commands
-
- 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).
-
- 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.
-
- 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".
-
- The "Result:" in the command description refers to the possible
- tagged status responses to a command, and any special interpretation
- of these status responses.
-
-
-6.1. Client Commands - Any State
-
- The following commands are valid in any state: CAPABILITY, NOOP, and
- LOGOUT.
-
-6.1.1. CAPABILITY Command
-
- Arguments: none
-
- Data: mandatory untagged response: CAPABILITY
-
- Result: OK - capability completed
- BAD - command unknown or arguments invalid
-
- 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.
-
-
-
-Crispin [Page 10]
-
-RFC 1730 IMAP4 December 1994
-
-
- 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.
-
- Example: C: abcd CAPABILITY
- S: * CAPABILITY IMAP4
- S: abcd OK CAPABILITY completed
-
-
-6.1.2. NOOP Command
-
- Arguments: none
-
- Data: no specific data for this command (but see below)
-
- Result: OK - noop completed
- BAD - command unknown or arguments invalid
-
- The NOOP command always succeeds. It does nothing.
-
- 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.
-
- 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
-
-
-
-
-
-
-
-
-
-
-
-
-Crispin [Page 11]
-
-RFC 1730 IMAP4 December 1994
-
-
-6.1.3. LOGOUT Command
-
- Arguments: none
-
- Data: mandatory untagged response: BYE
-
- Result: OK - logout completed
- BAD - command unknown or arguments invalid
-
- 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.
-
- Example: C: A023 LOGOUT
- S: * BYE IMAP4 Server logging out
- S: A023 OK LOGOUT completed
- (Server and client then close the connection)
-
-
-
-6.2. Client Commands - Non-Authenticated State
-
- 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.
-
- 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.
-
- Once authenticated (including as anonymous), it is not possible to
- re-enter non-authenticated state.
-
- In addition to the universal commands (CAPABILITY, NOOP, and LOGOUT),
- the following commands are valid in non-authenticated state:
- AUTHENTICATE and LOGIN.
-
-
-
-
-
-
-
-
-
-
-
-Crispin [Page 12]
-
-RFC 1730 IMAP4 December 1994
-
-
-6.2.1. AUTHENTICATE Command
-
- Arguments: authentication mechanism name
-
- Data: continuation data may be requested
-
- 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
-
- 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.
-
- 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.
-
- 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.
-
- 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
-
-
-
-Crispin [Page 13]
-
-RFC 1730 IMAP4 December 1994
-
-
- 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.
-
- 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
-
- Note: the line breaks in the first client answer are for
- editorial clarity and are not in real authenticators.
-
-
-6.2.2. LOGIN Command
-
- Arguments: user name
- password
-
- Data: no specific data for this command
-
- Result: OK - login completed, now in authenticated state
- NO - login failure: user name or password rejected
- BAD - command unknown or arguments invalid
-
- The LOGIN command identifies the user to the server and carries
- the plaintext password authenticating this user.
-
- Example: C: a001 LOGIN SMITH SESAME
- S: a001 OK LOGIN completed
-
-
-
-6.3. Client Commands - Authenticated State
-
- 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.
-
-
-
-
-
-
-
-Crispin [Page 14]
-
-RFC 1730 IMAP4 December 1994
-
-
- 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.
-
-6.3.1. SELECT Command
-
- Arguments: mailbox name
-
- Data: mandatory untagged responses: FLAGS, EXISTS, RECENT
- optional OK untagged responses: UNSEEN, PERMANENTFLAGS
-
- 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
-
- 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:
-
- FLAGS Defined flags in the mailbox
-
- <n> EXISTS The number of messages in the mailbox
-
- <n> RECENT The number of messages added to the mailbox since
- the previous time this mailbox was read
-
- OK [UIDVALIDITY <n>]
- The unique identifier validity value. See the
- description of the UID command for more detail.
-
- 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.
-
- 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.
-
- 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.
-
- Only one mailbox may be selected at a time in a session;
- simultaneous access to multiple mailboxes requires multiple
-
-
-
-Crispin [Page 15]
-
-RFC 1730 IMAP4 December 1994
-
-
- 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.
-
- 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.
-
- 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.
-
- 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
-
-
-6.3.2. EXAMINE Command
-
- Arguments: mailbox name
-
- Data: mandatory untagged responses: FLAGS, EXISTS, RECENT
- optional OK untagged responses: UNSEEN, PERMANENTFLAGS
-
- 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
-
- 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.
-
-
-
-
-
-
-Crispin [Page 16]
-
-RFC 1730 IMAP4 December 1994
-
-
- The text of the tagged OK response to the EXAMINE command MUST
- begin with the "[READ-ONLY]" response code.
-
- 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
-
-
-6.3.3. CREATE Command
-
- Arguments: mailbox name
-
- Data: no specific data for this command
-
- Result: OK - create completed
- NO - create failure: can't create mailbox with that name
- BAD - command unknown or arguments invalid
-
- 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.
-
- 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.
-
- 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.
-
- Example: C: A003 CREATE owatagusiam/
- S: A003 OK CREATE completed
- C: A004 CREATE owatagusiam/blurdybloop
- S: A004 OK CREATE completed
-
-
-
-
-Crispin [Page 17]
-
-RFC 1730 IMAP4 December 1994
-
-
- 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.
-
-
-6.3.4. DELETE Command
-
- Arguments: mailbox name
-
- Data: no specific data for this command
-
- Result: OK - delete completed
- NO - delete failure: can't delete mailbox with that name
- BAD - command unknown or arguments invalid
-
- 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.
-
- 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.
-
- Example: C: A683 DELETE blurdybloop
- S: A683 OK DELETE completed
-
-
-6.3.5. RENAME Command
-
- Arguments: existing mailbox name
- new mailbox name
-
- Data: no specific data for this command
-
- 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
-
-
-
-
-
-Crispin [Page 18]
-
-RFC 1730 IMAP4 December 1994
-
-
- 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.
-
- Renaming INBOX is permitted; a new, empty INBOX is created in its
- place.
-
- Example: C: Z4S9 RENAME blurdybloop owatagusiam
- S: Z4S9 OK RENAME completed
-
-
-6.3.6. SUBSCRIBE Command
-
- Arguments: mailbox
-
- Data: no specific data for this command
-
- Result: OK - subscribe completed
- NO - subscribe failure: can't subscribe to that name
- BAD - command unknown or arguments invalid
-
- 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.
-
- Example: C: A002 SUBSCRIBE #news.comp.mail.mime
- S: A002 OK SUBSCRIBE completed
-
-
-6.3.7. UNSUBSCRIBE Command
-
- Arguments: mailbox name
-
- Data: no specific data for this command
-
- Result: OK - unsubscribe completed
- NO - unsubscribe failure: can't unsubscribe that name
- BAD - command unknown or arguments invalid
-
- 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.
-
-
-
-
-
-Crispin [Page 19]
-
-RFC 1730 IMAP4 December 1994
-
-
- Example: C: A002 UNSUBSCRIBE #news.comp.mail.mime
- S: A002 OK UNSUBSCRIBE completed
-
-
-6.3.8. LIST Command
-
- Arguments: reference name
- mailbox name with possible wildcards
-
- Data: untagged responses: LIST
-
- Result: OK - list completed
- NO - list failure: can't list that reference or name
- BAD - command unknown or arguments invalid
-
- 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.
-
- 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.
-
- 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.
-
-
-
-
-
-
-
-
-
-Crispin [Page 20]
-
-RFC 1730 IMAP4 December 1994
-
-
- For example, here are some examples of how references
- and mailbox names might be interpreted on a UNIX-based
- server:
-
- Reference Mailbox Name Interpretation
- ------------ ------------ --------------
- ~smith/Mail/ foo.* ~smith/Mail/foo.*
- archive/ % archive/%
- #news. comp.mail.* #news.comp.mail.*
- ~smith/Mail/ /usr/doc/foo /usr/doc/foo
- archive/ ~fred/Mail/* ~fred/Mail/*
-
- The first three examples demonstrate interpretations in
- the context of the reference argument. Note that
- "~smith/Mail" should not be transformed into something
- like "/u2/users/smith/Mail", or it would be impossible
- for the client to determine that the interpretation was
- in the context of the reference.
-
- The character "*" is a wildcard, and matches zero or more
- characters at this position. The character "%" is similar to "*",
- but it does not match a hierarchy delimiter. If the "%" wildcard
- is the last character of a mailbox name argument, matching levels
- of hierarchy are also returned. If these levels of hierarchy are
- not also selectable mailboxes, they are returned with the
- \Noselect mailbox name attribute (see the description of the LIST
- response for more detail).
-
- Server implementations are permitted to "hide" otherwise
- accessible mailboxes from the wildcard characters, by preventing
- certain characters or names from matching a wildcard in certain
- situations. For example, a UNIX-based server might restrict the
- interpretation of "*" so that an initial "/" character does not
- match.
-
- The special name INBOX is included in the output from LIST if 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.
-
- Example: C: A002 LIST "~/Mail/" "%"
- S: * LIST (\Noselect) "/" ~/Mail/foo
- S: * LIST () "/" ~/Mail/meetings
- S: A002 OK LIST completed
-
-
-
-
-
-
-Crispin [Page 21]
-
-RFC 1730 IMAP4 December 1994
-
-
-6.3.9. LSUB Command
-
- Arguments: reference name
- mailbox name with possible wildcards
-
- Data: untagged responses: LSUB
-
- Result: OK - lsub completed
- NO - lsub failure: can't list that reference or name
- BAD - command unknown or arguments invalid
-
- The LSUB command returns a subset of names from the set of names
- that the user has declared as being "active" or "subscribed".
- Zero or more untagged LSUB replies are returned. The arguments to
- LSUB are in the same form as those for LIST.
-
- Example: C: A002 LSUB "#news." "comp.mail.*"
- S: * LSUB () "." #news.comp.mail.mime
- S: * LSUB () "." #news.comp.mail.misc
- S: A002 OK LSUB completed
-
-
-6.3.10. APPEND Command
-
- Arguments: mailbox name
- optional flag parenthesized list
- optional date/time string
- message literal
-
- Data: no specific data for this command
-
- Result: OK - append completed
- NO - append error: can't append to that mailbox, error
- in flags or date/time or message text
- BAD - command unknown or arguments invalid
-
- The APPEND command appends the literal argument as a new message
- 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.
-
- 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.
-
-
-
-
-
-Crispin [Page 22]
-
-RFC 1730 IMAP4 December 1994
-
-
- 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.
-
- 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.
-
- 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
-
- Note: the APPEND command is not used for message delivery,
- because it does not provide a mechanism to transfer [SMTP]
- envelope information.
-
-
-
-6.4. Client Commands - Selected State
-
- In selected state, commands that manipulate messages in a mailbox are
- permitted.
-
- In addition to the universal commands (CAPABILITY, NOOP, and LOGOUT),
- and the authenticated state commands (SELECT, EXAMINE, CREATE,
- DELETE, RENAME, SUBSCRIBE, UNSUBSCRIBE, LIST, LSUB, 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.
-
-
-
-
-
-
-
-
-Crispin [Page 23]
-
-RFC 1730 IMAP4 December 1994
-
-
-6.4.1. CHECK Command
-
- Arguments: none
-
- Data: no specific data for this command
-
- Result: OK - check completed
- BAD - command unknown or arguments invalid
-
- The CHECK command requests a checkpoint of the currently selected
- mailbox. A checkpoint refers to any implementation-dependent
- housekeeping associated with the mailbox (e.g. resolving the
- server's in-memory state of the mailbox with the state on its
- disk) that is not normally executed as part of each command. A
- checkpoint may take a non-instantaneous amount of real time to
- complete. If a server implementation has no such housekeeping
- considerations, CHECK is equivalent to NOOP.
-
- There is no guarantee that an EXISTS untagged response will happen
- as a result of CHECK. NOOP, not CHECK, should be used for new
- mail polling.
-
- Example: C: FXXZ CHECK
- S: FXXZ OK CHECK Completed
-
-
-6.4.2. CLOSE Command
-
- Arguments: none
-
- Data: no specific data for this command
-
- Result: OK - close completed, now in authenticated state
- NO - close failure: no mailbox selected
- BAD - command unknown or arguments invalid
-
- The CLOSE command permanently removes from the currently selected
- mailbox all messages that have the \Deleted flag set, and returns
- to authenticated state from selected state. No untagged EXPUNGE
- responses are sent.
-
- No messages are removed, and no error is given, if the mailbox is
- selected by an EXAMINE command or is otherwise selected read-only.
-
- Even 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,
-
-
-
-Crispin [Page 24]
-
-RFC 1730 IMAP4 December 1994
-
-
- 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.
-
- Example: C: A341 CLOSE
- S: A341 OK CLOSE completed
-
-
-6.4.3. EXPUNGE Command
-
- Arguments: none
-
- Data: untagged responses: EXPUNGE
-
- Result: OK - expunge completed
- NO - expunge failure: can't expunge (e.g. permission
- denied)
- BAD - command unknown or arguments invalid
-
- The EXPUNGE command permanently removes from the currently
- selected mailbox all messages that have the \Deleted flag set.
- Before returning an OK to the client, an untagged EXPUNGE response
- is sent for each message that is removed.
-
- Example: C: A202 EXPUNGE
- S: * 3 EXPUNGE
- S: * 3 EXPUNGE
- S: * 5 EXPUNGE
- S: * 8 EXPUNGE
- S: A202 OK EXPUNGE completed
-
- Note: in this example, messages 3, 4, 7, and 11 had the
- \Deleted flag set. See the description of the EXPUNGE
- response for further explanation.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Crispin [Page 25]
-
-RFC 1730 IMAP4 December 1994
-
-
-6.4.4. SEARCH Command
-
- Arguments: optional character set specification
- searching criteria (one or more)
-
- Data: mandatory untagged response: SEARCH
-
- Result: OK - search completed
- NO - search error: can't search that character set or
- criteria
- BAD - command unknown or arguments invalid
-
- The SEARCH command searches the mailbox for messages that match
- the given searching criteria. Searching criteria consist of one
- or more search keys. The untagged SEARCH response from the server
- contains a listing of message sequence numbers corresponding to
- those messages that match the searching criteria.
-
- When multiple keys are specified, the result is the intersection
- (AND function) of all the messages that match those keys. For
- example, the criteria DELETED FROM "SMITH" SINCE 1-Feb-1994 refers
- to all deleted messages from Smith that were placed in the mailbox
- since February 1, 1994. A search key may also be a parenthesized
- list of one or more search keys (e.g. for use with the OR and NOT
- keys).
-
- Server implementations MAY exclude [MIME-1] body parts with
- terminal content types other than TEXT and MESSAGE from
- consideration in SEARCH matching.
-
- 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).
-
- 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.
-
-
-
-
-
-
-
-
-Crispin [Page 26]
-
-RFC 1730 IMAP4 December 1994
-
-
- The defined search keys are as follows. Refer to the Formal
- Syntax section for the precise syntactic definitions of the
- arguments.
-
- <message set> Messages with message sequence numbers
- corresponding to the specified message sequence
- number set
-
- ALL All messages in the mailbox; the default initial
- key for ANDing.
-
- ANSWERED Messages with the \Answered flag set.
-
- BCC <string> Messages that contain the specified string in the
- envelope structure's BCC field.
-
- BEFORE <date> Messages whose internal date is earlier than the
- specified date.
-
- BODY <string> Messages that contain the specified string in the
- body of the message.
-
- CC <string> Messages that contain the specified string in the
- envelope structure's CC field.
-
- DELETED Messages with the \Deleted flag set.
-
- DRAFT Messages with the \Draft flag set.
-
- FLAGGED Messages with the \Flagged flag set.
-
- FROM <string> Messages that contain the specified string in the
- envelope structure's FROM field.
-
- HEADER <field-name> <string>
- Messages that have a header with the specified
- field-name (as defined in [RFC-822]) and that
- contains the specified string in the [RFC-822]
- field-body.
-
- KEYWORD <flag> Messages with the specified keyword set.
-
- LARGER <n> Messages with an RFC822.SIZE larger than the
- specified number of octets.
-
- NEW Messages that have the \Recent flag set but not the
- \Seen flag. This is functionally equivalent to
- "(RECENT UNSEEN)".
-
-
-
-Crispin [Page 27]
-
-RFC 1730 IMAP4 December 1994
-
-
- NOT <search-key>
- Messages that do not match the specified search
- key.
-
- OLD Messages that do not have the \Recent flag set.
- This is functionally equivalent to "NOT RECENT" (as
- opposed to "NOT NEW").
-
- ON <date> Messages whose internal date is within the
- specified date.
-
- OR <search-key1> <search-key2>
- Messages that match either search key.
-
- RECENT Messages that have the \Recent flag set.
-
- SEEN Messages that have the \Seen flag set.
-
- SENTBEFORE <date>
- Messages whose [RFC-822] Date: header is earlier
- than the specified date.
-
- SENTON <date> Messages whose [RFC-822] Date: header is within the
- specified date.
-
- SENTSINCE <date>
- Messages whose [RFC-822] Date: header is within or
- later than the specified date.
-
- SINCE <date> Messages whose internal date is within or later
- than the specified date.
-
- SMALLER <n> Messages with an RFC822.SIZE smaller than the
- specified number of octets.
-
- SUBJECT <string>
- Messages that contain the specified string in the
- envelope structure's SUBJECT field.
-
- TEXT <string> Messages that contain the specified string in the
- header or body of the message.
-
- TO <string> Messages that contain the specified string in the
- envelope structure's TO field.
-
- UID <message set>
- Messages with unique identifiers corresponding to
- the specified unique identifier set.
-
-
-
-Crispin [Page 28]
-
-RFC 1730 IMAP4 December 1994
-
-
- UNANSWERED Messages that do not have the \Answered flag set.
-
- UNDELETED Messages that do not have the \Deleted flag set.
-
- UNDRAFT Messages that do not have the \Draft flag set.
-
- UNFLAGGED Messages that do not have the \Flagged flag set.
-
- UNKEYWORD <flag>
- Messages that do not have the specified keyword
- set.
-
- UNSEEN Messages that do not have the \Seen flag set.
-
-
- Example: C: A282 SEARCH FLAGGED SINCE 1-Feb-1994 NOT FROM "Smith"
- S: * SEARCH 2 84 882
- S: A282 OK SEARCH completed
-
-
-6.4.5. FETCH Command
-
- Arguments: message set
- message data item names
-
- Data: untagged responses: FETCH
-
- Result: OK - fetch completed
- NO - fetch error: can't fetch that data
- BAD - command unknown or arguments invalid
-
- The FETCH command retrieves data associated with a message in the
- mailbox. The data items to be fetched may be either a single atom
- or a parenthesized list. The currently defined data items that
- can be fetched are:
-
- ALL Macro equivalent to: (FLAGS INTERNALDATE
- RFC822.SIZE ENVELOPE)
-
- BODY Non-extensible form of BODYSTRUCTURE.
-
- BODY[<section>]
- The text of a particular body section. The section
- specification is a set of one or more part numbers
- delimited by periods.
-
- Single-part messages only have a part 1.
-
-
-
-
-Crispin [Page 29]
-
-RFC 1730 IMAP4 December 1994
-
-
- 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.
-
- 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.
-
- Every message has at least one part.
-
- Here is an example of a complex message
- with its associated section
- specifications:
-
- 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
-
- Note that there is no section
- specification for the Multi-part parts
- (no section 4 or 4.2.2).
-
- The \Seen flag is implicitly set; if this causes
- the flags to change they should be included as part
- of the fetch responses.
-
- BODY.PEEK[<section>]
- An alternate form of BODY[section] that does not
- implicitly set the \Seen flag.
-
-
-
-Crispin [Page 30]
-
-RFC 1730 IMAP4 December 1994
-
-
- BODYSTRUCTURE The [MIME-1] body structure of the message. This
- is computed by the server by parsing the [MIME-1]
- header lines.
-
- ENVELOPE The envelope structure of the message. This is
- computed by the server by parsing the [RFC-822]
- header into the component parts, defaulting various
- fields as necessary.
-
- FAST Macro equivalent to: (FLAGS INTERNALDATE
- RFC822.SIZE)
-
- FLAGS The flags that are set for this message.
-
- FULL Macro equivalent to: (FLAGS INTERNALDATE
- RFC822.SIZE ENVELOPE BODY)
-
- INTERNALDATE The date and time of final delivery of the message
- as defined by RFC 821.
-
- 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.
-
- RFC822.PEEK An alternate form of RFC822 that does not
- implicitly set the \Seen flag.
-
- 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.
-
- 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.
-
-
-
-
-
-
-
-
-
-
-Crispin [Page 31]
-
-RFC 1730 IMAP4 December 1994
-
-
- 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.
-
- RFC822.SIZE The number of octets in the message, as expressed
- in [RFC-822] format.
-
- 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.
-
- RFC822.TEXT.PEEK
- An alternate form of RFC822.TEXT that does not
- implicitly set the \Seen flag.
-
- UID The unique identifier for the message.
-
-
- 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
-
-
-6.4.6. PARTIAL Command
-
- Arguments: message sequence number
- message data item name
- position of first octet
- number of octets
-
- Data: untagged responses: FETCH
-
- Result: OK - partial completed
- NO - partial error: can't fetch that data
- BAD - command unknown or arguments invalid
-
- 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
-
-
-
-Crispin [Page 32]
-
-RFC 1730 IMAP4 December 1994
-
-
- of a message, and hence the minimum for the starting octet, is
- octet 1.
-
- The following FETCH items are valid data for PARTIAL: RFC822,
- RFC822.HEADER, RFC822.TEXT, BODY[section], as well as any .PEEK
- forms of these.
-
- 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.
-
- 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.
-
- 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.
-
- The handling of the \Seen flag is the same as in the associated
- FETCH command.
-
- 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
-
-
-6.4.7. STORE Command
-
- Arguments: message set
- message data item name
- value for message data item
-
- Data: untagged responses: FETCH
-
- Result: OK - store completed
- NO - store error: can't store that data
- BAD - command unknown or arguments invalid
-
- The STORE command alters data associated with a message in the
- mailbox. Normally, STORE will return the updated value of the
- data with an untagged FETCH response. A suffix of ".SILENT" in
-
-
-
-Crispin [Page 33]
-
-RFC 1730 IMAP4 December 1994
-
-
- 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.
-
- The currently defined data items that can be stored are:
-
- FLAGS <flag list>
- Replace the flags for the message with the
- argument. The new value of the flags are returned
- as if a FETCH of those flags was done.
-
- FLAGS.SILENT <flag list>
- Equivalent to FLAGS, but without returning a new
- value.
-
- +FLAGS <flag list>
- Add the argument to the flags for the message. The
- new value of the flags are returned as if a FETCH
- of those flags was done.
-
- +FLAGS.SILENT <flag list>
- Equivalent to +FLAGS, but without returning a new
- value.
-
- -FLAGS <flag list>
- Remove the argument from the flags for the message.
- The new value of the flags are returned as if a
- FETCH of those flags was done.
-
- -FLAGS.SILENT <flag list>
- Equivalent to -FLAGS, but without returning a new
- value.
-
-
- Example: C: A003 STORE 2:4 +FLAGS (\Deleted)
- S: * 2 FETCH FLAGS (\Deleted \Seen)
- S: * 3 FETCH FLAGS (\Deleted)
- S: * 4 FETCH FLAGS (\Deleted \Flagged \Seen)
- S: A003 OK STORE completed
-
-
-
-
-
-
-
-
-
-
-
-
-Crispin [Page 34]
-
-RFC 1730 IMAP4 December 1994
-
-
-6.4.8. COPY Command
-
- Arguments: message set
- mailbox name
-
- Data: no specific data for this command
-
- Result: OK - copy completed
- NO - copy error: can't copy those messages or to that
- name
- BAD - command unknown or arguments invalid
-
- The COPY command copies the specified message(s) to the specified
- destination mailbox. The flags and internal date of the
- message(s) SHOULD be preserved in the copy.
-
- If the destination mailbox does not exist, a server SHOULD return
- an error. It SHOULD NOT automatically create the mailbox. Unless
- it is certain that the destination mailbox can not be created, the
- server MUST send the response code "[TRYCREATE]" as the prefix of
- the text of the tagged NO response. This gives a hint to the
- client that it can attempt a CREATE command and retry the COPY if
- the CREATE is successful.
-
- If the COPY command is unsuccessful for any reason, server
- implementations MUST restore the destination mailbox to its state
- before the COPY attempt.
-
- Example: C: A003 COPY 2:4 MEETING
- S: A003 OK COPY completed
-
-
-6.4.9. UID Command
-
- Arguments: command name
- command arguments
-
- Data: untagged responses: FETCH, SEARCH
-
- Result: OK - UID command completed
- NO - UID command error
- BAD - command unknown or arguments invalid
-
- The UID command has two forms. In the first form, it takes as its
- arguments a COPY, FETCH, or STORE command with arguments
- appropriate for the associated command. However, the numbers in
- the message set argument are unique identifiers instead of message
- sequence numbers.
-
-
-
-Crispin [Page 35]
-
-RFC 1730 IMAP4 December 1994
-
-
- 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.
-
- 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].
-
- 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.
-
- 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.
-
-
- Message set ranges are permitted; however, there is no guarantee
- that unique identifiers be contiguous. A non-existent unique
- identifier within a message set range is ignored without any error
- message generated.
-
- The number after the "*" in an untagged FETCH response is always a
- message sequence number, not a unique identifier, even for a UID
- command response. However, server implementations MUST implicitly
- include the UID message data item as part of any FETCH response
- caused by a UID command, regardless of whether UID was specified
- as a message data item to the FETCH.
-
-
-
-
-
-Crispin [Page 36]
-
-RFC 1730 IMAP4 December 1994
-
-
- 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
-
-
-
-6.5. Client Commands - Experimental/Expansion
-
-
-6.5.1. X<atom> Command
-
- Arguments: implementation defined
-
- Data: implementation defined
-
- Result: OK - command completed
- NO - failure
- BAD - command unknown or arguments invalid
-
- Any command prefixed with an X is an experimental command.
- Commands which are not part of this specification, or a standard
- or standards-track revision of this specification, MUST use the X
- prefix.
-
- Any added untagged responses issued by an experimental command
- MUST also be prefixed with an X. Server implementations MUST NOT
- send any such untagged responses, unless the client requested it
- by issuing the associated experimental command.
-
- Example: C: a441 CAPABILITY
- S: * CAPABILITY 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
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Crispin [Page 37]
-
-RFC 1730 IMAP4 December 1994
-
-
-7. Server Responses
-
- Server responses are in three forms: status responses, server data,
- and command continuation request.
-
- 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.
-
- The client MUST be prepared to accept any response at all times.
-
- Status responses that are tagged indicate the completion result of a
- client command, and have a tag matching the command.
-
- Some status responses, and all server data, are untagged. An
- untagged response is indicated by the token "*" instead of a tag.
- Untagged status responses indicate server greeting, or server status
- that does not indicate the completion of a command. For historical
- reasons, untagged server data responses are also called "unsolicited
- data", although strictly speaking only unilateral server data is
- truly "unsolicited".
-
- Certain server data MUST be recorded by the client when it is
- received; this is noted in the description of that data. Such data
- conveys critical information which affects the interpretation of all
- subsequent commands and responses (e.g. updates reflecting the
- creation or destruction of messags).
-
- Other server data SHOULD be recorded for later reference; if the
- client does not need to record the data, or if recording the data has
- no obvious purpose (e.g. a SEARCH response when no SEARCH command is
- in progress), the data SHOULD be ignored.
-
- An example of unilateral untagged 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.
-
- 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.
-
-
-
-Crispin [Page 38]
-
-RFC 1730 IMAP4 December 1994
-
-
-7.1. Server Responses - Status Responses
-
- 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.
-
- The currently defined response codes are:
-
- ALERT The human-readable text contains a special alert
- that MUST be presented to the user in a fashion
- that calls the user's attention to the message.
-
- PARSE The human-readable text represents an error in
- parsing the [RFC-822] or [MIME-1] headers of a
- message in the mailbox.
-
- 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.
-
- READ-ONLY The mailbox is selected read-only, or its access
- while selected has changed from read-write to
- read-only.
-
- READ-WRITE The mailbox is selected read-write, or its access
- while selected has changed from read-only to
- read-write.
-
- 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.
-
-
-
-
-Crispin [Page 39]
-
-RFC 1730 IMAP4 December 1994
-
-
- UIDVALIDITY Followed by a decimal number, indicates the unique
- identifier validity value. See the description of
- the UID command for more detail.
-
- UNSEEN Followed by a decimal number, indicates the number
- of the first message without the \Seen flag set.
-
- Additional response codes defined by particular client or server
- implementations should be prefixed with an "X" until they are
- added to a revision of this protocol. Client implementations
- should ignore response codes that they do not recognize.
-
-
-7.1.1. OK Response
-
- Data: optional response code
- human-readable text
-
- The OK response indicates an information message from the server.
- When tagged, it indicates successful completion of the associated
- command. The human-readable text may be presented to the user as
- an information message. The untagged form indicates an
- information-only message; the nature of the information may be
- indicated by a response code.
-
- The untagged form is also used as one of three possible greetings
- at session startup. It indicates that the session is not yet
- authenticated and that a LOGIN command is needed.
-
- Example: S: * OK IMAP4 server ready
- C: A001 LOGIN fred blurdybloop
- S: * OK [ALERT] System shutdown in 10 minutes
- S: A001 OK LOGIN Completed
-
-
-7.1.2. NO Response
-
- Data: optional response code
- human-readable text
-
- The NO response indicates an operational error message from the
- server. When tagged, it indicates unsuccessful completion of the
- associated command. The untagged form indicates a warning; the
- command may still complete successfully. The human-readable text
- describes the condition.
-
-
-
-
-
-
-Crispin [Page 40]
-
-RFC 1730 IMAP4 December 1994
-
-
- 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
-
-
-7.1.3. BAD Response
-
- Data: optional response code
- human-readable text
-
- The BAD response indicates an error message from the server. When
- tagged, it reports a protocol-level error in the client's command;
- the tag indicates the command that caused the error. The untagged
- form indicates a protocol-level error for which the associated
- command can not be determined; it may also indicate an internal
- server failure. The human-readable text describes the condition.
-
- Example: C: ...very long command line...
- S: * BAD Command line too long
- C: ...empty line...
- S: * BAD Empty command line
- C: A443 EXPUNGE
- S: * BAD Disk crash, attempting salvage to a new disk!
- S: * OK Salvage successful, no data lost
- S: A443 OK Expunge completed
-
-
-7.1.4. PREAUTH Response
-
- Data: optional response code
- human-readable text
-
- 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.
-
- Example: S: * PREAUTH IMAP4 server ready and logged in as Smith
-
-
-
-
-
-
-
-
-
-Crispin [Page 41]
-
-RFC 1730 IMAP4 December 1994
-
-
-7.1.5. BYE Response
-
- Data: optional response code
- human-readable text
-
- 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.
-
- 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.
-
- Example: S: * BYE Autologout; idle for too long
-
-
-
-7.2. Server Responses - Server and Mailbox Status
-
- These responses are always untagged. This is how server data are
- transmitted from the server to the client, often as a result of a
- command with the same name.
-
-7.2.1. CAPABILITY Response
-
- Data: capability listing
-
- The CAPABILITY response occurs as a result of a CAPABILITY
- command. The capability listing contains a space-separated
- listing of capability names that the server supports. The first
- name in the capability listing MUST be the atom "IMAP4".
-
- 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.
-
- 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".
-
-
-
-
-
-Crispin [Page 42]
-
-RFC 1730 IMAP4 December 1994
-
-
- Client implementations SHOULD NOT require any capability name
- other than "IMAP4", and MUST ignore any unknown capability names.
-
- Example: S: * CAPABILITY IMAP4 XPIG-LATIN
-
-
-7.2.2. LIST Response
-
- Data: name attributes
- hierarchy delimiter
- name
-
- The LIST response occurs as a result of a LIST command. It
- returns a single name that matches the LIST specification. There
- may be multiple LIST responses for a single LIST command.
-
- Four name attributes are defined:
-
- \Noinferiors It is not possible for any child levels of
- hierarchy to exist under this name; no child levels
- exist now and none can be created in the future.
-
- \Noselect It is not possible to use this name as a selectable
- mailbox.
-
- \Marked The mailbox has been marked "interesting" by the
- server; the mailbox probably contains messages that
- have been added since the last time the mailbox was
- selected.
-
- \Unmarked The mailbox does not contain any additional
- messages since the last time the mailbox was
- selected.
-
- If it is not feasible for the server to determine whether the
- mailbox is "interesting" or not, or if the name is a \Noselect
- name, the server should not send either \Marked or \Unmarked.
-
- 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.
-
-
-
-
-
-
-
-Crispin [Page 43]
-
-RFC 1730 IMAP4 December 1994
-
-
- The name represents an unambiguous left-to-right hierarchy, and
- MUST be valid for use as a reference in LIST and LSUB commands.
- Unless \Noselect is indicated, the name must also be valid as an
- argument for commands, such as SELECT, that accept mailbox names.
-
- Example: S: * LIST (\Noselect) "/" ~/Mail/foo
-
-
-7.2.3. LSUB Response
-
- Data: name attributes
- hierarchy delimiter
- name
-
- The LSUB response occurs as a result of an LSUB command. It
- returns a single name that matches the LSUB specification. There
- may be multiple LSUB responses for a single LSUB command. The
- data is identical in format to the LIST response.
-
- Example: S: * LSUB () "." #news.comp.mail.misc
-
-
-7.2.4. SEARCH Response
-
- Data: zero or more numbers
-
- The SEARCH response occurs as a result of a SEARCH or UID SEARCH
- command. The number(s) refer to those messages that match the
- search criteria. For SEARCH, these are message sequence numbers;
- for UID SEARCH, these are unique identifiers. Each number is
- delimited by a space.
-
- Example: S: * SEARCH 2 3 6
-
-
-7.2.5. FLAGS Response
-
- Data: flag parenthesized list
-
- The FLAGS response occurs as a result of a SELECT or EXAMINE
- command. The flag parenthesized list identifies the flags (at a
- minimum, the system-defined flags) that are applicable for this
- mailbox. Flags other than the system flags may also exist,
- depending on server implementation.
-
- The update from the FLAGS response MUST be recorded by the client.
-
- Example: S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
-
-
-
-Crispin [Page 44]
-
-RFC 1730 IMAP4 December 1994
-
-
-7.3. Server Responses - Message Status
-
- These responses are always untagged. This is how message data are
- transmitted from the server to the client, often as a result of a
- command with the same name. Immediately following the "*" token is a
- number that represents either a message sequence number or a message
- count.
-
-7.3.1. EXISTS Response
-
- Data: none
-
- The EXISTS response reports the number of messages in the mailbox.
- This response occurs as a result of a SELECT or EXAMINE command,
- and if the size of the mailbox changes (e.g. new mail).
-
- The update from the EXISTS response MUST be recorded by the
- client.
-
- Example: S: * 23 EXISTS
-
-
-7.3.2. RECENT Response
-
- Data: none
-
- 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).
-
- The update from the RECENT response MUST be recorded by the
- client.
-
- Example: S: * 5 RECENT
-
-
-7.3.3. EXPUNGE Response
-
- Data: none
-
- The EXPUNGE response reports that the specified message sequence
- number has been permanently removed from the mailbox. The message
- sequence number for each successive message in the mailbox is
- immediately decremented by 1, and this decrement is reflected in
- message sequence numbers in subsequent responses (including other
- untagged EXPUNGE responses).
-
-
-
-
-Crispin [Page 45]
-
-RFC 1730 IMAP4 December 1994
-
-
- 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.
-
- An EXPUNGE response MUST NOT be sent when no command is in
- progress; nor while responding to a FETCH, STORE, or SEARCH
- command. This rule is necessary to prevent a loss of
- synchronization of message sequence numbers between client and
- server.
-
- The update from the EXPUNGE response MUST be recorded by the
- client.
-
- Example: S: * 44 EXPUNGE
-
-
-7.3.4. FETCH Response
-
- Data: message data
-
- The FETCH response returns data about a message to the client.
- The data are pairs of data item names and their values in
- parentheses. This response occurs as the result of a FETCH or
- STORE command, as well as by unilateral server decision (e.g. flag
- updates).
-
- The current data items are:
-
- BODY A form of BODYSTRUCTURE without extension data.
-
- BODY[section] 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.
-
- 8-bit textual data is permitted if a character set
- identifier is part of the body parameter
- parenthesized list for this section.
-
- 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
-
-
-
-Crispin [Page 46]
-
-RFC 1730 IMAP4 December 1994
-
-
- original binary data, the client must decode the
- transfer encoded string.
-
- 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.
-
- 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.).
-
- 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.
-
- The extension data of a multipart body part are in
- the following order:
-
- body parameter parenthesized list
- A parenthesized list of attribute/value pairs
- [e.g. (foo bar baz rag) where "bar" is the value
- of "foo" and "rag" is the value of "baz"] as
- defined in [MIME-1].
-
- 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.
-
- The basic fields of a non-multipart body part are
- in the following order:
-
- body type
- A string giving the content type name as defined
- in [MIME-1].
-
-
-
-
-Crispin [Page 47]
-
-RFC 1730 IMAP4 December 1994
-
-
- body subtype
- A string giving the content subtype name as
- defined in [MIME-1].
-
- 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].
-
- body id
- A string giving the content id as defined in
- [MIME-1].
-
- body description
- A string giving the content description as
- defined in [MIME-1].
-
- body encoding
- A string giving the content transfer encoding as
- defined in [MIME-1].
-
- body size
- A number giving the size of the body in octets.
- Note that this size is the size in its transfer
- encoding and not the resulting size after any
- decoding.
-
- A body type of type MESSAGE and subtype RFC822
- contains, immediately after the basic fields, the
- envelope structure, body structure, and size in
- text lines of the encapsulated message.
-
- A body type of type TEXT contains, immediately
- after the basic fields, the size of the body in
- text lines. Note that this size is the size in its
- transfer encoding and not the resulting size after
- any decoding.
-
- Extension data follows the basic fields and the
- type-specific fields listed above. Extension data
- is never returned with the BODY fetch, but may be
- returned with a BODYSTRUCTURE fetch. Extension
- data, if present, must be in the defined order.
-
- The extension data of a non-multipart body part are
- in the following order:
-
-
-
-
-Crispin [Page 48]
-
-RFC 1730 IMAP4 December 1994
-
-
- body MD5
- A string giving the content MD5 value as defined
- in [MIME-1].
-
- Any following extension data are not yet defined in
- this version of the protocol, and would be as
- described above under multipart extension data.
-
- ENVELOPE A parenthesized list that describes the envelope
- structure of a message. This is computed by the
- server by parsing the [RFC-822] header into the
- component parts, defaulting various fields as
- necessary.
-
- The fields of the envelope structure are in the
- following order: date, subject, from, sender,
- reply-to, to, cc, bcc, in-reply-to, and message-id.
- The date, subject, in-reply-to, and message-id
- fields are strings. The from, sender, reply-to,
- to, cc, and bcc fields are parenthesized lists of
- address structures.
-
- An address structure is a parenthesized list that
- describes an electronic mail address. The fields
- of an address structure are in the following order:
- personal name, [SMTP] at-domain-list (source
- route), mailbox name, and host name.
-
- [RFC-822] group syntax is indicated by a special
- form of address structure in which the host name
- field is NIL. If the mailbox name field is also
- NIL, this is an end of group marker (semi-colon in
- RFC 822 syntax). If the mailbox name field is
- non-NIL, this is a start of group marker, and the
- mailbox name field holds the group name phrase.
-
- Any field of an envelope or address structure that
- is not applicable is presented as NIL. Note that
- the server must default the reply-to and sender
- fields from the from field; a client is not
- expected to know to do this.
-
-
-
-
-
-
-
-
-
-
-Crispin [Page 49]
-
-RFC 1730 IMAP4 December 1994
-
-
- FLAGS A parenthesized list of flags that are set for this
- message. This may include keywords as well as the
- following system flags:
-
- \Seen Message has been read
-
- \Answered Message has been answered
-
- \Flagged Message is "flagged" for urgent/special
- attention
-
- \Deleted Message is "deleted" for removal by
- later EXPUNGE
-
- \Draft Message has not completed composition
- (marked as a draft).
-
- as well as the following special flag, which may be
- fetched but not stored:
-
- \Recent Message has arrived since the previous
- time this mailbox was selected.
-
- INTERNALDATE A string containing the date and time of final
- delivery of the message as defined by [SMTP].
-
- 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.
-
- 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.
-
- RFC822.SIZE A number expressing the number of octets in the
- message in [RFC-822] format.
-
-
-
-
-
-
-Crispin [Page 50]
-
-RFC 1730 IMAP4 December 1994
-
-
- 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.
-
- UID A number expressing the unique identifier of the
- message.
-
-
- Example: S: * 23 FETCH (FLAGS (\Seen) RFC822.SIZE 44827)
-
-
-7.3.5. Obsolete Responses
-
- In addition to the responses listed in here, client implementations
- MUST accept and implement the obsolete responses described in
- Appendix B.
-
-
-
-7.4. Server Responses - Command Continuation Request
-
- 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.
-
- This response is used in the AUTHORIZATION command to transmit server
- data to the client, and request additional client data. This
- response is also used if an argument to any command is a literal.
-
- The client is not permitted to send the octets of the literal unless
- the server indicates that it expects it. This permits the server to
- process commands and reject errors on a line-by-line basis. The
- remainder of the command, including the CRLF that terminates a
- command, follows the octets of the literal. If there are any
- additional command arguments the literal octets are followed by a
- space and those arguments.
-
- Example: C: A001 LOGIN {11}
- S: + Ready for additional command text
- C: FRED FOOBAR {7}
- S: + Ready for additional command text
- C: fat man
- S: A001 OK LOGIN completed
- C: A044 BLURDYBLOOP {102856}
- S: A044 BAD No such command as "BLURDYBLOOP"
-
-
-
-Crispin [Page 51]
-
-RFC 1730 IMAP4 December 1994
-
-
-8. Sample IMAP4 session
-
- The following is a transcript of an IMAP4 session. A long line in
- this sample is broken for editorial clarity.
-
- 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
-
-
-
-
-Crispin [Page 52]
-
-RFC 1730 IMAP4 December 1994
-
-
-9. Formal Syntax
-
- The following syntax specification uses the augmented Backus-Naur
- Form (BNF) notation as specified in [RFC-822] with one exception; the
- delimiter used with the "#" construct is a single space (SPACE) and
- not a comma.
-
- 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.
-
- 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.
-
- address ::= "(" addr_name SPACE addr_adl SPACE addr_mailbox
- SPACE addr_host ")"
-
- addr_adl ::= nstring
-
- addr_host ::= nstring
- ;; NIL indicates [RFC-822] group syntax
-
- addr_mailbox ::= nstring
- ;; NIL indicates end of [RFC-822] group; if
- ;; non-NIL and addr_host is NIL, holds
- ;; [RFC-822] group name
-
- addr_name ::= nstring
-
- alpha ::= "A" / "B" / "C" / "D" / "E" / "F" / "G" / "H" /
- "I" / "J" / "K" / "L" / "M" / "N" / "O" / "P" /
- "Q" / "R" / "S" / "T" / "U" / "V" / "W" / "X" /
- "Y" / "Z" /
- "a" / "b" / "c" / "d" / "e" / "f" / "g" / "h" /
- "i" / "j" / "k" / "l" / "m" / "n" / "o" / "p" /
- "q" / "r" / "s" / "t" / "u" / "v" / "w" / "x" /
- "y" / "z" /
- ;; Case-sensitive
-
- append ::= "APPEND" SPACE mailbox [SPACE flag_list]
- [SPACE date_time] SPACE literal
-
- astring ::= atom / string
-
-
-
-
-
-Crispin [Page 53]
-
-RFC 1730 IMAP4 December 1994
-
-
- atom ::= 1*ATOM_CHAR
-
- ATOM_CHAR ::= <any CHAR except atom_specials>
-
- atom_specials ::= "(" / ")" / "{" / SPACE / CTLs / list_wildcards /
- quoted_specials
-
- authenticate ::= "AUTHENTICATE" SPACE auth_type *(CRLF base64)
-
- auth_type ::= atom
-
- base64 ::= *(4base64_char) [base64_terminal]
-
- base64_char ::= alpha / digit / "+" / "/"
-
- base64_terminal ::= (2base64_char "==") / (3base64_char "=")
-
- body ::= "(" body_type_1part / body_type_mpart ")"
-
- body_extension ::= nstring / number / "(" 1#body_extension ")"
- ;; Future expansion. Client implementations
- ;; MUST accept body_extension fields. Server
- ;; implementations MUST NOT generate
- ;; body_extension fields except as defined by
- ;; future standard or standards-track
- ;; revisions of this specification.
-
- body_ext_1part ::= body_fld_md5 [SPACE 1#body_extension]
- ;; MUST NOT be returned on non-extensible
- ;; "BODY" fetch
-
- body_ext_mpart ::= body_fld_param [SPACE 1#body_extension]]
- ;; MUST NOT be returned on non-extensible
- ;; "BODY" fetch
-
- body_fields ::= body_fld_param SPACE body_fld_id SPACE
- body_fld_desc SPACE body_fld_enc SPACE
- body_fld_octets
-
- body_fld_desc ::= nstring
-
- body_fld_enc ::= (<"> ("7BIT" / "8BIT" / "BINARY" / "BASE64"/
- "QUOTED-PRINTABLE") <">) / string
-
- body_fld_id ::= nstring
-
- body_fld_lines ::= number
-
-
-
-
-Crispin [Page 54]
-
-RFC 1730 IMAP4 December 1994
-
-
- body_fld_md5 ::= nstring
-
- body_fld_octets ::= number
-
- body_fld_param ::= "(" 1#(string string) ")" / nil
-
- body_fld_subtyp ::= string
-
- body_type_1part ::= (body_type_basic / body_type_msg / body_type_text)
- [SPACE body_ext_1part]
-
- body_type_basic ::= (<"> ("APPLICATION" / "AUDIO" / "IMAGE" /
- "MESSAGE" / "VIDEO") <">) / string) SPACE
- body_fld_subtyp SPACE body_fields
- ;; MESSAGE subtype MUST NOT be "RFC822"
-
- body_type_mpart ::= 1*body SPACE body_fld_subtyp
- [SPACE body_ext_mpart]
-
- body_type_msg ::= <"> "MESSAGE" <"> SPACE <"> "RFC822" <"> SPACE
- body_fields SPACE envelope SPACE body SPACE
- body_fld_lines
-
- body_type_text ::= <"> "TEXT" <"> SPACE body_fld_subtyp SPACE
- body_fields SPACE body_fld_lines
-
- capability ::= atom
- ;; Must begin with "X" or be registered with
- ;; IANA as standard or standards-track
-
- capability_data ::= "CAPABILITY" SPACE "IMAP4" [SPACE 1#capability]
-
- CHAR ::= <any 7-bit US-ASCII character except NUL,
- 0x01 - 0x7f>
-
- CHAR8 ::= <any 8-bit octet except NUL, 0x01 - 0xff>
-
- command ::= tag SPACE (command_any / command_auth /
- command_nonauth / command_select) CRLF
- ;; Modal based on state
-
- command_any ::= "CAPABILITY" / "LOGOUT" / "NOOP" / x_command
- ;; Valid in all states
-
- command_auth ::= append / create / delete / examine / find / list /
- lsub / rename / select / subscribe / unsubscribe /
- ;; Valid only in Authenticated or Selected state
-
-
-
-
-Crispin [Page 55]
-
-RFC 1730 IMAP4 December 1994
-
-
- command_nonauth ::= login / authenticate
- ;; Valid only when in Non-Authenticated state
-
- command_select ::= "CHECK" / "CLOSE" / "EXPUNGE" /
- copy / fetch / partial / store / uid / search
- ;; Valid only when in Selected state
-
- continue_req ::= "+" SPACE (resp_text / base64)
-
- copy ::= "COPY" SPACE set SPACE mailbox
-
- CR ::= <ASCII CR, carriage return, 0x0C>
-
- create ::= "CREATE" SPACE mailbox
- ;; Use of INBOX gives a NO error
-
- CRLF ::= CR LF
-
- CTL ::= <any ASCII control character and DEL,
- 0x00 - 0x1f, 0x7f>
-
- date ::= date_text / <"> date_text <">
-
- date_day ::= 1*2digit
- ;; Day of month
-
- date_day_fixed ::= (SPACE digit) / 2digit
- ;; Fixed-format version of date_day
-
- date_month ::= "Jan" / "Feb" / "Mar" / "Apr" / "May" / "Jun" /
- "Jul" / "Aug" / "Sep" / "Oct" / "Nov" / "Dec"
-
- date_text ::= date_day "-" date_month "-" (date_year /
- date_year_old)
-
- date_year ::= 4digit
-
- date_year_old ::= 2digit
- ;; OBSOLETE, (year - 1900)
-
- date_time ::= <"> (date_time_new / date_time_old) <">
-
- date_time_new ::= date_day_fixed "-" date_month "-" date_year
- SPACE time SPACE zone
-
- date_time_old ::= date_day_fixed "-" date_month "-" date_year_old
- SPACE time "-" zone_old
- ;; OBSOLETE
-
-
-
-Crispin [Page 56]
-
-RFC 1730 IMAP4 December 1994
-
-
- delete ::= "DELETE" SPACE mailbox
- ;; Use of INBOX gives a NO error
-
- digit ::= "0" / digit_nz
-
- digit_nz ::= "1" / "2" / "3" / "4" / "5" / "6" / "7" / "8" /
- "9"
-
- envelope ::= "(" env_date SPACE env_subject SPACE env_from
- SPACE env_sender SPACE env_reply-to SPACE env_to
- SPACE env_cc SPACE env_bcc SPACE env_in-reply-to
- SPACE env_message-id ")"
-
- env_bcc ::= "(" 1*address ")" / nil
-
- env_cc ::= "(" 1*address ")" / nil
-
- env_date ::= nstring
-
- env_from ::= "(" 1*address ")" / nil
-
- env_in-reply-to ::= nstring
-
- env_message-id ::= nstring
-
- env_reply-to ::= "(" 1*address ")" / nil
-
- env_sender ::= "(" 1*address ")" / nil
-
- env_subject ::= nstring
-
- env_to ::= "(" 1*address ")" / nil
-
- examine ::= "EXAMINE" SPACE mailbox
-
- fetch ::= "FETCH" SPACE set SPACE ("ALL" / "FULL" /
- "FAST" / fetch_att / "(" 1#fetch_att ")")
-
- fetch_att ::= "BODY" / "BODYSTRUCTURE" /
- "BODY" [".PEEK"] "[" section "]" / "ENVELOPE" /
- "FLAGS" / "INTERNALDATE" / "UID" /
- "RFC822" (([".TEXT"] [".PEEK"]) / ".SIZE" /
- (".HEADER" [".LINES" [".NOT"] SPACE header_list])
-
- find ::= "FIND" SPACE ["ALL."] "MAILBOXES" SPACE
- list_mailbox
- ;; OBSOLETE
-
-
-
-
-Crispin [Page 57]
-
-RFC 1730 IMAP4 December 1994
-
-
- flag ::= "\Answered" / "\Flagged" / "\Deleted" /
- "\Seen" / "\Draft" / flag_keyword /
- flag_extension
-
- flag_extension ::= "\" atom
- ;; Future expansion. Client implementations
- ;; MUST accept flag_extension flags. Server
- ;; implementations MUST NOT generate
- ;; flag_extension flags except as defined by
- ;; future standard or standards-track
- ;; revisions of this specification.
-
- flag_keyword ::= atom
-
- flag_list ::= "(" #flag ")"
-
- greeting ::= "*" SPACE (resp_cond_auth / resp_cond_bye) CRLF
-
- header_line ::= astring
-
- header_list ::= "(" 1#header_line ")"
-
- LF ::= <ASCII LF, line feed, 0x0A>
-
- list ::= "LIST" SPACE mailbox SPACE list_mailbox
-
- list_mailbox ::= 1*(ATOM_CHAR / list_wildcards) / string
-
- list_wildcards ::= "%" / "*"
-
- literal ::= "{" number "}" CRLF *CHAR8
- ;; Number represents the number of CHAR8 octets
-
- login ::= "LOGIN" SPACE userid SPACE password
-
- lsub ::= "LSUB" SPACE mailbox SPACE list_mailbox
-
- mailbox ::= "INBOX" / astring
- ;; INBOX is case-insensitive; other names may be
- ;; case-sensitive depending on implementation.
-
- 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"
-
-
-
-
-Crispin [Page 58]
-
-RFC 1730 IMAP4 December 1994
-
-
- mailbox_list ::= "(" #("\Marked" / "\Noinferiors" /
- "\Noselect" / "\Unmarked" / flag_extension) ")"
- SPACE (<"> QUOTED_CHAR <"> / nil) SPACE mailbox
-
- message_data ::= nz_number SPACE ("EXPUNGE" /
- ("FETCH" SPACE msg_fetch) / msg_obsolete)
-
- 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) ")"
-
- msg_obsolete ::= "COPY" / ("STORE" SPACE msg_fetch)
- ;; OBSOLETE untagged data responses
-
- nil ::= "NIL"
-
- nstring ::= string / nil
-
- number ::= 1*digit
- ;; Unsigned 32-bit integer
- ;; (0 <= n < 4,294,967,296)
-
- nz_number ::= digit_nz *digit
- ;; Non-zero unsigned 32-bit integer
- ;; (0 < n < 4,294,967,296)
-
- partial ::= "PARTIAL" SPACE nz_number SPACE
- ("BODY" [".PEEK"] "[" section "]" /
- "RFC822" (([".TEXT"] [".PEEK"]) / ".HEADER")
- SPACE number SPACE number
-
- password ::= astring
-
- quoted ::= <"> *QUOTED_CHAR <">
-
- QUOTED_CHAR ::= <any TEXT_CHAR except quoted_specials> /
- "\" quoted_specials
-
- quoted_specials ::= <"> / "\"
-
- rename ::= "RENAME" SPACE mailbox SPACE mailbox
- ;; Use of INBOX as a destination gives a NO error
-
-
-
-Crispin [Page 59]
-
-RFC 1730 IMAP4 December 1994
-
-
- response ::= *response_data response_done
-
- response_data ::= "*" SPACE (resp_cond_state / resp_cond_bye /
- mailbox_data / message_data / capability_data)
- CRLF
-
- response_done ::= response_tagged / response_fatal
-
- response_fatal ::= "*" SPACE resp_cond_bye CRLF
-
- response_tagged ::= tag SPACE resp_cond_state CRLF
-
- resp_cond_auth ::= ("OK" / "PREAUTH") SPACE resp_text
- ;; Authentication condition
-
- resp_cond_bye ::= "BYE" SPACE resp_text
- ;; Server will disconnect condition
-
- resp_cond_state ::= ("OK" / "NO" / "BAD") SPACE resp_text
- ;; Status condition
-
- resp_text ::= ["[" resp_text_code "]" SPACE] (text_mime2 / text)
-
- resp_text_code ::= "ALERT" / "PARSE" /
- "PERMANENTFLAGS" SPACE "(" #(flag / "\*") ")" /
- "READ-ONLY" / "READ-WRITE" / "TRYCREATE" /
- "UIDVALIDITY" SPACE nz_number /
- "UNSEEN" SPACE nz_number /
- atom [SPACE 1*<any TEXT_CHAR except "]">]
-
- search ::= "SEARCH" SPACE ["CHARSET" SPACE astring SPACE]
- search_criteria
- ;; Character set must be registered with IANA
- ;; as a MIME character set
-
- search_criteria ::= 1#search_key
-
- search_key ::= search_new / search_old
-
- 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
-
-
-
-Crispin [Page 60]
-
-RFC 1730 IMAP4 December 1994
-
-
- 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]
-
- section ::= "0" / nz_number ["." section]
-
- select ::= "SELECT" SPACE mailbox
-
- sequence_num ::= nz_number / "*"
- ;; * is the largest number in use. For message
- ;; sequence numbers, it is the number of messages
- ;; in the mailbox. For unique identifiers, it is
- ;; the unique identifier of the last message in
- ;; the mailbox.
-
- set ::= sequence_num / (sequence_num ":" sequence_num) /
- (set "," set)
- ;; Identifies a set of messages. For message
- ;; sequence numbers, these are consecutive
- ;; numbers from 1 to the number of messages in
- ;; the mailbox
- ;; Comma delimits individual numbers, colon
- ;; delimits between two numbers inclusive.
- ;; Example: 2,4:7,9,12:* is 2,4,5,6,7,9,12,13,
- ;; 14,15 for a mailbox with 15 messages.
-
- SPACE ::= <ASCII SP, space, 0x20>
-
- store ::= "STORE" SPACE set SPACE store_att_flags
-
- store_att_flags ::= (["+" / "-"] "FLAGS" [".SILENT"]) SPACE
- (flag_list / #flag)
-
- string ::= quoted / literal
-
- subscribe ::= ("SUBSCRIBE" SPACE mailbox) / subscribe_obs
-
- subscribe_obs ::= "SUBSCRIBE" SPACE "MAILBOX" SPACE mailbox
- ;;OBSOLETE
-
-
-
-
-Crispin [Page 61]
-
-RFC 1730 IMAP4 December 1994
-
-
- tag ::= 1*<any ATOM_CHAR except "+">
-
- text ::= 1*TEXT_CHAR
-
- text_mime2 ::= "=?" <charset> "?" <encoding> "?"
- <encoded-text> "?="
- ;; Syntax defined in [MIME-2]
-
- TEXT_CHAR ::= <any CHAR except CR and LF>
-
- time ::= 2digit ":" 2digit ":" 2digit
- ;; Hours minutes seconds
-
- uid ::= "UID" SPACE (copy / fetch / search / store)
- ;; Unique identifiers used instead of message
- ;; sequence numbers
-
- uniqueid ::= nz_number
- ;; Strictly ascending
-
- unsubscribe ::= ("UNSUBSCRIBE" SPACE mailbox) / unsubscribe_obs
-
- unsubscribe_obs ::= "UNSUBSCRIBE" SPACE "MAILBOX" SPACE mailbox
- ;;OBSOLETE
-
- userid ::= astring
-
- x_command ::= "X" atom <experimental command arguments>
-
- zone ::= ("+" / "-") 4digit
- ;; Signed four-digit value of hhmm representing
- ;; hours and minutes west of Greenwich (that is,
- ;; (the amount that the given time differs from
- ;; Universal Time). Subtracting the timezone
- ;; from the given time will give the UT form.
- ;; The Universal Time zone is "+0000".
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Crispin [Page 62]
-
-RFC 1730 IMAP4 December 1994
-
-
- 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
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Crispin [Page 63]
-
-RFC 1730 IMAP4 December 1994
-
-
-10. Author's Note
-
- 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.
-
-
-11. Security Considerations
-
- 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.
-
- A server error message for an AUTHENTICATE command which fails due to
- invalid credentials should not detail why the credentials are
- invalid.
-
- Use of the LOGIN command sends passwords in the clear. This can be
- avoided by using the AUTHENTICATE command instead.
-
- A server error message for a failing LOGIN command should not specify
- that the user name, as opposed to the password, is invalid.
-
- Additional security considerations are discussed in the section
- discussing the AUTHENTICATE and LOGIN commands.
-
-
-12. Author's Address
-
- Mark R. Crispin
- Networks and Distributed Computing, JE-30
- University of Washington
- Seattle, WA 98195
-
- Phone: (206) 543-5762
-
- EMail: MRC@CAC.Washington.EDU
-
-
-
-
-
-
-
-
-
-
-
-
-
-Crispin [Page 64]
-
-RFC 1730 IMAP4 December 1994
-
-
-Appendices
-
-A. Obsolete Commands
-
- 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.
-
- 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.
-
-
-A.6.3.OBS.1. FIND ALL.MAILBOXES Command
-
- Arguments: mailbox name with possible wildcards
-
- Data: untagged responses: MAILBOX
-
- Result: OK - find completed
- NO - find failure: can't list that name
- BAD - command unknown or arguments invalid
-
- 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.
-
- Example: C: A002 FIND ALL.MAILBOXES *
- S: * MAILBOX blurdybloop
- S: * MAILBOX INBOX
- S: A002 OK FIND ALL.MAILBOXES completed
-
-
-A.6.3.OBS.2. FIND MAILBOXES Command
-
- Arguments: mailbox name with possible wildcards
-
- Data: untagged responses: MAILBOX
-
- Result: OK - find completed
- NO - find failure: can't list that name
- BAD - command unknown or arguments invalid
-
- The FIND MAILBOXES command returns a subset of names from the set
- of names that the user has declared as being "active" or
-
-
-
-Crispin [Page 65]
-
-RFC 1730 IMAP4 December 1994
-
-
- "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.
-
- Example: C: A002 FIND MAILBOXES *
- S: * MAILBOX blurdybloop
- S: * MAILBOX INBOX
- S: A002 OK FIND MAILBOXES completed
-
-
-A.6.3.OBS.3. SUBSCRIBE MAILBOX Command
-
- Arguments: mailbox name
-
- Data: no specific data for this command
-
- Result: OK - subscribe completed
- NO - subscribe failure: can't subscribe to that name
- BAD - command unknown or arguments invalid
-
- 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".
-
- 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
-
-
-A.6.3.OBS.4. UNSUBSCRIBE MAILBOX Command
-
- Arguments: mailbox name
-
- Data: no specific data for this command
-
- Result: OK - unsubscribe completed
- NO - unsubscribe failure: can't unsubscribe that name
- BAD - command unknown or arguments invalid
-
- 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".
-
-
-
-
-Crispin [Page 66]
-
-RFC 1730 IMAP4 December 1994
-
-
- 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
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Crispin [Page 67]
-
-RFC 1730 IMAP4 December 1994
-
-
-B. Obsolete Responses
-
- The following responses are OBSOLETE. Except as noted below, these
- responses MUST NOT be transmitted by new server implementations.
-
- 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.
-
-
-B.7.2.OBS.1. MAILBOX Response
-
- Data: name
-
- 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.
-
- 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.
-
- Example: S: * MAILBOX blurdybloop
-
-
-B.7.3.OBS.1. COPY Response
-
- Data: none
-
- 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.
-
- 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.
-
- Example: S: * 44 COPY
-
-
-
-
-
-
-
-Crispin [Page 68]
-
-RFC 1730 IMAP4 December 1994
-
-
-B.7.3.OBS.2. STORE Response
-
- Data: message data
-
- 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.
-
- 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.
-
- Example: S: * 69 STORE (FLAGS (\Deleted))
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Crispin [Page 69]
-
-RFC 1730 IMAP4 December 1994
-
-
-C. References
-
-
- [IMAP-AUTH] Myers, J., "IMAP4 Authentication Mechanism", RFC 1731.
- Carnegie-Mellon University, December 1994.
-
- [IMAP-COMPAT] Crispin, M. "IMAP4 Compatibility with IMAP2 and
- IMAP2bis", RFC 1732, University of Washington, December 1994.
-
- [IMAP-DISC] Austein, R. "Synchronization Operations for Disconnected
- IMAP4 Clients", Work in Progress.
-
- [IMAP-MODEL] Crispin, M. "Distributed Electronic Mail Models in
- IMAP4", RFC 1733, University of Washington, December 1994.
-
- [IMAP-NAMING] Crispin, M. "Mailbox Naming Convention in IMAP4", Work
- in Progress.
-
- [IMAP2] Crispin, M., "Interactive Mail Access Protocol - Version 2",
- RFC 1176, University of Washington, August 1990.
-
- [IMSP] Myers, J. "IMSP -- Internet Message Support Protocol", Work in
- Progress.
-
- [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.
-
- [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.
-
- [RFC-822] Crocker, D., "Standard for the Format of ARPA Internet Text
- Messages", STD 11, RFC 822, University of Delaware, August 1982.
-
- [SMTP] Postel, Jonathan B. "Simple Mail Transfer Protocol", STD 10,
- RFC 821, USC/Information Sciences Institute, August 1982.
-
-
-
-
-
-
-
-
-
-
-
-
-
-Crispin [Page 70]
-
-RFC 1730 IMAP4 December 1994
-
-
-E. IMAP4 Keyword Index
-
-
- +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
-
-
-
-Crispin [Page 71]
-
-RFC 1730 IMAP4 December 1994
-
-
-
- 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
-
-
-
-Crispin [Page 72]
-
-RFC 1730 IMAP4 December 1994
-
-
-
- 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
-
-
-
-
-
-
-
-
-
-
-Crispin [Page 73]
-