| < draft-ietf-imap-imap4-05.txt | draft-ietf-imap-imap4-06.txt > | |||
|---|---|---|---|---|
| Network Working Group M. Crispin | Network Working Group M. Crispin | |||
| Internet Draft: IMAP4 University of Washington | Internet Draft: IMAP4 University of Washington | |||
| Document: internet-drafts/draft-ietf-imap-imap4-05.txt August 1994 | Document: internet-drafts/draft-ietf-imap-imap4-06.txt October 1994 | |||
| INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4 | INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4 | |||
| Status of this Memo | Status of this Memo | |||
| This document is an Internet Draft. Internet Drafts are working | This document is an Internet-Draft. Internet-Drafts are working | |||
| documents of the Internet Engineering Task Force (IETF), its Areas, | documents of the Internet Engineering Task Force (IETF), its areas, | |||
| and its Working Groups. Note that other groups may also distribute | and its working groups. Note that other groups may also distribute | |||
| working documents as Internet Drafts. | working documents as Internet-Drafts. | |||
| Internet Drafts are draft documents valid for a maximum of six | Internet-Drafts are draft documents valid for a maximum of six months | |||
| months. Internet Drafts may be updated, replaced, or obsoleted by | and may be updated, replaced, or obsoleted by other documents at any | |||
| other documents at any time. It is not appropriate to use Internet | time. It is inappropriate to use Internet-Drafts as reference | |||
| Drafts as reference material or to cite them other than as a "working | material or to cite them other than as "work in progress." | |||
| draft" or "work in progress". | ||||
| To learn the current status of any Internet-Draft, please check the | To learn the current status of any Internet-Draft, please check the | |||
| id-abstracts.txt listing contained in the Internet-Drafts Shadow | "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow | |||
| Directories on ds.internic.net, nic.nordu.net, ftp.isi.edu, or | Directories on ds.internic.net (US East Coast), nic.nordu.net | |||
| munnari.oz.au. | (Europe), ftp.isi.edu (US West Coast), or munnari.oz.au (Pacific | |||
| Rim). | ||||
| This is a draft document of the IETF IMAP Working Group. A revised | This is a draft document of the IETF IMAP Working Group. A revised | |||
| version of this draft document will be submitted to the RFC editor as | version of this draft document will be submitted to the RFC editor as | |||
| a Proposed Standard for the Internet Community. Discussion and | a Proposed Standard for the Internet Community. Discussion and | |||
| suggestions for improvement are requested, and should be sent to | suggestions for improvement are requested, and should be sent to | |||
| imap@CAC.Washington.EDU. This document will expire before 31 January | imap@CAC.Washington.EDU. This document will expire before 30 April | |||
| 1995. Distribution of this draft is unlimited. | 1995. Distribution of this draft is unlimited. | |||
| Abstract | Abstract | |||
| The Internet Message Access Protocol, Version 4 (IMAP4) allows a | The Internet Message Access Protocol, Version 4 (IMAP4) allows a | |||
| client to access and manipulate electronic mail messages on a server. | client to access and manipulate electronic mail messages on a server. | |||
| IMAP4 permits manipulation of remote message folders, called | IMAP4 permits manipulation of remote message folders, called | |||
| "mailboxes", in a way that is functionally equivalent to local | "mailboxes", in a way that is functionally equivalent to local | |||
| mailboxes. IMAP4 also provides the capability for an offline client | mailboxes. IMAP4 also provides the capability for an offline client | |||
| to resynchronize with the server (see also [IMAP-DISC]). | to resynchronize with the server (see also [IMAP-DISC]). | |||
| IMAP4 includes operations for creating, deleting, and renaming | IMAP4 includes operations for creating, deleting, and renaming | |||
| mailboxes; checking for new messages; permanently removing messages; | mailboxes; checking for new messages; permanently removing messages; | |||
| setting and clearing flags; RFC 822 and MIME parsing; searching; and | setting and clearing flags; RFC 822 and MIME parsing; searching; and | |||
| selective fetching of message attributes, texts, and portions | selective fetching of message attributes, texts, and portions | |||
| Internet DRAFT IMAP4 August 1, 1994 | Internet DRAFT IMAP4 October 30, 1994 | |||
| thereof. Messages in IMAP4 are accessed by the use of numbers. | thereof. Messages in IMAP4 are accessed by the use of numbers. | |||
| These numbers are either message sequence numbers (relative position | These numbers are either message sequence numbers (relative position | |||
| from 1 to the number of messages in the mailbox) or unique | from 1 to the number of messages in the mailbox) or unique | |||
| identifiers (immutable, strictly ascending values assigned to each | identifiers (immutable, strictly ascending values assigned to each | |||
| message, but which are not necessarily contiguous). | message, but which are not necessarily contiguous). | |||
| IMAP4 supports a single server. A mechanism for supporting multiple | IMAP4 supports a single server. A mechanism for supporting multiple | |||
| IMAP4 servers is discussed in [IMSP]. | IMAP4 servers is discussed in [IMSP]. | |||
| IMAP4 does not specify a means of posting mail; this function is | IMAP4 does not specify a means of posting mail; this function is | |||
| handled by a mail transfer protocol such as [SMTP]. | handled by a mail transfer protocol such as [SMTP]. | |||
| IMAP4 is designed to be upwards compatible from the [IMAP2] protocol. | IMAP4 is designed to be upwards compatible from the [IMAP2] protocol. | |||
| Compatibility issues are discussed in [IMAP-COMPAT]. | Compatibility issues are discussed in [IMAP-COMPAT]. | |||
| Internet DRAFT IMAP4 October 30, 1994 | ||||
| Table of Contents | ||||
| Status of this Memo ............................................... i | ||||
| Abstract .......................................................... i | ||||
| 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 .......................................... 8 | ||||
| 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 | ||||
| Internet DRAFT IMAP4 October 30, 1994 | ||||
| 6.3.4. DELETE Command ............................................ 18 | ||||
| 6.3.5. RENAME Command ............................................ 18 | ||||
| 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 .............................................. 42 | ||||
| 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 ............................................. 63 | ||||
| 11. Security Considerations ................................... 63 | ||||
| 12. Author's Address .......................................... 63 | ||||
| Appendices ........................................................ 64 | ||||
| A. Obsolete Commands ......................................... 64 | ||||
| A.6.3.OBS.1. FIND ALL.MAILBOXES Command ........................ 64 | ||||
| A.6.3.OBS.2. FIND MAILBOXES Command ............................ 64 | ||||
| Internet DRAFT IMAP4 October 30, 1994 | ||||
| A.6.3.OBS.3. SUBSCRIBE MAILBOX Command ......................... 65 | ||||
| A.6.3.OBS.4. UNSUBSCRIBE MAILBOX Command ....................... 65 | ||||
| B. Obsolete Responses ........................................ 67 | ||||
| B.7.2.OBS.1. MAILBOX Response .................................. 67 | ||||
| B.7.3.OBS.1. COPY Response ..................................... 67 | ||||
| B.7.3.OBS.2. STORE Response .................................... 67 | ||||
| C. References ................................................ 69 | ||||
| D. Changes from Draft 05 ..................................... 70 | ||||
| E. IMAP4 Keyword Index ....................................... 71 | ||||
| Internet DRAFT IMAP4 October 30, 1994 | ||||
| IMAP4 Protocol Specification | IMAP4 Protocol Specification | |||
| 1. Organization of this Document | 1. Organization of this Document | |||
| 1.1. How to Read This Document | 1.1. How to Read This Document | |||
| This document is written from the point of view of the implementor of | This document is written from the point of view of the implementor of | |||
| an IMAP4 client or server. Beyond the protocol overview in section | an IMAP4 client or server. Beyond the protocol overview in section | |||
| 2, it is not optimized for someone trying to understand the operation | 2, it is not optimized for someone trying to understand the operation | |||
| of the protocol. The material in sections 3 through 5 provides the | of the protocol. The material in sections 3 through 5 provides the | |||
| skipping to change at page 2, line 5 ¶ | skipping to change at page 2, line 5 ¶ | |||
| An IMAP4 session consists of the establishment of a client/server | An IMAP4 session consists of the establishment of a client/server | |||
| connection, an initial greeting from the server, and client/server | connection, an initial greeting from the server, and client/server | |||
| interactions. These client/server interactions consist of a client | interactions. These client/server interactions consist of a client | |||
| command, server data, and a server completion result response. | command, server data, and a server completion result response. | |||
| All interactions transmitted by client and server are in the form of | All interactions transmitted by client and server are in the form of | |||
| lines; that is, strings that end with a CRLF. The protocol receiver | 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 | 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. | a sequence of octets with a known count followed by a line. | |||
| Internet DRAFT IMAP4 August 1, 1994 | Internet DRAFT IMAP4 October 30, 1994 | |||
| 2.2.1. Client Protocol Sender and Server Protocol Receiver | 2.2.1. Client Protocol Sender and Server Protocol Receiver | |||
| The client command begins an operation. Each client command is | The client command begins an operation. Each client command is | |||
| prefixed with a identifier (typically a short alphanumeric string, | prefixed with a identifier (typically a short alphanumeric string, | |||
| e.g. A0001, A0002, etc.) called a "tag". A different tag is | e.g. A0001, A0002, etc.) called a "tag". A different tag is | |||
| generated by the client for each command. | generated by the client for each command. | |||
| There are two cases in which a line from the client does not | There are two cases in which a line from the client does not | |||
| represent a complete command. In one case, a command argument is | represent a complete command. In one case, a command argument is | |||
| skipping to change at page 3, line 5 ¶ | skipping to change at page 3, line 5 ¶ | |||
| Server data may be sent as a result of a client command, or may be | 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 | sent unilaterally by the server. There is no syntactic difference | |||
| between server data that resulted from a specific command and server | between server data that resulted from a specific command and server | |||
| data that were sent unilaterally. | data that were sent unilaterally. | |||
| The server completion result response indicates the success or | The server completion result response indicates the success or | |||
| failure of the operation. It is tagged with the same tag as the | failure of the operation. It is tagged with the same tag as the | |||
| client command which began the operation. Thus, if more than one | client command which began the operation. Thus, if more than one | |||
| Internet DRAFT IMAP4 August 1, 1994 | Internet DRAFT IMAP4 October 30, 1994 | |||
| command is in progress, the tag in a server completion response | command is in progress, the tag in a server completion response | |||
| identifies the command to which the response applies. There are | identifies the command to which the response applies. There are | |||
| three possible server completion responses: OK (indicating success), | three possible server completion responses: OK (indicating success), | |||
| NO (indicating failure), or BAD (indicating protocol error such as | NO (indicating failure), or BAD (indicating protocol error such as | |||
| unrecognized command or command syntax error). | unrecognized command or command syntax error). | |||
| The protocol receiver of an IMAP4 client reads a response line from | The protocol receiver of an IMAP4 client reads a response line from | |||
| the server. It then takes action on the response based upon the | 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 | first token of the response, which may be a tag, a "*", or a "+". As | |||
| skipping to change at page 4, line 5 ¶ | skipping to change at page 4, line 5 ¶ | |||
| A client MUST be prepared to accept any server response at all times. | A client MUST be prepared to accept any server response at all times. | |||
| This includes server data that it may not have requested. Server | This includes server data that it may not have requested. Server | |||
| data SHOULD be recorded, so that the client can reference its | data SHOULD be recorded, so that the client can reference its | |||
| recorded copy rather than sending a command to the server to request | 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 | the data. In the case of certain server data, recording the data is | |||
| mandatory. | mandatory. | |||
| This topic is discussed in greater detail in the Server Responses | This topic is discussed in greater detail in the Server Responses | |||
| section. | section. | |||
| Internet DRAFT IMAP4 August 1, 1994 | Internet DRAFT IMAP4 October 30, 1994 | |||
| 3. State and Flow Diagram | 3. State and Flow Diagram | |||
| An IMAP4 server is in one of four states. Most commands are valid in | 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 | only certain states. It is a protocol error for the client to | |||
| attempt a command while the command is in an inappropriate state. In | 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 | this case, a server will respond with a BAD or NO (depending upon | |||
| server implementation) command completion result. | server implementation) command completion result. | |||
| 3.1. Non-Authenticated State | 3.1. Non-Authenticated State | |||
| skipping to change at page 5, line 5 ¶ | skipping to change at page 5, line 5 ¶ | |||
| In selected state, a mailbox has been selected to access. This state | In selected state, a mailbox has been selected to access. This state | |||
| is entered when a mailbox has been successfully selected. | is entered when a mailbox has been successfully selected. | |||
| 3.4. Logout State | 3.4. Logout State | |||
| In logout state, the session is being terminated, and the server will | 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 | close the connection. This state can be entered as a result of a | |||
| client request or by unilateral server decision. | client request or by unilateral server decision. | |||
| Internet DRAFT IMAP4 August 1, 1994 | Internet DRAFT IMAP4 October 30, 1994 | |||
| +--------------------------------------+ | +--------------------------------------+ | |||
| |initial connection and server greeting| | |initial connection and server greeting| | |||
| +--------------------------------------+ | +--------------------------------------+ | |||
| || (1) || (2) || (3) | || (1) || (2) || (3) | |||
| VV || || | VV || || | |||
| +-----------------+ || || | +-----------------+ || || | |||
| |non-authenticated| || || | |non-authenticated| || || | |||
| +-----------------+ || || | +-----------------+ || || | |||
| || (7) || (4) || || | || (7) || (4) || || | |||
| skipping to change at page 6, line 5 ¶ | skipping to change at page 6, line 5 ¶ | |||
| +--------------------------------------+ | +--------------------------------------+ | |||
| (1) connection without pre-authentication (OK greeting) | (1) connection without pre-authentication (OK greeting) | |||
| (2) pre-authenticated connection (PREAUTH greeting) | (2) pre-authenticated connection (PREAUTH greeting) | |||
| (3) rejected connection (BYE greeting) | (3) rejected connection (BYE greeting) | |||
| (4) successful LOGIN or AUTHENTICATE command | (4) successful LOGIN or AUTHENTICATE command | |||
| (5) successful SELECT or EXAMINE command | (5) successful SELECT or EXAMINE command | |||
| (6) CLOSE command, or failed SELECT or EXAMINE command | (6) CLOSE command, or failed SELECT or EXAMINE command | |||
| (7) LOGOUT command, server shutdown, or connection closed | (7) LOGOUT command, server shutdown, or connection closed | |||
| Internet DRAFT IMAP4 August 1, 1994 | Internet DRAFT IMAP4 October 30, 1994 | |||
| 4. Data Formats | 4. Data Formats | |||
| IMAP4 uses textual commands and responses. Data in IMAP4 can be in | IMAP4 uses textual commands and responses. Data in IMAP4 can be in | |||
| one of several forms: atom, number, string, parenthesized list, or | one of several forms: atom, number, string, parenthesized list, or | |||
| NIL. | NIL. | |||
| 4.1. Atom | 4.1. Atom | |||
| An atom consists of one or more non-special characters. | An atom consists of one or more non-special characters. | |||
| skipping to change at page 7, line 5 ¶ | skipping to change at page 7, line 5 ¶ | |||
| excluding CR and LF, with double quote (<">) characters at each end. | excluding CR and LF, with double quote (<">) characters at each end. | |||
| The empty string is respresented as either "" (a quoted string with | The empty string is respresented as either "" (a quoted string with | |||
| zero characters between double quotes) or as {0} followed by CRLF (a | zero characters between double quotes) or as {0} followed by CRLF (a | |||
| literal with an octet count of 0). | literal with an octet count of 0). | |||
| Note: Even if the octet count is 0, a client transmitting a | Note: Even if the octet count is 0, a client transmitting a | |||
| literal must wait to receive a command continuation | literal must wait to receive a command continuation | |||
| request. | request. | |||
| Internet DRAFT IMAP4 August 1, 1994 | Internet DRAFT IMAP4 October 30, 1994 | |||
| 4.3.1. 8-bit and Binary Strings | 4.3.1. 8-bit and Binary Strings | |||
| 8-bit textual and binary mail is supported through the use of | 8-bit textual and binary mail is supported through the use of | |||
| [MIME-1] encoding. IMAP4 implementations MAY transmit 8-bit or | [MIME-1] encoding. IMAP4 implementations MAY transmit 8-bit or | |||
| multi-octet characters in literals, but should do so only when the | multi-octet characters in literals, but should do so only when the | |||
| character set is identified. | character set is identified. | |||
| Although a BINARY body encoding is defined, unencoded binary strings | Although a BINARY body encoding is defined, unencoded binary strings | |||
| are not permitted. A "binary string" is any string with NUL | are not permitted. A "binary string" is any string with NUL | |||
| skipping to change at page 8, line 5 ¶ | skipping to change at page 8, line 5 ¶ | |||
| The empty list is represented as () -- a parenthesized list with no | The empty list is represented as () -- a parenthesized list with no | |||
| members. | members. | |||
| 4.5. NIL | 4.5. NIL | |||
| The special atom "NIL" represents the non-existence of a particular | The special atom "NIL" represents the non-existence of a particular | |||
| data item that is represented as a string or parenthesized list, as | data item that is represented as a string or parenthesized list, as | |||
| distinct from the empty string "" or the empty parenthesized list (). | distinct from the empty string "" or the empty parenthesized list (). | |||
| Internet DRAFT IMAP4 August 1, 1994 | Internet DRAFT IMAP4 October 30, 1994 | |||
| 5. Operational Considerations | 5. Operational Considerations | |||
| 5.1. Mailbox Naming | 5.1. Mailbox Naming | |||
| The interpretation of mailbox names is implementation-dependent. | The interpretation of mailbox names is implementation-dependent. | |||
| However, the mailbox name INBOX is a special name reserved to mean | 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 | "the primary mailbox for this user on this server". If it is desired | |||
| to export hierarchical mailbox names, mailbox names must be left-to- | to export hierarchical mailbox names, mailbox names must be | |||
| right hierarchical using a single character to separate levels of | left-to-right hierarchical using a single character to separate | |||
| hierarchy. The same hierarchy separator character is used for all | levels of hierarchy. The same hierarchy separator character is used | |||
| levels of hierarchy within a single name. | for all levels of hierarchy within a single name. | |||
| 5.2. Mailbox Size and Message Status Updates | 5.2. Mailbox Size and Message Status Updates | |||
| At any time, a server can send data that the client did not request. | At any time, a server can send data that the client did not request. | |||
| Sometimes, such behavior is required. For example, agents other than | Sometimes, such behavior is required. For example, agents other than | |||
| the server may add messages to the mailbox (e.g. new mail delivery), | 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 | change the flags of message in the mailbox (e.g. simultaneous access | |||
| to the same mailbox by multiple IMAP servers), or even remove | to the same mailbox by multiple agents), or even remove messages from | |||
| messages from the mailbox. A server MUST send mailbox size updates | the mailbox. A server MUST send mailbox size updates automatically | |||
| automatically if a mailbox size change is observed during the | if a mailbox size change is observed during the processing of a | |||
| processing of a command. A server SHOULD send message flag updates | command. A server SHOULD send message flag updates automatically, | |||
| automatically, without requiring the client to request such updates | without requiring the client to request such updates explicitly. | |||
| explicitly. Special rules exist for server notification of a client | Special rules exist for server notification of a client about the | |||
| about the removal of messages to prevent synchronization errors; see | removal of messages to prevent synchronization errors; see the | |||
| the description of the EXPUNGE response for more details. | description of the EXPUNGE response for more details. | |||
| Regardless of what implementation decisions a client may take on | Regardless of what implementation decisions a client may take on | |||
| remembering data from the server, a client implementation MUST record | remembering data from the server, a client implementation MUST record | |||
| mailbox size updates. It MUST NOT assume that any command after | mailbox size updates. It MUST NOT assume that any command after | |||
| initial mailbox selection will return the size of the mailbox. | initial mailbox selection will return the size of the mailbox. | |||
| 5.3. Response when no Command in Progress | 5.3. Response when no Command in Progress | |||
| Server implementations are permitted to send an untagged response | Server implementations are permitted to send an untagged response | |||
| (except for EXPUNGE) while there is no command in progress. Server | (except for EXPUNGE) while there is no command in progress. Server | |||
| skipping to change at page 9, line 5 ¶ | skipping to change at page 9, line 5 ¶ | |||
| considerations. Specifically, they must either (1) verify that the | considerations. Specifically, they must either (1) verify that the | |||
| size of the data does not exceed the underlying transport's available | size of the data does not exceed the underlying transport's available | |||
| window size, or (2) use non-blocking writes. | window size, or (2) use non-blocking writes. | |||
| 5.4. Autologout Timer | 5.4. Autologout Timer | |||
| If a server has an inactivity autologout timer, that timer MUST be of | 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 | at least 30 minutes' duration. The receipt of ANY command from the | |||
| client during that interval should suffice to reset the autologout | client during that interval should suffice to reset the autologout | |||
| Internet DRAFT IMAP4 August 1, 1994 | Internet DRAFT IMAP4 October 30, 1994 | |||
| timer. | timer. | |||
| 5.5. Multiple Commands in Progress | 5.5. Multiple Commands in Progress | |||
| The client is not required to wait for the completion result response | The client is not required to wait for the completion result response | |||
| of a command before sending another command, subject to flow control | of a command before sending another command, subject to flow control | |||
| constraints on the underlying data stream. Similarly, a server is | constraints on the underlying data stream. Similarly, a server is | |||
| not required to process a command to completion before beginning | not required to process a command to completion before beginning | |||
| processing of the next command, unless an ambiguity would result | processing of the next command, unless an ambiguity would result | |||
| because of a command that would affect the results of other commands. | because of a command that would affect the results of other commands. | |||
| If there is such an ambiguity, the server executes commands to | If there is such an ambiguity, the server executes commands to | |||
| completion in the order given by the client. | completion in the order given by the client. | |||
| Internet DRAFT IMAP4 August 1, 1994 | Internet DRAFT IMAP4 October 30, 1994 | |||
| 6. Client Commands | 6. Client Commands | |||
| IMAP4 commands are described in this section. Commands are organized | IMAP4 commands are described in this section. Commands are organized | |||
| by the state in which the command is permitted. Commands which are | by the state in which the command is permitted. Commands which are | |||
| permitted in multiple states are listed in the minimum permitted | permitted in multiple states are listed in the minimum permitted | |||
| state (for example, commands valid in authenticated and selected | state (for example, commands valid in authenticated and selected | |||
| state are listed in the authenticated state commands). | state are listed in the authenticated state commands). | |||
| Command arguments, identified by "Arguments:" in the command | Command arguments, identified by "Arguments:" in the command | |||
| skipping to change at page 11, line 5 ¶ | skipping to change at page 11, line 5 ¶ | |||
| BAD - command unknown or arguments invalid | BAD - command unknown or arguments invalid | |||
| The CAPABILITY command requests a listing of capabilities that the | The CAPABILITY command requests a listing of capabilities that the | |||
| server supports. The server MUST send a single untagged | server supports. The server MUST send a single untagged | |||
| CAPABILITY response with "IMAP4" as the first listed capability | CAPABILITY response with "IMAP4" as the first listed capability | |||
| before the (tagged) OK response. This listing of capabilities is | before the (tagged) OK response. This listing of capabilities is | |||
| not dependent upon connection state or user. It is therefore not | not dependent upon connection state or user. It is therefore not | |||
| necessary to issue a CAPABILITY command more than once in a | necessary to issue a CAPABILITY command more than once in a | |||
| session. | session. | |||
| Internet DRAFT IMAP4 August 1, 1994 | Internet DRAFT IMAP4 October 30, 1994 | |||
| Capability names other than "IMAP4" refer to extensions, | Capability names other than "IMAP4" refer to extensions, | |||
| revisions, or amendments to this specification. See the | revisions, or amendments to this specification. See the | |||
| documentation of the CAPABILITY response for additional | documentation of the CAPABILITY response for additional | |||
| information. No capabilities are enabled without explicit client | information. No capabilities are enabled without explicit client | |||
| action to invoke the capability. See the section entitled "Client | action to invoke the capability. See the section entitled "Client | |||
| Commands - Experimental/Expansion" for information about the form | Commands - Experimental/Expansion" for information about the form | |||
| of site or implementation-specific capabilities. | of site or implementation-specific capabilities. | |||
| Example: C: abcd CAPABILITY | Example: C: abcd CAPABILITY | |||
| skipping to change at page 12, line 5 ¶ | skipping to change at page 12, line 5 ¶ | |||
| Example: C: a002 NOOP | Example: C: a002 NOOP | |||
| S: a002 OK NOOP completed | S: a002 OK NOOP completed | |||
| . . . | . . . | |||
| C: a047 NOOP | C: a047 NOOP | |||
| S: * 22 EXPUNGE | S: * 22 EXPUNGE | |||
| S: * 23 EXISTS | S: * 23 EXISTS | |||
| S: * 3 RECENT | S: * 3 RECENT | |||
| S: * 14 FETCH (FLAGS (\Seen \Deleted)) | S: * 14 FETCH (FLAGS (\Seen \Deleted)) | |||
| S: a047 OK NOOP completed | S: a047 OK NOOP completed | |||
| Internet DRAFT IMAP4 August 1, 1994 | Internet DRAFT IMAP4 October 30, 1994 | |||
| 6.1.3. LOGOUT Command | 6.1.3. LOGOUT Command | |||
| Arguments: none | Arguments: none | |||
| Data: mandatory untagged response: BYE | Data: mandatory untagged response: BYE | |||
| Result: OK - logout completed | Result: OK - logout completed | |||
| BAD - command unknown or arguments invalid | BAD - command unknown or arguments invalid | |||
| skipping to change at page 13, line 5 ¶ | skipping to change at page 13, line 5 ¶ | |||
| what requirements, if any, are placed on the password and what access | what requirements, if any, are placed on the password and what access | |||
| restrictions are placed on anonymous users. | restrictions are placed on anonymous users. | |||
| Once authenticated (including as anonymous), it is not possible to | Once authenticated (including as anonymous), it is not possible to | |||
| re-enter non-authenticated state. | re-enter non-authenticated state. | |||
| In addition to the universal commands (CAPABILITY, NOOP, and LOGOUT), | In addition to the universal commands (CAPABILITY, NOOP, and LOGOUT), | |||
| the following commands are valid in non-authenticated state: | the following commands are valid in non-authenticated state: | |||
| AUTHENTICATE and LOGIN. | AUTHENTICATE and LOGIN. | |||
| Internet DRAFT IMAP4 August 1, 1994 | Internet DRAFT IMAP4 October 30, 1994 | |||
| 6.2.1. AUTHENTICATE Command | 6.2.1. AUTHENTICATE Command | |||
| Arguments: authentication mechanism name | Arguments: authentication mechanism name | |||
| Data: continuation data may be requested | Data: continuation data may be requested | |||
| Result: OK - authenticate completed, now in authenticated state | Result: OK - authenticate completed, now in authenticated state | |||
| NO - authenticate failure: unsupported authentication | NO - authenticate failure: unsupported authentication | |||
| mechanism, credentials rejected | mechanism, credentials rejected | |||
| skipping to change at page 14, line 5 ¶ | skipping to change at page 14, line 5 ¶ | |||
| buffer is transferred over the connection as a stream of octets | buffer is transferred over the connection as a stream of octets | |||
| prepended with a four octet field in network byte order that | prepended with a four octet field in network byte order that | |||
| represents the length of the following data. The maximum | represents the length of the following data. The maximum | |||
| ciphertext buffer length is defined by the protection mechanism. | ciphertext buffer length is defined by the protection mechanism. | |||
| The server is not required to support any particular | The server is not required to support any particular | |||
| authentication mechanism, nor are authentication mechanisms | authentication mechanism, nor are authentication mechanisms | |||
| required to support any protection mechanisms. If an AUTHENTICATE | required to support any protection mechanisms. If an AUTHENTICATE | |||
| command fails with a NO response, the client may try another | command fails with a NO response, the client may try another | |||
| Internet DRAFT IMAP4 August 1, 1994 | Internet DRAFT IMAP4 October 30, 1994 | |||
| authentication mechanism by issuing another AUTHENTICATE command, | authentication mechanism by issuing another AUTHENTICATE command, | |||
| or may attempt to authenticate by using the LOGIN command. In | or may attempt to authenticate by using the LOGIN command. In | |||
| other words, the client may request authentication types in | other words, the client may request authentication types in | |||
| decreasing order of preference, with the LOGIN command as a last | decreasing order of preference, with the LOGIN command as a last | |||
| resort. | resort. | |||
| Example: S: * OK KerberosV4 IMAP4 Server | Example: S: * OK KerberosV4 IMAP4 Server | |||
| C: A001 AUTHENTICATE KERBEROS_V4 | C: A001 AUTHENTICATE KERBEROS_V4 | |||
| S: + AmFYig== | S: + AmFYig== | |||
| skipping to change at page 15, line 5 ¶ | skipping to change at page 15, line 5 ¶ | |||
| 6.3. Client Commands - Authenticated State | 6.3. Client Commands - Authenticated State | |||
| In authenticated state, commands that manipulate mailboxes as atomic | In authenticated state, commands that manipulate mailboxes as atomic | |||
| entities are permitted. Of these commands, the SELECT and EXAMINE | entities are permitted. Of these commands, the SELECT and EXAMINE | |||
| commands will select a mailbox for access and enter selected state. | commands will select a mailbox for access and enter selected state. | |||
| In addition to the universal commands (CAPABILITY, NOOP, and LOGOUT), | In addition to the universal commands (CAPABILITY, NOOP, and LOGOUT), | |||
| the following commands are valid in authenticated state: SELECT, | the following commands are valid in authenticated state: SELECT, | |||
| EXAMINE, CREATE, DELETE, RENAME, SUBSCRIBE, UNSUBSCRIBE, LIST, LSUB, | EXAMINE, CREATE, DELETE, RENAME, SUBSCRIBE, UNSUBSCRIBE, LIST, LSUB, | |||
| Internet DRAFT IMAP4 August 1, 1994 | Internet DRAFT IMAP4 October 30, 1994 | |||
| and APPEND. | and APPEND. | |||
| 6.3.1. SELECT Command | 6.3.1. SELECT Command | |||
| Arguments: mailbox name | Arguments: mailbox name | |||
| Data: mandatory untagged responses: FLAGS, EXISTS, RECENT | Data: mandatory untagged responses: FLAGS, EXISTS, RECENT | |||
| optional OK untagged responses: UNSEEN, PERMANENTFLAGS | optional OK untagged responses: UNSEEN, PERMANENTFLAGS | |||
| skipping to change at page 15, line 32 ¶ | skipping to change at page 15, line 32 ¶ | |||
| mailbox can be accessed. Before returning an OK to the client, | mailbox can be accessed. Before returning an OK to the client, | |||
| the server MUST send the following untagged data to the client: | the server MUST send the following untagged data to the client: | |||
| FLAGS Defined flags in the mailbox | FLAGS Defined flags in the mailbox | |||
| <n> EXISTS The number of messages in the mailbox | <n> EXISTS The number of messages in the mailbox | |||
| <n> RECENT The number of messages added to the mailbox since | <n> RECENT The number of messages added to the mailbox since | |||
| the previous time this mailbox was read | 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 | to define the initial state of the mailbox at the client. If it | |||
| is not possible to determine the messages that were added since | is not possible to determine the messages that were added since | |||
| the previous time a mailbox was read, then all messages SHOULD be | the previous time a mailbox was read, then all messages SHOULD be | |||
| considered recent. | considered recent. | |||
| The server SHOULD also send an UNSEEN response code in an OK | The server SHOULD also send an UNSEEN response code in an OK | |||
| untagged response, indicating the message sequence number of the | untagged response, indicating the message sequence number of the | |||
| first unseen message in the mailbox. | first unseen message in the mailbox. | |||
| If the client can not change the permanent state of one or more of | 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 | the flags listed in the FLAGS untagged response, the server SHOULD | |||
| send a PERMANENTFLAGS response code in an OK untagged response, | send a PERMANENTFLAGS response code in an OK untagged response, | |||
| listing the flags that the client may change permanently. | listing the flags that the client may change permanently. | |||
| Only one mailbox may be selected at a time in a session; | Only one mailbox may be selected at a time in a session; | |||
| simultaneous access to multiple mailboxes requires multiple | simultaneous access to multiple mailboxes requires multiple | |||
| sessions. The SELECT command automatically deselects any | sessions. The SELECT command automatically deselects any | |||
| currently selected mailbox before attempting the new selection. | currently selected mailbox before attempting the new selection. | |||
| Consequently, if a mailbox is selected and a SELECT command that | Consequently, if a mailbox is selected and a SELECT command that | |||
| Internet DRAFT IMAP4 October 30, 1994 | ||||
| fails is attempted, no mailbox is selected. | fails is attempted, no mailbox is selected. | |||
| If the user is permitted to modify the mailbox, the server SHOULD | If the user is permitted to modify the mailbox, the server SHOULD | |||
| prefix the text of the OK response with the "[READ-WRITE]" | prefix the text of the OK response with the "[READ-WRITE]" | |||
| Internet DRAFT IMAP4 August 1, 1994 | ||||
| response code. | response code. | |||
| If the user is not permitted to modify the mailbox but is | If the user is not permitted to modify the mailbox but is | |||
| permitted read access, the mailbox is selected as read-only, and | permitted read access, the mailbox is selected as read-only, and | |||
| the server MUST prefix the text of the OK response to SELECT with | the server MUST prefix the text of the OK response to SELECT with | |||
| the "[READ-ONLY]" response code. Read-only access through SELECT | the "[READ-ONLY]" response code. Read-only access through SELECT | |||
| differs from the EXAMINE command in that certain read-only | differs from the EXAMINE command in that certain read-only | |||
| mailboxes may permit the change of permanent state on a per-user | mailboxes may permit the change of permanent state on a per-user | |||
| (as opposed to global) basis. Netnews messages marked in a user's | (as opposed to global) basis. Netnews messages marked in a user's | |||
| .newsrc file are an example of such per-user permanent state that | .newsrc file are an example of such per-user permanent state that | |||
| can be modified with read-only mailboxes. | can be modified with read-only mailboxes. | |||
| Example: C: A142 SELECT INBOX | Example: C: A142 SELECT INBOX | |||
| S: * 172 EXISTS | S: * 172 EXISTS | |||
| S: * 1 RECENT | S: * 1 RECENT | |||
| S: * OK [UNSEEN 12] Message 12 is first unseen | S: * OK [UNSEEN 12] Message 12 is first unseen | |||
| S: * OK [UIDVALIDITY 3857529045] UIDs valid | ||||
| S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft) | S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft) | |||
| S: * OK [PERMANENTFLAGS (\Deleted \Seen \*)] Limited | S: * OK [PERMANENTFLAGS (\Deleted \Seen \*)] Limited | |||
| S: A142 OK [READ-WRITE] SELECT completed | S: A142 OK [READ-WRITE] SELECT completed | |||
| 6.3.2. EXAMINE Command | 6.3.2. EXAMINE Command | |||
| Arguments: mailbox name | Arguments: mailbox name | |||
| Data: mandatory untagged responses: FLAGS, EXISTS, RECENT | Data: mandatory untagged responses: FLAGS, EXISTS, RECENT | |||
| optional OK untagged responses: UNSEEN, PERMANENTFLAGS | optional OK untagged responses: UNSEEN, PERMANENTFLAGS | |||
| skipping to change at page 16, line 49 ¶ | skipping to change at page 17, line 4 ¶ | |||
| The EXAMINE command is identical to SELECT and returns the same | The EXAMINE command is identical to SELECT and returns the same | |||
| output; however, the selected mailbox is identified as read-only. | output; however, the selected mailbox is identified as read-only. | |||
| No changes to the permanent state of the mailbox, including | No changes to the permanent state of the mailbox, including | |||
| per-user state, are permitted. | per-user state, are permitted. | |||
| The text of an OK response to the EXAMINE command MUST begin with | The text of an OK response to the EXAMINE command MUST begin with | |||
| the "[READ-ONLY]" response code. | the "[READ-ONLY]" response code. | |||
| Example: C: A932 EXAMINE blurdybloop | Example: C: A932 EXAMINE blurdybloop | |||
| S: * 17 EXISTS | S: * 17 EXISTS | |||
| Internet DRAFT IMAP4 October 30, 1994 | ||||
| S: * 2 RECENT | S: * 2 RECENT | |||
| S: * OK [UNSEEN 8] Message 8 is first unseen | S: * OK [UNSEEN 8] Message 8 is first unseen | |||
| S: * OK [UIDVALIDITY 3857529045] UIDs valid | ||||
| S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft) | S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft) | |||
| S: * OK [PERMANENTFLAGS ()] No permanent flags permitted | S: * OK [PERMANENTFLAGS ()] No permanent flags permitted | |||
| S: A932 OK [READ-ONLY] EXAMINE completed | S: A932 OK [READ-ONLY] EXAMINE completed | |||
| Internet DRAFT IMAP4 August 1, 1994 | ||||
| 6.3.3. CREATE Command | 6.3.3. CREATE Command | |||
| Arguments: mailbox name | Arguments: mailbox name | |||
| Data: no specific data for this command | Data: no specific data for this command | |||
| Result: OK - create completed | Result: OK - create completed | |||
| NO - create failure: can't create mailbox with that name | NO - create failure: can't create mailbox with that name | |||
| BAD - command unknown or arguments invalid | BAD - command unknown or arguments invalid | |||
| skipping to change at page 17, line 30 ¶ | skipping to change at page 17, line 37 ¶ | |||
| with a name that refers to an extant mailbox. Any error in | with a name that refers to an extant mailbox. Any error in | |||
| creation will return a tagged NO response. | creation will return a tagged NO response. | |||
| If the mailbox name is suffixed with the server's hierarchy | If the mailbox name is suffixed with the server's hierarchy | |||
| separator character (as returned from the server by a LIST | separator character (as returned from the server by a LIST | |||
| command), this is a declaration that the client may, in the | command), this is a declaration that the client may, in the | |||
| future, create mailbox names under this name in the hierarchy. | future, create mailbox names under this name in the hierarchy. | |||
| Server implementations that do not require this declaration MUST | Server implementations that do not require this declaration MUST | |||
| ignore it. | 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/ | Example: C: A003 CREATE owatagusiam/ | |||
| S: A003 OK CREATE completed | S: A003 OK CREATE completed | |||
| C: A004 CREATE owatagusiam/blurdybloop | C: A004 CREATE owatagusiam/blurdybloop | |||
| S: A004 OK CREATE completed | S: A004 OK CREATE completed | |||
| Note: the interpretation of this example depends on whether | Note: the interpretation of this example depends on whether | |||
| "/" was returned as the hierarchy separator from LIST. If | "/" was returned as the hierarchy separator from LIST. If | |||
| "/" is the hierarchy separator, a new level of hierarchy | "/" is the hierarchy separator, a new level of hierarchy | |||
| named "owatagusiam" with a member called "blurdybloop" is | named "owatagusiam" with a member called "blurdybloop" is | |||
| created. Otherwise, two mailboxes at the same hierarchy | created. Otherwise, two mailboxes at the same hierarchy | |||
| Internet DRAFT IMAP4 October 30, 1994 | ||||
| level are created. | level are created. | |||
| 6.3.4. DELETE Command | 6.3.4. DELETE Command | |||
| Arguments: mailbox name | Arguments: mailbox name | |||
| Data: no specific data for this command | Data: no specific data for this command | |||
| Result: OK - delete completed | Result: OK - delete completed | |||
| NO - delete failure: can't delete mailbox with that name | NO - delete failure: can't delete mailbox with that name | |||
| BAD - command unknown or arguments invalid | BAD - command unknown or arguments invalid | |||
| The DELETE command permanently removes the mailbox with the given | The DELETE command permanently removes the mailbox with the given | |||
| name. An OK response is returned only if the mailbox has been | name. An OK response is returned only if the mailbox has been | |||
| Internet DRAFT IMAP4 August 1, 1994 | ||||
| deleted. It is an error to attempt to delete INBOX or a mailbox | 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 | name that does not exist. Any error in deletion will return a | |||
| tagged NO response. | 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 | Example: C: A683 DELETE blurdybloop | |||
| S: A683 OK DELETE completed | S: A683 OK DELETE completed | |||
| 6.3.5. RENAME Command | 6.3.5. RENAME Command | |||
| Arguments: existing mailbox name | Arguments: existing mailbox name | |||
| new mailbox name | new mailbox name | |||
| Data: no specific data for this command | Data: no specific data for this command | |||
| skipping to change at page 18, line 32 ¶ | skipping to change at page 19, line 5 ¶ | |||
| NO - rename failure: can't rename mailbox with that name, | NO - rename failure: can't rename mailbox with that name, | |||
| can't rename to mailbox with that name | can't rename to mailbox with that name | |||
| BAD - command unknown or arguments invalid | BAD - command unknown or arguments invalid | |||
| The RENAME command changes the name of a mailbox. An OK response | The RENAME command changes the name of a mailbox. An OK response | |||
| is returned only if the mailbox has been renamed. It is an error | 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 | 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 | a mailbox name that already exists. Any error in renaming will | |||
| return a tagged NO response. | return a tagged NO response. | |||
| Internet DRAFT IMAP4 October 30, 1994 | ||||
| Renaming INBOX is permitted; a new, empty INBOX is created in its | Renaming INBOX is permitted; a new, empty INBOX is created in its | |||
| place. | place. | |||
| Example: C: Z4S9 RENAME blurdybloop owatagusiam | Example: C: Z4S9 RENAME blurdybloop owatagusiam | |||
| S: Z4S9 OK RENAME completed | S: Z4S9 OK RENAME completed | |||
| 6.3.6. SUBSCRIBE Command | 6.3.6. SUBSCRIBE Command | |||
| Arguments: mailbox | Arguments: mailbox | |||
| Data: no specific data for this command | Data: no specific data for this command | |||
| Result: OK - subscribe completed | Result: OK - subscribe completed | |||
| NO - subscribe failure: can't subscribe to that name | NO - subscribe failure: can't subscribe to that name | |||
| BAD - command unknown or arguments invalid | BAD - command unknown or arguments invalid | |||
| The SUBSCRIBE command adds the specified mailbox name to the | The SUBSCRIBE command adds the specified mailbox name to the | |||
| server's set of "active" or "subscribed" mailboxes as returned by | server's set of "active" or "subscribed" mailboxes as returned by | |||
| the LSUB command. This command returns an OK response only if the | the LSUB command. This command returns an OK response only if the | |||
| Internet DRAFT IMAP4 August 1, 1994 | ||||
| subscription is successful. | subscription is successful. | |||
| Example: C: A002 SUBSCRIBE #news.comp.mail.mime | Example: C: A002 SUBSCRIBE #news.comp.mail.mime | |||
| S: A002 OK SUBSCRIBE completed | S: A002 OK SUBSCRIBE completed | |||
| 6.3.7. UNSUBSCRIBE Command | 6.3.7. UNSUBSCRIBE Command | |||
| Arguments: mailbox name | Arguments: mailbox name | |||
| Data: no specific data for this command | Data: no specific data for this command | |||
| skipping to change at page 19, line 30 ¶ | skipping to change at page 20, line 5 ¶ | |||
| BAD - command unknown or arguments invalid | BAD - command unknown or arguments invalid | |||
| The UNSUBSCRIBE command removes the specified mailbox name from | The UNSUBSCRIBE command removes the specified mailbox name from | |||
| the server's set of "active" or "subscribed" mailboxes as returned | the server's set of "active" or "subscribed" mailboxes as returned | |||
| by the LSUB command. This command returns an OK response only if | by the LSUB command. This command returns an OK response only if | |||
| the unsubscription is successful. | the unsubscription is successful. | |||
| Example: C: A002 UNSUBSCRIBE #news.comp.mail.mime | Example: C: A002 UNSUBSCRIBE #news.comp.mail.mime | |||
| S: A002 OK UNSUBSCRIBE completed | S: A002 OK UNSUBSCRIBE completed | |||
| Internet DRAFT IMAP4 October 30, 1994 | ||||
| 6.3.8. LIST Command | 6.3.8. LIST Command | |||
| Arguments: reference name | Arguments: reference name | |||
| mailbox name with possible wildcards | mailbox name with possible wildcards | |||
| Data: untagged responses: LIST | Data: untagged responses: LIST | |||
| Result: OK - list completed | Result: OK - list completed | |||
| NO - list failure: can't list that reference or name | NO - list failure: can't list that reference or name | |||
| BAD - command unknown or arguments invalid | BAD - command unknown or arguments invalid | |||
| skipping to change at page 20, line 5 ¶ | skipping to change at page 20, line 31 ¶ | |||
| delimiter, and name; see the description of the LIST reply for | delimiter, and name; see the description of the LIST reply for | |||
| more detail. | more detail. | |||
| An empty ("" string) reference name argument indicates that the | An empty ("" string) reference name argument indicates that the | |||
| mailbox name is interpreted as by SELECT. The returned mailbox | mailbox name is interpreted as by SELECT. The returned mailbox | |||
| names MUST match the supplied mailbox name pattern. A non-empty | names MUST match the supplied mailbox name pattern. A non-empty | |||
| reference name argument is the name of a mailbox or a level of | reference name argument is the name of a mailbox or a level of | |||
| mailbox hierarchy, and indicates a context in which the mailbox | mailbox hierarchy, and indicates a context in which the mailbox | |||
| name is interpreted in an implementation-defined manner. | name is interpreted in an implementation-defined manner. | |||
| Internet DRAFT IMAP4 August 1, 1994 | The reference and mailbox name arguments are interpreted, in an | |||
| implementation-dependent fashion, into a canonical form that | ||||
| The reference and mailbox name arguments are canonicalized, in an | ||||
| implementation-dependent fashion, to an interpreted form that | ||||
| represents an unambiguous left-to-right hierarchy. The returned | represents an unambiguous left-to-right hierarchy. The returned | |||
| mailbox names will be in the interpreted form. | mailbox names will be in the interpreted form. | |||
| Any part of the reference argument that is included in the | Any part of the reference argument that is included in the | |||
| interpreted form SHOULD prefix the interpreted form. It should | interpreted form SHOULD prefix the interpreted form. It should | |||
| also be in the same form as the reference name argument and not | also be in the same form as the reference name argument. This | |||
| canonicalized into some other form. This rule permits the client | rule permits the client to determine if the returned mailbox name | |||
| to determine if the returned mailbox name is in the context of the | is in the context of the reference argument, or if something about | |||
| reference argument, or if something about the mailbox argument | the mailbox argument overrode the reference argument. Without | |||
| overrode the reference argument. Without this rule, the client | this rule, the client would have to have knowledge of the server's | |||
| would have to have knowledge of the server's naming semantics | naming semantics including what characters are "breakouts" that | |||
| including what characters are "breakouts" that override a naming | override a naming context. | |||
| context. | ||||
| Internet DRAFT IMAP4 October 30, 1994 | ||||
| For example, here are some examples of how references | For example, here are some examples of how references | |||
| and mailbox names might be interpreted on a UNIX-based | and mailbox names might be interpreted on a UNIX-based | |||
| server: | server: | |||
| Reference Mailbox Name Interpretation | Reference Mailbox Name Interpretation | |||
| ------------ ------------ -------------- | ------------ ------------ -------------- | |||
| ~smith/Mail/ foo.* ~smith/Mail/foo.* | ~smith/Mail/ foo.* ~smith/Mail/foo.* | |||
| archive/ % archive/% | archive/ % archive/% | |||
| #news. comp.mail.* #news.comp.mail.* | #news. comp.mail.* #news.comp.mail.* | |||
| ~smith/Mail/ /usr/doc/foo /usr/doc/foo | ~smith/Mail/ /usr/doc/foo /usr/doc/foo | |||
| archive/ ~fred/Mail/* ~fred/Mail/* | archive/ ~fred/Mail/* ~fred/Mail/* | |||
| The first three examples demonstrate interpretations in | The first three examples demonstrate interpretations in | |||
| the context of the reference argument. Note that | the context of the reference argument. Note that | |||
| "~smith/Mail" should not be canonicalized into something | "~smith/Mail" should not be transformed into something | |||
| like "/u2/users/smith/Mail", or it would be impossible | like "/u2/users/smith/Mail", or it would be impossible | |||
| for the client to determine that the interpretation was | for the client to determine that the interpretation was | |||
| in the context of the reference. | in the context of the reference. | |||
| The character "*" is a wildcard, and matches zero or more | The character "*" is a wildcard, and matches zero or more | |||
| characters at this position. The character "%" is similar to "*", | characters at this position. The character "%" is similar to "*", | |||
| but it does not match a hierarchy delimiter. | 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 | Server implementations are permitted to "hide" otherwise | |||
| accessible mailboxes from the wildcard characters, by preventing | accessible mailboxes from the wildcard characters, by preventing | |||
| certain characters or names from matching a wildcard in certain | certain characters or names from matching a wildcard in certain | |||
| situations. For example, a UNIX-based server might restrict the | situations. For example, a UNIX-based server might restrict the | |||
| interpretation of "*" so that an initial "/" character does not | interpretation of "*" so that an initial "/" character does not | |||
| match. | match. | |||
| The special name INBOX is included in the output from LIST if it | The special name INBOX is included in the output from LIST if it | |||
| matches the input arguments and INBOX is supported by this server | matches the input arguments and INBOX is supported by this server | |||
| Internet DRAFT IMAP4 August 1, 1994 | ||||
| for this user. The criteria for omitting INBOX is whether SELECT | for this user. The criteria for omitting INBOX is whether SELECT | |||
| INBOX will return failure; it is not relevant whether the user's | INBOX will return failure; it is not relevant whether the user's | |||
| real INBOX resides on this or some other server. | real INBOX resides on this or some other server. | |||
| Example: C: A002 LIST "~/Mail/" "%" | Example: C: A002 LIST "~/Mail/" "%" | |||
| S: * LIST (\Noselect) "/" ~/Mail/foo | S: * LIST (\Noselect) "/" ~/Mail/foo | |||
| S: * LIST () "/" ~/Mail/meetings | S: * LIST () "/" ~/Mail/meetings | |||
| S: A002 OK LIST completed | S: A002 OK LIST completed | |||
| Internet DRAFT IMAP4 October 30, 1994 | ||||
| 6.3.9. LSUB Command | 6.3.9. LSUB Command | |||
| Arguments: reference name | Arguments: reference name | |||
| mailbox name with possible wildcards | mailbox name with possible wildcards | |||
| Data: untagged responses: LSUB | Data: untagged responses: LSUB | |||
| Result: OK - lsub completed | Result: OK - lsub completed | |||
| NO - lsub failure: can't list that reference or name | NO - lsub failure: can't list that reference or name | |||
| BAD - command unknown or arguments invalid | BAD - command unknown or arguments invalid | |||
| skipping to change at page 22, line 4 ¶ | skipping to change at page 22, line 44 ¶ | |||
| Data: no specific data for this command | Data: no specific data for this command | |||
| Result: OK - append completed | Result: OK - append completed | |||
| NO - append error: can't append to that mailbox, error | NO - append error: can't append to that mailbox, error | |||
| in flags or date/time or message text | in flags or date/time or message text | |||
| BAD - command unknown or arguments invalid | BAD - command unknown or arguments invalid | |||
| The APPEND command appends the literal argument as a new message | The APPEND command appends the literal argument as a new message | |||
| in the specified destination mailbox. This argument is in the | in the specified destination mailbox. This argument is in the | |||
| Internet DRAFT IMAP4 August 1, 1994 | ||||
| format of an [RFC-822] message. 8-bit characters are permitted in | format of an [RFC-822] message. 8-bit characters are permitted in | |||
| the message. A server implementation that is unable to preserve | the message. A server implementation that is unable to preserve | |||
| 8-bit data properly MUST be able to reversibly convert 8-bit | 8-bit data properly MUST be able to reversibly convert 8-bit | |||
| APPEND data to 7-bit using [MIME-1] encoding. | APPEND data to 7-bit using [MIME-1] encoding. | |||
| If a flag parenthesized list or date_time are specified, that data | If a flag parenthesized list or date_time are specified, that data | |||
| SHOULD be set in the resulting message; otherwise, the defaults of | SHOULD be set in the resulting message; otherwise, the defaults of | |||
| empty flags and the current date/time are used. | empty flags and the current date/time are used. | |||
| If the append is unsuccessful for any reason, the mailbox MUST be | If the append is unsuccessful for any reason, the mailbox MUST be | |||
| Internet DRAFT IMAP4 October 30, 1994 | ||||
| restored to its state before the APPEND attempt; no partial | restored to its state before the APPEND attempt; no partial | |||
| appending is permitted. If the mailbox is currently selected, the | appending is permitted. If the mailbox is currently selected, the | |||
| normal new mail actions should occur. | normal new mail actions should occur. | |||
| If the destination mailbox does not exist, a server MUST return an | If the destination mailbox does not exist, a server MUST return an | |||
| error, and MUST NOT automatically create the mailbox. Unless it | error, and MUST NOT automatically create the mailbox. Unless it | |||
| is certain that the destination mailbox can not be created, the | is certain that the destination mailbox can not be created, the | |||
| server MUST send the response code "[TRYCREATE]" as the prefix of | server MUST send the response code "[TRYCREATE]" as the prefix of | |||
| the text of the tagged NO response. This gives a hint to the | 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 | client that it can attempt a CREATE command and retry the APPEND | |||
| skipping to change at page 23, line 4 ¶ | skipping to change at page 23, line 43 ¶ | |||
| because it does not provide a mechanism to transfer [SMTP] | because it does not provide a mechanism to transfer [SMTP] | |||
| envelope information. | envelope information. | |||
| 6.4. Client Commands - Selected State | 6.4. Client Commands - Selected State | |||
| In selected state, commands that manipulate messages in a mailbox are | In selected state, commands that manipulate messages in a mailbox are | |||
| permitted. | permitted. | |||
| In addition to the universal commands (CAPABILITY, NOOP, and LOGOUT), | In addition to the universal commands (CAPABILITY, NOOP, and LOGOUT), | |||
| and the authenticated state commands (SELECT, EXAMINE, CREATE, | and the authenticated state commands (SELECT, EXAMINE, CREATE, | |||
| Internet DRAFT IMAP4 August 1, 1994 | ||||
| DELETE, RENAME, SUBSCRIBE, UNSUBSCRIBE, LIST, LSUB, FIND | DELETE, RENAME, SUBSCRIBE, UNSUBSCRIBE, LIST, LSUB, FIND | |||
| ALL.MAILBOXES, FIND MAILBOXES, and APPEND), the following commands | ALL.MAILBOXES, FIND MAILBOXES, and APPEND), the following commands | |||
| are valid in the selected state: CHECK, CLOSE, EXPUNGE, SEARCH, | are valid in the selected state: CHECK, CLOSE, EXPUNGE, SEARCH, | |||
| FETCH, PARTIAL, STORE, COPY, and UID. | FETCH, PARTIAL, STORE, COPY, and UID. | |||
| Internet DRAFT IMAP4 October 30, 1994 | ||||
| 6.4.1. CHECK Command | 6.4.1. CHECK Command | |||
| Arguments: none | Arguments: none | |||
| Data: no specific data for this command | Data: no specific data for this command | |||
| Result: OK - check completed | Result: OK - check completed | |||
| BAD - command unknown or arguments invalid | BAD - command unknown or arguments invalid | |||
| The CHECK command requests a checkpoint of the currently selected | The CHECK command requests a checkpoint of the currently selected | |||
| skipping to change at page 24, line 5 ¶ | skipping to change at page 24, line 50 ¶ | |||
| BAD - command unknown or arguments invalid | BAD - command unknown or arguments invalid | |||
| The CLOSE command permanently removes from the currently selected | The CLOSE command permanently removes from the currently selected | |||
| mailbox all messages that have the \Deleted flag set, and returns | mailbox all messages that have the \Deleted flag set, and returns | |||
| to authenticated state from selected state. No untagged EXPUNGE | to authenticated state from selected state. No untagged EXPUNGE | |||
| responses are sent. | responses are sent. | |||
| No messages are removed, and no error is given, if the mailbox is | No messages are removed, and no error is given, if the mailbox is | |||
| selected by an EXAMINE command or is otherwise selected read-only. | selected by an EXAMINE command or is otherwise selected read-only. | |||
| Internet DRAFT IMAP4 August 1, 1994 | ||||
| Even when a mailbox is selected, it is not required to send a | Even when a mailbox is selected, it is not required to send a | |||
| CLOSE command before a SELECT, EXAMINE, or LOGOUT command. The | CLOSE command before a SELECT, EXAMINE, or LOGOUT command. The | |||
| SELECT, EXAMINE, and LOGOUT commands implicitly close the | SELECT, EXAMINE, and LOGOUT commands implicitly close the | |||
| currently selected mailbox without doing an expunge. However, | currently selected mailbox without doing an expunge. However, | |||
| Internet DRAFT IMAP4 October 30, 1994 | ||||
| when many messages are deleted, a CLOSE-LOGOUT or CLOSE-SELECT | when many messages are deleted, a CLOSE-LOGOUT or CLOSE-SELECT | |||
| sequence is considerably faster than an EXPUNGE-LOGOUT or | sequence is considerably faster than an EXPUNGE-LOGOUT or | |||
| EXPUNGE-SELECT because no untagged EXPUNGE responses (which the | EXPUNGE-SELECT because no untagged EXPUNGE responses (which the | |||
| client would probably ignore) are sent. | client would probably ignore) are sent. | |||
| Example: C: A341 CLOSE | Example: C: A341 CLOSE | |||
| S: A341 OK CLOSE completed | S: A341 OK CLOSE completed | |||
| 6.4.3. EXPUNGE Command | 6.4.3. EXPUNGE Command | |||
| skipping to change at page 25, line 5 ¶ | skipping to change at page 26, line 5 ¶ | |||
| S: * 3 EXPUNGE | S: * 3 EXPUNGE | |||
| S: * 3 EXPUNGE | S: * 3 EXPUNGE | |||
| S: * 5 EXPUNGE | S: * 5 EXPUNGE | |||
| S: * 8 EXPUNGE | S: * 8 EXPUNGE | |||
| S: A202 OK EXPUNGE completed | S: A202 OK EXPUNGE completed | |||
| Note: in this example, messages 3, 4, 7, and 11 had the | Note: in this example, messages 3, 4, 7, and 11 had the | |||
| \Deleted flag set. See the description of the EXPUNGE | \Deleted flag set. See the description of the EXPUNGE | |||
| response for further explanation. | response for further explanation. | |||
| Internet DRAFT IMAP4 August 1, 1994 | Internet DRAFT IMAP4 October 30, 1994 | |||
| 6.4.4. SEARCH Command | 6.4.4. SEARCH Command | |||
| Arguments: optional character set specification | Arguments: optional character set specification | |||
| searching criteria (one or more) | searching criteria (one or more) | |||
| Data: mandatory untagged response: SEARCH | Data: mandatory untagged response: SEARCH | |||
| Result: OK - search completed | Result: OK - search completed | |||
| NO - search error: can't search that character set or | NO - search error: can't search that character set or | |||
| skipping to change at page 26, line 5 ¶ | skipping to change at page 27, line 5 ¶ | |||
| tagged NO response (not a BAD). | tagged NO response (not a BAD). | |||
| In all search keys that use strings, a message matches the key if | In all search keys that use strings, a message matches the key if | |||
| the string is a substring of the field. The matching is | the string is a substring of the field. The matching is | |||
| case-insensitive. | case-insensitive. | |||
| The defined search keys are as follows. Refer to the Formal | The defined search keys are as follows. Refer to the Formal | |||
| Syntax section for the precise syntactic definitions of the | Syntax section for the precise syntactic definitions of the | |||
| arguments. | arguments. | |||
| Internet DRAFT IMAP4 August 1, 1994 | Internet DRAFT IMAP4 October 30, 1994 | |||
| <message set> Messages with message sequence numbers | <message set> Messages with message sequence numbers | |||
| corresponding to the specified message sequence | corresponding to the specified message sequence | |||
| number set | number set | |||
| ALL All messages in the mailbox; the default initial | ALL All messages in the mailbox; the default initial | |||
| key for ANDing. | key for ANDing. | |||
| ANSWERED Messages with the \Answered flag set. | ANSWERED Messages with the \Answered flag set. | |||
| skipping to change at page 27, line 5 ¶ | skipping to change at page 28, line 5 ¶ | |||
| LARGER <n> Messages with an RFC822.SIZE larger than the | LARGER <n> Messages with an RFC822.SIZE larger than the | |||
| specified number of octets. | specified number of octets. | |||
| NEW Messages that have the \Recent flag set but not the | NEW Messages that have the \Recent flag set but not the | |||
| \Seen flag. This is functionally equivalent to | \Seen flag. This is functionally equivalent to | |||
| "(RECENT UNSEEN)". | "(RECENT UNSEEN)". | |||
| NOT <search-key> | NOT <search-key> | |||
| Messages that do not match the specified search | Messages that do not match the specified search | |||
| Internet DRAFT IMAP4 August 1, 1994 | Internet DRAFT IMAP4 October 30, 1994 | |||
| key. | key. | |||
| OLD Messages that do not have the \Recent flag set. | OLD Messages that do not have the \Recent flag set. | |||
| This is functionally equivalent to "NOT RECENT" (as | This is functionally equivalent to "NOT RECENT" (as | |||
| opposed to "NOT NEW"). | opposed to "NOT NEW"). | |||
| ON <date> Messages whose internal date is within the | ON <date> Messages whose internal date is within the | |||
| specified date. | specified date. | |||
| skipping to change at page 28, line 5 ¶ | skipping to change at page 29, line 5 ¶ | |||
| TEXT <string> Messages that contain the specified string in the | TEXT <string> Messages that contain the specified string in the | |||
| header or body of the message. | header or body of the message. | |||
| TO <string> Messages that contain the specified string in the | TO <string> Messages that contain the specified string in the | |||
| envelope structure's TO field. | envelope structure's TO field. | |||
| UID <message set> | UID <message set> | |||
| Messages with unique identifiers corresponding to | Messages with unique identifiers corresponding to | |||
| Internet DRAFT IMAP4 August 1, 1994 | Internet DRAFT IMAP4 October 30, 1994 | |||
| the specified unique identifier set. | the specified unique identifier set. | |||
| UNANSWERED Messages that do not have the \Answered flag set. | UNANSWERED Messages that do not have the \Answered flag set. | |||
| UNDELETED Messages that do not have the \Deleted flag set. | UNDELETED Messages that do not have the \Deleted flag set. | |||
| UNDRAFT Messages that do not have the \Draft flag set. | UNDRAFT Messages that do not have the \Draft flag set. | |||
| UNFLAGGED Messages that do not have the \Flagged flag set. | UNFLAGGED Messages that do not have the \Flagged flag set. | |||
| skipping to change at page 29, line 5 ¶ | skipping to change at page 30, line 5 ¶ | |||
| ALL Macro equivalent to: (FLAGS INTERNALDATE | ALL Macro equivalent to: (FLAGS INTERNALDATE | |||
| RFC822.SIZE ENVELOPE) | RFC822.SIZE ENVELOPE) | |||
| BODY Non-extensible form of BODYSTRUCTURE. | BODY Non-extensible form of BODYSTRUCTURE. | |||
| BODY[<section>] | BODY[<section>] | |||
| The text of a particular body section. The section | The text of a particular body section. The section | |||
| specification is a set of one or more part numbers | specification is a set of one or more part numbers | |||
| delimited by periods. | delimited by periods. | |||
| Internet DRAFT IMAP4 August 1, 1994 | Internet DRAFT IMAP4 October 30, 1994 | |||
| Single-part messages only have a part 1. | Single-part messages only have a part 1. | |||
| Multipart messages are assigned consecutive part | Multipart messages are assigned consecutive part | |||
| numbers, as they occur in the message. If a | numbers, as they occur in the message. If a | |||
| particular part is of type message or multipart, | particular part is of type message or multipart, | |||
| its parts must be indicated by a period followed by | its parts must be indicated by a period followed by | |||
| the part number within that nested multipart part. | the part number within that nested multipart part. | |||
| It is not permitted to fetch a multipart part | It is not permitted to fetch a multipart part | |||
| itself, only its individual members. | itself, only its individual members. | |||
| skipping to change at page 30, line 5 ¶ | skipping to change at page 31, line 5 ¶ | |||
| 4.2.2.2 TEXT/RICHTEXT | 4.2.2.2 TEXT/RICHTEXT | |||
| Note that there is no section | Note that there is no section | |||
| specification for the Multi-part parts | specification for the Multi-part parts | |||
| (no section 4 or 4.2.2). | (no section 4 or 4.2.2). | |||
| The \Seen flag is implicitly set; if this causes | The \Seen flag is implicitly set; if this causes | |||
| the flags to change they should be included as part | the flags to change they should be included as part | |||
| of the fetch responses. | of the fetch responses. | |||
| Internet DRAFT IMAP4 August 1, 1994 | Internet DRAFT IMAP4 October 30, 1994 | |||
| BODY.PEEK[<section>] | BODY.PEEK[<section>] | |||
| An alternate form of BODY[section] that does not | An alternate form of BODY[section] that does not | |||
| implicitly set the \Seen flag. | implicitly set the \Seen flag. | |||
| BODYSTRUCTURE The [MIME-1] body structure of the message. This | BODYSTRUCTURE The [MIME-1] body structure of the message. This | |||
| is computed by the server by parsing the [MIME-1] | is computed by the server by parsing the [MIME-1] | |||
| header lines. | header lines. | |||
| ENVELOPE The envelope structure of the message. This is | ENVELOPE The envelope structure of the message. This is | |||
| skipping to change at page 31, line 5 ¶ | skipping to change at page 32, line 5 ¶ | |||
| the [RFC-822] format header of the message with a | the [RFC-822] format header of the message with a | |||
| field-name (as defined in [RFC-822]) that matches | field-name (as defined in [RFC-822]) that matches | |||
| any of the strings in header_list. The matching is | any of the strings in header_list. The matching is | |||
| case-insensitive but otherwise exact. The | case-insensitive but otherwise exact. The | |||
| delimiting blank line between the header and the | delimiting blank line between the header and the | |||
| body is always included. | body is always included. | |||
| RFC822.HEADER.LINES.NOT <header_list> | RFC822.HEADER.LINES.NOT <header_list> | |||
| All header lines (including continuation lines) of | All header lines (including continuation lines) of | |||
| Internet DRAFT IMAP4 August 1, 1994 | Internet DRAFT IMAP4 October 30, 1994 | |||
| the [RFC-822] format header of the message with a | the [RFC-822] format header of the message with a | |||
| field-name (as defined in [RFC-822]) that does not | field-name (as defined in [RFC-822]) that does not | |||
| match any of the strings in header_list. The | match any of the strings in header_list. The | |||
| matching is case-insensitive but otherwise exact. | matching is case-insensitive but otherwise exact. | |||
| The delimiting blank line between the header and | The delimiting blank line between the header and | |||
| the body is always included. | the body is always included. | |||
| RFC822.SIZE The number of octets in the message, as expressed | RFC822.SIZE The number of octets in the message, as expressed | |||
| in [RFC-822] format. | in [RFC-822] format. | |||
| skipping to change at page 32, line 5 ¶ | skipping to change at page 33, line 5 ¶ | |||
| NO - partial error: can't fetch that data | NO - partial error: can't fetch that data | |||
| BAD - command unknown or arguments invalid | BAD - command unknown or arguments invalid | |||
| The PARTIAL command is equivalent to the associated FETCH command, | The PARTIAL command is equivalent to the associated FETCH command, | |||
| with the added functionality that only the specified number of | with the added functionality that only the specified number of | |||
| octets, beginning at the specified starting octet, are returned. | octets, beginning at the specified starting octet, are returned. | |||
| Only a single message can be fetched at a time. The first octet | Only a single message can be fetched at a time. The first octet | |||
| of a message, and hence the minimum for the starting octet, is | of a message, and hence the minimum for the starting octet, is | |||
| octet 1. | octet 1. | |||
| Internet DRAFT IMAP4 August 1, 1994 | Internet DRAFT IMAP4 October 30, 1994 | |||
| The following FETCH items are valid data for PARTIAL: RFC822, | The following FETCH items are valid data for PARTIAL: RFC822, | |||
| RFC822.HEADER, RFC822.TEXT, BODY[section], as well as any .PEEK | RFC822.HEADER, RFC822.TEXT, BODY[section], as well as any .PEEK | |||
| forms of these. | forms of these. | |||
| Any partial fetch that attempts to read beyond the end of the text | Any partial fetch that attempts to read beyond the end of the text | |||
| is truncated as appropriate. If the starting octet is beyond the | is truncated as appropriate. If the starting octet is beyond the | |||
| end of the text, an empty string is returned. | end of the text, an empty string is returned. | |||
| The data are returned with the FETCH response. There is no | The data are returned with the FETCH response. There is no | |||
| skipping to change at page 33, line 5 ¶ | skipping to change at page 34, line 5 ¶ | |||
| NO - store error: can't store that data | NO - store error: can't store that data | |||
| BAD - command unknown or arguments invalid | BAD - command unknown or arguments invalid | |||
| The STORE command alters data associated with a message in the | The STORE command alters data associated with a message in the | |||
| mailbox. Normally, STORE will return the updated value of the | mailbox. Normally, STORE will return the updated value of the | |||
| data with an untagged FETCH response. A suffix of ".SILENT" in | data with an untagged FETCH response. A suffix of ".SILENT" in | |||
| the data item name prevents the untagged FETCH, and the server | the data item name prevents the untagged FETCH, and the server | |||
| should assume that the client has determined the updated value | should assume that the client has determined the updated value | |||
| itself or does not care about the updated value. | itself or does not care about the updated value. | |||
| Internet DRAFT IMAP4 August 1, 1994 | Internet DRAFT IMAP4 October 30, 1994 | |||
| The currently defined data items that can be stored are: | The currently defined data items that can be stored are: | |||
| FLAGS <flag list> | FLAGS <flag list> | |||
| Replace the flags for the message with the | Replace the flags for the message with the | |||
| argument. The new value of the flags are returned | argument. The new value of the flags are returned | |||
| as if a FETCH of those flags was done. | as if a FETCH of those flags was done. | |||
| FLAGS.SILENT <flag list> | FLAGS.SILENT <flag list> | |||
| Equivalent to FLAGS, but without returning a new | Equivalent to FLAGS, but without returning a new | |||
| skipping to change at page 34, line 5 ¶ | skipping to change at page 35, line 5 ¶ | |||
| -FLAGS.SILENT <flag list> | -FLAGS.SILENT <flag list> | |||
| Equivalent to -FLAGS, but without returning a new | Equivalent to -FLAGS, but without returning a new | |||
| value. | value. | |||
| Example: C: A003 STORE 2:4 +FLAGS (\Deleted) | Example: C: A003 STORE 2:4 +FLAGS (\Deleted) | |||
| S: * 2 FETCH FLAGS (\Deleted \Seen) | S: * 2 FETCH FLAGS (\Deleted \Seen) | |||
| S: * 3 FETCH FLAGS (\Deleted) | S: * 3 FETCH FLAGS (\Deleted) | |||
| S: * 4 FETCH FLAGS (\Deleted \Flagged \Seen) | S: * 4 FETCH FLAGS (\Deleted \Flagged \Seen) | |||
| S: A003 OK STORE completed | S: A003 OK STORE completed | |||
| Internet DRAFT IMAP4 August 1, 1994 | Internet DRAFT IMAP4 October 30, 1994 | |||
| 6.4.8. COPY Command | 6.4.8. COPY Command | |||
| Arguments: message set | Arguments: message set | |||
| mailbox name | mailbox name | |||
| Data: no specific data for this command | Data: no specific data for this command | |||
| Result: OK - copy completed | Result: OK - copy completed | |||
| NO - copy error: can't copy those messages or to that | NO - copy error: can't copy those messages or to that | |||
| skipping to change at page 35, line 5 ¶ | skipping to change at page 36, line 5 ¶ | |||
| Result: OK - UID command completed | Result: OK - UID command completed | |||
| NO - UID command error | NO - UID command error | |||
| BAD - command unknown or arguments invalid | BAD - command unknown or arguments invalid | |||
| The UID command has two forms. In the first form, it takes as its | The UID command has two forms. In the first form, it takes as its | |||
| arguments a COPY, FETCH, or STORE command with arguments | arguments a COPY, FETCH, or STORE command with arguments | |||
| appropriate for the associated command. However, instead of | appropriate for the associated command. However, instead of | |||
| message sequence numbers, it uses unique identifiers in the | message sequence numbers, it uses unique identifiers in the | |||
| message set argument to reference a particular message or range of | message set argument to reference a particular message or range of | |||
| Internet DRAFT IMAP4 August 1, 1994 | Internet DRAFT IMAP4 October 30, 1994 | |||
| messages. | messages. | |||
| In the second form, the UID command takes a SEARCH command with | In the second form, the UID command takes a SEARCH command with | |||
| SEARCH command arguments. The interpretation of the arguments is | SEARCH command arguments. The interpretation of the arguments is | |||
| the same as with SEARCH; however, the numbers returned in a SEARCH | the same as with SEARCH; however, the numbers returned in a SEARCH | |||
| response for a UID SEARCH command are unique identifiers instead | response for a UID SEARCH command are unique identifiers instead | |||
| of message sequence numbers. For example, the command UID SEARCH | of message sequence numbers. For example, the command UID SEARCH | |||
| 1:100 UID 443:557 returns the unique identifiers corresponding to | 1:100 UID 443:557 returns the unique identifiers corresponding to | |||
| the intersection of the message sequence number set 1:100 and the | the intersection of the message sequence number set 1:100 and the | |||
| skipping to change at page 35, line 27 ¶ | skipping to change at page 36, line 27 ¶ | |||
| A unique identifier of a message is a number, and is guaranteed | A unique identifier of a message is a number, and is guaranteed | |||
| not to refer to any other message in the mailbox. Unique | not to refer to any other message in the mailbox. Unique | |||
| identifiers are assigned in a strictly ascending fashion for each | identifiers are assigned in a strictly ascending fashion for each | |||
| message added to the mailbox. Unlike message sequence numbers, | message added to the mailbox. Unlike message sequence numbers, | |||
| unique identifiers persist across sessions. This permits a client | unique identifiers persist across sessions. This permits a client | |||
| to resynchronize its state from a previous session with the server | to resynchronize its state from a previous session with the server | |||
| (e.g. disconnected or offline access clients); this is discussed | (e.g. disconnected or offline access clients); this is discussed | |||
| further in [IMAP-DISC]. | 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 | Message set ranges are permitted; however, there is no guarantee | |||
| that unique identifiers be contiguous. A non-existent unique | that unique identifiers be contiguous. A non-existent unique | |||
| identifier within a message set range is ignored without any error | identifier within a message set range is ignored without any error | |||
| message generated. | message generated. | |||
| The number after the "*" in an untagged FETCH response is always a | The number after the "*" in an untagged FETCH response is always a | |||
| message sequence number, not a unique identifier, even for a UID | message sequence number, not a unique identifier, even for a UID | |||
| command response. However, server implementations MUST implicitly | command response. However, server implementations MUST implicitly | |||
| include the UID message data item as part of any FETCH response | include the UID message data item as part of any FETCH response | |||
| caused by a UID command, regardless of whether UID was specified | caused by a UID command, regardless of whether UID was specified | |||
| Internet DRAFT IMAP4 October 30, 1994 | ||||
| as a message data item to the FETCH. | as a message data item to the FETCH. | |||
| Example: C: A003 UID FETCH 4827313:4828442 FLAGS | Example: C: A003 UID FETCH 4827313:4828442 FLAGS | |||
| S: * 23 FETCH (FLAGS (\Seen) UID 4827313) | S: * 23 FETCH (FLAGS (\Seen) UID 4827313) | |||
| S: * 24 FETCH (FLAGS (\Seen) UID 4827943) | S: * 24 FETCH (FLAGS (\Seen) UID 4827943) | |||
| S: * 25 FETCH (FLAGS (\Seen) UID 4828442) | S: * 25 FETCH (FLAGS (\Seen) UID 4828442) | |||
| S: A999 UID FETCH completed | S: A999 UID FETCH completed | |||
| Internet DRAFT IMAP4 August 1, 1994 | ||||
| 6.5. Client Commands - Experimental/Expansion | 6.5. Client Commands - Experimental/Expansion | |||
| 6.5.1. X<atom> Command | 6.5.1. X<atom> Command | |||
| Arguments: implementation defined | Arguments: implementation defined | |||
| Data: implementation defined | Data: implementation defined | |||
| Result: OK - command completed | Result: OK - command completed | |||
| NO - failure | NO - failure | |||
| skipping to change at page 37, line 5 ¶ | skipping to change at page 38, line 5 ¶ | |||
| send any such untagged responses, unless the client requested it | send any such untagged responses, unless the client requested it | |||
| by issuing the associated experimental command. | by issuing the associated experimental command. | |||
| Example: C: a441 CAPABILITY | Example: C: a441 CAPABILITY | |||
| S: * CAPABILITY IMAP4 XPIG-LATIN | S: * CAPABILITY IMAP4 XPIG-LATIN | |||
| S: a441 OK CAPABILITY completed | S: a441 OK CAPABILITY completed | |||
| C: A442 XPIG-LATIN | C: A442 XPIG-LATIN | |||
| S: * XPIG-LATIN ow-nay eaking-spay ig-pay atin-lay | S: * XPIG-LATIN ow-nay eaking-spay ig-pay atin-lay | |||
| S: A442 OK XPIG-LATIN ompleted-cay | S: A442 OK XPIG-LATIN ompleted-cay | |||
| Internet DRAFT IMAP4 August 1, 1994 | Internet DRAFT IMAP4 October 30, 1994 | |||
| 7. Server Responses | 7. Server Responses | |||
| Server responses are in three forms: status responses, server data, | Server responses are in three forms: status responses, server data, | |||
| and command continuation request. | and command continuation request. | |||
| Server response data, identified by "Data:" in the response | Server response data, identified by "Data:" in the response | |||
| descriptions below, are described by function, not by syntax. The | descriptions below, are described by function, not by syntax. The | |||
| precise syntax of server response data is described in the Formal | precise syntax of server response data is described in the Formal | |||
| Syntax section. | Syntax section. | |||
| skipping to change at page 38, line 5 ¶ | skipping to change at page 39, line 5 ¶ | |||
| implementations that offer multiple simultaneous access to the same | implementations that offer multiple simultaneous access to the same | |||
| mailbox should also send appropriate unilateral untagged FETCH and | mailbox should also send appropriate unilateral untagged FETCH and | |||
| EXPUNGE responses if another agent changes the state of any message | EXPUNGE responses if another agent changes the state of any message | |||
| flags or expunges any messages. | flags or expunges any messages. | |||
| Command continuation request responses use the token "+" instead of a | Command continuation request responses use the token "+" instead of a | |||
| tag. These responses are sent by the server to indicate acceptance | tag. These responses are sent by the server to indicate acceptance | |||
| of an incomplete client command and readiness for the remainder of | of an incomplete client command and readiness for the remainder of | |||
| the command. | the command. | |||
| Internet DRAFT IMAP4 August 1, 1994 | Internet DRAFT IMAP4 October 30, 1994 | |||
| 7.1. Server Responses - Status Responses | 7.1. Server Responses - Status Responses | |||
| Status responses may include an optional response code. A response | Status responses may include an optional response code. A response | |||
| code consists of data inside square brackets in the form of an atom, | code consists of data inside square brackets in the form of an atom, | |||
| possibly followed by a space and arguments. The response code | possibly followed by a space and arguments. The response code | |||
| contains additional information or status codes for client software | contains additional information or status codes for client software | |||
| beyond the OK/NO/BAD condition, and are defined when there is a | beyond the OK/NO/BAD condition, and are defined when there is a | |||
| specific action that a client can take based upon the additional | specific action that a client can take based upon the additional | |||
| information. | information. | |||
| skipping to change at page 39, line 5 ¶ | skipping to change at page 40, line 5 ¶ | |||
| READ-WRITE The mailbox is selected read-write, or its access | READ-WRITE The mailbox is selected read-write, or its access | |||
| while selected has changed from read-only to | while selected has changed from read-only to | |||
| read-write. | read-write. | |||
| TRYCREATE An APPEND or COPY attempt is failing because the | TRYCREATE An APPEND or COPY attempt is failing because the | |||
| target mailbox does not exist (as opposed to some | target mailbox does not exist (as opposed to some | |||
| other reason). This is a hint to the client that | other reason). This is a hint to the client that | |||
| the operation may succeed if the mailbox is first | the operation may succeed if the mailbox is first | |||
| Internet DRAFT IMAP4 August 1, 1994 | Internet DRAFT IMAP4 October 30, 1994 | |||
| created by the CREATE command. | created by the CREATE command. | |||
| 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 | UNSEEN Followed by a decimal number, indicates the number | |||
| of the first message without the \Seen flag set. | of the first message without the \Seen flag set. | |||
| Additional response codes defined by particular client or server | Additional response codes defined by particular client or server | |||
| implementations should be prefixed with an "X" until they are | implementations should be prefixed with an "X" until they are | |||
| added to a revision of this protocol. Client implementations | added to a revision of this protocol. Client implementations | |||
| should ignore response codes that they do not recognize. | should ignore response codes that they do not recognize. | |||
| 7.1.1. OK Response | 7.1.1. OK Response | |||
| skipping to change at page 39, line 47 ¶ | skipping to change at page 41, line 4 ¶ | |||
| 7.1.2. NO Response | 7.1.2. NO Response | |||
| Data: optional response code | Data: optional response code | |||
| human-readable text | human-readable text | |||
| The NO response indicates an operational error message from the | The NO response indicates an operational error message from the | |||
| server. When tagged, it indicates unsuccessful completion of the | server. When tagged, it indicates unsuccessful completion of the | |||
| associated command. The untagged form indicates a warning; the | associated command. The untagged form indicates a warning; the | |||
| command may still complete successfully. The human-readable text | command may still complete successfully. The human-readable text | |||
| Internet DRAFT IMAP4 October 30, 1994 | ||||
| describes the condition. | describes the condition. | |||
| Example: C: A222 COPY 1:2 owatagusiam | Example: C: A222 COPY 1:2 owatagusiam | |||
| S: * NO Disk is 98% full, please delete unnecessary data | S: * NO Disk is 98% full, please delete unnecessary data | |||
| S: A222 OK COPY completed | S: A222 OK COPY completed | |||
| C: A222 COPY 3:200 blurdybloop | C: A222 COPY 3:200 blurdybloop | |||
| Internet DRAFT IMAP4 August 1, 1994 | ||||
| S: * NO Disk is 98% full, please delete unnecessary data | S: * NO Disk is 98% full, please delete unnecessary data | |||
| S: * NO Disk is 99% full, please delete unnecessary data | S: * NO Disk is 99% full, please delete unnecessary data | |||
| S: A222 NO COPY failed: disk is full | S: A222 NO COPY failed: disk is full | |||
| 7.1.3. BAD Response | 7.1.3. BAD Response | |||
| Data: optional response code | Data: optional response code | |||
| human-readable text | human-readable text | |||
| The BAD response indicates an error message from the server. When | The BAD response indicates an error message from the server. When | |||
| skipping to change at page 40, line 44 ¶ | skipping to change at page 42, line 5 ¶ | |||
| Data: optional response code | Data: optional response code | |||
| human-readable text | human-readable text | |||
| The PREAUTH response is always untagged, and is one of three | The PREAUTH response is always untagged, and is one of three | |||
| possible greetings at session startup. It indicates that the | possible greetings at session startup. It indicates that the | |||
| session has already been authenticated by external means and thus | session has already been authenticated by external means and thus | |||
| no LOGIN command is needed. | no LOGIN command is needed. | |||
| Example: S: * PREAUTH IMAP4 server ready and logged in as Smith | Example: S: * PREAUTH IMAP4 server ready and logged in as Smith | |||
| Internet DRAFT IMAP4 October 30, 1994 | ||||
| 7.1.5. BYE Response | 7.1.5. BYE Response | |||
| Data: optional response code | Data: optional response code | |||
| human-readable text | human-readable text | |||
| The BYE response is always untagged, and indicates that the server | The BYE response is always untagged, and indicates that the server | |||
| is about to close the connection. The human-readable text may be | 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 | displayed to the user in a status report by the client. The BYE | |||
| Internet DRAFT IMAP4 August 1, 1994 | ||||
| response may be sent as part of a normal logout sequence, or as a | 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 | panic shutdown announcement by the server. It is also used by | |||
| some server implementations as an announcement of an inactivity | some server implementations as an announcement of an inactivity | |||
| autologout. | autologout. | |||
| This response is also used as one of three possible greetings at | This response is also used as one of three possible greetings at | |||
| session startup. It indicates that the server is not willing to | session startup. It indicates that the server is not willing to | |||
| accept a session from this client. | accept a session from this client. | |||
| Example: S: * BYE Autologout; idle for too long | Example: S: * BYE Autologout; idle for too long | |||
| skipping to change at page 41, line 45 ¶ | skipping to change at page 43, line 4 ¶ | |||
| protocol. Server responses MUST conform to this document until | protocol. Server responses MUST conform to this document until | |||
| the client issues a command that uses the associated capability. | the client issues a command that uses the associated capability. | |||
| Capability names MUST either begin with "X" or be standard or | Capability names MUST either begin with "X" or be standard or | |||
| standards-track IMAP4 extensions, revisions, or amendments | standards-track IMAP4 extensions, revisions, or amendments | |||
| registered with IANA. A server MUST NOT offer unregistered or | registered with IANA. A server MUST NOT offer unregistered or | |||
| non-standard capability names, unless such names are prefixed with | non-standard capability names, unless such names are prefixed with | |||
| an "X". | an "X". | |||
| Client implementations SHOULD NOT require any capability name | Client implementations SHOULD NOT require any capability name | |||
| Internet DRAFT IMAP4 October 30, 1994 | ||||
| other than "IMAP4", and MUST ignore any unknown capability names. | other than "IMAP4", and MUST ignore any unknown capability names. | |||
| Example: S: * CAPABILITY IMAP4 XPIG-LATIN | Example: S: * CAPABILITY IMAP4 XPIG-LATIN | |||
| Internet DRAFT IMAP4 August 1, 1994 | ||||
| 7.2.2. LIST Response | 7.2.2. LIST Response | |||
| Data: name attributes | Data: name attributes | |||
| hierarchy delimiter | hierarchy delimiter | |||
| name | name | |||
| The LIST response occurs as a result of a LIST command. It | The LIST response occurs as a result of a LIST command. It | |||
| returns a single name that matches the LIST specification. There | returns a single name that matches the LIST specification. There | |||
| may be multiple LIST responses for a single LIST command. | may be multiple LIST responses for a single LIST command. | |||
| skipping to change at page 42, line 36 ¶ | skipping to change at page 43, line 40 ¶ | |||
| \Marked The mailbox has been marked "interesting" by the | \Marked The mailbox has been marked "interesting" by the | |||
| server; the mailbox probably contains messages that | server; the mailbox probably contains messages that | |||
| have been added since the last time the mailbox was | have been added since the last time the mailbox was | |||
| selected. | selected. | |||
| \Unmarked The mailbox does not contain any additional | \Unmarked The mailbox does not contain any additional | |||
| messages since the last time the mailbox was | messages since the last time the mailbox was | |||
| selected. | selected. | |||
| If it is not feasible for the server to determine whether the | If it is not feasible for the server to determine whether the | |||
| mailbox is "interesting" or not, it should not send either \Marked | mailbox is "interesting" or not, or if the name is a \Noselect | |||
| or \Unmarked. | name, the server should not send either \Marked or \Unmarked. | |||
| The hierarchy delimiter is a character used to delimit levels of | The hierarchy delimiter is a character used to delimit levels of | |||
| hierarchy in a mailbox name. A client may use it to create child | hierarchy in a mailbox name. A client may use it to create child | |||
| mailboxes, and to search higher or lower levels of naming | mailboxes, and to search higher or lower levels of naming | |||
| hierarchy. All children of a top-level hierarchy node must use | hierarchy. All children of a top-level hierarchy node must use | |||
| the same separator character. A NIL hierarchy delimiter means | the same separator character. A NIL hierarchy delimiter means | |||
| that no hierarchy exists; the name is a "flat" name. | that no hierarchy exists; the name is a "flat" name. | |||
| The name represents an unambiguous left-to-right hierarchy, and | The name represents an unambiguous left-to-right hierarchy, and | |||
| MUST be valid for use as a reference in LIST and LSUB commands. | 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 | Unless \Noselect is indicated, the name must also be valid as an | |||
| argument for commands, such as SELECT, that accept mailbox names. | argument for commands, such as SELECT, that accept mailbox names. | |||
| Example: S: * LIST (\Noselect) "/" ~/Mail/foo | Internet DRAFT IMAP4 October 30, 1994 | |||
| Internet DRAFT IMAP4 August 1, 1994 | Example: S: * LIST (\Noselect) "/" ~/Mail/foo | |||
| 7.2.3. LSUB Response | 7.2.3. LSUB Response | |||
| Data: name attributes | Data: name attributes | |||
| hierarchy delimiter | hierarchy delimiter | |||
| name | name | |||
| The LSUB response occurs as a result of an LSUB command. It | The LSUB response occurs as a result of an LSUB command. It | |||
| returns a single name that matches the LSUB specification. There | returns a single name that matches the LSUB specification. There | |||
| may be multiple LSUB responses for a single LSUB command. The | may be multiple LSUB responses for a single LSUB command. The | |||
| skipping to change at page 43, line 46 ¶ | skipping to change at page 45, line 5 ¶ | |||
| The FLAGS response occurs as a result of a SELECT or EXAMINE | The FLAGS response occurs as a result of a SELECT or EXAMINE | |||
| command. The flag parenthesized list identifies the flags (at a | command. The flag parenthesized list identifies the flags (at a | |||
| minimum, the system-defined flags) that are applicable for this | minimum, the system-defined flags) that are applicable for this | |||
| mailbox. Flags other than the system flags may also exist, | mailbox. Flags other than the system flags may also exist, | |||
| depending on server implementation. | depending on server implementation. | |||
| The update from the FLAGS response MUST be recorded by the client. | The update from the FLAGS response MUST be recorded by the client. | |||
| Example: S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft) | Example: S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft) | |||
| Internet DRAFT IMAP4 October 30, 1994 | ||||
| 7.3. Server Responses - Message Status | 7.3. Server Responses - Message Status | |||
| These responses are always untagged. This is how message data are | These responses are always untagged. This is how message data are | |||
| transmitted from the server to the client, often as a result of a | transmitted from the server to the client, often as a result of a | |||
| command with the same name. Immediately following the "*" token is a | command with the same name. Immediately following the "*" token is a | |||
| Internet DRAFT IMAP4 August 1, 1994 | ||||
| number that represents either a message sequence number or a message | number that represents either a message sequence number or a message | |||
| count. | count. | |||
| 7.3.1. EXISTS Response | 7.3.1. EXISTS Response | |||
| Data: none | Data: none | |||
| The EXISTS response reports the number of messages in the mailbox. | The EXISTS response reports the number of messages in the mailbox. | |||
| This response occurs as a result of a SELECT or EXAMINE command, | This response occurs as a result of a SELECT or EXAMINE command, | |||
| and if the size of the mailbox changes (e.g. new mail). | and if the size of the mailbox changes (e.g. new mail). | |||
| skipping to change at page 44, line 48 ¶ | skipping to change at page 46, line 5 ¶ | |||
| Data: none | Data: none | |||
| The EXPUNGE response reports that the specified message sequence | The EXPUNGE response reports that the specified message sequence | |||
| number has been permanently removed from the mailbox. The message | number has been permanently removed from the mailbox. The message | |||
| sequence number for each successive message in the mailbox is | sequence number for each successive message in the mailbox is | |||
| immediately decremented by 1, and this decrement is reflected in | immediately decremented by 1, and this decrement is reflected in | |||
| message sequence numbers in subsequent responses (including other | message sequence numbers in subsequent responses (including other | |||
| untagged EXPUNGE responses). | untagged EXPUNGE responses). | |||
| Internet DRAFT IMAP4 October 30, 1994 | ||||
| As a result of the immediate decrement rule, message sequence | As a result of the immediate decrement rule, message sequence | |||
| numbers that appear in a set of successive EXPUNGE responses | numbers that appear in a set of successive EXPUNGE responses | |||
| depend upon whether the messages are removed starting from lower | depend upon whether the messages are removed starting from lower | |||
| numbers to higher numbers, or from higher numbers to lower | numbers to higher numbers, or from higher numbers to lower | |||
| numbers. For example, if the last 5 messages in a 9-message | numbers. For example, if the last 5 messages in a 9-message | |||
| Internet DRAFT IMAP4 August 1, 1994 | ||||
| mailbox are expunged; a "lower to higher" server will send five | mailbox are expunged; a "lower to higher" server will send five | |||
| untagged EXPUNGE responses for message sequence number 5, whereas | untagged EXPUNGE responses for message sequence number 5, whereas | |||
| a "higher to lower server" will send successive untagged EXPUNGE | a "higher to lower server" will send successive untagged EXPUNGE | |||
| responses for message sequence numbers 9, 8, 7, 6, and 5. | responses for message sequence numbers 9, 8, 7, 6, and 5. | |||
| An EXPUNGE response MUST NOT be sent when no command is in | An EXPUNGE response MUST NOT be sent when no command is in | |||
| progress; nor while responding to a FETCH, STORE, or SEARCH | progress; nor while responding to a FETCH, STORE, or SEARCH | |||
| command. This rule is necessary to prevent a loss of | command. This rule is necessary to prevent a loss of | |||
| synchronization of message sequence numbers between client and | synchronization of message sequence numbers between client and | |||
| server. | server. | |||
| skipping to change at page 45, line 49 ¶ | skipping to change at page 47, line 4 ¶ | |||
| interpreted by the client according to the content | interpreted by the client according to the content | |||
| transfer encoding, body type, and subtype. | transfer encoding, body type, and subtype. | |||
| 8-bit textual data is permitted if a character set | 8-bit textual data is permitted if a character set | |||
| identifier is part of the body parameter | identifier is part of the body parameter | |||
| parenthesized list for this section. | parenthesized list for this section. | |||
| Non-textual data such as binary data must be | Non-textual data such as binary data must be | |||
| transfer encoded into a textual form such as BASE64 | transfer encoded into a textual form such as BASE64 | |||
| prior to being sent to the client. To derive the | prior to being sent to the client. To derive the | |||
| Internet DRAFT IMAP4 October 30, 1994 | ||||
| original binary data, the client must decode the | original binary data, the client must decode the | |||
| transfer encoded string. | transfer encoded string. | |||
| BODYSTRUCTURE A parenthesized list that describes the body | BODYSTRUCTURE A parenthesized list that describes the body | |||
| structure of a message. This is computed by the | structure of a message. This is computed by the | |||
| Internet DRAFT IMAP4 August 1, 1994 | ||||
| server by parsing the [RFC-822] header and body | server by parsing the [RFC-822] header and body | |||
| into the component parts, defaulting various fields | into the component parts, defaulting various fields | |||
| as necessary. | as necessary. | |||
| Multiple parts are indicated by parenthesis | Multiple parts are indicated by parenthesis | |||
| nesting. Instead of a body type as the first | nesting. Instead of a body type as the first | |||
| element of the parenthesized list there is a nested | element of the parenthesized list there is a nested | |||
| body. The second element of the parenthesized list | body. The second element of the parenthesized list | |||
| is the multipart subtype (mixed, digest, parallel, | is the multipart subtype (mixed, digest, parallel, | |||
| alternative, etc.). | alternative, etc.). | |||
| skipping to change at page 46, line 50 ¶ | skipping to change at page 48, line 5 ¶ | |||
| send such extension data until it has been defined | send such extension data until it has been defined | |||
| by a revision of this protocol. | by a revision of this protocol. | |||
| The basic fields of a non-multipart body part are | The basic fields of a non-multipart body part are | |||
| in the following order: | in the following order: | |||
| body type | body type | |||
| A string giving the content type name as defined | A string giving the content type name as defined | |||
| in [MIME-1]. | in [MIME-1]. | |||
| Internet DRAFT IMAP4 October 30, 1994 | ||||
| body subtype | body subtype | |||
| A string giving the content subtype name as | A string giving the content subtype name as | |||
| defined in [MIME-1]. | defined in [MIME-1]. | |||
| body parameter parenthesized list | body parameter parenthesized list | |||
| Internet DRAFT IMAP4 August 1, 1994 | ||||
| A parenthesized list of attribute/value pairs | A parenthesized list of attribute/value pairs | |||
| [e.g. (foo bar baz rag) where "bar" is the value | [e.g. (foo bar baz rag) where "bar" is the value | |||
| of "foo" and "rag" is the value of "baz"] as | of "foo" and "rag" is the value of "baz"] as | |||
| defined in [MIME-1]. | defined in [MIME-1]. | |||
| body id | body id | |||
| A string giving the content id as defined in | A string giving the content id as defined in | |||
| [MIME-1]. | [MIME-1]. | |||
| body description | body description | |||
| skipping to change at page 47, line 50 ¶ | skipping to change at page 49, line 5 ¶ | |||
| Extension data follows the basic fields and the | Extension data follows the basic fields and the | |||
| type-specific fields listed above. Extension data | type-specific fields listed above. Extension data | |||
| is never returned with the BODY fetch, but may be | is never returned with the BODY fetch, but may be | |||
| returned with a BODYSTRUCTURE fetch. Extension | returned with a BODYSTRUCTURE fetch. Extension | |||
| data, if present, must be in the defined order. | data, if present, must be in the defined order. | |||
| The extension data of a non-multipart body part are | The extension data of a non-multipart body part are | |||
| in the following order: | in the following order: | |||
| Internet DRAFT IMAP4 October 30, 1994 | ||||
| body MD5 | body MD5 | |||
| A string giving the content MD5 value as defined | A string giving the content MD5 value as defined | |||
| in [MIME-1]. | in [MIME-1]. | |||
| Any following extension data are not yet defined in | Any following extension data are not yet defined in | |||
| Internet DRAFT IMAP4 August 1, 1994 | ||||
| this version of the protocol, and would be as | this version of the protocol, and would be as | |||
| described above under multipart extension data. | described above under multipart extension data. | |||
| ENVELOPE A parenthesized list that describes the envelope | ENVELOPE A parenthesized list that describes the envelope | |||
| structure of a message. This is computed by the | structure of a message. This is computed by the | |||
| server by parsing the [RFC-822] header into the | server by parsing the [RFC-822] header into the | |||
| component parts, defaulting various fields as | component parts, defaulting various fields as | |||
| necessary. | necessary. | |||
| The fields of the envelope structure are in the | The fields of the envelope structure are in the | |||
| skipping to change at page 48, line 48 ¶ | skipping to change at page 50, line 5 ¶ | |||
| Any field of an envelope or address structure that | Any field of an envelope or address structure that | |||
| is not applicable is presented as NIL. Note that | is not applicable is presented as NIL. Note that | |||
| the server must default the reply-to and sender | the server must default the reply-to and sender | |||
| fields from the from field; a client is not | fields from the from field; a client is not | |||
| expected to know to do this. | expected to know to do this. | |||
| FLAGS A parenthesized list of flags that are set for this | FLAGS A parenthesized list of flags that are set for this | |||
| message. This may include keywords as well as the | message. This may include keywords as well as the | |||
| following system flags: | following system flags: | |||
| Internet DRAFT IMAP4 October 30, 1994 | ||||
| \Seen Message has been read | \Seen Message has been read | |||
| \Answered Message has been answered | \Answered Message has been answered | |||
| \Flagged Message is "flagged" for urgent/special | \Flagged Message is "flagged" for urgent/special | |||
| Internet DRAFT IMAP4 August 1, 1994 | ||||
| attention | attention | |||
| \Deleted Message is "deleted" for removal by | \Deleted Message is "deleted" for removal by | |||
| later EXPUNGE | later EXPUNGE | |||
| \Draft Message has not completed composition | \Draft Message has not completed composition | |||
| (marked as a draft). | (marked as a draft). | |||
| as well as the following special flag, which may be | as well as the following special flag, which may be | |||
| fetched but not stored: | fetched but not stored: | |||
| skipping to change at page 49, line 48 ¶ | skipping to change at page 51, line 4 ¶ | |||
| that a blank line is always included regardless of | that a blank line is always included regardless of | |||
| header line restrictions. | header line restrictions. | |||
| RFC822.SIZE A number expressing the number of octets in the | RFC822.SIZE A number expressing the number of octets in the | |||
| message in [RFC-822] format. | message in [RFC-822] format. | |||
| RFC822.TEXT A string expressing the text body of the message, | RFC822.TEXT A string expressing the text body of the message, | |||
| omitting the [RFC-822] header. 8-bit characters | omitting the [RFC-822] header. 8-bit characters | |||
| are permitted only if there are [MIME-1] data in | are permitted only if there are [MIME-1] data in | |||
| the message that identify the character set of the | the message that identify the character set of the | |||
| Internet DRAFT IMAP4 October 30, 1994 | ||||
| message. | message. | |||
| UID A number expressing the unique identifier of the | UID A number expressing the unique identifier of the | |||
| message. | message. | |||
| Example: S: * 23 FETCH (FLAGS (\Seen) RFC822.SIZE 44827) | Example: S: * 23 FETCH (FLAGS (\Seen) RFC822.SIZE 44827) | |||
| Internet DRAFT IMAP4 August 1, 1994 | ||||
| 7.3.5. Obsolete Responses | 7.3.5. Obsolete Responses | |||
| In addition to the responses listed in here, client implementations | In addition to the responses listed in here, client implementations | |||
| SHOULD accept the obsolete COPY and STORE responses described in | SHOULD accept the obsolete COPY and STORE responses described in | |||
| Appendix B. | Appendix B. | |||
| 7.4. Server Responses - Command Continuation Request | 7.4. Server Responses - Command Continuation Request | |||
| The command completion request response is indicated by a "+" token | The command completion request response is indicated by a "+" token | |||
| instead of a tag. This form of response indicates that the server is | instead of a tag. This form of response indicates that the server is | |||
| skipping to change at page 51, line 5 ¶ | skipping to change at page 52, line 5 ¶ | |||
| Example: C: A001 LOGIN {11} | Example: C: A001 LOGIN {11} | |||
| S: + Ready for additional command text | S: + Ready for additional command text | |||
| C: FRED FOOBAR {7} | C: FRED FOOBAR {7} | |||
| S: + Ready for additional command text | S: + Ready for additional command text | |||
| C: fat man | C: fat man | |||
| S: A001 OK LOGIN completed | S: A001 OK LOGIN completed | |||
| C: A044 BLURDYBLOOP {102856} | C: A044 BLURDYBLOOP {102856} | |||
| S: A044 BAD No such command as "BLURDYBLOOP" | S: A044 BAD No such command as "BLURDYBLOOP" | |||
| Internet DRAFT IMAP4 August 1, 1994 | Internet DRAFT IMAP4 October 30, 1994 | |||
| 8. Sample IMAP4 session | 8. Sample IMAP4 session | |||
| The following is a transcript of an IMAP4 session. A long line in | The following is a transcript of an IMAP4 session. A long line in | |||
| this sample is broken for editorial clarity. | this sample is broken for editorial clarity. | |||
| S: * OK IMAP4 Service Ready | S: * OK IMAP4 Service Ready | |||
| C: a001 login mrc secret | C: a001 login mrc secret | |||
| S: a001 OK LOGIN completed | S: a001 OK LOGIN completed | |||
| C: a002 select inbox | C: a002 select inbox | |||
| S: * 18 EXISTS | S: * 18 EXISTS | |||
| S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft) | S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft) | |||
| S: * 2 RECENT | S: * 2 RECENT | |||
| S: * OK [UNSEEN 17] Message 17 is the first unseen message | S: * OK [UNSEEN 17] Message 17 is the first unseen message | |||
| S: * OK [UIDVALIDITY 3857529045] UIDs valid | ||||
| S: a002 OK [READ-WRITE] SELECT completed | S: a002 OK [READ-WRITE] SELECT completed | |||
| C: a003 fetch 12 full | C: a003 fetch 12 full | |||
| S: * 12 FETCH (FLAGS (\Seen) INTERNALDATE "14-Jul-1993 02:44:25 -0700" | 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)" | RFC822.SIZE 4282 ENVELOPE ("Wed, 14 Jul 1993 02:23:25 -0700 (PDT)" | |||
| "IMAP4 WG mtg summary and minutes" | "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")) | (("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 "imap" "cac.washington.edu")) | |||
| ((NIL NIL "minutes" "CNRI.Reston.VA.US") | ((NIL NIL "minutes" "CNRI.Reston.VA.US") | |||
| skipping to change at page 52, line 5 ¶ | skipping to change at page 53, line 5 ¶ | |||
| S: | S: | |||
| S: ) | S: ) | |||
| S: a004 OK FETCH completed | S: a004 OK FETCH completed | |||
| C: a005 store 12 +flags \deleted | C: a005 store 12 +flags \deleted | |||
| S: * 12 FETCH (FLAGS (\Seen \Deleted)) | S: * 12 FETCH (FLAGS (\Seen \Deleted)) | |||
| S: a005 OK +FLAGS completed | S: a005 OK +FLAGS completed | |||
| C: a006 logout | C: a006 logout | |||
| S: * BYE IMAP4 server terminating connection | S: * BYE IMAP4 server terminating connection | |||
| S: a006 OK LOGOUT completed | S: a006 OK LOGOUT completed | |||
| Internet DRAFT IMAP4 August 1, 1994 | Internet DRAFT IMAP4 October 30, 1994 | |||
| 9. Formal Syntax | 9. Formal Syntax | |||
| The following syntax specification uses the augmented Backus-Naur | The following syntax specification uses the augmented Backus-Naur | |||
| Form (BNF) notation as specified in [RFC-822] with one exception; the | Form (BNF) notation as specified in [RFC-822] with one exception; the | |||
| delimiter used with the "#" construct is a single space (SPACE) and | delimiter used with the "#" construct is a single space (SPACE) and | |||
| not a comma. | not a comma. | |||
| Except as noted otherwise, all alphabetic characters are | Except as noted otherwise, all alphabetic characters are | |||
| case-insensitive. The use of upper or lower case characters to | case-insensitive. The use of upper or lower case characters to | |||
| skipping to change at page 53, line 5 ¶ | skipping to change at page 54, line 5 ¶ | |||
| append ::= "APPEND" SPACE mailbox [SPACE flag_list] | append ::= "APPEND" SPACE mailbox [SPACE flag_list] | |||
| [SPACE date_time] SPACE literal | [SPACE date_time] SPACE literal | |||
| astring ::= atom / string | astring ::= atom / string | |||
| atom ::= 1*ATOM_CHAR | atom ::= 1*ATOM_CHAR | |||
| ATOM_CHAR ::= <any CHAR except atom_specials> | ATOM_CHAR ::= <any CHAR except atom_specials> | |||
| Internet DRAFT IMAP4 August 1, 1994 | Internet DRAFT IMAP4 October 30, 1994 | |||
| atom_specials ::= "(" / ")" / "{" / SPACE / CTLs / list_wildcards / | atom_specials ::= "(" / ")" / "{" / SPACE / CTLs / list_wildcards / | |||
| quoted_specials | quoted_specials | |||
| authenticate ::= "AUTHENTICATE" SPACE auth_type *(CRLF base64) | authenticate ::= "AUTHENTICATE" SPACE auth_type *(CRLF base64) | |||
| auth_type ::= atom | auth_type ::= atom | |||
| base64 ::= *(4base64_char) [base64_terminal] | base64 ::= *(4base64_char) [base64_terminal] | |||
| skipping to change at page 54, line 5 ¶ | skipping to change at page 55, line 5 ¶ | |||
| body_fld_lines ::= number | body_fld_lines ::= number | |||
| body_fld_md5 ::= nstring | body_fld_md5 ::= nstring | |||
| body_fld_octets ::= number | body_fld_octets ::= number | |||
| body_fld_param ::= "(" 1#(string string) ")" / nil | body_fld_param ::= "(" 1#(string string) ")" / nil | |||
| body_fld_subtyp ::= string | body_fld_subtyp ::= string | |||
| Internet DRAFT IMAP4 August 1, 1994 | Internet DRAFT IMAP4 October 30, 1994 | |||
| body_type_1part ::= (body_type_basic / body_type_msg / body_type_text) | body_type_1part ::= (body_type_basic / body_type_msg / body_type_text) | |||
| [SPACE body_ext_1part] | [SPACE body_ext_1part] | |||
| body_type_basic ::= (<"> ("APPLICATION" / "AUDIO" / "IMAGE" / "MESSAGE" / | body_type_basic ::= (<"> ("APPLICATION" / "AUDIO" / "IMAGE" / "MESSAGE" / | |||
| "VIDEO") <">) / string) SPACE body_fld_subtyp SPACE | "VIDEO") <">) / string) SPACE body_fld_subtyp SPACE | |||
| body_fields | body_fields | |||
| ;; MESSAGE subtype MUST NOT be "RFC822" | ;; MESSAGE subtype MUST NOT be "RFC822" | |||
| body_type_mpart ::= 1*body SPACE body_fld_subtyp [SPACE body_ext_mpart] | body_type_mpart ::= 1*body SPACE body_fld_subtyp [SPACE body_ext_mpart] | |||
| skipping to change at page 55, line 5 ¶ | skipping to change at page 56, line 5 ¶ | |||
| ;; Valid only when in Non-Authenticated state | ;; Valid only when in Non-Authenticated state | |||
| command_select ::= "CHECK" / "CLOSE" / "EXPUNGE" / | command_select ::= "CHECK" / "CLOSE" / "EXPUNGE" / | |||
| copy / fetch / partial / store / uid / search | copy / fetch / partial / store / uid / search | |||
| ;; Valid only when in Selected state | ;; Valid only when in Selected state | |||
| continue_req ::= "+" SPACE (resp_text / base64) | continue_req ::= "+" SPACE (resp_text / base64) | |||
| copy ::= "COPY" SPACE set SPACE mailbox | copy ::= "COPY" SPACE set SPACE mailbox | |||
| Internet DRAFT IMAP4 August 1, 1994 | Internet DRAFT IMAP4 October 30, 1994 | |||
| CR ::= <ASCII CR, carriage return, 0x0C> | CR ::= <ASCII CR, carriage return, 0x0C> | |||
| create ::= "CREATE" SPACE mailbox | create ::= "CREATE" SPACE mailbox | |||
| ;; Use of INBOX gives a NO error | ;; Use of INBOX gives a NO error | |||
| CRLF ::= CR LF | CRLF ::= CR LF | |||
| CTL ::= <any ASCII control character and DEL, 0x00 - 0x1f, 0x7f> | CTL ::= <any ASCII control character and DEL, 0x00 - 0x1f, 0x7f> | |||
| skipping to change at page 55, line 46 ¶ | skipping to change at page 56, line 46 ¶ | |||
| date_time_new ::= date_day_fixed "-" date_month "-" date_year SPACE | date_time_new ::= date_day_fixed "-" date_month "-" date_year SPACE | |||
| time SPACE zone | time SPACE zone | |||
| date_time_old ::= date_day_fixed "-" date_month "-" date_year_old SPACE | date_time_old ::= date_day_fixed "-" date_month "-" date_year_old SPACE | |||
| time "-" zone_old | time "-" zone_old | |||
| ;; OBSOLETE | ;; OBSOLETE | |||
| delete ::= "DELETE" SPACE mailbox | delete ::= "DELETE" SPACE mailbox | |||
| ;; Use of INBOX gives a NO error | ;; Use of INBOX gives a NO error | |||
| digit ::= "0" / "1" / "2" / "3" / "4" / "5" / "6" / "7" / | digit ::= "0" / digit_nz | |||
| "8" / "9" | ||||
| digit_nz ::= "1" / "2" / "3" / "4" / "5" / "6" / "7" / "8" / "9" | ||||
| envelope ::= "(" env_date SPACE env_subject SPACE env_from SPACE | envelope ::= "(" env_date SPACE env_subject SPACE env_from SPACE | |||
| env_sender SPACE env_reply-to SPACE env_to SPACE | env_sender SPACE env_reply-to SPACE env_to SPACE | |||
| env_cc SPACE env_bcc SPACE env_in-reply-to SPACE | env_cc SPACE env_bcc SPACE env_in-reply-to SPACE | |||
| env_message-id ")" | env_message-id ")" | |||
| env_bcc ::= "(" 1*address ")" / nil | Internet DRAFT IMAP4 October 30, 1994 | |||
| Internet DRAFT IMAP4 August 1, 1994 | env_bcc ::= "(" 1*address ")" / nil | |||
| env_cc ::= "(" 1*address ")" / nil | env_cc ::= "(" 1*address ")" / nil | |||
| env_date ::= nstring | env_date ::= nstring | |||
| env_from ::= "(" 1*address ")" / nil | env_from ::= "(" 1*address ")" / nil | |||
| env_in-reply-to ::= nstring | env_in-reply-to ::= nstring | |||
| env_message-id ::= nstring | env_message-id ::= nstring | |||
| skipping to change at page 56, line 54 ¶ | skipping to change at page 58, line 5 ¶ | |||
| ;; MUST accept flag_extension flags. Server | ;; MUST accept flag_extension flags. Server | |||
| ;; implementations MUST NOT generate | ;; implementations MUST NOT generate | |||
| ;; flag_extension flags except as defined by | ;; flag_extension flags except as defined by | |||
| ;; future standard or standards-track | ;; future standard or standards-track | |||
| ;; revisions of this specification. | ;; revisions of this specification. | |||
| flag_keyword ::= atom | flag_keyword ::= atom | |||
| flag_list ::= "(" #flag ")" | flag_list ::= "(" #flag ")" | |||
| greeting ::= "*" SPACE (resp_cond_auth / resp_cond_bye) CRLF | Internet DRAFT IMAP4 October 30, 1994 | |||
| Internet DRAFT IMAP4 August 1, 1994 | greeting ::= "*" SPACE (resp_cond_auth / resp_cond_bye) CRLF | |||
| header_line ::= astring | header_line ::= astring | |||
| header_list ::= "(" 1#header_line ")" | header_list ::= "(" 1#header_line ")" | |||
| LF ::= <ASCII LF, line feed, 0x0A> | LF ::= <ASCII LF, line feed, 0x0A> | |||
| list ::= "LIST" SPACE mailbox SPACE list_mailbox | list ::= "LIST" SPACE mailbox SPACE list_mailbox | |||
| list_mailbox ::= 1*(ATOM_CHAR / list_wildcards) / string | list_mailbox ::= 1*(ATOM_CHAR / list_wildcards) / string | |||
| skipping to change at page 57, line 32 ¶ | skipping to change at page 58, line 34 ¶ | |||
| login ::= "LOGIN" SPACE userid SPACE password | login ::= "LOGIN" SPACE userid SPACE password | |||
| lsub ::= "LSUB" SPACE mailbox SPACE list_mailbox | lsub ::= "LSUB" SPACE mailbox SPACE list_mailbox | |||
| mailbox ::= "INBOX" / astring | mailbox ::= "INBOX" / astring | |||
| ;; INBOX is case-insensitive. Other names may be | ;; INBOX is case-insensitive. Other names may be | |||
| ;; case-sensitive depending on implementation. | ;; case-sensitive depending on implementation. | |||
| mailbox_data ::= "FLAGS" SPACE flag_list / "LIST" SPACE mailbox_list / | mailbox_data ::= "FLAGS" SPACE flag_list / "LIST" SPACE mailbox_list / | |||
| "LSUB" SPACE mailbox_list / "MAILBOX" SPACE text / | "LSUB" SPACE mailbox_list / "MAILBOX" SPACE text / | |||
| "SEARCH" [SPACE 1#number] | "SEARCH" [SPACE 1#nz_number] / | |||
| number SPACE "EXISTS" / number SPACE "RECENT" | ||||
| mailbox_list ::= "(" #("\Marked" / "\Noinferiors" / "\Noselect" / | mailbox_list ::= "(" #("\Marked" / "\Noinferiors" / "\Noselect" / | |||
| "\Unmarked" / flag_extension) ")" SPACE | "\Unmarked" / flag_extension) ")" SPACE | |||
| (<"> QUOTED_CHAR <"> / nil) SPACE mailbox | (<"> QUOTED_CHAR <"> / nil) SPACE mailbox | |||
| message_data ::= number SPACE ("EXISTS" / "RECENT" / "EXPUNGE" / | message_data ::= nz_number SPACE ("EXPUNGE" / | |||
| ("FETCH" SPACE msg_fetch) / msg_obsolete) | ("FETCH" SPACE msg_fetch) / msg_obsolete) | |||
| msg_fetch ::= "(" 1#("BODY" SPACE body / "BODYSTRUCTURE" SPACE body / | msg_fetch ::= "(" 1#("BODY" SPACE body / "BODYSTRUCTURE" SPACE body / | |||
| "BODY[" section "]" SPACE nstring / | "BODY[" section "]" SPACE nstring / | |||
| "ENVELOPE" SPACE envelope / | "ENVELOPE" SPACE envelope / | |||
| "FLAGS" SPACE "(" #(flag / "\Recent") ")" / | "FLAGS" SPACE "(" #(flag / "\Recent") ")" / | |||
| "INTERNALDATE" SPACE date_time / | "INTERNALDATE" SPACE date_time / | |||
| "RFC822" [".HEADER" / ".TEXT"] SPACE nstring / | "RFC822" [".HEADER" / ".TEXT"] SPACE nstring / | |||
| "RFC822.SIZE" SPACE number / "UID" SPACE uniqueid) ")" | "RFC822.SIZE" SPACE number / "UID" SPACE uniqueid) ")" | |||
| msg_obsolete ::= "COPY" / ("STORE" SPACE msg_fetch) | msg_obsolete ::= "COPY" / ("STORE" SPACE msg_fetch) | |||
| ;; OBSOLETE untagged data responses | ;; OBSOLETE untagged data responses | |||
| Internet DRAFT IMAP4 October 30, 1994 | ||||
| nil ::= "NIL" | nil ::= "NIL" | |||
| nstring ::= string / nil | nstring ::= string / nil | |||
| Internet DRAFT IMAP4 August 1, 1994 | ||||
| number ::= 1*digit | number ::= 1*digit | |||
| ;; Unsigned 32-bit integer (0 <= n < 4,294,967,296) | ||||
| partial ::= "PARTIAL" SPACE number SPACE fetch_att_text SPACE | nz_number ::= digit_nz *digit | |||
| ;; Non-zero unsigned 32-bit integer | ||||
| ;; (0 < n < 4,294,967,296) | ||||
| partial ::= "PARTIAL" SPACE nz_number SPACE fetch_att_text SPACE | ||||
| number SPACE number | number SPACE number | |||
| password ::= astring | password ::= astring | |||
| quoted ::= <"> *QUOTED_CHAR <"> | quoted ::= <"> *QUOTED_CHAR <"> | |||
| QUOTED_CHAR ::= <any TEXT_CHAR except quoted_specials> / | QUOTED_CHAR ::= <any TEXT_CHAR except quoted_specials> / | |||
| "\" quoted_specials | "\" quoted_specials | |||
| quoted_specials ::= <"> / "\" | quoted_specials ::= <"> / "\" | |||
| skipping to change at page 58, line 46 ¶ | skipping to change at page 60, line 5 ¶ | |||
| ;; Authentication condition | ;; Authentication condition | |||
| resp_cond_bye ::= "BYE" SPACE resp_text | resp_cond_bye ::= "BYE" SPACE resp_text | |||
| ;; Server will disconnect condition | ;; Server will disconnect condition | |||
| resp_cond_state ::= ("OK" / "NO" / "BAD") SPACE resp_text | resp_cond_state ::= ("OK" / "NO" / "BAD") SPACE resp_text | |||
| ;; Status condition | ;; Status condition | |||
| resp_text ::= ["[" resp_text_code "]" SPACE] (text_mime2 / text) | resp_text ::= ["[" resp_text_code "]" SPACE] (text_mime2 / text) | |||
| Internet DRAFT IMAP4 October 30, 1994 | ||||
| resp_text_code ::= "ALERT" / "PARSE" / | resp_text_code ::= "ALERT" / "PARSE" / | |||
| "PERMANENTFLAGS" SPACE "(" #(flag / "\*") ")" / | "PERMANENTFLAGS" SPACE "(" #(flag / "\*") ")" / | |||
| "READ-ONLY" / "READ-WRITE" / "TRYCREATE" / | "READ-ONLY" / "READ-WRITE" / "TRYCREATE" / | |||
| "UNSEEN" SPACE number / | "UIDVALIDITY" SPACE nz_number / | |||
| "UNSEEN" SPACE nz_number / | ||||
| atom [SPACE 1*<any TEXT_CHAR except "]">] | atom [SPACE 1*<any TEXT_CHAR except "]">] | |||
| Internet DRAFT IMAP4 August 1, 1994 | ||||
| search ::= "SEARCH" SPACE ["CHARSET" SPACE astring SPACE] | search ::= "SEARCH" SPACE ["CHARSET" SPACE astring SPACE] | |||
| search_criteria | search_criteria | |||
| ;; Character set must be registered with IANA | ;; Character set must be registered with IANA | |||
| ;; as a MIME character set | ;; as a MIME character set | |||
| search_criteria ::= 1#search_key | search_criteria ::= 1#search_key | |||
| search_key ::= search_new / search_old | search_key ::= search_new / search_old | |||
| search_new ::= "DRAFT" / "HEADER" SPACE header_line SPACE astring / | search_new ::= "DRAFT" / "HEADER" SPACE header_line SPACE astring / | |||
| skipping to change at page 59, line 36 ¶ | skipping to change at page 60, line 43 ¶ | |||
| "BEFORE" SPACE date / "BODY" SPACE astring / | "BEFORE" SPACE date / "BODY" SPACE astring / | |||
| "CC" SPACE astring / "DELETED" / "FLAGGED" / | "CC" SPACE astring / "DELETED" / "FLAGGED" / | |||
| "FROM" SPACE astring / "KEYWORD" SPACE flag_keyword / | "FROM" SPACE astring / "KEYWORD" SPACE flag_keyword / | |||
| "NEW" / "OLD" / "ON" SPACE date / "RECENT" / "SEEN" / | "NEW" / "OLD" / "ON" SPACE date / "RECENT" / "SEEN" / | |||
| "SINCE" SPACE date / "SUBJECT" SPACE astring / | "SINCE" SPACE date / "SUBJECT" SPACE astring / | |||
| "TEXT" SPACE astring / "TO" SPACE astring / | "TEXT" SPACE astring / "TO" SPACE astring / | |||
| "UNANSWERED" / "UNDELETED" / "UNFLAGGED" / | "UNANSWERED" / "UNDELETED" / "UNFLAGGED" / | |||
| "UNKEYWORD" SPACE flag_keyword / "UNSEEN" | "UNKEYWORD" SPACE flag_keyword / "UNSEEN" | |||
| ;; Defined in [IMAP2] | ;; Defined in [IMAP2] | |||
| section ::= number ["." section] | section ::= "0" / nz_number ["." section] | |||
| select ::= "SELECT" SPACE mailbox | select ::= "SELECT" SPACE mailbox | |||
| sequence_num ::= number / "*" | sequence_num ::= nz_number / "*" | |||
| ;; * is the largest number in use. For message | ;; * is the largest number in use. For message | |||
| ;; sequence numbers, it is the number of messages | ;; sequence numbers, it is the number of messages | |||
| ;; in the mailbox. For unique identifiers, it is | ;; in the mailbox. For unique identifiers, it is | |||
| ;; the unique identifier of the last message in | ;; the unique identifier of the last message in | |||
| ;; the mailbox. | ;; the mailbox. | |||
| Internet DRAFT IMAP4 October 30, 1994 | ||||
| set ::= sequence_num / (sequence_num ":" sequence_num) / | set ::= sequence_num / (sequence_num ":" sequence_num) / | |||
| (set "," set) | (set "," set) | |||
| ;; Identifies a set of messages. For message | ;; Identifies a set of messages. For message | |||
| ;; sequence numbers, these are consecutive numbers | ;; sequence numbers, these are consecutive numbers | |||
| ;; from 1 to the number of messages in the mailbox. | ;; from 1 to the number of messages in the mailbox. | |||
| ;; Comma delimits individual numbers, colon | ;; Comma delimits individual numbers, colon | |||
| ;; delimits between two numbers inclusive. | ;; delimits between two numbers inclusive. | |||
| ;; Example: 2,4:7,9,12:* is 2,4,5,6,7,9,12,13, | ;; Example: 2,4:7,9,12:* is 2,4,5,6,7,9,12,13, | |||
| Internet DRAFT IMAP4 August 1, 1994 | ||||
| ;; 14,15 for a mailbox with 15 messages. | ;; 14,15 for a mailbox with 15 messages. | |||
| SPACE ::= <ASCII SP, space, 0x20> | SPACE ::= <ASCII SP, space, 0x20> | |||
| store ::= "STORE" SPACE set SPACE store_att_flags | store ::= "STORE" SPACE set SPACE store_att_flags | |||
| store_att_flags ::= (["+" / "-"] "FLAGS" [".SILENT"]) SPACE | store_att_flags ::= (["+" / "-"] "FLAGS" [".SILENT"]) SPACE | |||
| (flag_list / #flag) | (flag_list / #flag) | |||
| string ::= quoted / literal | string ::= quoted / literal | |||
| skipping to change at page 60, line 39 ¶ | skipping to change at page 61, line 47 ¶ | |||
| TEXT_CHAR ::= <any CHAR except CR and LF> | TEXT_CHAR ::= <any CHAR except CR and LF> | |||
| time ::= 2digit ":" 2digit ":" 2digit | time ::= 2digit ":" 2digit ":" 2digit | |||
| ;; Hours minutes seconds | ;; Hours minutes seconds | |||
| uid ::= "UID" SPACE (copy / fetch / search / store) | uid ::= "UID" SPACE (copy / fetch / search / store) | |||
| ;; Unique identifiers used instead of message | ;; Unique identifiers used instead of message | |||
| ;; sequence numbers | ;; sequence numbers | |||
| uniqueid ::= number | uniqueid ::= nz_number | |||
| ;; Strictly ascending | ;; Strictly ascending | |||
| unsubscribe ::= ("UNSUBSCRIBE" SPACE mailbox) / unsubscribe_obs | unsubscribe ::= ("UNSUBSCRIBE" SPACE mailbox) / unsubscribe_obs | |||
| unsubscribe_obs ::= "UNSUBSCRIBE" SPACE "MAILBOX" SPACE mailbox | unsubscribe_obs ::= "UNSUBSCRIBE" SPACE "MAILBOX" SPACE mailbox | |||
| ;;OBSOLETE | ;;OBSOLETE | |||
| Internet DRAFT IMAP4 October 30, 1994 | ||||
| userid ::= astring | userid ::= astring | |||
| x_command ::= "X" atom <experimental command arguments> | x_command ::= "X" atom <experimental command arguments> | |||
| Internet DRAFT IMAP4 August 1, 1994 | ||||
| zone ::= ("+" / "-") 4digit | zone ::= ("+" / "-") 4digit | |||
| ;; Signed four-digit value of hhmm representing | ;; Signed four-digit value of hhmm representing | |||
| ;; hours and minutes west of Greenwich (that is, | ;; hours and minutes west of Greenwich (that is, | |||
| ;; (the amount that the given time differs from | ;; (the amount that the given time differs from | |||
| ;; Universal Time). Subtracting the timezone | ;; Universal Time). Subtracting the timezone | |||
| ;; from the given time will give the UT form. | ;; from the given time will give the UT form. | |||
| ;; The Universal Time zone is "+0000". | ;; The Universal Time zone is "+0000". | |||
| zone_old ::= "UT" / "GMT" / "Z" / ;; +0000 | zone_old ::= "UT" / "GMT" / "Z" / ;; +0000 | |||
| "AST" / "EST" / "CST" / "MST" / ;; -0400 to -0700 | "AST" / "EST" / "CST" / "MST" / ;; -0400 to -0700 | |||
| "PST" / "YST" / "HST" / "BST" / ;; -0800 to -1100 | "PST" / "YST" / "HST" / "BST" / ;; -0800 to -1100 | |||
| "ADT" / "EDT" / "CDT" / "MDT" / ;; -0300 to -0600 | "ADT" / "EDT" / "CDT" / "MDT" / ;; -0300 to -0600 | |||
| "PDT" / "YDT" / "HDT" / "BDT" / ;; -0700 to -1000 | "PDT" / "YDT" / "HDT" / "BDT" / ;; -0700 to -1000 | |||
| "A" / "B" / "C" / "D" / "E" / "F" / ;; +0100 to +0600 | "A" / "B" / "C" / "D" / "E" / "F" / ;; +0100 to +0600 | |||
| "G" / "H" / "I" / "K" / "L" / "M" / ;; +0700 to +1200 | "G" / "H" / "I" / "K" / "L" / "M" / ;; +0700 to +1200 | |||
| "N" / "O" / "P" / "Q" / "R" / "S" / ;; -0100 to -0600 | "N" / "O" / "P" / "Q" / "R" / "S" / ;; -0100 to -0600 | |||
| "T" / "U" / "V" / "W" / "X" / "Y" ;; -0700 to -1200 | "T" / "U" / "V" / "W" / "X" / "Y" ;; -0700 to -1200 | |||
| ;; OBSOLETE | ;; OBSOLETE | |||
| Internet DRAFT IMAP4 August 1, 1994 | Internet DRAFT IMAP4 October 30, 1994 | |||
| 10. Author's Note | 10. Author's Note | |||
| This document is a rewrite of earlier documents, and supercedes the | This document is a rewrite of earlier documents, and supercedes the | |||
| protocol specification in those documents: earlier IMAP4 Internet | protocol specification in those documents: earlier IMAP4 Internet | |||
| drafts, the IMAP2bis Internet drafts, unpublished IMAP2bis.TXT | drafts, the IMAP2bis Internet drafts, unpublished IMAP2bis.TXT | |||
| document, RFC 1176, and RFC 1064. | document, RFC 1176, and RFC 1064. | |||
| 11. Security Considerations | 11. Security Considerations | |||
| IMAP4 protocol transactions, including electronic mail data, are sent | IMAP4 protocol transactions, including electronic mail data, are sent | |||
| in the clear over the network unless the optional privacy protection | in the clear over the network unless the optional privacy protection | |||
| is negotiated in the AUTHENTICATE command. | is negotiated in the AUTHENTICATE command. | |||
| The CAPABILITY command is permitted prior to authentication. A | ||||
| server may not wish to disclose certain capabilities until after | ||||
| authentication. | ||||
| A server error message for an AUTHENTICATE command which fails due to | A server error message for an AUTHENTICATE command which fails due to | |||
| invalid credentials should not detail why the credentials are | invalid credentials should not detail why the credentials are | |||
| invalid. | invalid. | |||
| Use of the LOGIN command sends passwords in the clear. This can be | Use of the LOGIN command sends passwords in the clear. This can be | |||
| avoided by using the AUTHENTICATE command instead. | avoided by using the AUTHENTICATE command instead. | |||
| A server error message for a failing LOGIN command should not specify | A server error message for a failing LOGIN command should not specify | |||
| that the user name, as opposed to the password, is invalid. | that the user name, as opposed to the password, is invalid. | |||
| skipping to change at page 63, line 5 ¶ | skipping to change at page 64, line 5 ¶ | |||
| Mark R. Crispin | Mark R. Crispin | |||
| Networks and Distributed Computing, JE-30 | Networks and Distributed Computing, JE-30 | |||
| University of Washington | University of Washington | |||
| Seattle, WA 98195 | Seattle, WA 98195 | |||
| Phone: (206) 543-5762 | Phone: (206) 543-5762 | |||
| EMail: MRC@CAC.Washington.EDU | EMail: MRC@CAC.Washington.EDU | |||
| Internet DRAFT IMAP4 August 1, 1994 | Internet DRAFT IMAP4 October 30, 1994 | |||
| Appendices | Appendices | |||
| A. Obsolete Commands | A. Obsolete Commands | |||
| The following commands are OBSOLETE. It is NOT required to support | The following commands are OBSOLETE. It is NOT required to support | |||
| any of these commands in new server implementations. These commands | any of these commands in new server implementations. These commands | |||
| are documented here for the benefit of implementors who may wish to | are documented here for the benefit of implementors who may wish to | |||
| support them for compatibility with old client implementations. | support them for compatibility with old client implementations. | |||
| The section headings of these commands are intended to correspond | The section headings of these commands are intended to correspond | |||
| with where they would be located in the main document if they were | with where they would be located in the main document if they were | |||
| not obsoleted. | not obsoleted. | |||
| skipping to change at page 64, line 5 ¶ | skipping to change at page 65, line 5 ¶ | |||
| Data: untagged responses: MAILBOX | Data: untagged responses: MAILBOX | |||
| Result: OK - find completed | Result: OK - find completed | |||
| NO - find failure: can't list that name | NO - find failure: can't list that name | |||
| BAD - command unknown or arguments invalid | BAD - command unknown or arguments invalid | |||
| The FIND MAILBOXES command returns a subset of names from the set | The FIND MAILBOXES command returns a subset of names from the set | |||
| of names that the user has declared as being "active" or | of names that the user has declared as being "active" or | |||
| Internet DRAFT IMAP4 August 1, 1994 | Internet DRAFT IMAP4 October 30, 1994 | |||
| "subscribed". It returns zero or more untagged MAILBOX replies. | "subscribed". It returns zero or more untagged MAILBOX replies. | |||
| The mailbox argument to FIND MAILBOXES is similar to that for LSUB | The mailbox argument to FIND MAILBOXES is similar to that for LSUB | |||
| with an empty reference, except that the characters "%" and "?" | with an empty reference, except that the characters "%" and "?" | |||
| match a single character. | match a single character. | |||
| Example: C: A002 FIND MAILBOXES * | Example: C: A002 FIND MAILBOXES * | |||
| S: * MAILBOX blurdybloop | S: * MAILBOX blurdybloop | |||
| S: * MAILBOX INBOX | S: * MAILBOX INBOX | |||
| S: A002 OK FIND MAILBOXES completed | S: A002 OK FIND MAILBOXES completed | |||
| skipping to change at page 65, line 5 ¶ | skipping to change at page 66, line 5 ¶ | |||
| Data: no specific data for this command | Data: no specific data for this command | |||
| Result: OK - unsubscribe completed | Result: OK - unsubscribe completed | |||
| NO - unsubscribe failure: can't unsubscribe that name | NO - unsubscribe failure: can't unsubscribe that name | |||
| BAD - command unknown or arguments invalid | BAD - command unknown or arguments invalid | |||
| The UNSUBSCRIBE MAILBOX command is identical in effect to the | The UNSUBSCRIBE MAILBOX command is identical in effect to the | |||
| UNSUBSCRIBE command. A server which implements this command must | UNSUBSCRIBE command. A server which implements this command must | |||
| be able to distinguish between a UNSUBSCRIBE MAILBOX command and | be able to distinguish between a UNSUBSCRIBE MAILBOX command and | |||
| Internet DRAFT IMAP4 August 1, 1994 | Internet DRAFT IMAP4 October 30, 1994 | |||
| an UNSUBSCRIBE command with a mailbox name argument of "MAILBOX". | an UNSUBSCRIBE command with a mailbox name argument of "MAILBOX". | |||
| Example: C: A002 UNSUBSCRIBE MAILBOX #news.comp.mail.mime | Example: C: A002 UNSUBSCRIBE MAILBOX #news.comp.mail.mime | |||
| S: A002 OK UNSUBSCRIBE MAILBOX from #news.comp.mail.mime | S: A002 OK UNSUBSCRIBE MAILBOX from #news.comp.mail.mime | |||
| completed | completed | |||
| C: A003 UNSUBSCRIBE MAILBOX | C: A003 UNSUBSCRIBE MAILBOX | |||
| S: A003 OK UNSUBSCRIBE from MAILBOX completed | S: A003 OK UNSUBSCRIBE from MAILBOX completed | |||
| Internet DRAFT IMAP4 August 1, 1994 | Internet DRAFT IMAP4 October 30, 1994 | |||
| B. Obsolete Responses | B. Obsolete Responses | |||
| The following responses are OBSOLETE. Except as noted below, these | The following responses are OBSOLETE. Except as noted below, these | |||
| responses MUST NOT be transmitted by new server implementations. | responses MUST NOT be transmitted by new server implementations. | |||
| The section headings of these responses are intended to correspond | The section headings of these responses are intended to correspond | |||
| with where they would be located in the main document if they were | with where they would be located in the main document if they were | |||
| not obsoleted. | not obsoleted. | |||
| B.7.2.OBS.1. MAILBOX Response | B.7.2.OBS.1. MAILBOX Response | |||
| skipping to change at page 67, line 5 ¶ | skipping to change at page 68, line 5 ¶ | |||
| In some experimental versions of this protocol, this response was | In some experimental versions of this protocol, this response was | |||
| returned in response to a COPY command to indicate on a | returned in response to a COPY command to indicate on a | |||
| per-message basis that the message was copied successfully. | per-message basis that the message was copied successfully. | |||
| Example: S: * 44 COPY | Example: S: * 44 COPY | |||
| B.7.3.OBS.2. STORE Response | B.7.3.OBS.2. STORE Response | |||
| Data: message data | Data: message data | |||
| Internet DRAFT IMAP4 August 1, 1994 | Internet DRAFT IMAP4 October 30, 1994 | |||
| Client implementations MUST treat the STORE response as equivalent | Client implementations MUST treat the STORE response as equivalent | |||
| to the FETCH response. It is documented here for the benefit of | to the FETCH response. It is documented here for the benefit of | |||
| client implementors who may encounter this response from old | client implementors who may encounter this response from old | |||
| server implementations. | server implementations. | |||
| In some experimental versions of this protocol, this response was | In some experimental versions of this protocol, this response was | |||
| returned instead of FETCH in response to a STORE command to report | returned instead of FETCH in response to a STORE command to report | |||
| the new value of the flags. | the new value of the flags. | |||
| Example: S: * 69 STORE (FLAGS (\Deleted)) | Example: S: * 69 STORE (FLAGS (\Deleted)) | |||
| Internet DRAFT IMAP4 August 1, 1994 | Internet DRAFT IMAP4 October 30, 1994 | |||
| C. References | C. References | |||
| [IMAP-AUTH] Myers, J., "IMAP4 Authentication Mechanism", Work in | [IMAP-AUTH] Myers, J., "IMAP4 Authentication Mechanism", Work in | |||
| Process of the IETF IMAP WG, draft-ietf-imap-auth-??.txt. Check | Process of the IETF IMAP WG, draft-ietf-imap-auth-??.txt. Check | |||
| Internet Drafts listing for latest version. | Internet Drafts listing for latest version. | |||
| [IMAP-COMPAT] Crispin, M. "IMAP4 Compatibility with IMAP2 and | [IMAP-COMPAT] Crispin, M. "IMAP4 Compatibility with IMAP2 and | |||
| IMAP2bis", Work in Progress of the IETF IMAP WG, | IMAP2bis", Work in Progress of the IETF IMAP WG, | |||
| draft-ietf-imap-compat-??.txt. Check Internet Drafts listing for | draft-ietf-imap-compat-??.txt. Check Internet Drafts listing for | |||
| latest version. | latest version. | |||
| [IMAP-DISC] Austein, R. "Synchronization Operations for Disconnected | [IMAP-DISC] Austein, R. "Synchronization Operations for Disconnected | |||
| IMAP4 Clients", Work in Progress of the IETF IMAP WG, | IMAP4 Clients", Work in Progress of the IETF IMAP WG, | |||
| draft-ietf-imap-disc-??.txt. Check Internet Drafts listing for | draft-ietf-imap-disc-??.txt. Check Internet Drafts listing for | |||
| latest version. | latest version. | |||
| [IMAP-MODEL] Crispin, M. "Distributed Electronic Mail Model in | [IMAP-MODEL] Crispin, M. "Distributed Electronic Mail Models in | |||
| IMAP4", Work in Progress of the IETF IMAP WG, | IMAP4", Work in Progress of the IETF IMAP WG, | |||
| draft-ietf-imap-model-??.txt. Check Internet Drafts listing for | draft-ietf-imap-model-??.txt. Check Internet Drafts listing for | |||
| latest version. | latest version. | |||
| [IMAP-NAMING] Crispin, M. "Mailbox Naming Convention in IMAP4", Work | [IMAP-NAMING] Crispin, M. "Mailbox Naming Convention in IMAP4", Work | |||
| in Progress of the IETF IMAP WG, draft-ietf-imap-naming-??.txt. | in Progress of the IETF IMAP WG, draft-ietf-imap-naming-??.txt. | |||
| Check Internet Drafts listing for latest version. | Check Internet Drafts listing for latest version. | |||
| [IMAP2] Crispin, M., "Interactive Mail Access Protocol - Version 2", | [IMAP2] Crispin, M., "Interactive Mail Access Protocol - Version 2", | |||
| RFC 1176. | RFC 1176. | |||
| skipping to change at page 69, line 5 ¶ | skipping to change at page 70, line 5 ¶ | |||
| [MIME-2] Moore, K., "MIME (Multipurpose Internet Mail Extensions) | [MIME-2] Moore, K., "MIME (Multipurpose Internet Mail Extensions) | |||
| Part Two: Message Header Extensions for Non-ASCII Text", RFC 1522. | Part Two: Message Header Extensions for Non-ASCII Text", RFC 1522. | |||
| [RFC-822] Crocker, D., "Standard for the Format of ARPA Internet Text | [RFC-822] Crocker, D., "Standard for the Format of ARPA Internet Text | |||
| Messages", STD 11, RFC 822. | Messages", STD 11, RFC 822. | |||
| [SMTP] Postel, Jonathan B. "Simple Mail Transfer Protocol", STD 10, | [SMTP] Postel, Jonathan B. "Simple Mail Transfer Protocol", STD 10, | |||
| RFC 821. | RFC 821. | |||
| Internet DRAFT IMAP4 August 1, 1994 | Internet DRAFT IMAP4 October 30, 1994 | |||
| D. IMAP4 Keyword Index | D. Changes from Draft 05 | |||
| +FLAGS <flag list> (store command data item) ............... 33 | There are only minor changes from Draft 05 to Draft 06. There are no | |||
| +FLAGS.SILENT <flag list> (store command data item) ........ 33 | changes to the functional intent of the protocol. | |||
| -FLAGS <flag list> (store command data item) ............... 33 | ||||
| -FLAGS.SILENT <flag list> (store command data item) ........ 33 | The following editorial changes were made: | |||
| ALERT (response code) ...................................... 38 | ||||
| ALL (fetch item) ........................................... 28 | The Internet Draft header wording is changed to correspond to the | |||
| ALL (search key) ........................................... 26 | latest official statements. | |||
| ANSWERED (search key) ...................................... 26 | ||||
| APPEND (command) ........................................... 21 | All usage of the verb "to canonicalize" is removed and replaced | |||
| with more standard English usage. | ||||
| Clarification in the Formal Syntax that sequence numbers, unique | ||||
| identifiers, and non-terminal message section numbers can never be | ||||
| zero. | ||||
| Removed security note about doing a second CAPABILITY command | ||||
| after authentication. This was the remnant of an idea that was | ||||
| rejected by the Working Group prior to draft 05. | ||||
| The following changes to the protocol description were made: | ||||
| Clarification of the usage and semantics of \Noselect names. | ||||
| Draft 05 lacked necessary background information from the Working | ||||
| Group discusssions, thus alternate (although non-useful) | ||||
| interpretations were possible. | ||||
| Clarification that unique identifiers are unsigned, non-zero, | ||||
| 32-bits. Draft 05 implied that unique identifiers were infinite | ||||
| precision and could be zero. | ||||
| Addition of a unique identifier validity value, to label whether | ||||
| or not unique identifiers from the previous session are still | ||||
| valid. Draft 05 lacked this capability, which is necessary if the | ||||
| server is not able to guarantee permanence of unique identifiers. | ||||
| Note: The need for the unique identifier validity value | ||||
| could have been eliminated if unique identifiers were | ||||
| defined as 64-bits. This was rejected because it would | ||||
| have required significantly more bandwidth for low-speed | ||||
| link applications, which were one of the target | ||||
| applications for disconnected use. | ||||
| Internet DRAFT IMAP4 October 30, 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 | AUTHENTICATE (command) ..................................... 12 | |||
| BAD (response) ............................................. 40 | BAD (response) ............................................. 41 | |||
| BCC <string> (search key) .................................. 26 | BCC <string> (search key) .................................. 27 | |||
| BEFORE <date> (search key) ................................. 26 | BEFORE <date> (search key) ................................. 27 | |||
| BODY (fetch item) .......................................... 28 | BODY (fetch item) .......................................... 29 | |||
| BODY (fetch result) ........................................ 45 | BODY (fetch result) ........................................ 46 | |||
| BODY <string> (search key) ................................. 26 | BODY <string> (search key) ................................. 27 | |||
| BODY.PEEK[<section>] (fetch item) .......................... 30 | BODY.PEEK[<section>] (fetch item) .......................... 31 | |||
| BODYSTRUCTURE (fetch item) ................................. 30 | BODYSTRUCTURE (fetch item) ................................. 31 | |||
| BODYSTRUCTURE (fetch result) ............................... 45 | BODYSTRUCTURE (fetch result) ............................... 47 | |||
| BODY[<section>] (fetch item) ............................... 28 | BODY[<section>] (fetch item) ............................... 29 | |||
| BODY[section] (fetch result) ............................... 45 | BODY[section] (fetch result) ............................... 46 | |||
| BYE (response) ............................................. 40 | BYE (response) ............................................. 42 | |||
| CAPABILITY (command) ....................................... 10 | CAPABILITY (command) ....................................... 10 | |||
| CAPABILITY (response) ...................................... 41 | CAPABILITY (response) ...................................... 42 | |||
| CC <string> (search key) ................................... 26 | CC <string> (search key) ................................... 27 | |||
| CHECK (command) ............................................ 23 | CHECK (command) ............................................ 23 | |||
| CLOSE (command) ............................................ 23 | CLOSE (command) ............................................ 24 | |||
| COPY (command) ............................................. 33 | COPY (command) ............................................. 34 | |||
| COPY (response) ............................................ 66 | COPY (response) ............................................ 67 | |||
| CREATE (command) ........................................... 17 | CREATE (command) ........................................... 17 | |||
| DELETE (command) ........................................... 17 | DELETE (command) ........................................... 18 | |||
| DELETED (search key) ....................................... 26 | DELETED (search key) ....................................... 27 | |||
| DRAFT (search key) ......................................... 26 | DRAFT (search key) ......................................... 27 | |||
| ENVELOPE (fetch item) ...................................... 30 | ENVELOPE (fetch item) ...................................... 31 | |||
| ENVELOPE (fetch result) .................................... 48 | ENVELOPE (fetch result) .................................... 49 | |||
| EXAMINE (command) .......................................... 16 | EXAMINE (command) .......................................... 16 | |||
| EXISTS (response) .......................................... 44 | EXISTS (response) .......................................... 45 | |||
| EXPUNGE (command) .......................................... 24 | EXPUNGE (command) .......................................... 25 | |||
| EXPUNGE (response) ......................................... 44 | EXPUNGE (response) ......................................... 45 | |||
| FAST (fetch item) .......................................... 30 | FAST (fetch item) .......................................... 31 | |||
| FETCH (command) ............................................ 28 | FETCH (command) ............................................ 29 | |||
| FETCH (response) ........................................... 45 | FETCH (response) ........................................... 46 | |||
| FIND ALL.MAILBOXES (command) ............................... 63 | FIND ALL.MAILBOXES (command) ............................... 64 | |||
| FIND MAILBOXES (command) ................................... 63 | FIND MAILBOXES (command) ................................... 64 | |||
| FLAGGED (search key) ....................................... 26 | FLAGGED (search key) ....................................... 27 | |||
| FLAGS (fetch item) ......................................... 30 | FLAGS (fetch item) ......................................... 31 | |||
| Internet DRAFT IMAP4 August 1, 1994 | Internet DRAFT IMAP4 October 30, 1994 | |||
| FLAGS (fetch result) ....................................... 48 | FLAGS (fetch result) ....................................... 49 | |||
| FLAGS (response) ........................................... 43 | FLAGS (response) ........................................... 44 | |||
| FLAGS <flag list> (store command data item) ................ 33 | FLAGS <flag list> (store command data item) ................ 34 | |||
| FLAGS.SILENT <flag list> (store command data item) ......... 33 | FLAGS.SILENT <flag list> (store command data item) ......... 34 | |||
| FROM <string> (search key) ................................. 26 | FROM <string> (search key) ................................. 27 | |||
| FULL (fetch item) .......................................... 30 | FULL (fetch item) .......................................... 31 | |||
| HEADER <field-name> <string> (search key) .................. 26 | HEADER <field-name> <string> (search key) .................. 27 | |||
| INTERNALDATE (fetch item) .................................. 30 | INTERNALDATE (fetch item) .................................. 31 | |||
| INTERNALDATE (fetch result) ................................ 49 | INTERNALDATE (fetch result) ................................ 50 | |||
| KEYWORD <flag> (search key) ................................ 26 | KEYWORD <flag> (search key) ................................ 27 | |||
| LARGER <n> (search key) .................................... 26 | LARGER <n> (search key) .................................... 27 | |||
| LIST (command) ............................................. 19 | LIST (command) ............................................. 20 | |||
| LIST (response) ............................................ 42 | LIST (response) ............................................ 43 | |||
| LOGIN (command) ............................................ 14 | LOGIN (command) ............................................ 14 | |||
| LOGOUT (command) ........................................... 11 | LOGOUT (command) ........................................... 11 | |||
| LSUB (command) ............................................. 21 | LSUB (command) ............................................. 22 | |||
| LSUB (response) ............................................ 43 | LSUB (response) ............................................ 44 | |||
| MAILBOX (response) ......................................... 66 | MAILBOX (response) ......................................... 67 | |||
| NEW (search key) ........................................... 26 | NEW (search key) ........................................... 27 | |||
| NO (response) .............................................. 39 | NO (response) .............................................. 40 | |||
| NOOP (command) ............................................. 11 | NOOP (command) ............................................. 11 | |||
| NOT <search-key> (search key) .............................. 26 | NOT <search-key> (search key) .............................. 27 | |||
| OK (response) .............................................. 39 | OK (response) .............................................. 40 | |||
| OLD (search key) ........................................... 27 | OLD (search key) ........................................... 28 | |||
| ON <date> (search key) ..................................... 27 | ON <date> (search key) ..................................... 28 | |||
| OR <search-key1> <search-key2> (search key) ................ 27 | OR <search-key1> <search-key2> (search key) ................ 28 | |||
| PARSE (response code) ...................................... 38 | PARSE (response code) ...................................... 39 | |||
| PARTIAL (command) .......................................... 31 | PARTIAL (command) .......................................... 32 | |||
| PERMANENTFLAGS (response code) ............................. 38 | PERMANENTFLAGS (response code) ............................. 39 | |||
| PREAUTH (response) ......................................... 40 | PREAUTH (response) ......................................... 41 | |||
| READ-ONLY (response code) .................................. 38 | READ-ONLY (response code) .................................. 39 | |||
| READ-WRITE (response code) ................................. 38 | READ-WRITE (response code) ................................. 39 | |||
| RECENT (response) .......................................... 44 | RECENT (response) .......................................... 45 | |||
| RECENT (search key) ........................................ 27 | RECENT (search key) ........................................ 28 | |||
| RENAME (command) ........................................... 18 | RENAME (command) ........................................... 18 | |||
| RFC822 (fetch item) ........................................ 30 | RFC822 (fetch item) ........................................ 31 | |||
| RFC822 (fetch result) ...................................... 49 | RFC822 (fetch result) ...................................... 50 | |||
| RFC822.HEADER (fetch item) ................................. 30 | RFC822.HEADER (fetch item) ................................. 31 | |||
| RFC822.HEADER (fetch result) ............................... 49 | RFC822.HEADER (fetch result) ............................... 50 | |||
| RFC822.HEADER.LINES <header_list> (fetch item) ............. 30 | RFC822.HEADER.LINES <header_list> (fetch item) ............. 31 | |||
| RFC822.HEADER.LINES.NOT <header_list> (fetch item) ......... 30 | RFC822.HEADER.LINES.NOT <header_list> (fetch item) ......... 31 | |||
| RFC822.PEEK (fetch item) ................................... 30 | RFC822.PEEK (fetch item) ................................... 31 | |||
| RFC822.SIZE (fetch item) ................................... 31 | RFC822.SIZE (fetch item) ................................... 32 | |||
| RFC822.SIZE (fetch result) ................................. 49 | RFC822.SIZE (fetch result) ................................. 50 | |||
| RFC822.TEXT (fetch item) ................................... 31 | RFC822.TEXT (fetch item) ................................... 32 | |||
| RFC822.TEXT (fetch result) ................................. 49 | RFC822.TEXT (fetch result) ................................. 50 | |||
| RFC822.TEXT.PEEK (fetch item) .............................. 31 | RFC822.TEXT.PEEK (fetch item) .............................. 32 | |||
| SEARCH (command) ........................................... 24 | SEARCH (command) ........................................... 25 | |||
| Internet DRAFT IMAP4 August 1, 1994 | Internet DRAFT IMAP4 October 30, 1994 | |||
| SEARCH (response) .......................................... 43 | SEARCH (response) .......................................... 44 | |||
| SEEN (search key) .......................................... 27 | SEEN (search key) .......................................... 28 | |||
| SELECT (command) ........................................... 15 | SELECT (command) ........................................... 15 | |||
| SENTBEFORE <date> (search key) ............................. 27 | SENTBEFORE <date> (search key) ............................. 28 | |||
| SENTON <date> (search key) ................................. 27 | SENTON <date> (search key) ................................. 28 | |||
| SENTSINCE <date> (search key) .............................. 27 | SENTSINCE <date> (search key) .............................. 28 | |||
| SINCE <date> (search key) .................................. 27 | SINCE <date> (search key) .................................. 28 | |||
| SMALLER <n> (search key) ................................... 27 | SMALLER <n> (search key) ................................... 28 | |||
| STORE (command) ............................................ 32 | STORE (command) ............................................ 33 | |||
| STORE (response) ........................................... 66 | STORE (response) ........................................... 67 | |||
| SUBJECT <string> (search key) .............................. 27 | SUBJECT <string> (search key) .............................. 28 | |||
| SUBSCRIBE (command) ........................................ 18 | SUBSCRIBE (command) ........................................ 19 | |||
| SUBSCRIBE MAILBOX (command) ................................ 64 | SUBSCRIBE MAILBOX (command) ................................ 65 | |||
| TEXT <string> (search key) ................................. 27 | TEXT <string> (search key) ................................. 28 | |||
| TO <string> (search key) ................................... 27 | TO <string> (search key) ................................... 28 | |||
| TRYCREATE (response code) .................................. 38 | TRYCREATE (response code) .................................. 39 | |||
| UID (command) .............................................. 34 | UID (command) .............................................. 35 | |||
| UID (fetch item) ........................................... 31 | UID (fetch item) ........................................... 32 | |||
| UID (fetch result) ......................................... 49 | UID (fetch result) ......................................... 51 | |||
| UID <message set> (search key) ............................. 27 | UID <message set> (search key) ............................. 28 | |||
| UNANSWERED (search key) .................................... 28 | UIDVALIDITY (response code) ................................ 40 | |||
| UNDELETED (search key) ..................................... 28 | UNANSWERED (search key) .................................... 29 | |||
| UNDRAFT (search key) ....................................... 28 | UNDELETED (search key) ..................................... 29 | |||
| UNFLAGGED (search key) ..................................... 28 | UNDRAFT (search key) ....................................... 29 | |||
| UNKEYWORD <flag> (search key) .............................. 28 | UNFLAGGED (search key) ..................................... 29 | |||
| UNSEEN (response code) ..................................... 39 | UNKEYWORD <flag> (search key) .............................. 29 | |||
| UNSEEN (search key) ........................................ 28 | UNSEEN (response code) ..................................... 40 | |||
| UNSEEN (search key) ........................................ 29 | ||||
| UNSUBSCRIBE (command) ...................................... 19 | UNSUBSCRIBE (command) ...................................... 19 | |||
| UNSUBSCRIBE MAILBOX (command) .............................. 64 | UNSUBSCRIBE MAILBOX (command) .............................. 65 | |||
| X<atom> (command) .......................................... 36 | X<atom> (command) .......................................... 37 | |||
| \Answered (system flag) .................................... 48 | \Answered (system flag) .................................... 50 | |||
| \Deleted (system flag) ..................................... 49 | \Deleted (system flag) ..................................... 50 | |||
| \Draft (system flag) ....................................... 49 | \Draft (system flag) ....................................... 50 | |||
| \Flagged (system flag) ..................................... 48 | \Flagged (system flag) ..................................... 50 | |||
| \Marked (mailbox name attribute) ........................... 42 | \Marked (mailbox name attribute) ........................... 43 | |||
| \Noinferiors (mailbox name attribute) ...................... 42 | \Noinferiors (mailbox name attribute) ...................... 43 | |||
| \Noselect (mailbox name attribute) ......................... 42 | \Noselect (mailbox name attribute) ......................... 43 | |||
| \Recent (system flag) ...................................... 49 | \Recent (system flag) ...................................... 50 | |||
| \Seen (system flag) ........................................ 48 | \Seen (system flag) ........................................ 50 | |||
| \Unmarked (mailbox name attribute) ......................... 42 | \Unmarked (mailbox name attribute) ......................... 43 | |||
| Internet DRAFT IMAP4 August 1, 1994 | ||||
| Table of Contents | ||||
| Status of this Memo ............................................... i | ||||
| Abstract .......................................................... i | ||||
| 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 .......................................... 8 | ||||
| 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 | ||||
| Internet DRAFT IMAP4 August 1, 1994 | ||||
| 6.3.4. DELETE Command ............................................ 17 | ||||
| 6.3.5. RENAME Command ............................................ 18 | ||||
| 6.3.6. SUBSCRIBE Command ......................................... 18 | ||||
| 6.3.7. UNSUBSCRIBE Command ....................................... 19 | ||||
| 6.3.8. LIST Command .............................................. 19 | ||||
| 6.3.9. LSUB Command .............................................. 21 | ||||
| 6.3.10. APPEND Command ............................................ 21 | ||||
| 6.4. Client Commands - Selected State .......................... 22 | ||||
| 6.4.1. CHECK Command ............................................. 23 | ||||
| 6.4.2. CLOSE Command ............................................. 23 | ||||
| 6.4.3. EXPUNGE Command ........................................... 24 | ||||
| 6.4.4. SEARCH Command ............................................ 24 | ||||
| 6.4.5. FETCH Command ............................................. 28 | ||||
| 6.4.6. PARTIAL Command ........................................... 31 | ||||
| 6.4.7. STORE Command ............................................. 32 | ||||
| 6.4.8. COPY Command .............................................. 33 | ||||
| 6.4.9. UID Command ............................................... 34 | ||||
| 6.5. Client Commands - Experimental/Expansion .................. 36 | ||||
| 6.5.1. X<atom> Command ........................................... 36 | ||||
| 7. Server Responses .......................................... 37 | ||||
| 7.1. Server Responses - Status Responses ....................... 38 | ||||
| 7.1.1. OK Response ............................................... 39 | ||||
| 7.1.2. NO Response ............................................... 39 | ||||
| 7.1.3. BAD Response .............................................. 40 | ||||
| 7.1.4. PREAUTH Response .......................................... 40 | ||||
| 7.1.5. BYE Response .............................................. 40 | ||||
| 7.2. Server Responses - Server and Mailbox Status .............. 41 | ||||
| 7.2.1. CAPABILITY Response ....................................... 41 | ||||
| 7.2.2. LIST Response ............................................. 42 | ||||
| 7.2.3. LSUB Response ............................................. 43 | ||||
| 7.2.4. SEARCH Response ........................................... 43 | ||||
| 7.2.5. FLAGS Response ............................................ 43 | ||||
| 7.3. Server Responses - Message Status ......................... 43 | ||||
| 7.3.1. EXISTS Response ........................................... 44 | ||||
| 7.3.2. RECENT Response ........................................... 44 | ||||
| 7.3.3. EXPUNGE Response .......................................... 44 | ||||
| 7.3.4. FETCH Response ............................................ 45 | ||||
| 7.3.5. Obsolete Responses ........................................ 50 | ||||
| 7.4. Server Responses - Command Continuation Request ........... 50 | ||||
| 8. Sample IMAP4 session ...................................... 51 | ||||
| 9. Formal Syntax ............................................. 52 | ||||
| 10. Author's Note ............................................. 62 | ||||
| 11. Security Considerations ................................... 62 | ||||
| 12. Author's Address .......................................... 62 | ||||
| Appendices ........................................................ 63 | ||||
| A. Obsolete Commands .............................................. 63 | ||||
| A.6.3.OBS.1. FIND ALL.MAILBOXES Command ........................ 63 | ||||
| A.6.3.OBS.2. FIND MAILBOXES Command ............................ 63 | ||||
| Internet DRAFT IMAP4 August 1, 1994 | ||||
| A.6.3.OBS.3. SUBSCRIBE MAILBOX Command ......................... 64 | ||||
| A.6.3.OBS.4. UNSUBSCRIBE MAILBOX Command ....................... 64 | ||||
| B. Obsolete Responses ............................................. 66 | ||||
| B.7.2.OBS.1. MAILBOX Response .................................. 66 | ||||
| B.7.3.OBS.1. COPY Response ..................................... 66 | ||||
| B.7.3.OBS.2. STORE Response .................................... 66 | ||||
| C. References ................................................ 68 | ||||
| D. IMAP4 Keyword Index ....................................... 69 | ||||
| End of changes. 145 change blocks. | ||||
| 281 lines changed or deleted | 482 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||