draft-ietf-extra-imap4rev2-12.txt   draft-ietf-extra-imap4rev2-13.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 Huawei Technologies Intended status: Standards Track Huawei Technologies
Expires: August 15, 2020 February 12, 2020 Expires: September 10, 2020 March 9, 2020
INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4rev2 INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4rev2
draft-ietf-extra-imap4rev2-12 draft-ietf-extra-imap4rev2-13
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 47 skipping to change at page 1, line 47
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 August 15, 2020. This Internet-Draft will expire on September 10, 2020.
Copyright Notice Copyright Notice
Copyright (c) 2020 IETF Trust and the persons identified as the Copyright (c) 2020 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 2, line 46 skipping to change at page 2, line 46
1.2. Conventions Used in This Document . . . . . . . . . . . . 5 1.2. Conventions Used in This Document . . . . . . . . . . . . 5
1.3. Special Notes to Implementors . . . . . . . . . . . . . . 6 1.3. Special Notes to Implementors . . . . . . . . . . . . . . 6
2. Protocol Overview . . . . . . . . . . . . . . . . . . . . . . 7 2. Protocol Overview . . . . . . . . . . . . . . . . . . . . . . 7
2.1. Link Level . . . . . . . . . . . . . . . . . . . . . . . 7 2.1. Link Level . . . . . . . . . . . . . . . . . . . . . . . 7
2.2. Commands and Responses . . . . . . . . . . . . . . . . . 7 2.2. Commands and Responses . . . . . . . . . . . . . . . . . 7
2.2.1. Client Protocol Sender and Server Protocol Receiver . 7 2.2.1. Client Protocol Sender and Server Protocol Receiver . 7
2.2.2. Server Protocol Sender and Client Protocol Receiver . 8 2.2.2. Server Protocol Sender and Client Protocol Receiver . 8
2.3. Message Attributes . . . . . . . . . . . . . . . . . . . 9 2.3. Message Attributes . . . . . . . . . . . . . . . . . . . 9
2.3.1. Message Numbers . . . . . . . . . . . . . . . . . . . 9 2.3.1. Message Numbers . . . . . . . . . . . . . . . . . . . 9
2.3.2. Flags Message Attribute . . . . . . . . . . . . . . . 11 2.3.2. Flags Message Attribute . . . . . . . . . . . . . . . 11
2.3.3. Internal Date Message Attribute . . . . . . . . . . . 12 2.3.3. Internal Date Message Attribute . . . . . . . . . . . 13
2.3.4. [RFC-5322] Size Message Attribute . . . . . . . . . . 13 2.3.4. [RFC-5322] Size Message Attribute . . . . . . . . . . 13
2.3.5. Envelope Structure Message Attribute . . . . . . . . 13 2.3.5. Envelope Structure Message Attribute . . . . . . . . 14
2.3.6. Body Structure Message Attribute . . . . . . . . . . 13 2.3.6. Body Structure Message Attribute . . . . . . . . . . 14
2.4. Message Texts . . . . . . . . . . . . . . . . . . . . . . 13 2.4. Message Texts . . . . . . . . . . . . . . . . . . . . . . 14
3. State and Flow Diagram . . . . . . . . . . . . . . . . . . . 13 3. State and Flow Diagram . . . . . . . . . . . . . . . . . . . 14
3.1. Not Authenticated State . . . . . . . . . . . . . . . . . 13 3.1. Not Authenticated State . . . . . . . . . . . . . . . . . 14
3.2. Authenticated State . . . . . . . . . . . . . . . . . . . 13 3.2. Authenticated State . . . . . . . . . . . . . . . . . . . 14
3.3. Selected State . . . . . . . . . . . . . . . . . . . . . 14 3.3. Selected State . . . . . . . . . . . . . . . . . . . . . 15
3.4. Logout State . . . . . . . . . . . . . . . . . . . . . . 14 3.4. Logout State . . . . . . . . . . . . . . . . . . . . . . 15
4. Data Formats . . . . . . . . . . . . . . . . . . . . . . . . 16 4. Data Formats . . . . . . . . . . . . . . . . . . . . . . . . 17
4.1. Atom . . . . . . . . . . . . . . . . . . . . . . . . . . 16 4.1. Atom . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.1.1. Sequence set and UID set . . . . . . . . . . . . . . 16 4.1.1. Sequence set and UID set . . . . . . . . . . . . . . 17
4.2. Number . . . . . . . . . . . . . . . . . . . . . . . . . 16 4.2. Number . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.3. String . . . . . . . . . . . . . . . . . . . . . . . . . 16 4.3. String . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.3.1. 8-bit and Binary Strings . . . . . . . . . . . . . . 17 4.3.1. 8-bit and Binary Strings . . . . . . . . . . . . . . 18
4.4. Parenthesized List . . . . . . . . . . . . . . . . . . . 18 4.4. Parenthesized List . . . . . . . . . . . . . . . . . . . 19
4.5. NIL . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4.5. NIL . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
5. Operational Considerations . . . . . . . . . . . . . . . . . 19 5. Operational Considerations . . . . . . . . . . . . . . . . . 20
5.1. Mailbox Naming . . . . . . . . . . . . . . . . . . . . . 19 5.1. Mailbox Naming . . . . . . . . . . . . . . . . . . . . . 20
5.1.1. Mailbox Hierarchy Naming . . . . . . . . . . . . . . 20 5.1.1. Mailbox Hierarchy Naming . . . . . . . . . . . . . . 21
5.1.2. Namespaces . . . . . . . . . . . . . . . . . . . . . 20 5.1.2. Namespaces . . . . . . . . . . . . . . . . . . . . . 21
5.2. Mailbox Size and Message Status Updates . . . . . . . . . 21 5.2. Mailbox Size and Message Status Updates . . . . . . . . . 23
5.3. Response when no Command in Progress . . . . . . . . . . 22 5.3. Response when no Command in Progress . . . . . . . . . . 23
5.4. Autologout Timer . . . . . . . . . . . . . . . . . . . . 22 5.4. Autologout Timer . . . . . . . . . . . . . . . . . . . . 23
5.5. Multiple Commands in Progress (Command Pipelining) . . . 22 5.5. Multiple Commands in Progress (Command Pipelining) . . . 23
6. Client Commands . . . . . . . . . . . . . . . . . . . . . . . 24 6. Client Commands . . . . . . . . . . . . . . . . . . . . . . . 25
6.1. Client Commands - Any State . . . . . . . . . . . . . . . 24 6.1. Client Commands - Any State . . . . . . . . . . . . . . . 25
6.1.1. CAPABILITY Command . . . . . . . . . . . . . . . . . 24 6.1.1. CAPABILITY Command . . . . . . . . . . . . . . . . . 25
6.1.2. NOOP Command . . . . . . . . . . . . . . . . . . . . 25 6.1.2. NOOP Command . . . . . . . . . . . . . . . . . . . . 26
6.1.3. LOGOUT Command . . . . . . . . . . . . . . . . . . . 26 6.1.3. LOGOUT Command . . . . . . . . . . . . . . . . . . . 27
6.2. Client Commands - Not Authenticated State . . . . . . . . 26 6.2. Client Commands - Not Authenticated State . . . . . . . . 27
6.2.1. STARTTLS Command . . . . . . . . . . . . . . . . . . 27 6.2.1. STARTTLS Command . . . . . . . . . . . . . . . . . . 28
6.2.2. AUTHENTICATE Command . . . . . . . . . . . . . . . . 28 6.2.2. AUTHENTICATE Command . . . . . . . . . . . . . . . . 29
6.2.3. LOGIN Command . . . . . . . . . . . . . . . . . . . . 31 6.2.3. LOGIN Command . . . . . . . . . . . . . . . . . . . . 32
6.3. Client Commands - Authenticated State . . . . . . . . . . 32 6.3. Client Commands - Authenticated State . . . . . . . . . . 33
6.3.1. ENABLE Command . . . . . . . . . . . . . . . . . . . 32 6.3.1. ENABLE Command . . . . . . . . . . . . . . . . . . . 33
6.3.2. SELECT Command . . . . . . . . . . . . . . . . . . . 34 6.3.2. SELECT Command . . . . . . . . . . . . . . . . . . . 35
6.3.3. EXAMINE Command . . . . . . . . . . . . . . . . . . . 36 6.3.3. EXAMINE Command . . . . . . . . . . . . . . . . . . . 37
6.3.4. CREATE Command . . . . . . . . . . . . . . . . . . . 37 6.3.4. CREATE Command . . . . . . . . . . . . . . . . . . . 38
6.3.5. DELETE Command . . . . . . . . . . . . . . . . . . . 38 6.3.5. DELETE Command . . . . . . . . . . . . . . . . . . . 39
6.3.6. RENAME Command . . . . . . . . . . . . . . . . . . . 39 6.3.6. RENAME Command . . . . . . . . . . . . . . . . . . . 40
6.3.7. SUBSCRIBE Command . . . . . . . . . . . . . . . . . . 41 6.3.7. SUBSCRIBE Command . . . . . . . . . . . . . . . . . . 42
6.3.8. UNSUBSCRIBE Command . . . . . . . . . . . . . . . . . 42 6.3.8. UNSUBSCRIBE Command . . . . . . . . . . . . . . . . . 43
6.3.9. LIST Command . . . . . . . . . . . . . . . . . . . . 42 6.3.9. LIST Command . . . . . . . . . . . . . . . . . . . . 43
6.3.10. NAMESPACE Command . . . . . . . . . . . . . . . . . . 60 6.3.10. NAMESPACE Command . . . . . . . . . . . . . . . . . . 61
6.3.11. STATUS Command . . . . . . . . . . . . . . . . . . . 65 6.3.11. STATUS Command . . . . . . . . . . . . . . . . . . . 66
6.3.12. APPEND Command . . . . . . . . . . . . . . . . . . . 66 6.3.12. APPEND Command . . . . . . . . . . . . . . . . . . . 67
6.3.13. IDLE Command . . . . . . . . . . . . . . . . . . . . 69 6.3.13. IDLE Command . . . . . . . . . . . . . . . . . . . . 70
6.4. Client Commands - Selected State . . . . . . . . . . . . 71 6.4. Client Commands - Selected State . . . . . . . . . . . . 72
6.4.1. CLOSE Command . . . . . . . . . . . . . . . . . . . . 71 6.4.1. CLOSE Command . . . . . . . . . . . . . . . . . . . . 72
6.4.2. UNSELECT Command . . . . . . . . . . . . . . . . . . 72 6.4.2. UNSELECT Command . . . . . . . . . . . . . . . . . . 73
6.4.3. EXPUNGE Command . . . . . . . . . . . . . . . . . . . 72 6.4.3. EXPUNGE Command . . . . . . . . . . . . . . . . . . . 73
6.4.4. SEARCH Command . . . . . . . . . . . . . . . . . . . 73 6.4.4. SEARCH Command . . . . . . . . . . . . . . . . . . . 74
6.4.5. FETCH Command . . . . . . . . . . . . . . . . . . . . 85 6.4.5. FETCH Command . . . . . . . . . . . . . . . . . . . . 86
6.4.6. STORE Command . . . . . . . . . . . . . . . . . . . . 89 6.4.6. STORE Command . . . . . . . . . . . . . . . . . . . . 90
6.4.7. COPY Command . . . . . . . . . . . . . . . . . . . . 90 6.4.7. COPY Command . . . . . . . . . . . . . . . . . . . . 91
6.4.8. MOVE Command . . . . . . . . . . . . . . . . . . . . 91 6.4.8. MOVE Command . . . . . . . . . . . . . . . . . . . . 92
6.4.9. UID Command . . . . . . . . . . . . . . . . . . . . . 93 6.4.9. UID Command . . . . . . . . . . . . . . . . . . . . . 94
6.5. Client Commands - Experimental/Expansion . . . . . . . . 95 6.5. Client Commands - Experimental/Expansion . . . . . . . . 96
6.5.1. X<atom> Command . . . . . . . . . . . . . . . . . . . 95 6.5.1. X<atom> Command . . . . . . . . . . . . . . . . . . . 96
7. Server Responses . . . . . . . . . . . . . . . . . . . . . . 96 7. Server Responses . . . . . . . . . . . . . . . . . . . . . . 97
7.1. Server Responses - Status Responses . . . . . . . . . . . 97 7.1. Server Responses - Status Responses . . . . . . . . . . . 98
7.1.1. OK Response . . . . . . . . . . . . . . . . . . . . . 105 7.1.1. OK Response . . . . . . . . . . . . . . . . . . . . . 106
7.1.2. NO Response . . . . . . . . . . . . . . . . . . . . . 105 7.1.2. NO Response . . . . . . . . . . . . . . . . . . . . . 106
7.1.3. BAD Response . . . . . . . . . . . . . . . . . . . . 106 7.1.3. BAD Response . . . . . . . . . . . . . . . . . . . . 106
7.1.4. PREAUTH Response . . . . . . . . . . . . . . . . . . 106 7.1.4. PREAUTH Response . . . . . . . . . . . . . . . . . . 107
7.1.5. BYE Response . . . . . . . . . . . . . . . . . . . . 106 7.1.5. BYE Response . . . . . . . . . . . . . . . . . . . . 107
7.2. Server Responses - Server and Mailbox Status . . . . . . 107 7.2. Server Responses - Server and Mailbox Status . . . . . . 108
7.2.1. The ENABLED Response . . . . . . . . . . . . . . . . 107 7.2.1. The ENABLED Response . . . . . . . . . . . . . . . . 108
7.2.2. CAPABILITY Response . . . . . . . . . . . . . . . . . 107 7.2.2. CAPABILITY Response . . . . . . . . . . . . . . . . . 108
7.2.3. LIST Response . . . . . . . . . . . . . . . . . . . . 108 7.2.3. LIST Response . . . . . . . . . . . . . . . . . . . . 109
7.2.4. NAMESPACE Response . . . . . . . . . . . . . . . . . 112 7.2.4. NAMESPACE Response . . . . . . . . . . . . . . . . . 113
7.2.5. STATUS Response . . . . . . . . . . . . . . . . . . . 112 7.2.5. STATUS Response . . . . . . . . . . . . . . . . . . . 113
7.2.6. ESEARCH Response . . . . . . . . . . . . . . . . . . 113 7.2.6. ESEARCH Response . . . . . . . . . . . . . . . . . . 113
7.2.7. FLAGS Response . . . . . . . . . . . . . . . . . . . 113 7.2.7. FLAGS Response . . . . . . . . . . . . . . . . . . . 114
7.3. Server Responses - Mailbox Size . . . . . . . . . . . . . 114 7.3. Server Responses - Mailbox Size . . . . . . . . . . . . . 114
7.3.1. EXISTS Response . . . . . . . . . . . . . . . . . . . 114 7.3.1. EXISTS Response . . . . . . . . . . . . . . . . . . . 115
7.4. Server Responses - Message Status . . . . . . . . . . . . 114 7.4. Server Responses - Message Status . . . . . . . . . . . . 115
7.4.1. EXPUNGE Response . . . . . . . . . . . . . . . . . . 114 7.4.1. EXPUNGE Response . . . . . . . . . . . . . . . . . . 115
7.4.2. FETCH Response . . . . . . . . . . . . . . . . . . . 115 7.4.2. FETCH Response . . . . . . . . . . . . . . . . . . . 116
7.5. Server Responses - Command Continuation Request . . . . . 121 7.5. Server Responses - Command Continuation Request . . . . . 122
8. Sample IMAP4rev2 connection . . . . . . . . . . . . . . . . . 121 8. Sample IMAP4rev2 connection . . . . . . . . . . . . . . . . . 122
9. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 122 9. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 123
10. Author's Note . . . . . . . . . . . . . . . . . . . . . . . . 139 10. Author's Note . . . . . . . . . . . . . . . . . . . . . . . . 140
11. Security Considerations . . . . . . . . . . . . . . . . . . . 139 11. Security Considerations . . . . . . . . . . . . . . . . . . . 140
11.1. STARTTLS Security Considerations . . . . . . . . . . . . 140 11.1. STARTTLS Security Considerations . . . . . . . . . . . . 141
11.2. COPYUID and APPENDUID response codes . . . . . . . . . . 140 11.2. COPYUID and APPENDUID response codes . . . . . . . . . . 141
11.3. LIST command and Other Users' namespace . . . . . . . . 140 11.3. LIST command and Other Users' namespace . . . . . . . . 141
11.4. Other Security Considerations . . . . . . . . . . . . . 140 11.4. Other Security Considerations . . . . . . . . . . . . . 141
12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 141 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 142
12.1. Updates to IMAP4 Capabilities registry . . . . . . . . . 142 12.1. Updates to IMAP4 Capabilities registry . . . . . . . . . 143
12.2. GSSAPI/SASL service name . . . . . . . . . . . . . . . . 142 12.2. GSSAPI/SASL service name . . . . . . . . . . . . . . . . 143
13. References . . . . . . . . . . . . . . . . . . . . . . . . . 142 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 143
13.1. Normative References . . . . . . . . . . . . . . . . . . 142 13.1. Normative References . . . . . . . . . . . . . . . . . . 143
13.2. Informative References (related protocols) . . . . . . . 145 13.2. Informative References (related protocols) . . . . . . . 146
13.3. Informative References (historical aspects of IMAP and 13.3. Informative References (historical aspects of IMAP and
related protocols) . . . . . . . . . . . . . . . . . . . 146 related protocols) . . . . . . . . . . . . . . . . . . . 148
Appendix A. Backward compatibility with IMAP4rev1 . . . . . . . 147 Appendix A. Backward compatibility with IMAP4rev1 . . . . . . . 149
A.1. Mailbox International Naming Convention for compatibility A.1. Mailbox International Naming Convention for compatibility
with IMAP4rev1 . . . . . . . . . . . . . . . . . . . . . 148 with IMAP4rev1 . . . . . . . . . . . . . . . . . . . . . 149
Appendix B. Backward compatibility with BINARY extension . . . . 149 Appendix B. Backward compatibility with BINARY extension . . . . 151
Appendix C. Changes from RFC 3501 / IMAP4rev1 . . . . . . . . . 149 Appendix C. Changes from RFC 3501 / IMAP4rev1 . . . . . . . . . 151
Appendix D. Acknowledgement . . . . . . . . . . . . . . . . . . 152 Appendix D. Acknowledgement . . . . . . . . . . . . . . . . . . 153
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 157 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 159
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
skipping to change at page 7, line 31 skipping to change at page 7, line 31
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 IMAP4rev2 client or server is either reading a line, or is of an IMAP4rev2 client or server is either reading a line, or is
reading a sequence of octets with a known count followed by a line. reading a sequence of octets with a known count followed by a line.
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 an identifier (typically a short alphanumeric string, prefixed with an 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. (More formally: the client
SHOULD generate a unique tag for every command, but a server MUST
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 String
under Data Formats); in the other case, the command arguments require under Data Formats); in the other case, the command arguments require
server feedback (see the AUTHENTICATE command). In either case, the server feedback (see the AUTHENTICATE command). In either case, the
skipping to change at page 9, line 21 skipping to change at page 9, line 21
associated with it. These attributes can be retrieved individually associated with it. These attributes can be retrieved individually
or in conjunction with other attributes or message texts. or in conjunction with other attributes or message texts.
2.3.1. Message Numbers 2.3.1. Message Numbers
Messages in IMAP4rev2 are accessed by one of two numbers; the unique Messages in IMAP4rev2 are accessed by one of two numbers; the unique
identifier or the message sequence number. identifier or the message sequence number.
2.3.1.1. Unique Identifier (UID) Message Attribute 2.3.1.1. Unique Identifier (UID) Message Attribute
An unsigned 32-bit value assigned to each message, which when used An unsigned non-zero 32-bit value assigned to each message, which
with the unique identifier validity value (see below) forms a 64-bit when used with the unique identifier validity value (see below) forms
value that MUST NOT refer to any other message in the mailbox or any a 64-bit value that MUST NOT refer to any other message in the
subsequent mailbox with the same name forever. Unique identifiers mailbox or any subsequent mailbox with the same name forever. Unique
are assigned in a strictly ascending fashion in the mailbox; as each identifiers are assigned in a strictly ascending fashion in the
message is added to the mailbox it is assigned a higher UID than the mailbox; as each message is added to the mailbox it is assigned a
message(s) which were added previously. Unlike message sequence higher UID than the message(s) which were added previously. Unlike
numbers, unique identifiers are not necessarily contiguous. message sequence numbers, unique identifiers are not necessarily
contiguous.
The unique identifier of a message MUST NOT change during the The unique identifier of a message MUST NOT change during the
session, and SHOULD NOT change between sessions. Any change of session, and SHOULD NOT change between sessions. Any change of
unique identifiers between sessions MUST be detectable using the unique identifiers between sessions MUST be detectable using the
UIDVALIDITY mechanism discussed below. Persistent unique identifiers UIDVALIDITY mechanism discussed below. Persistent unique identifiers
are required for a client to resynchronize its state from a previous are required for a client to resynchronize its state from a previous
session with the server (e.g., disconnected or offline access session with the server (e.g., disconnected or offline access
clients); this is discussed further in [IMAP-DISC]. clients); this is discussed further in [IMAP-DISC].
Associated with every mailbox are two 32-bit unsigned values which Associated with every mailbox are two 32-bit unsigned non-zero values
aid in unique identifier handling: the next unique identifier value which aid in unique identifier handling: the next unique identifier
(UIDNEXT) and the unique identifier validity value (UIDVALIDITY). value (UIDNEXT) and the unique identifier validity value
(UIDVALIDITY).
The next unique identifier value is the predicted value that will be The next unique identifier value is the predicted value that will be
assigned to a new message in the mailbox. Unless the unique assigned to a new message in the mailbox. Unless the unique
identifier validity also changes (see below), the next unique identifier validity also changes (see below), the next unique
identifier value MUST have the following two characteristics. First, identifier value MUST have the following two characteristics. First,
the next unique identifier value MUST NOT change unless new messages the next unique identifier value MUST NOT change unless new messages
are added to the mailbox; and second, the next unique identifier are added to the mailbox; and second, the next unique identifier
value MUST change whenever new messages are added to the mailbox, value MUST change whenever new messages are added to the mailbox,
even if those new messages are subsequently expunged. even if those new messages are subsequently expunged.
skipping to change at page 12, line 17 skipping to change at page 12, line 19
A keyword is defined by the server implementation. Keywords do not A keyword is defined by the server implementation. Keywords do not
begin with "\". Servers MAY permit the client to define new keywords begin with "\". Servers MAY permit the client to define new keywords
in the mailbox (see the description of the PERMANENTFLAGS response in the mailbox (see the description of the PERMANENTFLAGS response
code for more information). Some keywords that start with "$" are code for more information). Some keywords that start with "$" are
also defined in this specification. also defined in this specification.
This document defines several keywords that were not originally This document defines several keywords that were not originally
defined in RFC 3501, but which were found to be useful by client defined in RFC 3501, but which were found to be useful by client
implementations. These keywords SHOULD be supported (i.e. allowed in implementations. These keywords SHOULD be supported (i.e. allowed in
APPEND, COPY, MOVE and SEARCH commands) by server implementations: SEARCH, allowed and preserved in APPEND, COPY, MOVE commands) by
server implementations:
$Forwarded Message has been forwarded to another email address, $Forwarded Message has been forwarded to another email address,
embedded within or attached to a new message. An email client embedded within or attached to a new message. An email client
sets this keyword when it successfully forwards the message to sets this keyword when it successfully forwards the message to
another email address. Typical usage of this keyword is to show a another email address. Typical usage of this keyword is to show a
different (or additional) icon for a message that has been different (or additional) icon for a message that has been
forwarded. Once set, the flag SHOULD NOT be cleared. forwarded. Once set, the flag SHOULD NOT be cleared.
$MDNSent Message Disposition Notification [RFC8098] was generated $MDNSent Message Disposition Notification [RFC8098] was generated
and sent for this message. and sent for this message. See [RFC3503] for more details on how
this keyword is used.
$Junk The user (or a delivery agent on behalf of the user) may
choose to mark a message as definitely containing junk ($Junk; see
also the related keyword $NotJunk). The $Junk keyword can be used
to mark (and potentially move/delete messages later), group or
hide undesirable messages. See [IMAP-KEYWORDS-REG] for more
information.
$NotJunk The user (or a delivery agent on behalf of the user) may
choose to mark a message as definitely not containing junk
($NotJunk; see also the related keyword $Junk). The $NotJunk
keyword can be used to mark, group or show messages that the user
wants to see. See [IMAP-KEYWORDS-REG] for more information.
$Phishing The $Phishing keyword can be used by a delivery agent to
mark a message as highly likely to be a phishing email. An email
that's determined to be a phishing email by the delivery agent
should also be considered a junk email and have the appropriate
junk filtering applied, including setting the $Junk flag and
placing in the \Junk special-use mailbox if available.
If both the $Phishing flag and the $Junk flag are set, the user
agent should display an additional warning message to the user.
User agents should not use the term "phishing" in their warning
message as most users do not understand this term. Phrasing of
the form "this message may be trying to steal your personal
information" is recommended. Additionally the user agent may
display a warning when clicking on any hyperlinks within the
message.
The requirement for both $Phishing and $Junk to be set before a
user agent displays a warning is for better backwards
compatibility with existing clients that understand the $Junk flag
but not the $Phishing flag. This so that when an unextended
client removes the $Junk flag, an extended client will also show
the correct state. See [IMAP-KEYWORDS-REG] for more information.
$Junk and $NotJunk are mutually exclusive. If more than one of them
is set for a message, the client MUST treat this as if none of them
is set and SHOULD unset both of them on the IMAP server.
Other registered keywords can be found in the "IMAP and JMAP
Keywords" registry [IMAP-KEYWORDS-REG].
A flag can be permanent or session-only on a per-flag basis. A flag can be permanent or session-only on a per-flag basis.
Permanent flags are those which the client can add or remove from the Permanent flags are those which the client can add or remove from the
message flags permanently; that is, concurrent and subsequent message flags permanently; that is, concurrent and subsequent
sessions will see any change in permanent flags. Changes to session sessions will see any change in permanent flags. Changes to session
flags are valid only in that session. flags are valid only in that session.
2.3.3. Internal Date Message Attribute 2.3.3. Internal Date Message Attribute
The internal date and time of the message on the server. This is not The internal date and time of the message on the server. This is not
skipping to change at page 19, line 37 skipping to change at page 20, line 37
The following rules are listed here to ensure that all IMAP4rev2 The following rules are listed here to ensure that all IMAP4rev2
implementations interoperate properly. implementations interoperate properly.
5.1. Mailbox Naming 5.1. Mailbox Naming
In IMAP4rev2, Mailbox names are encoded in Net-Unicode [NET-UNICODE] In IMAP4rev2, Mailbox names are encoded in Net-Unicode [NET-UNICODE]
(this differs from IMAP4rev1). Client implementations MAY attempt to (this differs from IMAP4rev1). Client implementations MAY attempt to
create Net-Unicode mailbox names, and MUST interpret any 8-bit create Net-Unicode mailbox names, and MUST interpret any 8-bit
mailbox names returned by LIST as [NET-UNICODE]. Server mailbox names returned by LIST as [NET-UNICODE]. Server
implementations MUST prohibit the creation of 8-bit mailbox names implementations MUST prohibit the creation of 8-bit mailbox names
that do not comply with Net-Unicode (however, servers MAY accept a that do not comply with Net-Unicode. However, servers MAY accept a
de-normalized UTF-8 mailbox name and convert it to Net-Unicode prior de-normalized UTF-8 mailbox name and convert it to Unicode
to mailbox creation). normalization form "NFC" (as per Net-Unicode requirements) prior to
mailbox creation. Servers that choose to accept such de-normalized
UTF-8 mailbox names MUST accept them in all IMAP commands that have a
mailbox name parameter. In particular SELECT <name> must open the
same mailbox that was successfully created with CREATE <name>, even
if <name> is a de-normalized UTF-8 mailbox name.
The case-insensitive mailbox name INBOX is a special name reserved to The case-insensitive mailbox name INBOX is a special name reserved to
mean "the primary mailbox for this user on this server". (Note that mean "the primary mailbox for this user on this server". (Note that
this special name may not exist on some servers for some users, for this special name may not exist on some servers for some users, for
example if the user has no access to personal namespace.) The example if the user has no access to personal namespace.) The
interpretation of all other names is implementation-dependent. interpretation of all other names is implementation-dependent.
In particular, this specification takes no position on case In particular, this specification takes no position on case
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 coerce names to a particular case. Client implementations must be
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) will require that the mailbox name be represented as a
quoted string or literal. 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
skipping to change at page 75, line 36 skipping to change at page 76, line 36
the criteria DELETED FROM "SMITH" SINCE 1-Feb-1994 refers to all the criteria DELETED FROM "SMITH" SINCE 1-Feb-1994 refers to all
deleted messages from Smith with INTERNALDATE greater than February deleted messages from Smith with INTERNALDATE greater than February
1, 1994. A search key can also be a parenthesized list of one or 1, 1994. A search key can also be a parenthesized list of one or
more search keys (e.g., for use with the OR and NOT keys). more search keys (e.g., for use with the OR and NOT keys).
Server implementations MAY exclude [MIME-IMB] body parts with Server implementations MAY exclude [MIME-IMB] body parts with
terminal content media types other than TEXT and MESSAGE from terminal content media types other than TEXT and MESSAGE from
consideration in SEARCH matching. consideration in SEARCH matching.
The OPTIONAL [CHARSET] specification consists of the word "CHARSET" The OPTIONAL [CHARSET] specification consists of the word "CHARSET"
followed by a registered [CHARSET]. It indicates the [CHARSET] of followed by a registered [CHARSET] [CHARSET-REG]. It indicates the
the strings that appear in the search criteria. [MIME-IMB] content [CHARSET] of the strings that appear in the search criteria.
transfer encodings, and [MIME-HDRS] strings in [RFC-5322]/[MIME-IMB] [MIME-IMB] content transfer encodings, and [MIME-HDRS] strings in
headers, MUST be decoded before comparing text. Servers MUST support [RFC-5322]/[MIME-IMB] headers, MUST be decoded before comparing text.
US-ASCII and UTF-8 charsets; other [CHARSET]s MAY be supported. Servers MUST support US-ASCII and UTF-8 charsets; other [CHARSET]s
Clients SHOULD use UTF-8. Note that if "CHARSET" is not provided MAY be supported. Clients SHOULD use UTF-8. Note that if "CHARSET"
IMAP4rev2 server MUST assume UTF-8, so selecting CHARSET UTF-8 is is not provided IMAP4rev2 server MUST assume UTF-8, so selecting
redundant. It is permitted for improved compatibility with existing CHARSET UTF-8 is redundant. It is permitted for improved
IMAP4rev1 clients. compatibility with existing IMAP4rev1 clients.
If the server does not support the specified [CHARSET], it MUST If the server does not support the specified [CHARSET], it MUST
return a tagged NO response (not a BAD). This response SHOULD return a tagged NO response (not a BAD). This response SHOULD
contain the BADCHARSET response code, which MAY list the [CHARSET]s contain the BADCHARSET response code, which MAY list the [CHARSET]s
supported by the server. supported by the server.
In all search keys that use strings, a message matches the key if the In all search keys that use strings, a message matches the key if the
string is a substring of the associated text. The matching SHOULD be string is a substring of the associated text. The matching SHOULD be
case-insensitive for characters within ASCII range. Consider using case-insensitive for characters within ASCII range. Consider using
[IMAP-I18N] for language-sensitive case-insensitive searching. Note [IMAP-I18N] for language-sensitive case-insensitive searching. Note
skipping to change at page 105, line 5 skipping to change at page 106, line 5
response code when the LDAP/Radius server is down. response code when the LDAP/Radius server is down.
C: a LOGIN "fred" "foo" C: a LOGIN "fred" "foo"
S: a NO [UNAVAILABLE] User's backend down for maintenance S: a NO [UNAVAILABLE] User's backend down for maintenance
UNKNOWN-CTE UNKNOWN-CTE
The server does not know how to decode the section's Content- The server does not know how to decode the section's Content-
Transfer-Encoding. Transfer-Encoding.
Additional response codes defined by particular client or server Client implementations MUST ignore response codes that they do not
implementations SHOULD be prefixed with an "X" until they are added recognize.
to a revision of this protocol. Client implementations SHOULD ignore
response codes that they do not recognize.
7.1.1. OK Response 7.1.1. OK Response
Contents: OPTIONAL response code Contents: OPTIONAL response code
human-readable text human-readable text
The OK response indicates an information message from the server. The OK response indicates an information message from the server.
When tagged, it indicates successful completion of the associated When tagged, it indicates successful completion of the associated
command. The human-readable text MAY be presented to the user as an command. The human-readable text MAY be presented to the user as an
information message. The untagged form indicates an information-only information message. The untagged form indicates an information-only
skipping to change at page 108, line 21 skipping to change at page 109, line 16
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 standard or Capability names MUST either begin with "X" or be informational,
standards-track IMAP4rev2 extensions, revisions, or amendments experimental or standards-track IMAP4rev2 extensions, revisions, or
registered with IANA. A server MUST NOT offer unregistered or non- amendments registered with IANA. A server MUST NOT offer
standard capability names, unless such names are prefixed with an unregistered or non-standard capability names, unless such names are
"X". 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", and 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.
skipping to change at page 108, line 50 skipping to change at page 109, line 45
Contents: name attributes Contents: name attributes
hierarchy delimiter hierarchy delimiter
name name
OPTIONAL extension data OPTIONAL extension data
The LIST response occurs as a result of a LIST command. It returns a The LIST response occurs as a result of a LIST command. It returns a
single name that matches the LIST specification. There can be single name that matches the LIST specification. There can be
multiple LIST responses for a single LIST command. multiple LIST responses for a single LIST command.
The following base name attributes are defined: The following base mailbox name attributes are defined:
\NonExistent The "\NonExistent" attribute indicates that a mailbox \NonExistent The "\NonExistent" attribute indicates that a mailbox
name does not refer to an existing mailbox. Note that this name does not refer to an existing mailbox. Note that this
attribute is not meaningful by itself, as mailbox names that match attribute is not meaningful by itself, as mailbox names that match
the canonical LIST pattern but don't exist must not be returned the canonical LIST pattern but don't exist must not be returned
unless one of the two conditions listed below is also satisfied: unless one of the two conditions listed below is also satisfied:
1. The mailbox name also satisfies the selection criteria (for 1. The mailbox name also satisfies the selection criteria (for
example, it is subscribed and the "SUBSCRIBED" selection example, it is subscribed and the "SUBSCRIBED" selection
option has been specified). option has been specified).
skipping to change at page 110, line 30 skipping to change at page 111, line 23
Note: the \HasNoChildren attribute should not be confused with the Note: the \HasNoChildren attribute should not be confused with the
\NoInferiors attribute, which indicates that no child mailboxes \NoInferiors attribute, which indicates that no child mailboxes
exist now and none can be created in the future. exist now and none can be created in the future.
If it is not feasible for the server to determine whether or not the If it is not feasible for the server to determine whether or not the
mailbox is "interesting", the server SHOULD NOT send either \Marked mailbox is "interesting", the server SHOULD NOT send either \Marked
or \Unmarked. The server MUST NOT send more than one of \Marked, or \Unmarked. The server MUST NOT send more than one of \Marked,
\Unmarked, and \Noselect for a single mailbox, and MAY send none of \Unmarked, and \Noselect for a single mailbox, and MAY send none of
these. these.
In addition to the base name attributes defined above, an IMAP server In addition to the base mailbox name attributes defined above, an
MAY also include any or all of the following attributes that denote IMAP server MAY also include any or all of the following attributes
"role" (or "special-use") of a mailbox. These attributes are that denote "role" (or "special-use") of a mailbox. These attributes
included along with base attributes defined above. A given mailbox are included along with base attributes defined above. A given
may have none, one, or more than one of these attributes. In some mailbox may have none, one, or more than one of these attributes. In
cases, a special use is advice to a client about what to put in that some cases, a special use is advice to a client about what to put in
mailbox. In other cases, it's advice to a client about what to that mailbox. In other cases, it's advice to a client about what to
expect to find there. expect to find there.
\All This mailbox presents all messages in the user's message store. \All This mailbox presents all messages in the user's message store.
Implementations MAY omit some messages, such as, perhaps, those in Implementations MAY omit some messages, such as, perhaps, those in
\Trash and \Junk. When this special use is supported, it is \Trash and \Junk. When this special use is supported, it is
almost certain to represent a virtual mailbox. almost certain to represent a virtual mailbox.
\Archive This mailbox is used to archive messages. The meaning of \Archive This mailbox is used to archive messages. The meaning of
an "archival" mailbox is server-dependent; typically, it will be an "archival" mailbox is server-dependent; typically, it will be
used to get messages out of the inbox, or otherwise keep them out used to get messages out of the inbox, or otherwise keep them out
skipping to change at page 111, line 43 skipping to change at page 112, line 36
message store may support any combination of the attributes, or none message store may support any combination of the attributes, or none
at all. In most cases, there will likely be at most one mailbox with at all. In most cases, there will likely be at most one mailbox with
a given attribute for a given user, but in some server or message a given attribute for a given user, but in some server or message
store implementations it might be possible for multiple mailboxes to store implementations it might be possible for multiple mailboxes to
have the same special-use attribute. have the same special-use attribute.
Special-use attributes are likely to be user-specific. User Adam Special-use attributes are likely to be user-specific. User Adam
might share his \Sent mailbox with user Barb, but that mailbox is might share his \Sent mailbox with user Barb, but that mailbox is
unlikely to also serve as Barb's \Sent mailbox. unlikely to also serve as Barb's \Sent mailbox.
Other mailbox name attributes can be found in the "IMAP Mailbox Name
Attributes" registry [IMAP-MAILBOX-NAME-ATTRS-REG].
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 can use it to create child hierarchy in a mailbox name. A client can use it to create child
mailboxes, and to search higher or lower levels of naming hierarchy. mailboxes, and to search higher or lower levels of naming hierarchy.
All children of a top-level hierarchy node MUST use the same All children of a top-level hierarchy node MUST use the same
separator character. A NIL hierarchy delimiter means that no separator character. A NIL hierarchy delimiter means that no
hierarchy exists; the name is a "flat" name. hierarchy exists; the name is a "flat" name.
The name represents an unambiguous left-to-right hierarchy, and MUST The name represents an unambiguous left-to-right hierarchy, and MUST
be valid for use as a reference in LIST command. Unless \Noselect or be valid for use as a reference in LIST command. Unless \Noselect or
\NonExistent is indicated, the name MUST also be valid as an argument \NonExistent is indicated, the name MUST also be valid as an argument
skipping to change at page 121, line 9 skipping to change at page 121, line 46
members in the envelope can not be NIL. members in the envelope can not be NIL.
FLAGS A parenthesized list of flags that are set for this message. FLAGS A parenthesized list of flags that are set for this message.
INTERNALDATE A string representing the internal date of the message. INTERNALDATE A string representing the internal date of the message.
RFC822.SIZE A number expressing the [RFC-5322] size of the message. RFC822.SIZE A number expressing the [RFC-5322] size of the message.
UID A number expressing the unique identifier of the message. UID A number expressing the unique identifier of the message.
If the server chooses to send unsolicited FETCH responses, they MUST
include UID FETCH item. Note that this is a new requirement when
compared to RFC 3501.
Example: S: * 23 FETCH (FLAGS (\Seen) RFC822.SIZE 44827) Example: S: * 23 FETCH (FLAGS (\Seen) RFC822.SIZE 44827)
7.5. Server Responses - Command Continuation Request 7.5. Server Responses - Command Continuation Request
The command continuation request response is indicated by a "+" token The command continuation 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
ready to accept the continuation of a command from the client. The ready to accept the continuation of a command from the client. The
remainder of this response is a line of text. remainder of this response is a line of text.
This response is used in the AUTHENTICATE command to transmit server This response is used in the AUTHENTICATE command to transmit server
skipping to change at page 128, line 46 skipping to change at page 129, line 46
; 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.
; "\Recent" was defined in RFC 3501 ; "\Recent" was defined in RFC 3501
; and is now deprecated. ; and is now deprecated.
flag-fetch = flag flag-fetch = flag
flag-keyword = "$MDNSent" / "$Forwarded" / atom flag-keyword = "$MDNSent" / "$Forwarded" / "$Junk" /
"$NotJunk" / "$Phishing" / atom
flag-list = "(" [flag *(SP flag)] ")" flag-list = "(" [flag *(SP flag)] ")"
flag-perm = flag / "\*" flag-perm = flag / "\*"
greeting = "*" SP (resp-cond-auth / resp-cond-bye) CRLF greeting = "*" SP (resp-cond-auth / resp-cond-bye) CRLF
header-fld-name = astring header-fld-name = astring
header-list = "(" header-fld-name *(SP header-fld-name) ")" header-list = "(" header-fld-name *(SP header-fld-name) ")"
skipping to change at page 142, line 9 skipping to change at page 143, line 9
3. Both UDP port 143 and UDP port 993 should be marked as "Reserved" 3. Both UDP port 143 and UDP port 993 should be marked as "Reserved"
in the registry. in the registry.
Additional IANA actions are specified in subsection of this section. Additional IANA actions are specified in subsection of this section.
12.1. Updates to IMAP4 Capabilities registry 12.1. Updates to IMAP4 Capabilities registry
IMAP4 capabilities are registered by publishing a standards track or IMAP4 capabilities are registered by publishing a standards track or
IESG approved informational or experimental RFC. The registry is IESG approved informational or experimental RFC. The registry is
currently located at: http://www.iana.org/assignments/ currently located at: https://www.iana.org/assignments/
imap4-capabilities imap4-capabilities
As this specification revises the STARTTLS and LOGINDISABLED As this specification revises the STARTTLS and LOGINDISABLED
extensions previously defined in [IMAP-TLS], IANA is requested to extensions previously defined in [IMAP-TLS], IANA is requested to
update registry entries for these 2 extensions to point to this update registry entries for these 2 extensions to point to this
document. document.
12.2. GSSAPI/SASL service name 12.2. GSSAPI/SASL service name
GSSAPI/Kerberos/SASL service names are registered by publishing a GSSAPI/Kerberos/SASL service names are registered by publishing a
skipping to change at page 145, line 31 skipping to change at page 146, line 31
RFC 2683, September 1999, RFC 2683, September 1999,
<http://www.rfc-editor.org/info/rfc2683>. <http://www.rfc-editor.org/info/rfc2683>.
[IMAP-MULTIACCESS] [IMAP-MULTIACCESS]
Gahrns, M., "IMAP4 Multi-Accessed Mailbox Practice", Gahrns, M., "IMAP4 Multi-Accessed Mailbox Practice",
RFC 2180, July 1997, RFC 2180, July 1997,
<http://www.rfc-editor.org/info/rfc2180>. <http://www.rfc-editor.org/info/rfc2180>.
13.2. Informative References (related protocols) 13.2. Informative References (related protocols)
[RFC3503] Melnikov, A., "Message Disposition Notification (MDN)
profile for Internet Message Access Protocol (IMAP)",
RFC 3503, DOI 10.17487/RFC3503, March 2003,
<https://www.rfc-editor.org/info/rfc3503>.
[RFC5256] Crispin, M. and K. Murchison, "Internet Message Access [RFC5256] Crispin, M. and K. Murchison, "Internet Message Access
Protocol - SORT and THREAD Extensions", RFC 5256, Protocol - SORT and THREAD Extensions", RFC 5256,
DOI 10.17487/RFC5256, June 2008, DOI 10.17487/RFC5256, June 2008,
<https://www.rfc-editor.org/info/rfc5256>. <https://www.rfc-editor.org/info/rfc5256>.
[RFC5258] Leiba, B. and A. Melnikov, "Internet Message Access [RFC5258] Leiba, B. and A. Melnikov, "Internet Message Access
Protocol version 4 - LIST Command Extensions", RFC 5258, Protocol version 4 - LIST Command Extensions", RFC 5258,
DOI 10.17487/RFC5258, June 2008, DOI 10.17487/RFC5258, June 2008,
<https://www.rfc-editor.org/info/rfc5258>. <https://www.rfc-editor.org/info/rfc5258>.
skipping to change at page 146, line 45 skipping to change at page 148, line 5
<http://www.rfc-editor.org/info/rfc4314>. <http://www.rfc-editor.org/info/rfc4314>.
[RFC2087] Myers, J., "IMAP4 QUOTA extension", RFC 2087, January [RFC2087] Myers, J., "IMAP4 QUOTA extension", RFC 2087, January
1997, <http://www.rfc-editor.org/info/rfc2087>. 1997, <http://www.rfc-editor.org/info/rfc2087>.
[IMAP-URL] [IMAP-URL]
Melnikov, A., Ed. and C. Newman, "IMAP URL Scheme", Melnikov, A., Ed. and C. Newman, "IMAP URL Scheme",
RFC 5092, DOI 10.17487/RFC5092, November 2007, RFC 5092, DOI 10.17487/RFC5092, November 2007,
<http://www.rfc-editor.org/info/rfc5092>. <http://www.rfc-editor.org/info/rfc5092>.
[IMAP-KEYWORDS-REG]
IANA, "IMAP and JMAP Keywords", December 2009,
<https://www.iana.org/assignments/imap-jmap-keywords/imap-
jmap-keywords.xhtml>.
[IMAP-MAILBOX-NAME-ATTRS-REG]
IANA, "IMAP Mailbox Name Attributes", June 2018,
<https://www.iana.org/assignments/imap-mailbox-name-
attributes/imap-mailbox-name-attributes.xhtml>.
[CHARSET-REG]
IANA, "Character Set Registrations", May 2015,
<https://www.iana.org/assignments/charset-reg/charset-
reg.xhtml>.
13.3. Informative References (historical aspects of IMAP and related 13.3. Informative References (historical aspects of IMAP and related
protocols) protocols)
[IMAP-COMPAT] [IMAP-COMPAT]
Crispin, M., "IMAP4 Compatibility with IMAP2bis", Crispin, M., "IMAP4 Compatibility with IMAP2bis",
RFC 2061, December 1996, RFC 2061, December 1996,
<http://www.rfc-editor.org/info/rfc2061>. <http://www.rfc-editor.org/info/rfc2061>.
[IMAP-HISTORICAL] [IMAP-HISTORICAL]
Crispin, M., "IMAP4 Compatibility with IMAP2 and Crispin, M., "IMAP4 Compatibility with IMAP2 and
skipping to change at page 150, line 5 skipping to change at page 151, line 24
FETCH items (BINARY, BINARY.PEEK and BINARY.SIZE), but not extensions FETCH items (BINARY, BINARY.PEEK and BINARY.SIZE), but not extensions
to the APPEND command. IMAP4rev2 implementations that supports full to the APPEND command. IMAP4rev2 implementations that supports full
RFC 3516 functionality need to also advertise the BINARY token in the RFC 3516 functionality need to also advertise the BINARY token in the
CAPABILITY response. CAPABILITY response.
Appendix C. Changes from RFC 3501 / IMAP4rev1 Appendix C. Changes from RFC 3501 / IMAP4rev1
The following is the plan for remaining changes. The plan might The following is the plan for remaining changes. The plan might
change over time. change over time.
1. Fold in the following extensions/RFC: RFC 5530 (IMAP Response 1. Revise IANA registration of IMAP extensions and give advice on
Codes, done), UIDPLUS (done), ENABLE (done), ESEARCH (done), use of "X-" convention.
SPECIAL-USE (list of new mailbox attributes is done), LITERAL-
(done), NAMESPACE (done), SASL-IR (done), IDLE (done), MOVE
(done).
2. Add CLOSED response code (from CONDSTORE) - done 2. Allow word-based searching (as per Chris Newman)? Need to
discuss header field search, where exact/substring match is still
required for interoperability.
3. Add support for $MDNSent and $Forwarded IMAP keywords - done. The following changes were already done:
Add more examples showing their use? Also add other keywords
like $Phishing, $Junk, $NonJunk?
4. Require all unsolicited FETCH updates to include UID - done. 1. Fold in the following extensions/RFC: RFC 5530 (IMAP Response
Codes), UIDPLUS, ENABLE, ESEARCH, SPECIAL-USE (list of new
mailbox attributes is done), LITERAL-, NAMESPACE, SASL-IR, IDLE,
MOVE.
5. Update recommendations on TLS ciphers to match UTA WG work (as 2. Add CLOSED response code (from CONDSTORE).
per RFC 8314, RFC 7525 and RFC 7817) - done.
6. Possibly fold in the following extensions/RFC: Base LIST- 3. Add support for $Phishing, $Junk, $NonJunk, $MDNSent and
EXTENDED syntax plus deprecate LSUB (replace it with LIST $Forwarded IMAP keywords. Add more examples showing their use?
\Subscribed) minus the requirement to support multiple list
patterns - done, STATUS-in-LIST - done, SEARCHRES, BINARY (only
the FETCH changes on leaf body part and make APPEND related ones
optional. See the mailing list discussion) - done.
7. Add STATUS SIZE (total mailbox size) - done. Add STATUS DELETED 4. Require all unsolicited FETCH updates to include UID.
(number of messages with \Deleted flag set) - done.
8. Drop UTF-7, all mailboxes are always in UTF-8 - done. 5. Update recommendations on TLS ciphers to match UTA WG work (as
per RFC 8314, RFC 7525 and RFC 7817).
9. Revise IANA registration of IMAP extensions and give advice on 6. Possibly fold in the following extensions/RFC: Base LIST-EXTENDED
use of "X-" convention. syntax plus deprecate LSUB (replace it with LIST \Subscribed)
minus the requirement to support multiple list patterns, STATUS-
in-LIST, SEARCHRES, BINARY (only the FETCH changes on leaf body
part and make APPEND related ones optional. See the mailing list
discussion).
10. Allow word-based searching (as per Chris Newman)? Need to 7. Add STATUS SIZE (total mailbox size). Add STATUS DELETED (number
discuss header field search, where exact/substring match is of messages with \Deleted flag set).
still required for interoperability.
8. Drop UTF-7, all mailboxes are always in UTF-8.
The following changes since RFC 3501 were done so far: The following changes since RFC 3501 were done so far:
1. Folded in IMAP UNSELECT (RFC 3691), UIDPLUS (RFC 4315), ESEARCH 1. Folded in IMAP UNSELECT (RFC 3691), UIDPLUS (RFC 4315), ESEARCH
(RFC 4731), ENABLE (RFC 5161), IDLE (RFC 2177), SASL-IR (RFC (RFC 4731), ENABLE (RFC 5161), IDLE (RFC 2177), SASL-IR (RFC
4959), LIST-STATUS (RFC 5819) and MOVE (RFC 6851) extensions. 4959), LIST-STATUS (RFC 5819) and MOVE (RFC 6851) extensions.
Also folded RFC 5530 and FETCH side of the BINARY extension (RFC Also folded RFC 5530 and FETCH side of the BINARY extension (RFC
3516). 3516).
2. Clarified that server should decode parameter value 2. Clarified that server should decode parameter value
skipping to change at page 151, line 19 skipping to change at page 152, line 38
mailbox is already selected now require for the CLOSED response mailbox is already selected now require for the CLOSED response
code to be returned. code to be returned.
5. Updated to use modern TLS-related recommendations as per RFC 5. Updated to use modern TLS-related recommendations as per RFC
8314, RFC 7817, RFC 7525. 8314, RFC 7817, RFC 7525.
6. For future extensibility extended ABNF for tagged-ext-simple to 6. For future extensibility extended ABNF for tagged-ext-simple to
allow for bare number64. allow for bare number64.
7. Added SHOULD level requirement on IMAP servers to support 7. Added SHOULD level requirement on IMAP servers to support
$MDNSent and $Forwarded keywords. $MDNSent, $Forwarded, $Junk, $NonJunk and $Phishing keywords.
8. Added STATUS SIZE and STATUS DELETED. 8. Added STATUS SIZE and STATUS DELETED.
9. Mailbox names and message headers now allow for UTF-8. Support 9. Mailbox names and message headers now allow for UTF-8. Support
for Modified UTF-7 in mailbox names is not required, unless for Modified UTF-7 in mailbox names is not required, unless
compatibility with IMAP4rev1 is desired. compatibility with IMAP4rev1 is desired.
10. UNSEEN response code on SELECT/EXAMINE is now deprecated. 10. UNSEEN response code on SELECT/EXAMINE is now deprecated.
11. RECENT response on SELECT/EXAMINE, \Recent flag, RECENT STATUS, 11. RECENT response on SELECT/EXAMINE, \Recent flag, RECENT STATUS,
skipping to change at page 152, line 5 skipping to change at page 153, line 26
MD5 was deprecated. MD5 was deprecated.
16. LSUB command was deprecated. Clients should use LIST 16. LSUB command was deprecated. Clients should use LIST
(SUBSCRIBED) instead. (SUBSCRIBED) instead.
17. resp-text ABNF non terminal was updated to allow for empty text. 17. resp-text ABNF non terminal was updated to allow for empty text.
18. IDLE command can now return updates not related to the currently 18. IDLE command can now return updates not related to the currently
selected mailbox state. selected mailbox state.
19. All unsolicited FETCH updates are required to include UID.
Appendix D. Acknowledgement Appendix D. Acknowledgement
Earlier versions of this document were edited by Mark Crispin. Earlier versions of this document were edited by Mark Crispin.
Sadly, he is no longer available to help with this work. Editors of Sadly, he is no longer available to help with this work. Editors of
this revisions are hoping that Mark would have approved. this revisions are hoping that Mark would have approved.
Chris Newman has contributed text on I18N and use of UTF-8 in Chris Newman has contributed text on I18N and use of UTF-8 in
messages and mailbox names. messages and mailbox names.
Thank you to Tony Hansen for helping with the index generation. Thank you to Tony Hansen for helping with the index generation.
skipping to change at page 152, line 29 skipping to change at page 154, line 9
4466 (by Cyrus Daboo), RFC 4731 (by Dave Cridland), RFC 5161 (by Arnt 4466 (by Cyrus Daboo), RFC 4731 (by Dave Cridland), RFC 5161 (by Arnt
Gulbrandsen), RFC 5530 (by Arnt Gulbrandsen), RFC 5819 (by Timo Gulbrandsen), RFC 5530 (by Arnt Gulbrandsen), RFC 5819 (by Timo
Sirainen), RFC 6154 (by Jamie Nicolson) so work done by authors/ Sirainen), RFC 6154 (by Jamie Nicolson) so work done by authors/
editors of these documents is appreciated. Note that editors of this editors of these documents is appreciated. Note that editors of this
document were redacted from the above list. document were redacted from the above list.
Index Index
$ $
$Forwarded (predefined flag) 12 $Forwarded (predefined flag) 12
$Junk (predefined flag) 12
$MDNSent (predefined flag) 12 $MDNSent (predefined flag) 12
$NotJunk (predefined flag) 12
$Phishing (predefined flag) 12
+ +
+FLAGS <flag list> 90 +FLAGS <flag list> 91
+FLAGS.SILENT <flag list> 90 +FLAGS.SILENT <flag list> 91
- -
-FLAGS <flag list> 90 -FLAGS <flag list> 91
-FLAGS.SILENT <flag list> 90 -FLAGS.SILENT <flag list> 91
A A
ALERT (response code) 97 ALERT (response code) 98
ALL (fetch item) 86 ALL (fetch item) 87
ALL (search key) 76 ALL (search key) 77
ALL (search result option) 74 ALL (search result option) 75
ALREADYEXISTS (response code) 97 ALREADYEXISTS (response code) 98
ANSWERED (search key) 76 ANSWERED (search key) 77
APPEND (command) 66 APPEND (command) 67
APPENDUID (response code) 97 APPENDUID (response code) 98
AUTHENTICATE (command) 28 AUTHENTICATE (command) 29
AUTHENTICATIONFAILED (response code) 98 AUTHENTICATIONFAILED (response code) 99
AUTHORIZATIONFAILED (response code) 98 AUTHORIZATIONFAILED (response code) 99
B B
BAD (response) 106 BAD (response) 106
BADCHARSET (response code) 99 BADCHARSET (response code) 100
BCC <string> (search key) 76 BCC <string> (search key) 77
BEFORE <date> (search key) 76 BEFORE <date> (search key) 77
BINARY.PEEK[<section-binary>]<<partial>> (fetch item) 86 BINARY.PEEK[<section-binary>]<<partial>> (fetch item) 87
BINARY.SIZE[<section-binary>] (fetch item) 86 BINARY.SIZE[<section-binary>] (fetch item) 87
BINARY.SIZE[<section-binary>] (fetch result) 116 BINARY.SIZE[<section-binary>] (fetch result) 117
BINARY[<section-binary>]<<number>> (fetch result) 115 BINARY[<section-binary>]<<number>> (fetch result) 116
BINARY[<section-binary>]<<partial>> (fetch item) 86 BINARY[<section-binary>]<<partial>> (fetch item) 87
BODY (fetch item) 87 BODY (fetch item) 88
BODY (fetch result) 116 BODY (fetch result) 117
BODY <string> (search key) 76 BODY <string> (search key) 77
BODY.PEEK[<section>]<<partial>> (fetch item) 89 BODY.PEEK[<section>]<<partial>> (fetch item) 90
BODYSTRUCTURE (fetch item) 89 BODYSTRUCTURE (fetch item) 90
BODYSTRUCTURE (fetch result) 117 BODYSTRUCTURE (fetch result) 117
BODY[<section>]<<origin octet>> (fetch result) 116 BODY[<section>]<<origin octet>> (fetch result) 117
BODY[<section>]<<partial>> (fetch item) 87 BODY[<section>]<<partial>> (fetch item) 88
BYE (response) 106 BYE (response) 107
Body Structure (message attribute) 13 Body Structure (message attribute) 14
C C
CANNOT (response code) 99 CANNOT (response code) 100
CAPABILITY (command) 24 CAPABILITY (command) 25
CAPABILITY (response code) 99 CAPABILITY (response code) 100
CAPABILITY (response) 107 CAPABILITY (response) 108
CC <string> (search key) 76 CC <string> (search key) 77
CLIENTBUG (response code) 99 CLIENTBUG (response code) 100
CLOSE (command) 71 CLOSE (command) 72
CLOSED (response code) 99 CLOSED (response code) 100
CONTACTADMIN (response code) 100 CONTACTADMIN (response code) 101
COPY (command) 90 COPY (command) 91
COPYUID (response code) 100 COPYUID (response code) 101
CORRUPTION (response code) 100 CORRUPTION (response code) 101
COUNT (search result option) 74 COUNT (search result option) 75
CREATE (command) 37 CREATE (command) 38
D D
DELETE (command) 38 DELETE (command) 39
DELETED (search key) 76 DELETED (search key) 77
DELETED (status item) 66 DELETED (status item) 67
DRAFT (search key) 76 DRAFT (search key) 77
E E
ENABLE (command) 32 ENABLE (command) 33
ENVELOPE (fetch item) 89 ENVELOPE (fetch item) 90
ENVELOPE (fetch result) 119 ENVELOPE (fetch result) 120
ESEARCH (response) 113 ESEARCH (response) 113
EXAMINE (command) 36 EXAMINE (command) 37
EXPIRED (response code) 101 EXPIRED (response code) 102
EXPUNGE (command) 72 EXPUNGE (command) 73
EXPUNGE (response) 114 EXPUNGE (response) 115
EXPUNGEISSUED (response code) 101 EXPUNGEISSUED (response code) 102
Envelope Structure (message attribute) 13 Envelope Structure (message attribute) 14
F F
FAST (fetch item) 86 FAST (fetch item) 87
FETCH (command) 85 FETCH (command) 86
FETCH (response) 115 FETCH (response) 116
FLAGGED (search key) 76 FLAGGED (search key) 77
FLAGS (fetch item) 89 FLAGS (fetch item) 90
FLAGS (fetch result) 120 FLAGS (fetch result) 121
FLAGS (response) 113 FLAGS (response) 114
FLAGS <flag list> (store command data item) 90 FLAGS <flag list> (store command data item) 91
FLAGS.SILENT <flag list> (store command data item) 90 FLAGS.SILENT <flag list> (store command data item) 91
FROM <string> (search key) 76 FROM <string> (search key) 77
FULL (fetch item) 86 FULL (fetch item) 87
Flags (message attribute) 11 Flags (message attribute) 11
H H
HEADER (part specifier) 87 HEADER (part specifier) 88
HEADER <field-name> <string> (search key) 76 HEADER <field-name> <string> (search key) 77
HEADER.FIELDS (part specifier) 87 HEADER.FIELDS (part specifier) 88
HEADER.FIELDS.NOT (part specifier) 87 HEADER.FIELDS.NOT (part specifier) 88
I I
IDLE (command) 69 IDLE (command) 70
INTERNALDATE (fetch item) 89 INTERNALDATE (fetch item) 90
INTERNALDATE (fetch result) 120 INTERNALDATE (fetch result) 121
INUSE (response code) 101 INUSE (response code) 102
Internal Date (message attribute) 12 Internal Date (message attribute) 13
K K
KEYWORD <flag> (search key) 77 KEYWORD <flag> (search key) 78
Keyword (type of flag) 12 Keyword (type of flag) 12
L L
LARGER <n> (search key) 77 LARGER <n> (search key) 78
LIMIT (response code) 101 LIMIT (response code) 102
LIST (command) 42 LIST (command) 43
LIST (response) 108 LIST (response) 109
LOGOUT (command) 26 LOGOUT (command) 27
M M
MAX (search result option) 74 MAX (search result option) 75
MAY (specification requirement term) 5 MAY (specification requirement term) 5
MESSAGES (status item) 66 MESSAGES (status item) 67
MIME (part specifier) 88 MIME (part specifier) 89
MIN (search result option) 74 MIN (search result option) 75
MOVE (command) 91 MOVE (command) 92
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) 60 NAMESPACE (command) 61
NAMESPACE (response) 112 NAMESPACE (response) 113
NO (response) 105 NO (response) 106
NONEXISTENT (response code) 102 NONEXISTENT (response code) 103
NOOP (command) 25 NOOP (command) 26
NOPERM (response code) 102 NOPERM (response code) 103
NOT <search-key> (search key) 77 NOT <search-key> (search key) 78
NOT RECOMMENDED (specification requirement term) 5 NOT RECOMMENDED (specification requirement term) 5
O O
OK (response) 105 OK (response) 106
ON <date> (search key) 77 ON <date> (search key) 78
OPTIONAL (specification requirement term) 5 OPTIONAL (specification requirement term) 5
OR <search-key1> <search-key2> (search key) 77 OR <search-key1> <search-key2> (search key) 78
OVERQUOTA (response code) 102 OVERQUOTA (response code) 103
P P
PARSE (response code) 102 PARSE (response code) 103
PERMANENTFLAGS (response code) 102 PERMANENTFLAGS (response code) 103
PREAUTH (response) 106 PREAUTH (response) 107
PRIVACYREQUIRED (response code) 103 PRIVACYREQUIRED (response code) 104
Permanent Flag (class of flag) 12 Permanent Flag (class of flag) 13
Predefined keywords 12 Predefined keywords 12
R R
READ-ONLY (response code) 103 READ-ONLY (response code) 104
READ-WRITE (response code) 103 READ-WRITE (response code) 104
RECOMMENDED (specification requirement term) 5 RECOMMENDED (specification requirement term) 5
RENAME (command) 39 RENAME (command) 40
REQUIRED (specification requirement term) 5 REQUIRED (specification requirement term) 5
RFC822.SIZE (fetch item) 89 RFC822.SIZE (fetch item) 90
RFC822.SIZE (fetch result) 121 RFC822.SIZE (fetch result) 121
S S
SAVE (search result option) 74 SAVE (search result option) 75
SEARCH (command) 73 SEARCH (command) 74
SEEN (search key) 77 SEEN (search key) 78
SELECT (command) 34 SELECT (command) 35
SENTBEFORE <date> (search key) 77 SENTBEFORE <date> (search key) 78
SENTON <date> (search key) 77 SENTON <date> (search key) 78
SENTSINCE <date> (search key) 77 SENTSINCE <date> (search key) 78
SERVERBUG (response code) 103 SERVERBUG (response code) 104
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) 77 SINCE <date> (search key) 78
SIZE (status item) 66 SIZE (status item) 67
SMALLER <n> (search key) 77 SMALLER <n> (search key) 78
STARTTLS (command) 27 STARTTLS (command) 28
STATUS (command) 65 STATUS (command) 66
STATUS (response) 112 STATUS (response) 113
STORE (command) 89 STORE (command) 90
SUBJECT <string> (search key) 77 SUBJECT <string> (search key) 78
SUBSCRIBE (command) 41 SUBSCRIBE (command) 42
Session Flag (class of flag) 12 Session Flag (class of flag) 13
System Flag (type of flag) 11 System Flag (type of flag) 11
T T
TEXT (part specifier) 87 TEXT (part specifier) 88
TEXT <string> (search key) 77 TEXT <string> (search key) 78
TO <string> (search key) 77 TO <string> (search key) 78
TRYCREATE (response code) 103 TRYCREATE (response code) 104
U U
UID (command) 93 UID (command) 94
UID (fetch item) 89 UID (fetch item) 90
UID (fetch result) 121 UID (fetch result) 121
UID <sequence set> (search key) 78 UID <sequence set> (search key) 79
UIDNEXT (response code) 104 UIDNEXT (response code) 105
UIDNEXT (status item) 66 UIDNEXT (status item) 67
UIDNOTSTICKY (response code) 104 UIDNOTSTICKY (response code) 105
UIDVALIDITY (response code) 104 UIDVALIDITY (response code) 105
UIDVALIDITY (status item) 66 UIDVALIDITY (status item) 67
UNANSWERED (search key) 78 UNANSWERED (search key) 79
UNAVAILABLE (response code) 104 UNAVAILABLE (response code) 105
UNDELETED (search key) 78 UNDELETED (search key) 79
UNDRAFT (search key) 78 UNDRAFT (search key) 79
UNFLAGGED (search key) 78 UNFLAGGED (search key) 79
UNKEYWORD <flag> (search key) 78 UNKEYWORD <flag> (search key) 79
UNKNOWN-CTE (response code) 104 UNKNOWN-CTE (response code) 105
UNSEEN (search key) 78 UNSEEN (search key) 79
UNSEEN (status item) 66 UNSEEN (status item) 67
UNSELECT (command) 72 UNSELECT (command) 73
UNSUBSCRIBE (command) 42 UNSUBSCRIBE (command) 43
Unique Identifier (UID) (message attribute) 9 Unique Identifier (UID) (message attribute) 9
X X
X<atom> (command) 95 X<atom> (command) 96
[ [
[RFC-5322] Size (message attribute) 13 [RFC-5322] Size (message attribute) 13
\ \
\All (mailbox name attribute) 110 \All (mailbox name attribute) 111
\Answered (system flag) 11 \Answered (system flag) 11
\Archive (mailbox name attribute) 110 \Archive (mailbox name attribute) 111
\Deleted (system flag) 11 \Deleted (system flag) 12
\Draft (system flag) 12 \Draft (system flag) 12
\Drafts (mailbox name attribute) 110 \Drafts (mailbox name attribute) 111
\Flagged (mailbox name attribute) 111 \Flagged (mailbox name attribute) 111
\Flagged (system flag) 11 \Flagged (system flag) 11
\HasChildren (mailbox name attribute) 109 \HasChildren (mailbox name attribute) 110
\HasNoChildren (mailbox name attribute) 109 \HasNoChildren (mailbox name attribute) 110
\Junk (mailbox name attribute) 111 \Junk (mailbox name attribute) 112
\Marked (mailbox name attribute) 110 \Marked (mailbox name attribute) 110
\Noinferiors (mailbox name attribute) 109 \Noinferiors (mailbox name attribute) 110
\NonExistent (mailbox name attribute) 109 \NonExistent (mailbox name attribute) 109
\Noselect (mailbox name attribute) 109 \Noselect (mailbox name attribute) 110
\Recent (system flag) 12 \Recent (system flag) 12
\Remote (mailbox name attribute) 110 \Remote (mailbox name attribute) 111
\Seen (system flag) 11 \Seen (system flag) 11
\Sent (mailbox name attribute) 111 \Sent (mailbox name attribute) 112
\Subscribed (mailbox name attribute) 110 \Subscribed (mailbox name attribute) 111
\Trash (mailbox name attribute) 111 \Trash (mailbox name attribute) 112
\Unmarked (mailbox name attribute) 110 \Unmarked (mailbox name attribute) 110
Authors' Addresses Authors' Addresses
Alexey Melnikov (editor) Alexey Melnikov (editor)
Isode Ltd Isode Ltd
14 Castle Mews 14 Castle Mews
Hampton, Middlesex TW12 2NP Hampton, Middlesex TW12 2NP
UK UK
 End of changes. 79 change blocks. 
342 lines changed or deleted 426 lines changed or added

This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/