draft-ietf-extra-imap4rev2-23.txt   draft-ietf-extra-imap4rev2-24.txt 
Network Working Group A. Melnikov, Ed. Network Working Group A. Melnikov, Ed.
Internet-Draft Isode Ltd Internet-Draft Isode Ltd
Obsoletes: 3501 (if approved) B. Leiba, Ed. Obsoletes: 3501 (if approved) B. Leiba, Ed.
Intended status: Standards Track Futurewei Technologies Intended status: Standards Track Futurewei Technologies
Expires: July 8, 2021 January 4, 2021 Expires: July 9, 2021 January 5, 2021
Internet Message Access Protocol (IMAP) - Version 4rev2 Internet Message Access Protocol (IMAP) - Version 4rev2
draft-ietf-extra-imap4rev2-23 draft-ietf-extra-imap4rev2-24
Abstract Abstract
The Internet Message Access Protocol, Version 4rev2 (IMAP4rev2) The Internet Message Access Protocol, Version 4rev2 (IMAP4rev2)
allows a client to access and manipulate electronic mail messages on allows a client to access and manipulate electronic mail messages on
a server. IMAP4rev2 permits manipulation of mailboxes (remote a server. IMAP4rev2 permits manipulation of mailboxes (remote
message folders) in a way that is functionally equivalent to local message folders) in a way that is functionally equivalent to local
folders. IMAP4rev2 also provides the capability for an offline folders. IMAP4rev2 also provides the capability for an offline
client to resynchronize with the server. client to resynchronize with the server.
skipping to change at page 1, line 48 skipping to change at page 1, line 48
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on July 8, 2021. This Internet-Draft will expire on July 9, 2021.
Copyright Notice Copyright Notice
Copyright (c) 2021 IETF Trust and the persons identified as the Copyright (c) 2021 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 3, line 22 skipping to change at page 3, line 22
4.3.1. 8-bit and Binary Strings . . . . . . . . . . . . . . 18 4.3.1. 8-bit and Binary Strings . . . . . . . . . . . . . . 18
4.4. Parenthesized List . . . . . . . . . . . . . . . . . . . 19 4.4. Parenthesized List . . . . . . . . . . . . . . . . . . . 19
4.5. NIL . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 4.5. NIL . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
5. Operational Considerations . . . . . . . . . . . . . . . . . 20 5. Operational Considerations . . . . . . . . . . . . . . . . . 20
5.1. Mailbox Naming . . . . . . . . . . . . . . . . . . . . . 20 5.1. Mailbox Naming . . . . . . . . . . . . . . . . . . . . . 20
5.1.1. Mailbox Hierarchy Naming . . . . . . . . . . . . . . 21 5.1.1. Mailbox Hierarchy Naming . . . . . . . . . . . . . . 21
5.1.2. Namespaces . . . . . . . . . . . . . . . . . . . . . 21 5.1.2. Namespaces . . . . . . . . . . . . . . . . . . . . . 21
5.2. Mailbox Size and Message Status Updates . . . . . . . . . 23 5.2. Mailbox Size and Message Status Updates . . . . . . . . . 23
5.3. Response when no Command in Progress . . . . . . . . . . 23 5.3. Response when no Command in Progress . . . . . . . . . . 23
5.4. Autologout Timer . . . . . . . . . . . . . . . . . . . . 23 5.4. Autologout Timer . . . . . . . . . . . . . . . . . . . . 23
5.5. Multiple Commands in Progress (Command Pipelining) . . . 23 5.5. Multiple Commands in Progress (Command Pipelining) . . . 24
6. Client Commands . . . . . . . . . . . . . . . . . . . . . . . 25 6. Client Commands . . . . . . . . . . . . . . . . . . . . . . . 25
6.1. Client Commands - Any State . . . . . . . . . . . . . . . 25 6.1. Client Commands - Any State . . . . . . . . . . . . . . . 26
6.1.1. CAPABILITY Command . . . . . . . . . . . . . . . . . 25 6.1.1. CAPABILITY Command . . . . . . . . . . . . . . . . . 26
6.1.2. NOOP Command . . . . . . . . . . . . . . . . . . . . 26 6.1.2. NOOP Command . . . . . . . . . . . . . . . . . . . . 27
6.1.3. LOGOUT Command . . . . . . . . . . . . . . . . . . . 27 6.1.3. LOGOUT Command . . . . . . . . . . . . . . . . . . . 27
6.2. Client Commands - Not Authenticated State . . . . . . . . 27 6.2. Client Commands - Not Authenticated State . . . . . . . . 28
6.2.1. STARTTLS Command . . . . . . . . . . . . . . . . . . 28 6.2.1. STARTTLS Command . . . . . . . . . . . . . . . . . . 28
6.2.2. AUTHENTICATE Command . . . . . . . . . . . . . . . . 29 6.2.2. AUTHENTICATE Command . . . . . . . . . . . . . . . . 29
6.2.3. LOGIN Command . . . . . . . . . . . . . . . . . . . . 32 6.2.3. LOGIN Command . . . . . . . . . . . . . . . . . . . . 32
6.3. Client Commands - Authenticated State . . . . . . . . . . 33 6.3. Client Commands - Authenticated State . . . . . . . . . . 33
6.3.1. ENABLE Command . . . . . . . . . . . . . . . . . . . 33 6.3.1. ENABLE Command . . . . . . . . . . . . . . . . . . . 33
6.3.2. SELECT Command . . . . . . . . . . . . . . . . . . . 35 6.3.2. SELECT Command . . . . . . . . . . . . . . . . . . . 35
6.3.3. EXAMINE Command . . . . . . . . . . . . . . . . . . . 37 6.3.3. EXAMINE Command . . . . . . . . . . . . . . . . . . . 37
6.3.4. CREATE Command . . . . . . . . . . . . . . . . . . . 38 6.3.4. CREATE Command . . . . . . . . . . . . . . . . . . . 38
6.3.5. DELETE Command . . . . . . . . . . . . . . . . . . . 39 6.3.5. DELETE Command . . . . . . . . . . . . . . . . . . . 40
6.3.6. RENAME Command . . . . . . . . . . . . . . . . . . . 41 6.3.6. RENAME Command . . . . . . . . . . . . . . . . . . . 41
6.3.7. SUBSCRIBE Command . . . . . . . . . . . . . . . . . . 43 6.3.7. SUBSCRIBE Command . . . . . . . . . . . . . . . . . . 44
6.3.8. UNSUBSCRIBE Command . . . . . . . . . . . . . . . . . 44 6.3.8. UNSUBSCRIBE Command . . . . . . . . . . . . . . . . . 44
6.3.9. LIST Command . . . . . . . . . . . . . . . . . . . . 44 6.3.9. LIST Command . . . . . . . . . . . . . . . . . . . . 45
6.3.10. NAMESPACE Command . . . . . . . . . . . . . . . . . . 63 6.3.10. NAMESPACE Command . . . . . . . . . . . . . . . . . . 63
6.3.11. STATUS Command . . . . . . . . . . . . . . . . . . . 67 6.3.11. STATUS Command . . . . . . . . . . . . . . . . . . . 67
6.3.12. APPEND Command . . . . . . . . . . . . . . . . . . . 68 6.3.12. APPEND Command . . . . . . . . . . . . . . . . . . . 68
6.3.13. IDLE Command . . . . . . . . . . . . . . . . . . . . 71 6.3.13. IDLE Command . . . . . . . . . . . . . . . . . . . . 71
6.4. Client Commands - Selected State . . . . . . . . . . . . 73 6.4. Client Commands - Selected State . . . . . . . . . . . . 73
6.4.1. CLOSE Command . . . . . . . . . . . . . . . . . . . . 74 6.4.1. CLOSE Command . . . . . . . . . . . . . . . . . . . . 74
6.4.2. UNSELECT Command . . . . . . . . . . . . . . . . . . 74 6.4.2. UNSELECT Command . . . . . . . . . . . . . . . . . . 74
6.4.3. EXPUNGE Command . . . . . . . . . . . . . . . . . . . 75 6.4.3. EXPUNGE Command . . . . . . . . . . . . . . . . . . . 75
6.4.4. SEARCH Command . . . . . . . . . . . . . . . . . . . 75 6.4.4. SEARCH Command . . . . . . . . . . . . . . . . . . . 75
6.4.5. FETCH Command . . . . . . . . . . . . . . . . . . . . 87 6.4.5. FETCH Command . . . . . . . . . . . . . . . . . . . . 87
6.4.6. STORE Command . . . . . . . . . . . . . . . . . . . . 92 6.4.6. STORE Command . . . . . . . . . . . . . . . . . . . . 92
6.4.7. COPY Command . . . . . . . . . . . . . . . . . . . . 93 6.4.7. COPY Command . . . . . . . . . . . . . . . . . . . . 93
6.4.8. MOVE Command . . . . . . . . . . . . . . . . . . . . 94 6.4.8. MOVE Command . . . . . . . . . . . . . . . . . . . . 94
6.4.9. UID Command . . . . . . . . . . . . . . . . . . . . . 96 6.4.9. UID Command . . . . . . . . . . . . . . . . . . . . . 96
6.5. Client Commands - Experimental/Expansion . . . . . . . . 97 6.5. Client Commands - Experimental/Expansion . . . . . . . . 97
6.5.1. X<atom> Command . . . . . . . . . . . . . . . . . . . 97
7. Server Responses . . . . . . . . . . . . . . . . . . . . . . 98 7. Server Responses . . . . . . . . . . . . . . . . . . . . . . 98
7.1. Server Responses - Status Responses . . . . . . . . . . . 99 7.1. Server Responses - Status Responses . . . . . . . . . . . 99
7.1.1. OK Response . . . . . . . . . . . . . . . . . . . . . 107 7.1.1. OK Response . . . . . . . . . . . . . . . . . . . . . 107
7.1.2. NO Response . . . . . . . . . . . . . . . . . . . . . 108 7.1.2. NO Response . . . . . . . . . . . . . . . . . . . . . 107
7.1.3. BAD Response . . . . . . . . . . . . . . . . . . . . 108 7.1.3. BAD Response . . . . . . . . . . . . . . . . . . . . 108
7.1.4. PREAUTH Response . . . . . . . . . . . . . . . . . . 108 7.1.4. PREAUTH Response . . . . . . . . . . . . . . . . . . 108
7.1.5. BYE Response . . . . . . . . . . . . . . . . . . . . 109 7.1.5. BYE Response . . . . . . . . . . . . . . . . . . . . 109
7.2. Server Responses - Server and Mailbox Status . . . . . . 109 7.2. Server Responses - Server and Mailbox Status . . . . . . 109
7.2.1. The ENABLED Response . . . . . . . . . . . . . . . . 110 7.2.1. The ENABLED Response . . . . . . . . . . . . . . . . 109
7.2.2. CAPABILITY Response . . . . . . . . . . . . . . . . . 110 7.2.2. CAPABILITY Response . . . . . . . . . . . . . . . . . 110
7.2.3. LIST Response . . . . . . . . . . . . . . . . . . . . 111 7.2.3. LIST Response . . . . . . . . . . . . . . . . . . . . 111
7.2.4. NAMESPACE Response . . . . . . . . . . . . . . . . . 115 7.2.4. NAMESPACE Response . . . . . . . . . . . . . . . . . 114
7.2.5. STATUS Response . . . . . . . . . . . . . . . . . . . 115 7.2.5. STATUS Response . . . . . . . . . . . . . . . . . . . 115
7.2.6. ESEARCH Response . . . . . . . . . . . . . . . . . . 115 7.2.6. ESEARCH Response . . . . . . . . . . . . . . . . . . 115
7.2.7. FLAGS Response . . . . . . . . . . . . . . . . . . . 116 7.2.7. FLAGS Response . . . . . . . . . . . . . . . . . . . 116
7.3. Server Responses - Mailbox Size . . . . . . . . . . . . . 116 7.3. Server Responses - Mailbox Size . . . . . . . . . . . . . 116
7.3.1. EXISTS Response . . . . . . . . . . . . . . . . . . . 116 7.3.1. EXISTS Response . . . . . . . . . . . . . . . . . . . 116
7.4. Server Responses - Message Status . . . . . . . . . . . . 117 7.4. Server Responses - Message Status . . . . . . . . . . . . 116
7.4.1. EXPUNGE Response . . . . . . . . . . . . . . . . . . 117 7.4.1. EXPUNGE Response . . . . . . . . . . . . . . . . . . 117
7.4.2. FETCH Response . . . . . . . . . . . . . . . . . . . 118 7.4.2. FETCH Response . . . . . . . . . . . . . . . . . . . 117
7.5. Server Responses - Command Continuation Request . . . . . 124 7.5. Server Responses - Command Continuation Request . . . . . 123
8. Sample IMAP4rev2 connection . . . . . . . . . . . . . . . . . 124 8. Sample IMAP4rev2 connection . . . . . . . . . . . . . . . . . 124
9. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 125 9. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 125
10. Author's Note . . . . . . . . . . . . . . . . . . . . . . . . 143 10. Author's Note . . . . . . . . . . . . . . . . . . . . . . . . 143
11. Security Considerations . . . . . . . . . . . . . . . . . . . 143 11. Security Considerations . . . . . . . . . . . . . . . . . . . 143
11.1. STARTTLS Security Considerations . . . . . . . . . . . . 143 11.1. STARTTLS Security Considerations . . . . . . . . . . . . 143
11.2. COPYUID and APPENDUID response codes . . . . . . . . . . 144 11.2. COPYUID and APPENDUID response codes . . . . . . . . . . 144
11.3. LIST command and Other Users' namespace . . . . . . . . 144 11.3. LIST command and Other Users' namespace . . . . . . . . 144
11.4. Other Security Considerations . . . . . . . . . . . . . 145 11.4. Other Security Considerations . . . . . . . . . . . . . 145
12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 145 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 145
12.1. Updates to IMAP4 Capabilities registry . . . . . . . . . 146 12.1. Updates to IMAP4 Capabilities registry . . . . . . . . . 146
skipping to change at page 5, line 4 skipping to change at page 4, line 51
12.3. LIST Selection Options, LIST Return Options, LIST 12.3. LIST Selection Options, LIST Return Options, LIST
extended data items . . . . . . . . . . . . . . . . . . 146 extended data items . . . . . . . . . . . . . . . . . . 146
13. References . . . . . . . . . . . . . . . . . . . . . . . . . 147 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 147
13.1. Normative References . . . . . . . . . . . . . . . . . . 147 13.1. Normative References . . . . . . . . . . . . . . . . . . 147
13.2. Informative References (related protocols) . . . . . . . 150 13.2. Informative References (related protocols) . . . . . . . 150
13.3. Informative References (historical aspects of IMAP and 13.3. Informative References (historical aspects of IMAP and
related protocols) . . . . . . . . . . . . . . . . . . . 152 related protocols) . . . . . . . . . . . . . . . . . . . 152
Appendix A. Backward compatibility with IMAP4rev1 . . . . . . . 152 Appendix A. Backward compatibility with IMAP4rev1 . . . . . . . 152
A.1. Mailbox International Naming Convention for compatibility A.1. Mailbox International Naming Convention for compatibility
with IMAP4rev1 . . . . . . . . . . . . . . . . . . . . . 153 with IMAP4rev1 . . . . . . . . . . . . . . . . . . . . . 153
Appendix B. Backward compatibility with BINARY extension . . . . 155 Appendix B. Backward compatibility with BINARY extension . . . . 155
Appendix C. Backward compatibility with LIST-EXTENDED extension 155 Appendix C. Backward compatibility with LIST-EXTENDED extension 155
Appendix D. 63 bit body part and message sizes . . . . . . . . . 155 Appendix D. 63 bit body part and message sizes . . . . . . . . . 155
Appendix E. Changes from RFC 3501 / IMAP4rev1 . . . . . . . . . 155 Appendix E. Changes from RFC 3501 / IMAP4rev1 . . . . . . . . . 155
Appendix F. Other Recommended IMAP Extensions . . . . . . . . . 157 Appendix F. Other Recommended IMAP Extensions . . . . . . . . . 157
Appendix G. Acknowledgement . . . . . . . . . . . . . . . . . . 157 Appendix G. Acknowledgement . . . . . . . . . . . . . . . . . . 158
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 163 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 163
1. How to Read This Document 1. How to Read This Document
1.1. Organization of This Document 1.1. Organization of 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 IMAP4rev2 client or server. Beyond the protocol overview in an IMAP4rev2 client or server. Beyond the protocol overview in
section 2, it is not optimized for someone trying to understand the section 2, it is not optimized for someone trying to understand the
operation of the protocol. The material in sections 3 through 5 operation of the protocol. The material in sections 3 through 5
provides the general context and definitions with which IMAP4rev2 provides the general context and definitions with which IMAP4rev2
operates. operates.
Sections 6, 7, and 9 describe the IMAP commands, responses, and Sections 6, 7, and 9 describe the IMAP commands, responses, and
syntax, respectively. The relationships among these are such that it syntax, respectively. The relationships among these are such that it
is almost impossible to understand any of them separately. In is almost impossible to understand any of them separately. In
particular, do not attempt to deduce command syntax from the command particular, do not attempt to deduce command syntax from the command
section alone; instead refer to the Formal Syntax section. section alone; instead refer to the Formal Syntax (Section 9).
1.2. Conventions Used in This Document 1.2. Conventions Used in This Document
"Conventions" are basic principles or procedures. Document "Conventions" are basic principles or procedures. Document
conventions are noted in this section. conventions are noted in this section.
In examples, "C:" and "S:" indicate lines sent by the client and In examples, "C:" and "S:" indicate lines sent by the client and
server respectively. Note that each line includes the terminating server respectively. Note that each line includes the terminating
CRLF. CRLF.
skipping to change at page 7, line 49 skipping to change at page 7, line 49
generated by the client for each command. (More formally: the client generated by the client for each command. (More formally: the client
SHOULD generate a unique tag for every command, but a server MUST SHOULD generate a unique tag for every command, but a server MUST
accept tag reuse.) accept tag reuse.)
Clients MUST follow the syntax outlined in this specification Clients MUST follow the syntax outlined in this specification
strictly. It is a syntax error to send a command with missing or strictly. It is a syntax error to send a command with missing or
extraneous spaces or arguments. extraneous spaces or arguments.
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
quoted with an octet count (see the description of literal in String quoted with an octet count (see the description of literal in
under Data Formats); in the other case, the command arguments require Section 4.3); in the other case, the command arguments require server
server feedback (see the AUTHENTICATE command). In either case, the feedback (see the AUTHENTICATE command in Section 6.2.2). In either
server sends a command continuation request response if it is ready case, the server sends a command continuation request response if it
for the octets (if appropriate) and the remainder of the command. is ready for the octets (if appropriate) and the remainder of the
This response is prefixed with the token "+". command. This response is prefixed with the token "+".
Note: If instead, the server detected an error in the command, it Note: If instead, the server detected an error in the command, it
sends a BAD completion response with a tag matching the command sends a BAD completion response with a tag matching the command
(as described below) to reject the command and prevent the client (as described below) to reject the command and prevent the client
from sending any more of the command. from sending any more of the command.
It is also possible for the server to send a completion response It is also possible for the server to send a completion response
for some other command (if multiple commands are in progress), or for some other command (if multiple commands are in progress), or
untagged data. In either case, the command continuation request untagged data. In either case, the command continuation request
is still pending; the client takes the appropriate action for the is still pending; the client takes the appropriate action for the
skipping to change at page 21, line 16 skipping to change at page 21, line 16
sensitivity in non-INBOX mailbox names. Some server implementations sensitivity in non-INBOX mailbox names. Some server implementations
are fully case-sensitive in ASCII range; others preserve case of a are fully case-sensitive in ASCII range; others preserve case of a
newly-created name but otherwise are case-insensitive; and yet others newly-created name but otherwise are case-insensitive; and yet others
coerce names to a particular case. Client implementations must be coerce names to a particular case. Client implementations must be
able to interact with any of these. able to interact with any of these.
There are certain client considerations when creating a new mailbox There are certain client considerations when creating a new mailbox
name: name:
1. Any character which is one of the atom-specials (see the Formal 1. Any character which is one of the atom-specials (see the Formal
Syntax) will require that the mailbox name be represented as a Syntax in Section 9) will require that the mailbox name be
quoted string or literal. represented as a quoted string or literal.
2. CTL and other non-graphic characters are difficult to represent 2. CTL and other non-graphic characters are difficult to represent
in a user interface and are best avoided. Servers MAY refuse to in a user interface and are best avoided. Servers MAY refuse to
create mailbox names containing Unicode CTL characters. create mailbox names containing Unicode CTL characters.
3. Although the list-wildcard characters ("%" and "*") are valid in 3. Although the list-wildcard characters ("%" and "*") are valid in
a mailbox name, it is difficult to use such mailbox names with a mailbox name, it is difficult to use such mailbox names with
the LIST command due to the conflict with wildcard the LIST command due to the conflict with wildcard
interpretation. interpretation.
skipping to change at page 23, line 20 skipping to change at page 23, line 20
messages to the mailbox (e.g., new message delivery), change the messages to the mailbox (e.g., new message delivery), change the
flags of the messages in the mailbox (e.g., simultaneous access to flags of the messages in the mailbox (e.g., simultaneous access to
the same mailbox by multiple agents), or even remove messages from the same mailbox by multiple agents), or even remove messages from
the mailbox. A server MUST send mailbox size updates automatically the mailbox. A server MUST send mailbox size updates automatically
if a mailbox size change is observed during the processing of a if a mailbox size change is observed during the processing of a
command. A server SHOULD send message flag updates automatically, command. A server SHOULD send message flag updates automatically,
without requiring the client to request such updates explicitly. without requiring the client to request such updates explicitly.
Special rules exist for server notification of a client about the Special rules exist for server notification of a client about the
removal of messages to prevent synchronization errors; see the removal of messages to prevent synchronization errors; see the
description of the EXPUNGE response for more detail. In particular, description of the EXPUNGE response (Section 7.4.1) for more detail.
it is NOT permitted to send an EXISTS response that would reduce the In particular, it is NOT permitted to send an EXISTS response that
number of messages in the mailbox; only the EXPUNGE response can do would reduce the number of messages in the mailbox; only the EXPUNGE
this. response can do this.
Regardless of what implementation decisions a client makes on Regardless of what implementation decisions a client makes 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 the mailbox size updates. It MUST NOT assume that any command after the
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 23, line 46 skipping to change at page 23, line 46
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 applies to If a server has an inactivity autologout timer that applies to
sessions after authentication, the duration of that timer MUST be at sessions after authentication, the duration of that timer MUST be at
least 30 minutes. The receipt of any command from the client during least 30 minutes. The receipt of any command from the client during
that interval resets the autologout timer. that interval resets the autologout timer.
Note that this specification doesn't have any restrictions on
autologout timer used before successful client authentication. In
particular, servers are allowed to use shorted pre-authentication
timer to protect themselves from Denial of Service attacks.
5.5. Multiple Commands in Progress (Command Pipelining) 5.5. Multiple Commands in Progress (Command Pipelining)
The client MAY send another command without waiting for the The client MAY send another command without waiting for the
completion result response of a command, subject to ambiguity rules completion result response of a command, subject to ambiguity rules
(see below) and flow control constraints on the underlying data (see below) and flow control constraints on the underlying data
stream. Similarly, a server MAY begin processing another command stream. Similarly, a server MAY begin processing another command
before processing the current command to completion, subject to before processing the current command to completion, subject to
ambiguity rules. However, any command continuation request responses ambiguity rules. However, any command continuation request responses
and command continuations MUST be negotiated before any subsequent and command continuations MUST be negotiated before any subsequent
command is initiated. command is initiated.
skipping to change at page 25, line 24 skipping to change at page 25, line 32
permitted state (for example, commands valid in authenticated and permitted state (for example, commands valid in authenticated and
selected state are listed in the authenticated state commands). selected state are listed in the authenticated state commands).
Command arguments, identified by "Arguments:" in the command Command arguments, identified by "Arguments:" in the command
descriptions below, are described by function, not by syntax. The descriptions below, are described by function, not by syntax. The
precise syntax of command arguments is described in the Formal Syntax precise syntax of command arguments is described in the Formal Syntax
(Section 9). (Section 9).
Some commands cause specific server responses to be returned; these Some commands cause specific server responses to be returned; these
are identified by "Responses:" in the command descriptions below. are identified by "Responses:" in the command descriptions below.
See the response descriptions in the Responses section for See the response descriptions in the Responses section (Section 7)
information on these responses, and the Formal Syntax section for the for information on these responses, and the Formal Syntax (Section 9)
precise syntax of these responses. It is possible for server data to for the precise syntax of these responses. It is possible for server
be transmitted as a result of any command. Thus, commands that do data to be transmitted as a result of any command. Thus, commands
not specifically require server data specify "no specific responses that do not specifically require server data specify "no specific
for this command" instead of "none". responses for this command" instead of "none".
The "Result:" in the command description refers to the possible The "Result:" in the command description refers to the possible
tagged status responses to a command, and any special interpretation tagged status responses to a command, and any special interpretation
of these status responses. of these status responses.
The state of a connection is only changed by successful commands The state of a connection is only changed by successful commands
which are documented as changing state. A rejected command (BAD which are documented as changing state. A rejected command (BAD
response) never changes the state of the connection or of the response) never changes the state of the connection or of the
selected mailbox. A failed command (NO response) generally does not selected mailbox. A failed command (NO response) generally does not
change the state of the connection or of the selected mailbox; the change the state of the connection or of the selected mailbox; the
skipping to change at page 26, line 4 skipping to change at page 26, line 15
6.1. Client Commands - Any State 6.1. Client Commands - Any State
The following commands are valid in any state: CAPABILITY, NOOP, and The following commands are valid in any state: CAPABILITY, NOOP, and
LOGOUT. LOGOUT.
6.1.1. CAPABILITY Command 6.1.1. CAPABILITY Command
Arguments: none Arguments: none
Responses: REQUIRED untagged response: CAPABILITY Responses: REQUIRED untagged response: CAPABILITY
Result: OK - capability completed Result: OK - capability completed
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 (e.g.
server supports. The server MUST send a single untagged CAPABILITY extensions and/or modifications of server behaviour) that the server
response with "IMAP4rev2" as one of the listed capabilities before supports. The server MUST send a single untagged CAPABILITY response
the (tagged) OK response. with "IMAP4rev2" as one of the listed capabilities before the
(tagged) OK response.
A capability name which begins with "AUTH=" indicates that the server A capability name which begins with "AUTH=" indicates that the server
supports that particular authentication mechanism. All such names supports that particular authentication mechanism as defined in
are, by definition, part of this specification. For example, the [SASL]. All such names are, by definition, part of this
authorization capability for an experimental "blurdybloop" specification.
authenticator would be "AUTH=XBLURDYBLOOP" and not
"XAUTH=BLURDYBLOOP" or "XAUTH=XBLURDYBLOOP".
Other capability names refer to extensions, revisions, or amendments Other capability names refer to extensions, revisions, or amendments
to this specification. See the documentation of the CAPABILITY to this specification. See the documentation of the CAPABILITY
response for additional information. No capabilities, beyond the response in Section 7.2.2 for additional information. No
base IMAP4rev2 set defined in this specification, are enabled without capabilities, beyond the base IMAP4rev2 set defined in this
explicit client action to invoke the capability. specification, are enabled without explicit client action to invoke
the capability.
Client and server implementations MUST implement the STARTTLS, Client and server implementations MUST implement the STARTTLS,
LOGINDISABLED, and AUTH=PLAIN (described in [PLAIN]) capabilities. LOGINDISABLED, and AUTH=PLAIN (described in [PLAIN]) capabilities.
See the Security Considerations section for important information. See the Security Considerations (Section 11) for important
information.
Unless specified otherwise, all registered extensions to IMAP4rev1 Unless specified otherwise, all registered extensions to IMAP4rev1
are also valid extensions to IMAP4rev2. are also valid extensions to IMAP4rev2.
See the section entitled "Client Commands - Experimental/Expansion"
for information about the form of site or implementation-specific
capabilities.
Example: C: abcd CAPABILITY Example: C: abcd CAPABILITY
S: * CAPABILITY IMAP4rev2 STARTTLS AUTH=GSSAPI S: * CAPABILITY IMAP4rev2 STARTTLS AUTH=GSSAPI
LOGINDISABLED LOGINDISABLED
S: abcd OK CAPABILITY completed S: abcd OK CAPABILITY completed
C: efgh STARTTLS C: efgh STARTTLS
S: efgh OK STARTLS completed S: efgh OK STARTLS completed
<TLS negotiation, further commands are under [TLS] layer> <TLS negotiation, further commands are under [TLS] layer>
C: ijkl CAPABILITY C: ijkl CAPABILITY
S: * CAPABILITY IMAP4rev2 AUTH=GSSAPI AUTH=PLAIN S: * CAPABILITY IMAP4rev2 AUTH=GSSAPI AUTH=PLAIN
S: ijkl OK CAPABILITY completed S: ijkl OK CAPABILITY completed
6.1.2. NOOP Command 6.1.2. NOOP Command
skipping to change at page 28, line 23 skipping to change at page 28, line 42
case, a password is required although the server may choose to accept case, a password is required although the server may choose to accept
any password. The restrictions placed on anonymous users are any password. The restrictions placed on anonymous users are
implementation-dependent. implementation-dependent.
Once authenticated (including as anonymous), it is not possible to Once authenticated (including as anonymous), it is not possible to
re-enter not authenticated state. re-enter not 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 the not authenticated state: the following commands are valid in the not authenticated state:
STARTTLS, AUTHENTICATE and LOGIN. See the Security Considerations STARTTLS, AUTHENTICATE and LOGIN. See the Security Considerations
section for important information about these commands. (Section 11) for important information about these commands.
6.2.1. STARTTLS Command 6.2.1. STARTTLS Command
Arguments: none Arguments: none
Responses: no specific response for this command Responses: no specific response for this command
Result: OK - starttls completed, begin TLS negotiation Result: OK - starttls completed, begin TLS negotiation
BAD - STARTTLS received after a successful TLS BAD - STARTTLS received after a successful TLS
negotiation or arguments invalid negotiation or arguments invalid
skipping to change at page 35, line 13 skipping to change at page 35, line 13
"a" or "b". "a" or "b".
There are no limitations on pipelining ENABLE. For example, it is There are no limitations on pipelining ENABLE. For example, it is
possible to send ENABLE and then immediately SELECT, or a LOGIN possible to send ENABLE and then immediately SELECT, or a LOGIN
immediately followed by ENABLE. immediately followed by ENABLE.
The server MUST NOT change the CAPABILITY list as a result of The server MUST NOT change the CAPABILITY list as a result of
executing ENABLE; i.e., a CAPABILITY command issued right after an executing ENABLE; i.e., a CAPABILITY command issued right after an
ENABLE command MUST list the same capabilities as a CAPABILITY ENABLE command MUST list the same capabilities as a CAPABILITY
command issued before the ENABLE command. This is demonstrated in command issued before the ENABLE command. This is demonstrated in
the following example: the following example. Note that below "X-GOOD-IDEA" is a fictitious
extension capability that can be ENABLEd.
C: t1 CAPABILITY C: t1 CAPABILITY
S: * CAPABILITY IMAP4rev2 ID LITERAL+ X-GOOD-IDEA S: * CAPABILITY IMAP4rev2 ID LITERAL+ X-GOOD-IDEA
S: t1 OK foo S: t1 OK foo
C: t2 ENABLE CONDSTORE X-GOOD-IDEA C: t2 ENABLE CONDSTORE X-GOOD-IDEA
S: * ENABLED X-GOOD-IDEA S: * ENABLED X-GOOD-IDEA
S: t2 OK foo S: t2 OK foo
C: t3 CAPABILITY C: t3 CAPABILITY
S: * CAPABILITY IMAP4rev2 ID LITERAL+ X-GOOD-IDEA S: * CAPABILITY IMAP4rev2 ID LITERAL+ X-GOOD-IDEA
S: t3 OK foo again S: t3 OK foo again
skipping to change at page 36, line 15 skipping to change at page 36, line 16
The SELECT command selects a mailbox so that messages in the mailbox The SELECT command selects a mailbox so that messages in the mailbox
can be accessed. Before returning an OK to the client, the server can be accessed. Before returning an OK to the client, the server
MUST send the following untagged data to the client. (The order of MUST send the following untagged data to the client. (The order of
individual responses is not important.) Note that earlier versions individual responses is not important.) Note that earlier versions
of this protocol (e.g. IMAP2bis) only required the FLAGS and EXISTS of this protocol (e.g. IMAP2bis) only required the FLAGS and EXISTS
untagged data; consequently, client implementations SHOULD implement untagged data; consequently, client implementations SHOULD implement
default behavior for missing data as discussed with the individual default behavior for missing data as discussed with the individual
item. item.
FLAGS Defined flags in the mailbox. See the description of the FLAGS Defined flags in the mailbox. See the description of the
FLAGS response for more detail. FLAGS response in Section 7.2.7 for more detail.
<n> EXISTS The number of messages in the mailbox. See the <n> EXISTS The number of messages in the mailbox. See the
description of the EXISTS response for more detail. description of the EXISTS response in Section 7.3.1 for more
detail.
LIST The server MUST return a LIST response with the mailbox name. LIST The server MUST return a LIST response with the mailbox name.
If the server allows de-normalized UTF-8 mailbox names (see If the server allows de-normalized UTF-8 mailbox names (see
Section 5.1) and the supplied mailbox name differs from the Section 5.1) and the supplied mailbox name differs from the
normalized version, the server MUST return LIST with the OLDNAME normalized version, the server MUST return LIST with the OLDNAME
extended data item. See Section 6.3.9.7 for more details. extended data item. See Section 6.3.9.7 for more details.
OK [PERMANENTFLAGS (<list of flags>)] A list of message flags that OK [PERMANENTFLAGS (<list of flags>)] A list of message flags that
the client can change permanently. If this is missing, the client the client can change permanently. If this is missing, the client
should assume that all flags can be changed permanently. should assume that all flags can be changed permanently.
skipping to change at page 39, line 25 skipping to change at page 39, line 28
the name, the server SHOULD create any superior hierarchical names the name, the server SHOULD create any superior hierarchical names
that are needed for the CREATE command to be successfully completed. that are needed for the CREATE command to be successfully completed.
In other words, an attempt to create "foo/bar/zap" on a server in In other words, an attempt to create "foo/bar/zap" on a server in
which "/" is the hierarchy separator character SHOULD create foo/ and which "/" is the hierarchy separator character SHOULD create foo/ and
foo/bar/ if they do not already exist. foo/bar/ if they do not already exist.
If a new mailbox is created with the same name as a mailbox which was 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 deleted, its unique identifiers MUST be greater than any unique
identifiers used in the previous incarnation of the mailbox unless identifiers used in the previous incarnation of the mailbox unless
the new incarnation has a different unique identifier validity value. the new incarnation has a different unique identifier validity value.
See the description of the UID command for more detail. See the description of the UID command in Section 6.4.9 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
C: A005 CREATE NonNormalized C: A005 CREATE NonNormalized
S: * LIST () "/" "Normalized" ("OLDNAME" ("NonNormalized")) S: * LIST () "/" "Normalized" ("OLDNAME" ("NonNormalized"))
S: A005 OK CREATE completed S: A005 OK CREATE completed
(in the last example imagine that "NonNormalized" is (in the last example imagine that "NonNormalized" is
skipping to change at page 40, line 17 skipping to change at page 40, line 25
The DELETE command permanently removes the mailbox with the given The DELETE command permanently removes the mailbox with the given
name. A tagged OK response is returned only if the mailbox has been name. A tagged OK response is returned only if the mailbox has been
deleted. It is an error to attempt to delete INBOX or a mailbox name deleted. It is an error to attempt to delete INBOX or a mailbox name
that does not exist. that does not exist.
The DELETE command MUST NOT remove inferior hierarchical names. For The DELETE command MUST NOT remove inferior hierarchical names. For
example, if a mailbox "foo" has an inferior "foo.bar" (assuming "." example, if a mailbox "foo" has an inferior "foo.bar" (assuming "."
is the hierarchy delimiter character), removing "foo" MUST NOT remove is the hierarchy delimiter character), removing "foo" MUST NOT remove
"foo.bar". It is an error to attempt to delete a name that has "foo.bar". It is an error to attempt to delete a name that has
inferior hierarchical names and also has the \Noselect mailbox name inferior hierarchical names and also has the \Noselect mailbox name
attribute (see the description of the LIST response for more attribute (see the description of the LIST response (Section 7.2.3)
details). for more details).
It is permitted to delete a name that has inferior hierarchical names It is permitted to delete a name that has inferior hierarchical names
and does not have the \Noselect mailbox name attribute. If the and does not have the \Noselect mailbox name attribute. If the
server implementation does not permit deleting the name while server implementation does not permit deleting the name while
inferior hierarchical names exists then it SHOULD disallow the DELETE inferior hierarchical names exists then it SHOULD disallow the DELETE
command by returning a tagged NO response. The NO response SHOULD command by returning a tagged NO response. The NO response SHOULD
include the HASCHILDREN response code. Alternatively the server MAY include the HASCHILDREN response code. Alternatively the server MAY
allow the DELETE command, but sets the \Noselect mailbox name allow the DELETE command, but sets the \Noselect mailbox name
attribute for that name. attribute for that name.
If the server returns OK response, all messages in that mailbox are If the server returns OK response, all messages in that mailbox are
removed by the DELETE command. removed by the DELETE command.
The value of the highest-used unique identifier of the deleted The value of the highest-used unique identifier of the deleted
mailbox MUST be preserved so that a new mailbox created with the same mailbox MUST be preserved so that a new mailbox created with the same
name will not reuse the identifiers of the former incarnation, unless name will not reuse the identifiers of the former incarnation, unless
the new incarnation has a different unique identifier validity value. the new incarnation has a different unique identifier validity value.
See the description of the UID command for more detail. See the description of the UID command in Section 6.4.9 for more
detail.
If the server decides to convert (normalize) the mailbox name, it If the server decides to convert (normalize) the mailbox name, it
SHOULD return an untagged LIST with the "\NonExistent" attribute and SHOULD return an untagged LIST with the "\NonExistent" attribute and
OLDNAME extended data item, with the OLDNAME value being the supplied OLDNAME extended data item, with the OLDNAME value being the supplied
mailbox name and the name parameter being the normalized mailbox mailbox name and the name parameter being the normalized mailbox
name. (See Section 6.3.9.7 for more details.) name. (See Section 6.3.9.7 for more details.)
Mailboxes deleted in one IMAP session MAY be announced to other IMAP Mailboxes deleted in one IMAP session MAY be announced to other IMAP
sessions using unsolicited LIST response, containing the sessions using unsolicited LIST response, containing the
"\NonExistent" attribute. "\NonExistent" attribute.
Examples: C: A682 LIST "" * Examples: C: A682 LIST "" *
S: * LIST () "/" blurdybloop S: * LIST () "/" blurdybloop
S: * LIST (\Noselect) "/" foo S: * LIST (\Noselect) "/" foo
S: * LIST () "/" foo/bar S: * LIST () "/" foo/bar
S: A682 OK LIST completed S: A682 OK LIST completed
C: A683 DELETE blurdybloop C: A683 DELETE blurdybloop
skipping to change at page 42, line 24 skipping to change at page 42, line 28
needed for the RENAME command to complete successfully. In other needed for the RENAME command to complete successfully. In other
words, an attempt to rename "foo/bar/zap" to baz/rag/zowie on a words, an attempt to rename "foo/bar/zap" to baz/rag/zowie on a
server in which "/" is the hierarchy separator character in the server in which "/" is the hierarchy separator character in the
corresponding namespace SHOULD create baz/ and baz/rag/ if they do corresponding namespace SHOULD create baz/ and baz/rag/ if they do
not already exist. not already exist.
The value of the highest-used unique identifier of the old mailbox The value of the highest-used unique identifier of the old mailbox
name MUST be preserved so that a new mailbox created with the same name MUST be preserved so that a new mailbox created with the same
name will not reuse the identifiers of the former incarnation, unless name will not reuse the identifiers of the former incarnation, unless
the new incarnation has a different unique identifier validity value. the new incarnation has a different unique identifier validity value.
See the description of the UID command for more detail. See the description of the UID command in Section 6.4.9 for more
detail.
Renaming INBOX is permitted (i.e. it doesn't result in a tagged BAD Renaming INBOX is permitted (i.e. it doesn't result in a tagged BAD
response), and has special behavior. (Note that some servers response), and has special behavior. (Note that some servers
disallow renaming INBOX by returning a tagged NO response, so clients disallow renaming INBOX by returning a tagged NO response, so clients
need to be able to handle such RENAME failing). It moves all need to be able to handle such RENAME failing). It moves all
messages in INBOX to a new mailbox with the given name, leaving INBOX messages in INBOX to a new mailbox with the given name, leaving INBOX
empty. If the server implementation supports inferior hierarchical empty. If the server implementation supports inferior hierarchical
names of INBOX, these are unaffected by a rename of INBOX. names of INBOX, these are unaffected by a rename of INBOX.
If the server allows creation of mailboxes with names that are not If the server allows creation of mailboxes with names that are not
skipping to change at page 45, line 17 skipping to change at page 45, line 24
Responses: untagged responses: LIST Responses: untagged responses: LIST
Result: OK - list completed Result: OK - list completed
NO - list failure: can't list that reference or mailbox NO - list failure: can't list that reference or mailbox
name name
BAD - command unknown or arguments invalid BAD - command unknown or arguments invalid
The LIST command returns a subset of mailbox names from the complete The LIST command returns a subset of mailbox names from the complete
set of all mailbox names available to the client. Zero or more set of all mailbox names available to the client. Zero or more
untagged LIST replies are returned, containing the name attributes, untagged LIST responses are returned, containing the name attributes,
hierarchy delimiter, name, and possible extension information; see hierarchy delimiter, name, and possible extension information; see
the description of the LIST reply for more detail. the description of the LIST response (Section 7.2.3) for more detail.
The LIST command SHOULD return its data quickly, without undue delay. The LIST command SHOULD return its data quickly, without undue delay.
For example, it SHOULD NOT go to excess trouble to calculate the For example, it SHOULD NOT go to excess trouble to calculate the
\Marked or \Unmarked status or perform other processing; if each name \Marked or \Unmarked status or perform other processing; if each name
requires 1 second of processing, then a list of 1200 names would take requires 1 second of processing, then a list of 1200 names would take
20 minutes! 20 minutes!
The extended LIST command, originally introduced in [RFC5258], The extended LIST command, originally introduced in [RFC5258],
provides capabilities beyond that of the original IMAP LIST command. provides capabilities beyond that of the original IMAP LIST command.
The extended syntax is being used if one or more of the following The extended syntax is being used if one or more of the following
skipping to change at page 47, line 40 skipping to change at page 47, line 44
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 characters The character "*" is a wildcard, and matches zero or more characters
at this position. The character "%" is similar to "*", but it does at this position. The character "%" is similar to "*", but it does
not match a hierarchy delimiter. If the "%" wildcard is the last not match a hierarchy delimiter. If the "%" wildcard is the last
character of a mailbox name argument, matching levels of hierarchy character of a mailbox name argument, matching levels of hierarchy
are also returned. If these levels of hierarchy are not also are also returned. If these levels of hierarchy are not also
selectable mailboxes, they are returned with the \Noselect mailbox selectable mailboxes, they are returned with the \Noselect mailbox
name attribute (see the description of the LIST response for more name attribute (see the description of the LIST response
details). (Section 7.2.3) for more details).
Any syntactically valid pattern that is not accepted by a server for Any syntactically valid pattern that is not accepted by a server for
any reason MUST be silently ignored. I.e. it results in no LIST any reason MUST be silently ignored. I.e. it results in no LIST
responses and the LIST command still returns tagged OK response. responses and the LIST command still returns tagged OK response.
Selection options tell the server to limit the mailbox names that are Selection options tell the server to limit the mailbox names that are
selected by the LIST operation. If selection options are used, the selected by the LIST operation. If selection options are used, the
mailboxes returned are those that match both the list of canonical mailboxes returned are those that match both the list of canonical
LIST patterns and the selection options. Unless a particular LIST patterns and the selection options. Unless a particular
selection option provides special rules, the selection options are selection option provides special rules, the selection options are
skipping to change at page 50, line 33 skipping to change at page 50, line 36
The return options defined in this specification are as follows: The return options defined in this specification are as follows:
SUBSCRIBED - causes the LIST command to return subscription state SUBSCRIBED - causes the LIST command to return subscription state
for all matching mailbox names. The "\Subscribed" attribute MUST for all matching mailbox names. The "\Subscribed" attribute MUST
be supported and MUST be accurately computed when the SUBSCRIBED be supported and MUST be accurately computed when the SUBSCRIBED
return option is specified. Further, all mailbox flags MUST be return option is specified. Further, all mailbox flags MUST be
accurately computed (this differs from the behavior of the accurately computed (this differs from the behavior of the
obsolete LSUB command from IMAP4rev1). obsolete LSUB command from IMAP4rev1).
CHILDREN - requests mailbox child information as originally proposed CHILDREN - requests mailbox child information as originally proposed
in [RFC3348]. See Section 6.3.9.5, below, for details. This in [RFC3348]. See Section 6.3.9.5, below, for details.
option MUST be supported by all servers.
STATUS - requests STATUS response for each matching mailbox. STATUS - requests STATUS response for each matching mailbox.
This option takes STATUS data items as parameters. For each This option takes STATUS data items as parameters. For each
selectable mailbox matching the list pattern and selection selectable mailbox matching the list pattern and selection
options, the server MUST return an untagged LIST response options, the server MUST return an untagged LIST response
followed by an untagged STATUS response containing the followed by an untagged STATUS response containing the
information requested in the STATUS return option, except for information requested in the STATUS return option, except for
some cases described below. some cases described below.
skipping to change at page 75, line 29 skipping to change at page 75, line 29
for each message that is removed. for each message that is removed.
Example: C: A202 EXPUNGE Example: C: A202 EXPUNGE
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 \Deleted flag Note: In this example, messages 3, 4, 7, and 11 had the \Deleted flag
set. See the description of the EXPUNGE response for further set. See the description of the EXPUNGE response (Section 7.4.1) for
explanation. further explanation.
6.4.4. SEARCH Command 6.4.4. SEARCH Command
Arguments: OPTIONAL result specifier Arguments: OPTIONAL result specifier
OPTIONAL [CHARSET] specification OPTIONAL [CHARSET] specification
searching criteria (one or more) searching criteria (one or more)
Responses: OPTIONAL untagged response: ESEARCH Responses: OPTIONAL untagged response: ESEARCH
Result: OK - search completed Result: OK - search completed
skipping to change at page 76, line 7 skipping to change at page 76, line 7
given searching criteria. given searching criteria.
The SEARCH command may contain result options. Result options The SEARCH command may contain result options. Result options
control what kind of information is returned about messages matching control what kind of information is returned about messages matching
the search criteria in an untagged ESEARCH response. If no result the search criteria in an untagged ESEARCH response. If no result
option is specified or empty list of options is specified "()", ALL option is specified or empty list of options is specified "()", ALL
is assumed (see below). The order of individual options is is assumed (see below). The order of individual options is
arbitrary. Individual options may contain parameters enclosed in arbitrary. Individual options may contain parameters enclosed in
parentheses. (However, if an option has a mandatory parameter, which parentheses. (However, if an option has a mandatory parameter, which
can always be represented as a number or a sequence-set, the option can always be represented as a number or a sequence-set, the option
parameter does not need the enclosing parentheses. See the ABNF for parameter does not need the enclosing parentheses. See the Formal
more details). If an option has parameters, they consist of atoms Syntax (Section 9) for more details). If an option has parameters,
and/or strings and/or lists in a specific order. Any options not they consist of atoms and/or strings and/or lists in a specific
defined by extensions that the server supports MUST be rejected with order. Any options not defined by extensions that the server
a BAD response. supports MUST be rejected with a BAD response.
This document specifies the following result options: This document specifies the following result options:
MIN MIN
Return the lowest message number/UID that satisfies the SEARCH Return the lowest message number/UID that satisfies the SEARCH
criteria. criteria.
If the SEARCH results in no matches, the server MUST NOT If the SEARCH results in no matches, the server MUST NOT
include the MIN result option in the ESEARCH response; however, include the MIN result option in the ESEARCH response; however,
skipping to change at page 88, line 9 skipping to change at page 88, line 9
Responses: untagged responses: FETCH Responses: untagged responses: FETCH
Result: OK - fetch completed Result: OK - fetch completed
NO - fetch error: can't fetch that data NO - fetch error: can't fetch that data
BAD - command unknown or arguments invalid BAD - command unknown or arguments invalid
The FETCH command retrieves data associated with a message in the The FETCH command retrieves data associated with a message in the
mailbox. The data items to be fetched can be either a single atom or mailbox. The data items to be fetched can be either a single atom or
a parenthesized list. a parenthesized list.
Most data items, identified in the formal syntax under the msg-att- Most data items, identified in the formal syntax (Section 9) under
static rule, are static and MUST NOT change for any particular the msg-att-static rule, are static and MUST NOT change for any
message. Other data items, identified in the formal syntax under the particular message. Other data items, identified in the formal
msg-att-dynamic rule, MAY change, either as a result of a STORE syntax under the msg-att-dynamic rule, MAY change, either as a result
command or due to external events. of a STORE command or due to external events.
For example, if a client receives an ENVELOPE for a message when For example, if a client receives an ENVELOPE for a message when
it already knows the envelope, it can safely ignore the newly it already knows the envelope, it can safely ignore the newly
transmitted envelope. transmitted envelope.
There are three macros which specify commonly-used sets of data There are three macros which specify commonly-used sets of data
items, and can be used instead of data items. A macro must be used items, and can be used instead of data items. A macro must be used
by itself, and not in conjunction with other macros or data items. by itself, and not in conjunction with other macros or data items.
ALL Macro equivalent to: (FLAGS INTERNALDATE RFC822.SIZE ENVELOPE) ALL Macro equivalent to: (FLAGS INTERNALDATE RFC822.SIZE ENVELOPE)
skipping to change at page 97, line 46 skipping to change at page 97, line 46
commands as well. commands as well.
Example: C: A999 UID FETCH 4827313:4828442 FLAGS Example: C: A999 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 OK UID FETCH completed S: A999 OK UID FETCH completed
6.5. Client Commands - Experimental/Expansion 6.5. Client Commands - Experimental/Expansion
6.5.1. X<atom> Command Each command which is not part of this specification MUST have at
least one capability name (see Section 6.1.1) associated with it.
Arguments: implementation defined (Multiple commands can be associated with the same capability name)
Responses: implementation defined
Result: OK - command completed
NO - failure
BAD - command unknown or arguments invalid
Any command prefixed with an X is an experimental command. Commands Server implementations MUST NOT send any added (not specified in this
which are not part of this specification, a standard or standards- specification) untagged responses, unless the client requested it by
track revision of this specification, or an IESG-approved issuing the associated experimental command or the ENABLE command
experimental protocol, MUST use the X prefix. (Section 6.3.1).
Any added untagged responses issued by an experimental command MUST The following example demonstrates how a client can check for
also be prefixed with an X. Server implementations MUST NOT send any presence of a fictitious XPIG-LATIN capability that adds the XPIG-
such untagged responses, unless the client requested it by issuing LATIN command and the the XPIG-LATIN untagged response. (Note that
the associated experimental command. for an extension the command name and the capability name don't have
to be the same.)
Example: C: a441 CAPABILITY Example: C: a441 CAPABILITY
S: * CAPABILITY IMAP4rev2 XPIG-LATIN S: * CAPABILITY IMAP4rev2 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
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. The information contained in a and command continuation request. The information contained in a
server response, identified by "Contents:" in the response server response, identified by "Contents:" in the response
descriptions below, is described by function, not by syntax. The descriptions below, is described by function, not by syntax. The
precise syntax of server responses is described in the Formal Syntax precise syntax of server responses is described in the Formal Syntax
section. (Section 9).
The client MUST be prepared to accept any response at all times. The client MUST be prepared to accept any response at all times.
Status responses can be tagged or untagged. Tagged status responses Status responses can be tagged or untagged. Tagged status responses
indicate the completion result (OK, NO, or BAD status) of a client indicate the completion result (OK, NO, or BAD status) of a client
command, and have a tag matching the command. command, and have a tag matching the command.
Some status responses, and all server data, are untagged. An Some status responses, and all server data, are untagged. An
untagged response is indicated by the token "*" instead of a tag. untagged response is indicated by the token "*" instead of a tag.
Untagged status responses indicate server greeting, or server status Untagged status responses indicate server greeting, or server status
skipping to change at page 110, line 22 skipping to change at page 110, line 15
The ENABLED response may contain no capabilities, which means that no The ENABLED response may contain no capabilities, which means that no
extensions listed by the client were successfully enabled. extensions listed by the client were successfully enabled.
7.2.2. CAPABILITY Response 7.2.2. CAPABILITY Response
Contents: capability listing Contents: capability listing
The CAPABILITY response occurs as a result of a CAPABILITY command. The CAPABILITY response occurs as a result of a CAPABILITY command.
The capability listing contains a space-separated listing of The capability listing contains a space-separated listing of
capability names that the server supports. The capability listing capability names that the server supports. The capability listing
MUST include the atom "IMAP4rev2". MUST include the atom "IMAP4rev2", but note that it doesn't have to
be the first capability listed.
In addition, client and server implementations MUST implement the In addition, client and server implementations MUST implement the
STARTTLS, LOGINDISABLED, and AUTH=PLAIN (described in [PLAIN]) "STARTTLS", "LOGINDISABLED", and "AUTH=PLAIN" (described in [PLAIN])
capabilities. See the Security Considerations section for important capabilities. See the Security Considerations (Section 11) for
information. important information related to these capabilities.
A capability name which begins with "AUTH=" indicates that the server A capability name which begins with "AUTH=" indicates that the server
supports that particular authentication mechanism. supports that particular authentication mechanism [SASL].
The LOGINDISABLED capability indicates that the LOGIN command is The LOGINDISABLED capability indicates that the LOGIN command is
disabled, and that the server will respond with a tagged NO response disabled, and that the server will respond with a tagged NO response
to any attempt to use the LOGIN command even if the user name and to any attempt to use the LOGIN command even if the user name and
password are valid. An IMAP client MUST NOT issue the LOGIN command password are valid. An IMAP client MUST NOT issue the LOGIN command
if the server advertises the LOGINDISABLED capability. if the server advertises the LOGINDISABLED capability.
Other capability names indicate that the server supports an Other capability names indicate that the server supports an
extension, revision, or amendment to the IMAP4rev2 protocol. Server extension, revision, or amendment to the IMAP4rev2 protocol. Server
responses MUST conform to this document until the client issues a responses MUST conform to this document until the client issues a
command that uses the associated capability. command that uses the associated capability.
Capability names MUST either begin with "X" or be informational, Capability names SHOULD be registered with IANA using RFC Required
experimental or standards-track IMAP4rev2 extensions, revisions, or policy. A server SHOULD NOT offer unregistered capability names.
amendments registered with IANA. A server SHOULD NOT offer
unregistered or non-standard capability names, unless such names are
prefixed with an "X".
Client implementations SHOULD NOT require any capability name other Client implementations SHOULD NOT require any capability name other
than "IMAP4rev2", and MUST ignore any unknown capability names. than "IMAP4rev2", "STARTTLS", "LOGINDISABLED". Client
implementations MUST ignore any unknown capability names.
A server MAY send capabilities automatically, by using the CAPABILITY A server MAY send capabilities automatically, by using the CAPABILITY
response code in the initial PREAUTH or OK responses, and by sending response code in the initial PREAUTH or OK responses, and by sending
an updated CAPABILITY response code in the tagged OK response as part an updated CAPABILITY response code in the tagged OK response as part
of a successful authentication. It is unnecessary for a client to of a successful authentication. It is unnecessary for a client to
send a separate CAPABILITY command if it recognizes these automatic send a separate CAPABILITY command if it recognizes these automatic
capabilities. capabilities.
Example: S: * CAPABILITY IMAP4rev2 STARTTLS AUTH=GSSAPI XPIG-LATIN Example: S: * CAPABILITY IMAP4rev2 STARTTLS AUTH=GSSAPI XPIG-LATIN
skipping to change at page 146, line 41 skipping to change at page 146, line 41
IANA is requested to update the "imap" service name previously IANA is requested to update the "imap" service name previously
registered in RFC 3501, to point to this document. registered in RFC 3501, to point to this document.
12.3. LIST Selection Options, LIST Return Options, LIST extended data 12.3. LIST Selection Options, LIST Return Options, LIST extended data
items items
[RFC5258] specifies IANA registration procedures for LIST Selection [RFC5258] specifies IANA registration procedures for LIST Selection
Options, LIST Return Options, LIST extended data items. This Options, LIST Return Options, LIST extended data items. This
document doesn't change these registration procedures. In particular document doesn't change these registration procedures. In particular
LIST selection options Section 6.3.9.1 and LIST return options LIST selection options (Section 6.3.9.1) and LIST return options
Section 6.3.9.2 are registered using the procedure specified in (Section 6.3.9.2) are registered using the procedure specified in
Section 9 of [RFC5258] (and using the registration template from Section 9 of [RFC5258] (and using the registration template from
Section 9.3 of [RFC5258]). LIST Extended Data Items are registered Section 9.3 of [RFC5258]). LIST Extended Data Items are registered
using the registration template from Section 9.6 of [RFC5258]). using the registration template from Section 9.6 of [RFC5258]).
IANA is requested to add a reference to [RFCXXXX] for the "OLDNAME" IANA is requested to add a reference to [RFCXXXX] for the "OLDNAME"
LIST-EXTENDED extended data item entry. This is in addition to the LIST-EXTENDED extended data item entry. This is in addition to the
existing reference to [RFC5465]. existing reference to [RFC5465].
13. References 13. References
skipping to change at page 157, line 27 skipping to change at page 157, line 27
22. After ENABLE IMAP4rev2 human readable response text can include 22. After ENABLE IMAP4rev2 human readable response text can include
non ASCII encoded in UTF-8. non ASCII encoded in UTF-8.
23. Updated to use modern TLS-related recommendations as per RFC 23. Updated to use modern TLS-related recommendations as per RFC
8314, RFC 7817, RFC 7525. 8314, RFC 7817, RFC 7525.
24. Replaced DIGEST-MD5 SASL mechanism with SCRAM-SHA-256. DIGEST- 24. Replaced DIGEST-MD5 SASL mechanism with SCRAM-SHA-256. DIGEST-
MD5 was deprecated. MD5 was deprecated.
25. Clarified that any command received from the client resets
server autologout timer.
26. Revised IANA registration procedure for IMAP extensions and
removed "X" convention.
Appendix F. Other Recommended IMAP Extensions Appendix F. Other Recommended IMAP Extensions
Support for the following extensions is recommended for all IMAP Support for the following extensions is recommended for all IMAP
client and servers. Why they significantly reduce bandwidth and/or client and servers. Why they significantly reduce bandwidth and/or
number of round trips used by IMAP in certain situations, the EXTRA number of round trips used by IMAP in certain situations, the EXTRA
WG decided that requiring them as a part of IMAP4rev2 would push the WG decided that requiring them as a part of IMAP4rev2 would push the
bar to implement too high for new implementations. Also note that bar to implement too high for new implementations. Also note that
absence of any IMAP extension from this list doesn't make it somehow absence of any IMAP extension from this list doesn't make it somehow
deficient or not recommended for use with IMAP4rev2. deficient or not recommended for use with IMAP4rev2.
skipping to change at page 159, line 5 skipping to change at page 159, line 14
ALERT (response code) 99 ALERT (response code) 99
ALL (fetch item) 88 ALL (fetch item) 88
ALL (search key) 78 ALL (search key) 78
ALL (search result option) 76 ALL (search result option) 76
ALREADYEXISTS (response code) 99 ALREADYEXISTS (response code) 99
ANSWERED (search key) 78 ANSWERED (search key) 78
APPEND (command) 68 APPEND (command) 68
APPENDUID (response code) 100 APPENDUID (response code) 100
AUTHENTICATE (command) 29 AUTHENTICATE (command) 29
AUTHENTICATIONFAILED (response code) 100 AUTHENTICATIONFAILED (response code) 100
AUTHORIZATIONFAILED (response code) 101 AUTHORIZATIONFAILED (response code) 100
B B
BAD (response) 108 BAD (response) 108
BADCHARSET (response code) 101 BADCHARSET (response code) 101
BCC <string> (search key) 78 BCC <string> (search key) 78
BEFORE <date> (search key) 78 BEFORE <date> (search key) 78
BINARY.PEEK[<section-binary>]<<partial>> (fetch item) 88 BINARY.PEEK[<section-binary>]<<partial>> (fetch item) 88
BINARY.SIZE[<section-binary>] (fetch item) 89 BINARY.SIZE[<section-binary>] (fetch item) 89
BINARY.SIZE[<section-binary>] (fetch result) 118 BINARY.SIZE[<section-binary>] (fetch result) 118
BINARY[<section-binary>]<<number>> (fetch result) 118 BINARY[<section-binary>]<<number>> (fetch result) 118
BINARY[<section-binary>]<<partial>> (fetch item) 88 BINARY[<section-binary>]<<partial>> (fetch item) 88
BODY (fetch item) 89 BODY (fetch item) 89
BODY (fetch result) 119 BODY (fetch result) 118
BODY <string> (search key) 78 BODY <string> (search key) 78
BODY.PEEK[<section>]<<partial>> (fetch item) 89 BODY.PEEK[<section>]<<partial>> (fetch item) 89
BODYSTRUCTURE (fetch item) 90 BODYSTRUCTURE (fetch item) 90
BODYSTRUCTURE (fetch result) 119 BODYSTRUCTURE (fetch result) 119
BODY[<section>]<<origin octet>> (fetch result) 119 BODY[<section>]<<origin octet>> (fetch result) 118
BODY[<section>]<<partial>> (fetch item) 89 BODY[<section>]<<partial>> (fetch item) 89
BYE (response) 109 BYE (response) 109
Body Structure (message attribute) 14 Body Structure (message attribute) 14
C C
CANNOT (response code) 101 CANNOT (response code) 101
CAPABILITY (command) 25 CAPABILITY (command) 26
CAPABILITY (response code) 101 CAPABILITY (response code) 101
CAPABILITY (response) 110 CAPABILITY (response) 110
CC <string> (search key) 78 CC <string> (search key) 78
CLIENTBUG (response code) 101 CLIENTBUG (response code) 101
CLOSE (command) 74 CLOSE (command) 74
CLOSED (response code) 102 CLOSED (response code) 102
CONTACTADMIN (response code) 102 CONTACTADMIN (response code) 102
COPY (command) 93 COPY (command) 93
COPYUID (response code) 102 COPYUID (response code) 102
CORRUPTION (response code) 103 CORRUPTION (response code) 103
COUNT (search result option) 76 COUNT (search result option) 76
CREATE (command) 38 CREATE (command) 38
D D
DELETE (command) 39 DELETE (command) 40
DELETED (search key) 78 DELETED (search key) 78
DELETED (status item) 68 DELETED (status item) 68
DRAFT (search key) 78 DRAFT (search key) 78
E E
ENABLE (command) 33 ENABLE (command) 33
ENVELOPE (fetch item) 90 ENVELOPE (fetch item) 90
ENVELOPE (fetch result) 122 ENVELOPE (fetch result) 122
ESEARCH (response) 115 ESEARCH (response) 115
EXAMINE (command) 37 EXAMINE (command) 37
EXPIRED (response code) 103 EXPIRED (response code) 103
EXPUNGE (command) 75 EXPUNGE (command) 75
EXPUNGE (response) 117 EXPUNGE (response) 117
EXPUNGEISSUED (response code) 103 EXPUNGEISSUED (response code) 103
Envelope Structure (message attribute) 14 Envelope Structure (message attribute) 14
F F
FAST (fetch item) 88 FAST (fetch item) 88
FETCH (command) 87 FETCH (command) 87
FETCH (response) 118 FETCH (response) 117
FLAGGED (search key) 78 FLAGGED (search key) 78
FLAGS (fetch item) 90 FLAGS (fetch item) 90
FLAGS (fetch result) 123 FLAGS (fetch result) 123
FLAGS (response) 116 FLAGS (response) 116
FLAGS <flag list> (store command data item) 92 FLAGS <flag list> (store command data item) 92
FLAGS.SILENT <flag list> (store command data item) 92 FLAGS.SILENT <flag list> (store command data item) 92
FROM <string> (search key) 78 FROM <string> (search key) 78
FULL (fetch item) 88 FULL (fetch item) 88
Flags (message attribute) 11 Flags (message attribute) 11
skipping to change at page 160, line 39 skipping to change at page 160, line 48
HASCHILDREN (response code) 103 HASCHILDREN (response code) 103
HEADER (part specifier) 90 HEADER (part specifier) 90
HEADER <field-name> <string> (search key) 79 HEADER <field-name> <string> (search key) 79
HEADER.FIELDS (part specifier) 90 HEADER.FIELDS (part specifier) 90
HEADER.FIELDS.NOT (part specifier) 90 HEADER.FIELDS.NOT (part specifier) 90
I I
IDLE (command) 71 IDLE (command) 71
INTERNALDATE (fetch item) 90 INTERNALDATE (fetch item) 90
INTERNALDATE (fetch result) 123 INTERNALDATE (fetch result) 123
INUSE (response code) 104 INUSE (response code) 103
Internal Date (message attribute) 13 Internal Date (message attribute) 13
K K
KEYWORD <flag> (search key) 79 KEYWORD <flag> (search key) 79
Keyword (type of flag) 12 Keyword (type of flag) 12
L L
LARGER <n> (search key) 79 LARGER <n> (search key) 79
LIMIT (response code) 104 LIMIT (response code) 104
LIST (command) 44 LIST (command) 45
LIST (response) 111 LIST (response) 111
LOGOUT (command) 27 LOGOUT (command) 27
M M
MAX (search result option) 76 MAX (search result option) 76
MAY (specification requirement term) 5 MAY (specification requirement term) 5
MESSAGES (status item) 68 MESSAGES (status item) 68
MIME (part specifier) 91 MIME (part specifier) 91
MIN (search result option) 76 MIN (search result option) 76
MOVE (command) 94 MOVE (command) 94
MUST (specification requirement term) 5 MUST (specification requirement term) 5
MUST NOT (specification requirement term) 5 MUST NOT (specification requirement term) 5
Message Sequence Number (message attribute) 11 Message Sequence Number (message attribute) 11
N N
NAMESPACE (command) 63 NAMESPACE (command) 63
NAMESPACE (response) 115 NAMESPACE (response) 114
NO (response) 108 NO (response) 107
NONEXISTENT (response code) 104 NONEXISTENT (response code) 104
NOOP (command) 26 NOOP (command) 27
NOPERM (response code) 104 NOPERM (response code) 104
NOT <search-key> (search key) 79 NOT <search-key> (search key) 79
NOT RECOMMENDED (specification requirement term) 5 NOT RECOMMENDED (specification requirement term) 5
O O
OK (response) 107 OK (response) 107
ON <date> (search key) 79 ON <date> (search key) 79
OPTIONAL (specification requirement term) 5 OPTIONAL (specification requirement term) 5
OR <search-key1> <search-key2> (search key) 79 OR <search-key1> <search-key2> (search key) 79
OVERQUOTA (response code) 104 OVERQUOTA (response code) 104
P P
PARSE (response code) 105 PARSE (response code) 105
PERMANENTFLAGS (response code) 105 PERMANENTFLAGS (response code) 105
PREAUTH (response) 108 PREAUTH (response) 108
PRIVACYREQUIRED (response code) 105 PRIVACYREQUIRED (response code) 105
Permanent Flag (class of flag) 13 Permanent Flag (class of flag) 13
Predefined keywords 12 Predefined keywords 12
R R
READ-ONLY (response code) 106 READ-ONLY (response code) 105
READ-WRITE (response code) 106 READ-WRITE (response code) 106
RECOMMENDED (specification requirement term) 5 RECOMMENDED (specification requirement term) 5
RENAME (command) 41 RENAME (command) 41
REQUIRED (specification requirement term) 5 REQUIRED (specification requirement term) 5
RFC822.SIZE (fetch item) 90 RFC822.SIZE (fetch item) 90
RFC822.SIZE (fetch result) 123 RFC822.SIZE (fetch result) 123
S S
SAVE (search result option) 76 SAVE (search result option) 76
SEARCH (command) 75 SEARCH (command) 75
skipping to change at page 162, line 20 skipping to change at page 162, line 29
SHOULD (specification requirement term) 5 SHOULD (specification requirement term) 5
SHOULD NOT (specification requirement term) 5 SHOULD NOT (specification requirement term) 5
SINCE <date> (search key) 79 SINCE <date> (search key) 79
SIZE (status item) 68 SIZE (status item) 68
SMALLER <n> (search key) 79 SMALLER <n> (search key) 79
STARTTLS (command) 28 STARTTLS (command) 28
STATUS (command) 67 STATUS (command) 67
STATUS (response) 115 STATUS (response) 115
STORE (command) 92 STORE (command) 92
SUBJECT <string> (search key) 79 SUBJECT <string> (search key) 79
SUBSCRIBE (command) 43 SUBSCRIBE (command) 44
Session Flag (class of flag) 13 Session Flag (class of flag) 13
System Flag (type of flag) 12 System Flag (type of flag) 12
T T
TEXT (part specifier) 90 TEXT (part specifier) 90
TEXT <string> (search key) 80 TEXT <string> (search key) 80
TO <string> (search key) 80 TO <string> (search key) 80
TRYCREATE (response code) 106 TRYCREATE (response code) 106
U U
UID (command) 96 UID (command) 96
UID (fetch item) 90 UID (fetch item) 90
UID (fetch result) 123 UID (fetch result) 123
UID <sequence set> (search key) 80 UID <sequence set> (search key) 80
UIDNEXT (response code) 106 UIDNEXT (response code) 106
UIDNEXT (status item) 68 UIDNEXT (status item) 68
UIDNOTSTICKY (response code) 106 UIDNOTSTICKY (response code) 106
UIDVALIDITY (response code) 107 UIDVALIDITY (response code) 106
UIDVALIDITY (status item) 68 UIDVALIDITY (status item) 68
UNANSWERED (search key) 80 UNANSWERED (search key) 80
UNAVAILABLE (response code) 107 UNAVAILABLE (response code) 107
UNDELETED (search key) 80 UNDELETED (search key) 80
UNDRAFT (search key) 80 UNDRAFT (search key) 80
UNFLAGGED (search key) 80 UNFLAGGED (search key) 80
UNKEYWORD <flag> (search key) 80 UNKEYWORD <flag> (search key) 80
UNKNOWN-CTE (response code) 107 UNKNOWN-CTE (response code) 107
UNSEEN (search key) 80 UNSEEN (search key) 80
UNSEEN (status item) 68 UNSEEN (status item) 68
UNSELECT (command) 74 UNSELECT (command) 74
UNSUBSCRIBE (command) 44 UNSUBSCRIBE (command) 44
Unique Identifier (UID) (message attribute) 9 Unique Identifier (UID) (message attribute) 9
X
X<atom> (command) 97
[ [
[RFC-5322] Size (message attribute) 14 [RFC-5322] Size (message attribute) 14
\ \
\All (mailbox name attribute) 113 \All (mailbox name attribute) 113
\Answered (system flag) 12 \Answered (system flag) 12
\Archive (mailbox name attribute) 113 \Archive (mailbox name attribute) 113
\Deleted (system flag) 12 \Deleted (system flag) 12
\Draft (system flag) 12 \Draft (system flag) 12
\Drafts (mailbox name attribute) 113 \Drafts (mailbox name attribute) 113
\Flagged (mailbox name attribute) 113 \Flagged (mailbox name attribute) 113
\Flagged (system flag) 12 \Flagged (system flag) 12
\HasChildren (mailbox name attribute) 112 \HasChildren (mailbox name attribute) 111
\HasNoChildren (mailbox name attribute) 112 \HasNoChildren (mailbox name attribute) 112
\Junk (mailbox name attribute) 113 \Junk (mailbox name attribute) 113
\Marked (mailbox name attribute) 112 \Marked (mailbox name attribute) 112
\Noinferiors (mailbox name attribute) 111 \Noinferiors (mailbox name attribute) 111
\NonExistent (mailbox name attribute) 111 \NonExistent (mailbox name attribute) 111
\Noselect (mailbox name attribute) 111 \Noselect (mailbox name attribute) 111
\Recent (system flag) 12 \Recent (system flag) 12
\Remote (mailbox name attribute) 112 \Remote (mailbox name attribute) 112
\Seen (system flag) 12 \Seen (system flag) 12
\Sent (mailbox name attribute) 113 \Sent (mailbox name attribute) 113
 End of changes. 72 change blocks. 
133 lines changed or deleted 135 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/