draft-ietf-extra-imap4rev2-07.txt   draft-ietf-extra-imap4rev2-08.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: May 7, 2020 November 4, 2019 Expires: May 22, 2020 November 19, 2019
INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4rev2 INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4rev2
draft-ietf-extra-imap4rev2-07 draft-ietf-extra-imap4rev2-08
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 May 7, 2020. This Internet-Draft will expire on May 22, 2020.
Copyright Notice Copyright Notice
Copyright (c) 2019 IETF Trust and the persons identified as the Copyright (c) 2019 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 4 skipping to change at page 3, line 4
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 . . . . . . . . . . . 12
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 . . . . . . . . 13
2.3.6. Body Structure Message Attribute . . . . . . . . . . 13 2.3.6. Body Structure Message Attribute . . . . . . . . . . 13
2.4. Message Texts . . . . . . . . . . . . . . . . . . . . . . 13 2.4. Message Texts . . . . . . . . . . . . . . . . . . . . . . 13
3. State and Flow Diagram . . . . . . . . . . . . . . . . . . . 13 3. State and Flow Diagram . . . . . . . . . . . . . . . . . . . 13
3.1. Not Authenticated State . . . . . . . . . . . . . . . . . 13 3.1. Not Authenticated State . . . . . . . . . . . . . . . . . 13
3.2. Authenticated State . . . . . . . . . . . . . . . . . . . 13 3.2. Authenticated State . . . . . . . . . . . . . . . . . . . 14
3.3. Selected State . . . . . . . . . . . . . . . . . . . . . 14 3.3. Selected State . . . . . . . . . . . . . . . . . . . . . 14
3.4. Logout State . . . . . . . . . . . . . . . . . . . . . . 14 3.4. Logout State . . . . . . . . . . . . . . . . . . . . . . 14
4. Data Formats . . . . . . . . . . . . . . . . . . . . . . . . 16 4. Data Formats . . . . . . . . . . . . . . . . . . . . . . . . 16
4.1. Atom . . . . . . . . . . . . . . . . . . . . . . . . . . 16 4.1. Atom . . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.1.1. Sequence set and UID set . . . . . . . . . . . . . . 16 4.1.1. Sequence set and UID set . . . . . . . . . . . . . . 16
4.2. Number . . . . . . . . . . . . . . . . . . . . . . . . . 16 4.2. Number . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.3. String . . . . . . . . . . . . . . . . . . . . . . . . . 16 4.3. String . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.3.1. 8-bit and Binary Strings . . . . . . . . . . . . . . 17 4.3.1. 8-bit and Binary Strings . . . . . . . . . . . . . . 17
4.4. Parenthesized List . . . . . . . . . . . . . . . . . . . 18 4.4. Parenthesized List . . . . . . . . . . . . . . . . . . . 18
4.5. NIL . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4.5. NIL . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
skipping to change at page 3, line 38 skipping to change at page 3, line 38
6.2. Client Commands - Not Authenticated State . . . . . . . . 26 6.2. Client Commands - Not Authenticated State . . . . . . . . 26
6.2.1. STARTTLS Command . . . . . . . . . . . . . . . . . . 27 6.2.1. STARTTLS Command . . . . . . . . . . . . . . . . . . 27
6.2.2. AUTHENTICATE Command . . . . . . . . . . . . . . . . 28 6.2.2. AUTHENTICATE Command . . . . . . . . . . . . . . . . 28
6.2.3. LOGIN Command . . . . . . . . . . . . . . . . . . . . 31 6.2.3. LOGIN Command . . . . . . . . . . . . . . . . . . . . 31
6.3. Client Commands - Authenticated State . . . . . . . . . . 31 6.3. Client Commands - Authenticated State . . . . . . . . . . 31
6.3.1. ENABLE Command . . . . . . . . . . . . . . . . . . . 32 6.3.1. ENABLE Command . . . . . . . . . . . . . . . . . . . 32
6.3.2. SELECT Command . . . . . . . . . . . . . . . . . . . 34 6.3.2. SELECT Command . . . . . . . . . . . . . . . . . . . 34
6.3.3. EXAMINE Command . . . . . . . . . . . . . . . . . . . 35 6.3.3. EXAMINE Command . . . . . . . . . . . . . . . . . . . 35
6.3.4. CREATE Command . . . . . . . . . . . . . . . . . . . 36 6.3.4. CREATE Command . . . . . . . . . . . . . . . . . . . 36
6.3.5. DELETE Command . . . . . . . . . . . . . . . . . . . 37 6.3.5. DELETE Command . . . . . . . . . . . . . . . . . . . 37
6.3.6. RENAME Command . . . . . . . . . . . . . . . . . . . 38 6.3.6. RENAME Command . . . . . . . . . . . . . . . . . . . 39
6.3.7. SUBSCRIBE Command . . . . . . . . . . . . . . . . . . 40 6.3.7. SUBSCRIBE Command . . . . . . . . . . . . . . . . . . 40
6.3.8. UNSUBSCRIBE Command . . . . . . . . . . . . . . . . . 41 6.3.8. UNSUBSCRIBE Command . . . . . . . . . . . . . . . . . 41
6.3.9. LIST Command . . . . . . . . . . . . . . . . . . . . 41 6.3.9. LIST Command . . . . . . . . . . . . . . . . . . . . 41
6.3.10. NAMESPACE Command . . . . . . . . . . . . . . . . . . 57 6.3.10. NAMESPACE Command . . . . . . . . . . . . . . . . . . 57
6.3.11. STATUS Command . . . . . . . . . . . . . . . . . . . 62 6.3.11. STATUS Command . . . . . . . . . . . . . . . . . . . 62
6.3.12. APPEND Command . . . . . . . . . . . . . . . . . . . 63 6.3.12. APPEND Command . . . . . . . . . . . . . . . . . . . 63
6.3.13. IDLE Command . . . . . . . . . . . . . . . . . . . . 66 6.3.13. IDLE Command . . . . . . . . . . . . . . . . . . . . 66
6.4. Client Commands - Selected State . . . . . . . . . . . . 68 6.4. Client Commands - Selected State . . . . . . . . . . . . 68
6.4.1. CLOSE Command . . . . . . . . . . . . . . . . . . . . 68 6.4.1. CLOSE Command . . . . . . . . . . . . . . . . . . . . 68
6.4.2. UNSELECT Command . . . . . . . . . . . . . . . . . . 68 6.4.2. UNSELECT Command . . . . . . . . . . . . . . . . . . 69
6.4.3. EXPUNGE Command . . . . . . . . . . . . . . . . . . . 69 6.4.3. EXPUNGE Command . . . . . . . . . . . . . . . . . . . 69
6.4.4. SEARCH Command . . . . . . . . . . . . . . . . . . . 69 6.4.4. SEARCH Command . . . . . . . . . . . . . . . . . . . 70
6.4.5. FETCH Command . . . . . . . . . . . . . . . . . . . . 75 6.4.5. FETCH Command . . . . . . . . . . . . . . . . . . . . 76
6.4.6. STORE Command . . . . . . . . . . . . . . . . . . . . 79 6.4.6. STORE Command . . . . . . . . . . . . . . . . . . . . 80
6.4.7. COPY Command . . . . . . . . . . . . . . . . . . . . 80 6.4.7. COPY Command . . . . . . . . . . . . . . . . . . . . 81
6.4.8. MOVE Command . . . . . . . . . . . . . . . . . . . . 81 6.4.8. MOVE Command . . . . . . . . . . . . . . . . . . . . 82
6.4.9. UID Command . . . . . . . . . . . . . . . . . . . . . 83 6.4.9. UID Command . . . . . . . . . . . . . . . . . . . . . 84
6.5. Client Commands - Experimental/Expansion . . . . . . . . 85 6.5. Client Commands - Experimental/Expansion . . . . . . . . 85
6.5.1. X<atom> Command . . . . . . . . . . . . . . . . . . . 85 6.5.1. X<atom> Command . . . . . . . . . . . . . . . . . . . 85
7. Server Responses . . . . . . . . . . . . . . . . . . . . . . 85 7. Server Responses . . . . . . . . . . . . . . . . . . . . . . 86
7.1. Server Responses - Status Responses . . . . . . . . . . . 86 7.1. Server Responses - Status Responses . . . . . . . . . . . 87
7.1.1. OK Response . . . . . . . . . . . . . . . . . . . . . 94 7.1.1. OK Response . . . . . . . . . . . . . . . . . . . . . 95
7.1.2. NO Response . . . . . . . . . . . . . . . . . . . . . 94 7.1.2. NO Response . . . . . . . . . . . . . . . . . . . . . 95
7.1.3. BAD Response . . . . . . . . . . . . . . . . . . . . 95 7.1.3. BAD Response . . . . . . . . . . . . . . . . . . . . 96
7.1.4. PREAUTH Response . . . . . . . . . . . . . . . . . . 95 7.1.4. PREAUTH Response . . . . . . . . . . . . . . . . . . 96
7.1.5. BYE Response . . . . . . . . . . . . . . . . . . . . 95 7.1.5. BYE Response . . . . . . . . . . . . . . . . . . . . 97
7.2. Server Responses - Server and Mailbox Status . . . . . . 96 7.2. Server Responses - Server and Mailbox Status . . . . . . 97
7.2.1. The ENABLED Response . . . . . . . . . . . . . . . . 96 7.2.1. The ENABLED Response . . . . . . . . . . . . . . . . 97
7.2.2. CAPABILITY Response . . . . . . . . . . . . . . . . . 96 7.2.2. CAPABILITY Response . . . . . . . . . . . . . . . . . 98
7.2.3. LIST Response . . . . . . . . . . . . . . . . . . . . 97 7.2.3. LIST Response . . . . . . . . . . . . . . . . . . . . 99
7.2.4. NAMESPACE Response . . . . . . . . . . . . . . . . . 101 7.2.4. NAMESPACE Response . . . . . . . . . . . . . . . . . 102
7.2.5. STATUS Response . . . . . . . . . . . . . . . . . . . 101 7.2.5. STATUS Response . . . . . . . . . . . . . . . . . . . 102
7.2.6. ESEARCH Response . . . . . . . . . . . . . . . . . . 101 7.2.6. ESEARCH Response . . . . . . . . . . . . . . . . . . 103
7.2.7. FLAGS Response . . . . . . . . . . . . . . . . . . . 102 7.2.7. FLAGS Response . . . . . . . . . . . . . . . . . . . 103
7.3. Server Responses - Mailbox Size . . . . . . . . . . . . . 102 7.3. Server Responses - Mailbox Size . . . . . . . . . . . . . 104
7.3.1. EXISTS Response . . . . . . . . . . . . . . . . . . . 102 7.3.1. EXISTS Response . . . . . . . . . . . . . . . . . . . 104
7.4. Server Responses - Message Status . . . . . . . . . . . . 103 7.4. Server Responses - Message Status . . . . . . . . . . . . 104
7.4.1. EXPUNGE Response . . . . . . . . . . . . . . . . . . 103 7.4.1. EXPUNGE Response . . . . . . . . . . . . . . . . . . 104
7.4.2. FETCH Response . . . . . . . . . . . . . . . . . . . 104 7.4.2. FETCH Response . . . . . . . . . . . . . . . . . . . 105
7.5. Server Responses - Command Continuation Request . . . . . 109 7.5. Server Responses - Command Continuation Request . . . . . 111
8. Sample IMAP4rev2 connection . . . . . . . . . . . . . . . . . 110 8. Sample IMAP4rev2 connection . . . . . . . . . . . . . . . . . 111
9. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 111 9. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 112
10. Author's Note . . . . . . . . . . . . . . . . . . . . . . . . 128 10. Author's Note . . . . . . . . . . . . . . . . . . . . . . . . 129
11. Security Considerations . . . . . . . . . . . . . . . . . . . 128 11. Security Considerations . . . . . . . . . . . . . . . . . . . 129
11.1. STARTTLS Security Considerations . . . . . . . . . . . . 128 11.1. STARTTLS Security Considerations . . . . . . . . . . . . 129
11.2. COPYUID and APPENDUID response codes . . . . . . . . . . 129 11.2. COPYUID and APPENDUID response codes . . . . . . . . . . 130
11.3. LIST command and Other Users' namespace . . . . . . . . 129 11.3. LIST command and Other Users' namespace . . . . . . . . 130
11.4. Other Security Considerations . . . . . . . . . . . . . 129 11.4. Other Security Considerations . . . . . . . . . . . . . 130
12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 130 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 131
12.1. Updates to IMAP4 Capabilities registry . . . . . . . . . 130 12.1. Updates to IMAP4 Capabilities registry . . . . . . . . . 131
12.2. GSSAPI/SASL service name . . . . . . . . . . . . . . . . 131 12.2. GSSAPI/SASL service name . . . . . . . . . . . . . . . . 132
13. References . . . . . . . . . . . . . . . . . . . . . . . . . 131 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 132
13.1. Normative References . . . . . . . . . . . . . . . . . . 131 13.1. Normative References . . . . . . . . . . . . . . . . . . 132
13.2. Informative References (related protocols) . . . . . . . 134 13.2. Informative References (related protocols) . . . . . . . 135
13.3. Informative References (historical aspects of IMAP and 13.3. Informative References (historical aspects of IMAP and
related protocols) . . . . . . . . . . . . . . . . . . . 135 related protocols) . . . . . . . . . . . . . . . . . . . 136
Appendix A. Backward compatibility with IMAP4rev1 . . . . . . . 136 Appendix A. Backward compatibility with IMAP4rev1 . . . . . . . 137
A.1. Mailbox International Naming Convention for compatibility A.1. Mailbox International Naming Convention for compatibility
with IMAP4rev1 . . . . . . . . . . . . . . . . . . . . . 136 with IMAP4rev1 . . . . . . . . . . . . . . . . . . . . . 137
Appendix B. Backward compatibility with BINARY extension . . . . 138 Appendix B. Backward compatibility with BINARY extension . . . . 139
Appendix C. Changes from RFC 3501 / IMAP4rev1 . . . . . . . . . 138 Appendix C. Changes from RFC 3501 / IMAP4rev1 . . . . . . . . . 139
Appendix D. Acknowledgement . . . . . . . . . . . . . . . . . . 140 Appendix D. Acknowledgement . . . . . . . . . . . . . . . . . . 141
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 146 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 147
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 6, line 35 skipping to change at page 6, line 35
IMAP implementation recommendations document [IMAP-IMPLEMENTATION] in IMAP implementation recommendations document [IMAP-IMPLEMENTATION] in
conjunction with this document, to help understand the intricacies of conjunction with this document, to help understand the intricacies of
this protocol and how best to build an interoperable product. this protocol and how best to build an interoperable product.
IMAP4rev2 is designed to be upwards compatible from the [IMAP2] and IMAP4rev2 is designed to be upwards compatible from the [IMAP2] and
unpublished IMAP2bis protocols. IMAP4rev2 is largely compatible with unpublished IMAP2bis protocols. IMAP4rev2 is largely compatible with
the IMAP4rev1 protocol described in RFC 3501 and the IMAP4 protocol the IMAP4rev1 protocol described in RFC 3501 and the IMAP4 protocol
described in RFC 1730; the exception being in certain facilities described in RFC 1730; the exception being in certain facilities
added in RFC 1730 that proved problematic and were subsequently added in RFC 1730 that proved problematic and were subsequently
removed. In the course of the evolution of IMAP4rev2, some aspects removed. In the course of the evolution of IMAP4rev2, some aspects
in the earlier protocols have become obsolete. Obsolete commands, in the earlier protocols have become obsolete.
responses, and data formats which an IMAP4rev2 implementation can
encounter when used with an earlier implementation are described in Obsolete commands, responses, and data formats which an IMAP4rev2
[IMAP-OBSOLETE]. implementation can encounter when used with an earlier implementation
are described in [IMAP-OBSOLETE].
Other compatibility issues with IMAP2bis, the most common variant of Other compatibility issues with IMAP2bis, the most common variant of
the earlier protocol, are discussed in [IMAP-COMPAT]. A full the earlier protocol, are discussed in [IMAP-COMPAT]. A full
discussion of compatibility issues with rare (and presumed extinct) discussion of compatibility issues with rare (and presumed extinct)
variants of [IMAP2] is in [IMAP-HISTORICAL]; this document is variants of [IMAP2] is in [IMAP-HISTORICAL]; this document is
primarily of historical interest. primarily of historical interest.
IMAP was originally developed for the older [RFC-822] standard, and IMAP was originally developed for the older [RFC-822] standard, and
as a consequence several fetch items in IMAP incorporate "RFC822" in as a consequence several fetch items in IMAP incorporate "RFC822" in
their name. With the exception of RFC822.SIZE, there are more modern their name. With the exception of RFC822.SIZE, there are more modern
skipping to change at page 10, line 50 skipping to change at page 10, line 50
this case is a 32-bit representation of the creation date/time this case is a 32-bit representation of the creation date/time
of the mailbox. It is alright to use a constant such as 1, of the mailbox. It is alright to use a constant such as 1,
but only if it guaranteed that unique identifiers will never but only if it guaranteed that unique identifiers will never
be reused, even in the case of a mailbox being deleted (or be reused, even in the case of a mailbox being deleted (or
renamed) and a new mailbox by the same name created at some renamed) and a new mailbox by the same name created at some
future time. future time.
4. The combination of mailbox name, UIDVALIDITY, and UID must 4. The combination of mailbox name, UIDVALIDITY, and UID must
refer to a single immutable message on that server forever. refer to a single immutable message on that server forever.
In particular, the internal date, [RFC-5322] size, envelope, In particular, the internal date, [RFC-5322] size, envelope,
body structure, and message texts (RFC822, RFC822.HEADER, body structure, and message texts (all BODY[...] fetch data
RFC822.TEXT, and all BODY[...] fetch data items) must never items) must never change. This does not include message
change. This does not include message numbers, nor does it numbers, nor does it include attributes that can be set by a
include attributes that can be set by a STORE command (e.g., STORE command (e.g., FLAGS).
FLAGS).
2.3.1.2. Message Sequence Number Message Attribute 2.3.1.2. Message Sequence Number Message Attribute
A relative position from 1 to the number of messages in the mailbox. A relative position from 1 to the number of messages in the mailbox.
This position MUST be ordered by ascending unique identifier. As This position MUST be ordered by ascending unique identifier. As
each new message is added, it is assigned a message sequence number each new message is added, it is assigned a message sequence number
that is 1 higher than the number of messages in the mailbox before that is 1 higher than the number of messages in the mailbox before
that new message was added. that new message was added.
Message sequence numbers can be reassigned during the session. For Message sequence numbers can be reassigned during the session. For
skipping to change at page 11, line 41 skipping to change at page 11, line 40
messages which have greater UIDs. messages which have greater UIDs.
2.3.2. Flags Message Attribute 2.3.2. Flags Message Attribute
A list of zero or more named tokens associated with the message. A A list of zero or more named tokens associated with the message. A
flag is set by its addition to this list, and is cleared by its flag is set by its addition to this list, and is cleared by its
removal. There are two types of flags in IMAP4rev2. A flag of removal. There are two types of flags in IMAP4rev2. A flag of
either type can be permanent or session-only. either type can be permanent or session-only.
A system flag is a flag name that is pre-defined in this A system flag is a flag name that is pre-defined in this
specification and begin with "\". Certain system flags (\Deleted and specification and begin with "\".
\Seen) have special semantics described elsewhere in this document.
The currently-defined system flags are: Certain system flags (\Deleted and \Seen) have special semantics
described elsewhere in this document. The currently-defined system
flags are:
\Seen Message has been read \Seen Message has been read
\Answered Message has been answered \Answered Message has been answered
\Flagged Message is "flagged" for urgent/special attention \Flagged Message is "flagged" for urgent/special attention
\Deleted Message is "deleted" for removal by later EXPUNGE \Deleted Message is "deleted" for removal by later EXPUNGE
\Draft Message has not completed composition (marked as a draft). \Draft Message has not completed composition (marked as a draft).
\Recent This flag was in used in IMAP4rev1 and is now deprecated. \Recent This flag was in used in IMAP4rev1 and is now deprecated.
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.
skipping to change at page 12, line 26 skipping to change at page 12, line 28
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: APPEND, COPY, MOVE and SEARCH 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.
$Forwarded
$Forwarded
$MDNSent Message Disposition Notification [RFC8098] was generated $MDNSent Message Disposition Notification [RFC8098] was generated
and sent for this message. and sent for this message.
$MDNSent
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
the date and time in the [RFC-5322] header, but rather a date and the date and time in the [RFC-5322] header, but rather a date and
skipping to change at page 32, line 25 skipping to change at page 32, line 25
Several IMAP extensions allow the server to return unsolicited Several IMAP extensions allow the server to return unsolicited
responses specific to these extensions in certain circumstances. responses specific to these extensions in certain circumstances.
However, servers cannot send those unsolicited responses (with the However, servers cannot send those unsolicited responses (with the
exception of response codes (see Section 7.1) included in tagged or exception of response codes (see Section 7.1) included in tagged or
untagged OK/NO/BAD responses, which can always be sent) until they untagged OK/NO/BAD responses, which can always be sent) until they
know that the clients support such extensions and thus won't choke on know that the clients support such extensions and thus won't choke on
the extension response data. the extension response data.
The ENABLE command provides an explicit indication from the client The ENABLE command provides an explicit indication from the client
that it supports particular extensions. that it supports particular extensions. It is designed such that the
client can send a simple constant string with the extensions it
supports, and the server will enable the shared subset that both
support.
The ENABLE command takes a list of capability names, and requests the The ENABLE command takes a list of capability names, and requests the
server to enable the named extensions. Once enabled using ENABLE, server to enable the named extensions. Once enabled using ENABLE,
each extension remains active until the IMAP connection is closed. each extension remains active until the IMAP connection is closed.
For each argument, the server does the following: For each argument, the server does the following:
o If the argument is not an extension known to the server, the o If the argument is not an extension known to the server, the
server MUST ignore the argument. server MUST ignore the argument.
o If the argument is an extension known to the server, and it is not o If the argument is an extension known to the server, and it is not
skipping to change at page 34, line 37 skipping to change at page 34, line 46
FLAGS response for more detail. FLAGS response 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 for more detail.
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.
OK [UIDNEXT <n>] The next unique identifier value. Refer to OK [UIDNEXT <n>] The next unique identifier value. Refer to
Section 2.3.1.1 for more information. If this is missing, the Section 2.3.1.1 for more information.
client can not make any assumptions about the next unique
identifier value. OK [UIDNEXT <n>] If this is missing, the client can not make any
assumptions about the next unique identifier value.
OK [UIDVALIDITY <n>] The unique identifier validity value. Refer to OK [UIDVALIDITY <n>] The unique identifier validity value. Refer to
Section 2.3.1.1 for more information. If this is missing, the Section 2.3.1.1 for more information. If this is missing, the
server does not support unique identifiers. server does not support unique identifiers.
Only one mailbox can be selected at a time in a connection; Only one mailbox can be selected at a time in a connection;
simultaneous access to multiple mailboxes requires multiple simultaneous access to multiple mailboxes requires multiple
connections. The SELECT command automatically deselects any connections. The SELECT command automatically deselects any
currently selected mailbox before attempting the new selection. currently selected mailbox before attempting the new selection.
Consequently, if a mailbox is selected and a SELECT command that Consequently, if a mailbox is selected and a SELECT command that
skipping to change at page 42, line 49 skipping to change at page 42, line 49
hierarchy delimiter (or find out that the mailbox names are flat) hierarchy delimiter (or find out that the mailbox names are flat)
even when no mailboxes by that name currently exist. even when no mailboxes by that name currently exist.
In the extended syntax, any mailbox name arguments that are empty In the extended syntax, any mailbox name arguments that are empty
strings are ignored. There is no special meaning for empty mailbox strings are ignored. There is no special meaning for empty mailbox
names when the extended syntax is used. names when the extended syntax is used.
The reference and mailbox name arguments are interpreted into a The reference and mailbox name arguments are interpreted into a
canonical form that represents an unambiguous left-to-right canonical form that represents an unambiguous left-to-right
hierarchy. The returned mailbox names will be in the interpreted hierarchy. The returned mailbox names will be in the interpreted
form, that we call "canonical LIST pattern" later in this document. form,
To define the term "canonical LIST pattern" formally: it refers to
the canonical pattern constructed internally by the server from the that we call "canonical LIST pattern" later in this document. To
define the term "canonical LIST pattern" formally: it refers to the
canonical pattern constructed internally by the server from the
reference and mailbox name arguments. reference and mailbox name arguments.
Note: The interpretation of the reference argument is Note: The interpretation of the reference argument is
implementation-defined. It depends upon whether the server implementation-defined. It depends upon whether the server
implementation has a concept of the "current working directory" implementation has a concept of the "current working directory"
and leading "break out characters", which override the current and leading "break out characters", which override the current
working directory. working directory.
For example, on a server which exports a UNIX or NT filesystem, For example, on a server which exports a UNIX or NT filesystem,
the reference argument contains the current working directory, and the reference argument contains the current working directory, and
skipping to change at page 46, line 5 skipping to change at page 46, line 5
The selection options defined in this specification are as follows: The selection options defined in this specification are as follows:
SUBSCRIBED - causes the LIST command to list subscribed names, SUBSCRIBED - causes the LIST command to list subscribed names,
rather than the existing mailboxes. This will often be a subset rather than the existing mailboxes. This will often be a subset
of the actual mailboxes. It's also possible for this list to of the actual mailboxes. It's also possible for this list to
contain the names of mailboxes that don't exist. In any case, the contain the names of mailboxes that don't exist. In any case, the
list MUST include exactly those mailbox names that match the list MUST include exactly those mailbox names that match the
canonical list pattern and are subscribed to. canonical list pattern and are subscribed to.
SUBSCRIBED -
This option defines a mailbox attribute, "\Subscribed", that This option defines a mailbox attribute, "\Subscribed", that
indicates that a mailbox name is subscribed to. The "\Subscribed" indicates that a mailbox name is subscribed to. The "\Subscribed"
attribute MUST be supported and MUST be accurately computed when attribute MUST be supported and MUST be accurately computed when
the SUBSCRIBED selection option is specified. the SUBSCRIBED selection option is specified.
Note that the SUBSCRIBED selection option implies the SUBSCRIBED Note that the SUBSCRIBED selection option implies the SUBSCRIBED
return option (see below). return option (see below).
REMOTE - causes the LIST command to show remote mailboxes as well as REMOTE - causes the LIST command to show remote mailboxes as well as
local ones, as described in [RFC2193]. This option is intended to local ones, as described in [RFC2193]. This option is intended to
skipping to change at page 47, line 20 skipping to change at page 47, line 24
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.4, below, for details. This in [RFC3348]. See Section 6.3.9.4, below, for details.
option MUST be supported by all servers.
CHILDREN - This option MUST be supported by all servers.
6.3.9.3. General Principles for Returning LIST Responses 6.3.9.3. General Principles for Returning LIST Responses
This section outlines several principles that can be used by server This section outlines several principles that can be used by server
implementations of this document to decide whether a LIST response implementations of this document to decide whether a LIST response
should be returned, as well as how many responses and what kind of should be returned, as well as how many responses and what kind of
information they may contain. information they may contain.
1. At most one LIST response should be returned for each mailbox 1. At most one LIST response should be returned for each mailbox
name that matches the canonical LIST pattern. Server name that matches the canonical LIST pattern. Server
skipping to change at page 58, line 15 skipping to change at page 58, line 15
NO - Can't complete the command NO - Can't complete the command
BAD - arguments invalid BAD - arguments invalid
The NAMESPACE command causes a single ungagged NAMESPACE response to The NAMESPACE command causes a single ungagged NAMESPACE response to
be returned. The untagged NAMESPACE response contains the prefix and be returned. The untagged NAMESPACE response contains the prefix and
hierarchy delimiter to the server's Personal Namespace(s), Other hierarchy delimiter to the server's Personal Namespace(s), Other
Users' Namespace(s), and Shared Namespace(s) that the server wishes Users' Namespace(s), and Shared Namespace(s) that the server wishes
to expose. The response will contain a NIL for any namespace class to expose. The response will contain a NIL for any namespace class
that is not available. Namespace-Response-Extensions ABNF non that is not available. Namespace-Response-Extensions ABNF non
terminal is defined for extensibility and MAY be included in the terminal is defined for extensibility and MAY be included in the
response. Namespace-Response-Extensions which are not on the IETF response.
standards track, MUST be prefixed with an "X-".
Namespace-Response-Extensions which are not on the IETF standards
track, MUST be prefixed with an "X-".
Example 1: Example 1:
In this example a server supports a single personal namespace. No In this example a server supports a single personal namespace. No
leading prefix is used on personal mailboxes and "/" is the hierarchy leading prefix is used on personal mailboxes and "/" is the hierarchy
delimiter. delimiter.
C: A001 NAMESPACE C: A001 NAMESPACE
S: * NAMESPACE (("" "/")) NIL NIL S: * NAMESPACE (("" "/")) NIL NIL
S: A001 OK NAMESPACE command completed S: A001 OK NAMESPACE command completed
skipping to change at page 63, line 26 skipping to change at page 63, line 26
MESSAGES The number of messages in the mailbox. MESSAGES The number of messages in the mailbox.
UIDNEXT The next unique identifier value of the mailbox. Refer to UIDNEXT The next unique identifier value of the mailbox. Refer to
Section 2.3.1.1 for more information. Section 2.3.1.1 for more information.
UIDVALIDITY The unique identifier validity value of the mailbox. UIDVALIDITY The unique identifier validity value of the mailbox.
Refer to Section 2.3.1.1 for more information. Refer to Section 2.3.1.1 for more information.
UNSEEN The number of messages which do not have the \Seen flag set. UNSEEN The number of messages which do not have the \Seen flag set.
DELETED The number of messages which have the \Deleted flag set.
SIZE The total size of the mailbox in octets. This is not strictly SIZE The total size of the mailbox in octets. This is not strictly
required to be an exact value, but it MUST be equal to or greater required to be an exact value, but it MUST be equal to or greater
than the sum of the values of the RFC822.SIZE FETCH message data than the sum of the values of the RFC822.SIZE FETCH message data
items (see Section 6.4.5) of all messages in the mailbox. items (see Section 6.4.5) of all messages in the mailbox.
SIZE
Example: C: A042 STATUS blurdybloop (UIDNEXT MESSAGES) Example: C: A042 STATUS blurdybloop (UIDNEXT MESSAGES)
S: * STATUS blurdybloop (MESSAGES 231 UIDNEXT 44292) S: * STATUS blurdybloop (MESSAGES 231 UIDNEXT 44292)
S: A042 OK STATUS completed S: A042 OK STATUS completed
6.3.12. APPEND Command 6.3.12. APPEND Command
Arguments: mailbox name Arguments: mailbox name
OPTIONAL flag parenthesized list OPTIONAL flag parenthesized list
OPTIONAL date/time string OPTIONAL date/time string
message literal message literal
skipping to change at page 66, line 39 skipping to change at page 67, line 18
BAD - command unknown or arguments invalid BAD - command unknown or arguments invalid
Without the IDLE command a client requires to poll the server for Without the IDLE command a client requires to poll the server for
changes to the selected mailbox (new mail, deletions, flag changes). changes to the selected mailbox (new mail, deletions, flag changes).
It's often more desirable to have the server transmit updates to the It's often more desirable to have the server transmit updates to the
client in real time. This allows a user to see new mail immediately. client in real time. This allows a user to see new mail immediately.
The IDLE command allows a client to tell the server that it's ready The IDLE command allows a client to tell the server that it's ready
to accept such real-time updates. to accept such real-time updates.
The IDLE command is sent from the client to the server when the The IDLE command is sent from the client to the server when the
client is ready to accept unsolicited mailbox update messages. The client is ready to accept unsolicited mailbox
server requests a response to the IDLE command using the continuation
("+") response. The IDLE command remains active until the client update messages. The server requests a response to the IDLE command
responds to the continuation, and as long as an IDLE command is using the continuation ("+") response. The IDLE command remains
active, the server is now free to send untagged EXISTS, EXPUNGE, active until the client responds to the continuation, and as long as
FETCH, and other responses at any time. If the server choose to send an IDLE command is active, the server is now free to send untagged
unsolicited FETCH responses, they MUST include UID FETCH item. EXISTS, EXPUNGE, FETCH, and other responses at any time. If the
server choose to send unsolicited FETCH responses, they MUST include
UID FETCH item.
The IDLE command is terminated by the receipt of a "DONE" The IDLE command is terminated by the receipt of a "DONE"
continuation from the client; such response satisfies the server's continuation from the client; such response satisfies the server's
continuation request. At that point, the server MAY send any continuation request. At that point, the server MAY send any
remaining queued untagged responses and then MUST immediately send remaining queued untagged responses and then MUST immediately send
the tagged response to the IDLE command and prepare to process other the tagged response to the IDLE command and prepare to process other
commands. As for other commands, the processing of any new command commands. As for other commands, the processing of any new command
may cause the sending of unsolicited untagged responses, subject to may cause the sending of unsolicited untagged responses, subject to
the ambiguity limitations. The client MUST NOT send a command while the ambiguity limitations. The client MUST NOT send a command while
the server is waiting for the DONE, since the server will not be able the server is waiting for the DONE, since the server will not be able
skipping to change at page 70, line 14 skipping to change at page 70, line 44
criteria criteria
BAD - command unknown or arguments invalid BAD - command unknown or arguments invalid
The SEARCH command searches the mailbox for messages that match the The SEARCH command searches the mailbox for messages that match the
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).
arbitrary. Individual options may contain parameters enclosed in
parentheses (*). If an option has parameters, they consist of atoms The order of individual options is arbitrary. Individual options may
and/or strings and/or lists in a specific order. Any options not contain parameters enclosed in parentheses (*). If an option has
defined by extensions that the server supports must be rejected with parameters, they consist of atoms and/or strings and/or lists in a
a BAD response. specific order. Any options not defined by extensions that the
server supports must be rejected with a BAD response.
(*) - if an option has a mandatory parameter, which can always be (*) - if an option has a mandatory parameter, which can always be
represented as a number or a sequence-set, the option parameter does represented as a number or a sequence-set, the option parameter does
not need the enclosing (). See ABNF for more details. not need the enclosing (). See ABNF for more details.
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
skipping to change at page 71, line 16 skipping to change at page 71, line 47
include the ALL result option in the ESEARCH response; however, include the ALL result option in the ESEARCH response; however,
it still MUST send the ESEARCH response. it still MUST send the ESEARCH response.
COUNT Return number of the messages that satisfy the SEARCH COUNT Return number of the messages that satisfy the SEARCH
criteria. This result option MUST always be included in the criteria. This result option MUST always be included in the
ESEARCH response. ESEARCH response.
Note: future extensions to this document can allow servers to return Note: future extensions to this document can allow servers to return
multiple ESEARCH responses for a single extended SEARCH command. multiple ESEARCH responses for a single extended SEARCH command.
However all options specified above MUST result in a single ESEARCH However all options specified above MUST result in a single ESEARCH
response. These extensions will have to describe how results from response.
multiple ESEARCH responses are to be amalgamated.
These extensions will have to describe how results from multiple
ESEARCH responses are to be amalgamated.
Searching criteria consist of one or more search keys. Searching criteria consist of one or more search keys.
When multiple keys are specified, the result is the intersection (AND When multiple keys are specified, the result is the intersection (AND
function) of all the messages that match those keys. For example, function) of all the messages that match those keys. For example,
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 that were placed in the mailbox since deleted messages from Smith that were placed in the mailbox since
February 1, 1994. A search key can also be a parenthesized list of February 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). one or 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]. It indicates the [CHARSET] of
the strings that appear in the search criteria. [MIME-IMB] content the strings that appear in the search criteria. [MIME-IMB] content
transfer encodings, and [MIME-HDRS] strings in [RFC-5322]/[MIME-IMB] transfer encodings, and [MIME-HDRS] strings in [RFC-5322]/[MIME-IMB]
headers, MUST be decoded before comparing text. US-ASCII and UTF-8 headers, MUST be decoded before comparing text. Servers MUST support
charsets MUST be supported; other [CHARSET]s MAY be supported. If US-ASCII and UTF-8 charsets; other [CHARSET]s MAY be supported.
"CHARSET" is not provided, an IMAP4rev2 server MUST assume UTF-8. Clients SHOULD use UTF-8. Note that if "CHARSET" is not provided
IMAP4rev2 server MUST assume UTF-8, so selecting CHARSET UTF-8 is
redundant. It is permitted for improved 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
that the empty string is a substring; this is useful when doing a that the empty string is a substring; this is useful when doing a
HEADER search in order to test for a header field presence in the HEADER search in order to test for a header field presence in the
message. message.
The defined search keys are as follows. Refer to the Formal Syntax The defined search keys are as follows. Refer to the Formal Syntax
section for the precise syntactic definitions of the arguments. section for the precise syntactic definitions of the arguments.
<sequence set>
<sequence set> Messages with message sequence numbers corresponding <sequence set> Messages with message sequence numbers corresponding
to the specified message sequence number set. to the specified message sequence number set.
ALL All messages in the mailbox; the default initial key for ANDing. ALL All messages in the mailbox; the default initial key for ANDing.
ANSWERED Messages with the \Answered flag set. ANSWERED Messages with the \Answered flag set.
BCC <string> Messages that contain the specified string in the BCC <string> Messages that contain the specified string in the
envelope structure's BCC field. envelope structure's BCC field.
skipping to change at page 72, line 42 skipping to change at page 73, line 32
FLAGGED Messages with the \Flagged flag set. FLAGGED Messages with the \Flagged flag set.
FROM <string> Messages that contain the specified string in the FROM <string> Messages that contain the specified string in the
envelope structure's FROM field. envelope structure's FROM field.
HEADER <field-name> <string> Messages that have a header with the HEADER <field-name> <string> Messages that have a header with the
specified field-name (as defined in [RFC-5322]) and that contains specified field-name (as defined in [RFC-5322]) and that contains
the specified string in the text of the header (what comes after the specified string in the text of the header (what comes after
the colon). If the string to search is zero-length, this matches the colon). If the string to search is zero-length, this matches
all messages that have a header line with the specified field-name all messages that have a header line with the specified field-name
regardless of the contents. regardless of the contents. Servers should use substring search
for this SEARCH item, as clients can use it for automatic
processing not initiated by end users. For example this can be
used for searching for Message-ID or Content-Type header field
values that need to be exact, or for searches in header fields
that the IMAP server might not know anything about.
KEYWORD <flag> Messages with the specified keyword flag set. KEYWORD <flag> Messages with the specified keyword flag set.
LARGER <n> Messages with an [RFC-5322] size larger than the LARGER <n> Messages with an [RFC-5322] size larger than the
specified number of octets. specified number of octets.
NEW [[Fix this]] Messages that have the \Recent flag set but not the
\Seen flag. This is functionally equivalent to "(RECENT UNSEEN)".
NOT <search-key> Messages that do not match the specified search NOT <search-key> Messages that do not match the specified search
key. key.
ON <date> Messages whose internal date (disregarding time and ON <date> Messages whose internal date (disregarding time and
timezone) is within the specified date. timezone) is within the specified date.
OR <search-key1> <search-key2> Messages that match either search OR <search-key1> <search-key2> Messages that match either search
key. key.
SEEN Messages that have the \Seen flag set. SEEN Messages that have the \Seen flag set.
skipping to change at page 78, line 42 skipping to change at page 79, line 38
the [RFC-5322] header and [MIME-IMB] headers. the [RFC-5322] header and [MIME-IMB] headers.
ENVELOPE The envelope structure of the message. This is computed by ENVELOPE The envelope structure of the message. This is computed by
the server by parsing the [RFC-5322] header into the component the server by parsing the [RFC-5322] header into the component
parts, defaulting various fields as necessary. parts, defaulting various fields as necessary.
FLAGS The flags that are set for this message. FLAGS The flags that are set for this message.
INTERNALDATE The internal date of the message. INTERNALDATE The internal date of the message.
RFC822 Functionally equivalent to BODY[], differing in the syntax of
the resulting untagged FETCH data (RFC822 is returned). This
FETCH item is deprecated and will be removed in the next revision
of this document.
RFC822.HEADER Functionally equivalent to BODY.PEEK[HEADER],
differing in the syntax of the resulting untagged FETCH data
(RFC822.HEADER is returned). This FETCH item is deprecated and
will be removed in the next revision of this document.
RFC822.SIZE The [RFC-5322] size of the message. RFC822.SIZE The [RFC-5322] size of the message.
RFC822.TEXT Functionally equivalent to BODY[TEXT], differing in the
syntax of the resulting untagged FETCH data (RFC822.TEXT is
returned). This FETCH item is deprecated and will be removed in
the next revision of this document.
UID The unique identifier for the message. UID The unique identifier for the message.
Example: C: A654 FETCH 2:4 (FLAGS BODY[HEADER.FIELDS (DATE FROM)]) Example: C: A654 FETCH 2:4 (FLAGS BODY[HEADER.FIELDS (DATE FROM)])
S: * 2 FETCH .... S: * 2 FETCH ....
S: * 3 FETCH .... S: * 3 FETCH ....
S: * 4 FETCH .... S: * 4 FETCH ....
S: A654 OK FETCH completed S: A654 OK FETCH completed
6.4.6. STORE Command 6.4.6. STORE Command
skipping to change at page 87, line 12 skipping to change at page 87, line 44
Status responses MAY include an OPTIONAL "response code". A response Status responses MAY include an OPTIONAL "response code". A response
code consists of data inside square brackets in the form of an atom, code consists of data inside square brackets in the form of an atom,
possibly followed by a space and arguments. The response code possibly followed by a space and arguments. The response code
contains additional information or status codes for client software contains additional information or status codes for client software
beyond the OK/NO/BAD condition, and are defined when there is a beyond the OK/NO/BAD condition, and are defined when there is a
specific action that a client can take based upon the additional specific action that a client can take based upon the additional
information. information.
The currently defined response codes are: The currently defined response codes are:
ALERT The human-readable text contains a special alert that MUST be ALERT
presented to the user in a fashion that calls the user's attention
to the message.
ALREADYEXISTS The human-readable text contains a special alert that MUST be
presented to the user in a fashion that calls the user's
attention to the message.
ALREADYEXISTS
The operation attempts to create something that already exists, The operation attempts to create something that already exists,
such as when the CREATE or RENAME directories attempt to create such as when the CREATE or RENAME directories attempt to create
a mailbox and there is already one of that name. a mailbox and there is already one of that name.
C: o RENAME this that C: o RENAME this that
S: o NO [ALREADYEXISTS] Mailbox "that" already exists S: o NO [ALREADYEXISTS] Mailbox "that" already exists
APPENDUID APPENDUID
Followed by the UIDVALIDITY of the destination mailbox and the Followed by the UIDVALIDITY of the destination mailbox and the
skipping to change at page 88, line 22 skipping to change at page 89, line 8
user" and "bad password". user" and "bad password".
This is the same as not sending any response code, except that This is the same as not sending any response code, except that
when a client sees AUTHENTICATIONFAILED, it knows that the when a client sees AUTHENTICATIONFAILED, it knows that the
problem wasn't, e.g., UNAVAILABLE, so there's no point in problem wasn't, e.g., UNAVAILABLE, so there's no point in
trying the same login/password again later. trying the same login/password again later.
C: b LOGIN "fred" "foo" C: b LOGIN "fred" "foo"
S: b NO [AUTHENTICATIONFAILED] Authentication failed S: b NO [AUTHENTICATIONFAILED] Authentication failed
AUTHORIZATIONFAILED Authentication succeeded in using the AUTHORIZATIONFAILED
authentication identity, but the server cannot or will not allow
the authentication identity to act as the requested authorization
identity. This is only applicable when the authentication and
authorization identities are different. C: c1 AUTHENTICATE PLAIN
[...]
S: c1 NO [AUTHORIZATIONFAILED] No such authorization-ID
C: c2 AUTHENTICATE PLAIN
[...]
S: c2 NO [AUTHORIZATIONFAILED] Authenticator is not an admin
BADCHARSET Optionally followed by a parenthesized list of charsets. Authentication succeeded in using the authentication identity,
A SEARCH failed because the given charset is not supported by this but the server cannot or will not allow the authentication
implementation. If the optional list of charsets is given, this identity to act as the requested authorization identity. This
lists the charsets that are supported by this implementation. is only applicable when the authentication and authorization
identities are different.
C: c1 AUTHENTICATE PLAIN
[...]
S: c1 NO [AUTHORIZATIONFAILED] No such authorization-ID
C: c2 AUTHENTICATE PLAIN
[...]
S: c2 NO [AUTHORIZATIONFAILED] Authenticator is not an admin
BADCHARSET
Optionally followed by a parenthesized list of charsets. A
SEARCH failed because the given charset is not supported by
this implementation. If the optional list of charsets is
given, this lists the charsets that are supported by this
implementation.
CANNOT CANNOT
The operation violates some invariant of the server and can The operation violates some invariant of the server and can
never succeed. never succeed.
C: l create "///////" C: l create "///////"
S: l NO [CANNOT] Adjacent slashes are not supported S: l NO [CANNOT] Adjacent slashes are not supported
CAPABILITY Followed by a list of capabilities. This can appear in CAPABILITY
the initial OK or PREAUTH response to transmit an initial
capabilities list. It can also appear in tagged responses to
LOGIN or AUTHENTICATE commands. This makes it unnecessary for a
client to send a separate CAPABILITY command if it recognizes this
response.
CLIENTBUG Followed by a list of capabilities. This can appear in the
initial OK or PREAUTH response to transmit an initial
capabilities list. It can also appear in tagged responses to
LOGIN or AUTHENTICATE commands. This makes it unnecessary for
a client to send a separate CAPABILITY command if it recognizes
this response.
CLIENTBUG
The server has detected a client bug. This can accompany all The server has detected a client bug. This can accompany all
of OK, NO, and BAD, depending on what the client bug is. of OK, NO, and BAD, depending on what the client bug is.
C: k1 select "/archive/projects/experiment-iv" C: k1 select "/archive/projects/experiment-iv"
[...] [...]
S: k1 OK [READ-ONLY] Done S: k1 OK [READ-ONLY] Done
C: k2 status "/archive/projects/experiment-iv" (messages) C: k2 status "/archive/projects/experiment-iv" (messages)
[...] [...]
S: k2 OK [CLIENTBUG] Done S: k2 OK [CLIENTBUG] Done
skipping to change at page 90, line 47 skipping to change at page 91, line 45
C: d login "fred" "foo" C: d login "fred" "foo"
S: d NO [EXPIRED] That password isn't valid any more S: d NO [EXPIRED] That password isn't valid any more
EXPUNGEISSUED EXPUNGEISSUED
Someone else has issued an EXPUNGE for the same mailbox. The Someone else has issued an EXPUNGE for the same mailbox. The
client may want to issue NOOP soon. [IMAP-MULTIACCESS] client may want to issue NOOP soon. [IMAP-MULTIACCESS]
discusses this subject in depth. discusses this subject in depth.
C: h search from fred@example.com C: h search from fred@example.com
S: * SEARCH 1 2 3 5 8 13 21 42 S: * ESEARCH (TAG "h") ALL 1:3,5,8,13,21,42
S: h OK [EXPUNGEISSUED] Search completed S: h OK [EXPUNGEISSUED] Search completed
INUSE INUSE
An operation has not been carried out because it involves An operation has not been carried out because it involves
sawing off a branch someone else is sitting on. Someone else sawing off a branch someone else is sitting on. Someone else
may be holding an exclusive lock needed for this operation, or may be holding an exclusive lock needed for this operation, or
the operation may involve deleting a resource someone else is the operation may involve deleting a resource someone else is
using, typically a mailbox. using, typically a mailbox.
The operation may succeed if the client tries again later. The operation may succeed if the client tries again later.
C: g delete "/archive/projects/experiment-iv" C: g delete "/archive/projects/experiment-iv"
S: g NO [INUSE] Mailbox in use S: g NO [INUSE] Mailbox in use
skipping to change at page 92, line 4 skipping to change at page 92, line 49
The user would be over quota after the operation. (The user The user would be over quota after the operation. (The user
may or may not be over quota already.) may or may not be over quota already.)
Note that if the server sends OVERQUOTA but doesn't support the Note that if the server sends OVERQUOTA but doesn't support the
IMAP QUOTA extension defined by [RFC2087], then there is a IMAP QUOTA extension defined by [RFC2087], then there is a
quota, but the client cannot find out what the quota is. quota, but the client cannot find out what the quota is.
C: n1 uid copy 1:* oldmail C: n1 uid copy 1:* oldmail
S: n1 NO [OVERQUOTA] Sorry S: n1 NO [OVERQUOTA] Sorry
C: n2 uid copy 1:* oldmail C: n2 uid copy 1:* oldmail
S: n2 OK [OVERQUOTA] You are now over your soft quota S: n2 OK [OVERQUOTA] You are now over your soft quota
PARSE The human-readable text represents an error in parsing the PARSE
[RFC-5322] header or [MIME-IMB] headers of a message in the
mailbox.
PERMANENTFLAGS Followed by a parenthesized list of flags, indicates The human-readable text represents an error in parsing the
which of the known flags the client can change permanently. Any [RFC-5322] header or [MIME-IMB] headers of a message in the
flags that are in the FLAGS untagged response, but not the mailbox.
PERMANENTFLAGS list, can not be set permanently. The
PERMANENTFLAGS list can also include the special flag \*, which PERMANENTFLAGS
indicates that it is possible to create new keywords by attempting
to store those keywords in the mailbox. If the client attempts to Followed by a parenthesized list of flags, indicates which of
STORE a flag that is not in the PERMANENTFLAGS list, the server the known flags the client can change permanently. Any flags
will either ignore the change or store the state change for the that are in the FLAGS untagged response, but not the
remainder of the current session only. PERMANENTFLAGS list, can not be set permanently. The
There is no need for a server that included the special flag \* to PERMANENTFLAGS list can also include the special flag \*, which
return a new PERMANENTFLAGS response code when a new keyword was indicates that it is possible to create new keywords by
successfully set on a message upon client request. However if the attempting to store those keywords in the mailbox. If the
server has a limit on the number of different keywords that can be client attempts to STORE a flag that is not in the
stored in a mailbox and that limit is reached, the server MUST PERMANENTFLAGS list, the server will either ignore the change
send a new PERMANENTFLAGS response code without the special flag or store the state change for the remainder of the current
\*. session only.
There is no need for a server that included the special flag \*
to return a new PERMANENTFLAGS response code when a new keyword
was successfully set on a message upon client request. However
if the server has a limit on the number of different keywords
that can be stored in a mailbox and that limit is reached, the
server MUST send a new PERMANENTFLAGS response code without the
special flag \*.
PRIVACYREQUIRED PRIVACYREQUIRED
The operation is not permitted due to a lack of privacy. If The operation is not permitted due to a lack of privacy. If
Transport Layer Security (TLS) is not in use, the client could Transport Layer Security (TLS) is not in use, the client could
try STARTTLS (see Section 6.2.1) and then repeat the operation. try STARTTLS (see Section 6.2.1) and then repeat the operation.
C: d login "fred" "foo" C: d login "fred" "foo"
S: d NO [PRIVACYREQUIRED] Connection offers no privacy S: d NO [PRIVACYREQUIRED] Connection offers no privacy
C: d select inbox C: d select inbox
S: d NO [PRIVACYREQUIRED] Connection offers no privacy S: d NO [PRIVACYREQUIRED] Connection offers no privacy
READ-ONLY The mailbox is selected read-only, or its access while READ-ONLY
selected has changed from read-write to read-only.
READ-WRITE The mailbox is selected read-write, or its access while The mailbox is selected read-only, or its access while selected
selected has changed from read-only to read-write. has changed from read-write to read-only.
READ-WRITE
The mailbox is selected read-write, or its access while
selected has changed from read-only to read-write.
SERVERBUG SERVERBUG
The server encountered a bug in itself or violated one of its The server encountered a bug in itself or violated one of its
own invariants. own invariants.
C: j select "/archive/projects/experiment-iv" C: j select "/archive/projects/experiment-iv"
S: j NO [SERVERBUG] This should not happen S: j NO [SERVERBUG] This should not happen
TRYCREATE An APPEND or COPY attempt is failing because the target TRYCREATE
mailbox does not exist (as opposed to some other reason). This is
a hint to the client that the operation can succeed if the mailbox
is first created by the CREATE command.
UIDNEXT Followed by a decimal number, indicates the next unique An APPEND or COPY attempt is failing because the target mailbox
identifier value. Refer to Section 2.3.1.1 for more information. does not exist (as opposed to some other reason). This is a
hint to the client that the operation can succeed if the
mailbox is first created by the CREATE command.
UIDNEXT
Followed by a decimal number, indicates the next unique
identifier value. Refer to Section 2.3.1.1 for more
information.
UIDNOTSTICKY UIDNOTSTICKY
The selected mailbox is supported by a mail store that does not The selected mailbox is supported by a mail store that does not
support persistent UIDs; that is, UIDVALIDITY will be different support persistent UIDs; that is, UIDVALIDITY will be different
each time the mailbox is selected. Consequently, APPEND or each time the mailbox is selected. Consequently, APPEND or
COPY to this mailbox will not return an APPENDUID or COPYUID COPY to this mailbox will not return an APPENDUID or COPYUID
response code. response code.
This response code is returned in an untagged NO response to This response code is returned in an untagged NO response to
the SELECT command. the SELECT command.
Note: servers SHOULD NOT have any UIDNOTSTICKY mail stores. Note: servers SHOULD NOT have any UIDNOTSTICKY mail stores.
This facility exists to support legacy mail stores in which This facility exists to support legacy mail stores in which
it is technically infeasible to support persistent UIDs. it is technically infeasible to support persistent UIDs.
This should be avoided when designing new mail stores. This should be avoided when designing new mail stores.
UIDVALIDITY Followed by a decimal number, indicates the unique UIDVALIDITY
identifier validity value. Refer to Section 2.3.1.1 for more
information. Followed by a decimal number, indicates the unique identifier
validity value. Refer to Section 2.3.1.1 for more information.
UNAVAILABLE UNAVAILABLE
Temporary failure because a subsystem is down. For example, an Temporary failure because a subsystem is down. For example, an
IMAP server that uses a Lightweight Directory Access Protocol IMAP server that uses a Lightweight Directory Access Protocol
(LDAP) or Radius server for authentication might use this (LDAP) or Radius server for authentication might use this
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
skipping to change at page 101, line 21 skipping to change at page 102, line 35
Contents: the prefix and hierarchy delimiter to the server's Contents: the prefix and hierarchy delimiter to the server's
Personal Namespace(s), Other Users' Namespace(s), and Personal Namespace(s), Other Users' Namespace(s), and
Shared Namespace(s) Shared Namespace(s)
The NAMESPACE response occurs as a result of a NAMESPACE command. It The NAMESPACE response occurs as a result of a NAMESPACE command. It
contains the prefix and hierarchy delimiter to the server's Personal contains the prefix and hierarchy delimiter to the server's Personal
Namespace(s), Other Users' Namespace(s), and Shared Namespace(s) that Namespace(s), Other Users' Namespace(s), and Shared Namespace(s) that
the server wishes to expose. The response will contain a NIL for any the server wishes to expose. The response will contain a NIL for any
namespace class that is not available. Namespace-Response-Extensions namespace class that is not available. Namespace-Response-Extensions
ABNF non terminal is defined for extensibility and MAY be included in ABNF non terminal is defined for extensibility and MAY be included in
the response. Namespace-Response-Extensions which are not on the the response.
IETF standards track, MUST be prefixed with an "X-".
Namespace-Response-Extensions which are not on the IETF standards
track, MUST be prefixed with an "X-".
Example: S: * NAMESPACE (("" "/")) (("~" "/")) NIL Example: S: * NAMESPACE (("" "/")) (("~" "/")) NIL
7.2.5. STATUS Response 7.2.5. STATUS Response
Contents: name Contents: name
status parenthesized list status parenthesized list
The STATUS response occurs as a result of an STATUS command. It The STATUS response occurs as a result of an STATUS command. It
returns the mailbox name that matches the STATUS specification and returns the mailbox name that matches the STATUS specification and
skipping to change at page 106, line 23 skipping to change at page 107, line 43
Extension data follows the multipart subtype. Extension data Extension data follows the multipart subtype. Extension data
is never returned with the BODY fetch, but can be returned with is never returned with the BODY fetch, but can be returned with
a BODYSTRUCTURE fetch. Extension data, if present, MUST be in a BODYSTRUCTURE fetch. Extension data, if present, MUST be in
the defined order. The extension data of a multipart body part the defined order. The extension data of a multipart body part
are in the following order: are in the following order:
body parameter parenthesized list A parenthesized list of body parameter parenthesized list A parenthesized list of
attribute/value pairs [e.g., ("foo" "bar" "baz" "rag") where attribute/value pairs [e.g., ("foo" "bar" "baz" "rag") where
"bar" is the value of "foo", and "rag" is the value of "bar" is the value of "foo", and "rag" is the value of
"baz"] as defined in [MIME-IMB]. Servers SHOULD decode "baz"] as defined in [MIME-IMB].
body parameter parenthesized list Servers SHOULD decode
parameter value continuations as described in [RFC2231]. parameter value continuations as described in [RFC2231].
body disposition A parenthesized list, consisting of a body disposition A parenthesized list, consisting of a
disposition type string, followed by a parenthesized list of disposition type string, followed by a parenthesized list of
disposition attribute/value pairs as defined in disposition attribute/value pairs as defined in
[DISPOSITION]. Servers SHOULD decode parameter value [DISPOSITION]. Servers SHOULD decode parameter value
continuations as described in [RFC2231]. continuations as described in [RFC2231].
body language A string or parenthesized list giving the body body language A string or parenthesized list giving the body
language value as defined in [LANGUAGE-TAGS]. language value as defined in [LANGUAGE-TAGS].
skipping to change at page 109, line 28 skipping to change at page 110, line 49
this). this).
Note: [RFC-5322] requires that all messages have a valid Note: [RFC-5322] requires that all messages have a valid
From header. Therefore, the from, sender, and reply-to From header. Therefore, the from, sender, and reply-to
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 Equivalent to BODY[].
RFC822.HEADER Equivalent to BODY[HEADER]. Note that this did not
result in \Seen being set, because RFC822.HEADER response data
occurs as a result of a FETCH of RFC822.HEADER. BODY[HEADER]
response data occurs as a result of a FETCH of BODY[HEADER] (which
sets \Seen) or BODY.PEEK[HEADER] (which does not set \Seen).
RFC822.SIZE A number expressing the [RFC-5322] size of the message. RFC822.SIZE A number expressing the [RFC-5322] size of the message.
RFC822.TEXT Equivalent to BODY[TEXT].
UID A number expressing the unique identifier of the message. UID A number expressing the unique identifier of the message.
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.
skipping to change at page 117, line 28 skipping to change at page 118, line 28
fetch = "FETCH" SP sequence-set SP ("ALL" / "FULL" / "FAST" / fetch = "FETCH" SP sequence-set SP ("ALL" / "FULL" / "FAST" /
fetch-att / "(" fetch-att *(SP fetch-att) ")") fetch-att / "(" fetch-att *(SP fetch-att) ")")
fetch-att = "ENVELOPE" / "FLAGS" / "INTERNALDATE" / fetch-att = "ENVELOPE" / "FLAGS" / "INTERNALDATE" /
"RFC822.SIZE" / "RFC822.SIZE" /
"BODY" ["STRUCTURE"] / "UID" / "BODY" ["STRUCTURE"] / "UID" /
"BODY" section [partial] / "BODY" section [partial] /
"BODY.PEEK" section [partial] / "BODY.PEEK" section [partial] /
"BINARY" [".PEEK"] section-binary [partial] / "BINARY" [".PEEK"] section-binary [partial] /
"BINARY.SIZE" section-binary / "BINARY.SIZE" section-binary
fetch-att-deprecated
fetch-att-deprecated = "RFC822" [".HEADER" / .TEXT"]
flag = "\Answered" / "\Flagged" / "\Deleted" / flag = "\Answered" / "\Flagged" / "\Deleted" /
"\Seen" / "\Draft" / flag-keyword / flag-extension "\Seen" / "\Draft" / flag-keyword / flag-extension
; Does not include "\Recent" ; Does not include "\Recent"
flag-extension = "\" atom flag-extension = "\" atom
; Future expansion. Client implementations ; Future expansion. Client implementations
; 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" / 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) ")"
idle = "IDLE" CRLF "DONE" idle = "IDLE" CRLF "DONE"
initial-resp = (base64 / "=") initial-resp = (base64 / "=")
; "initial response" defined in ; "initial response" defined in
skipping to change at page 121, line 10 skipping to change at page 122, line 9
move = "MOVE" SP sequence-set SP mailbox move = "MOVE" SP sequence-set SP mailbox
msg-att = "(" (msg-att-dynamic / msg-att-static) msg-att = "(" (msg-att-dynamic / msg-att-static)
*(SP (msg-att-dynamic / msg-att-static)) ")" *(SP (msg-att-dynamic / msg-att-static)) ")"
msg-att-dynamic = "FLAGS" SP "(" [flag-fetch *(SP flag-fetch)] ")" msg-att-dynamic = "FLAGS" SP "(" [flag-fetch *(SP flag-fetch)] ")"
; MAY change for a message ; MAY change for a message
msg-att-static = "ENVELOPE" SP envelope / "INTERNALDATE" SP date-time / msg-att-static = "ENVELOPE" SP envelope / "INTERNALDATE" SP date-time /
"RFC822" [".HEADER" / ".TEXT"] SP nstring /
"RFC822.SIZE" SP number / "RFC822.SIZE" SP number /
"BODY" ["STRUCTURE"] SP body / "BODY" ["STRUCTURE"] SP body /
"BODY" section ["<" number ">"] SP nstring / "BODY" section ["<" number ">"] SP nstring /
"BINARY" section-binary SP (nstring / literal8) / "BINARY" section-binary SP (nstring / literal8) /
"BINARY.SIZE" section-binary SP number / "BINARY.SIZE" section-binary SP number /
"UID" SP uniqueid "UID" SP uniqueid
; MUST NOT change for a message ; MUST NOT change for a message
Namespace = nil / "(" 1*Namespace-Descr ")" Namespace = nil / "(" 1*Namespace-Descr ")"
skipping to change at page 124, line 4 skipping to change at page 124, line 49
"CLOSED" / "CLOSED" /
"UNKNOWN-CTE" / "UNKNOWN-CTE" /
atom [SP 1*<any TEXT-CHAR except "]">] atom [SP 1*<any TEXT-CHAR except "]">]
return-option = "SUBSCRIBED" / "CHILDREN" / option-extension return-option = "SUBSCRIBED" / "CHILDREN" / option-extension
search = "SEARCH" [search-return-opts] search = "SEARCH" [search-return-opts]
SP search-program SP search-program
search-correlator = SP "(" "TAG" SP tag-string ")" search-correlator = SP "(" "TAG" SP tag-string ")"
search-key = "ALL" / "ANSWERED" / "BCC" SP astring / search-key = "ALL" / "ANSWERED" / "BCC" SP astring /
"BEFORE" SP date / "BODY" SP astring / "BEFORE" SP date / "BODY" SP astring /
"CC" SP astring / "DELETED" / "FLAGGED" / "CC" SP astring / "DELETED" / "FLAGGED" /
"FROM" SP astring / "KEYWORD" SP flag-keyword / "FROM" SP astring / "KEYWORD" SP flag-keyword /
"NEW" / "OLD" / "ON" SP date / "SEEN" / "ON" SP date / "SEEN" /
"SINCE" SP date / "SUBJECT" SP astring / "SINCE" SP date / "SUBJECT" SP astring /
"TEXT" SP astring / "TO" SP astring / "TEXT" SP astring / "TO" SP astring /
"UNANSWERED" / "UNDELETED" / "UNFLAGGED" / "UNANSWERED" / "UNDELETED" / "UNFLAGGED" /
"UNKEYWORD" SP flag-keyword / "UNSEEN" / "UNKEYWORD" SP flag-keyword / "UNSEEN" /
; Above this line were in [IMAP2] ; Above this line were in [IMAP2]
"DRAFT" / "HEADER" SP header-fld-name SP astring / "DRAFT" / "HEADER" SP header-fld-name SP astring /
"LARGER" SP number / "NOT" SP search-key / "LARGER" SP number / "NOT" SP search-key /
"OR" SP search-key SP search-key / "OR" SP search-key SP search-key /
"SENTBEFORE" SP date / "SENTON" SP date / "SENTBEFORE" SP date / "SENTON" SP date /
"SENTSINCE" SP date / "SMALLER" SP number / "SENTSINCE" SP date / "SMALLER" SP number /
skipping to change at page 126, line 28 skipping to change at page 127, line 25
; equivalent to 2,4,5,6,7,9,12,13,14,15 ; equivalent to 2,4,5,6,7,9,12,13,14,15
; Example: a message sequence number set of *:4,5:7 ; Example: a message sequence number set of *:4,5:7
; for a mailbox with 10 messages is equivalent to ; for a mailbox with 10 messages is equivalent to
; 10,9,8,7,6,5,4,5,6,7 and MAY be reordered and ; 10,9,8,7,6,5,4,5,6,7 and MAY be reordered and
; overlap coalesced to be 4,5,6,7,8,9,10. ; overlap coalesced to be 4,5,6,7,8,9,10.
status = "STATUS" SP mailbox SP status = "STATUS" SP mailbox SP
"(" status-att *(SP status-att) ")" "(" status-att *(SP status-att) ")"
status-att = "MESSAGES" / "UIDNEXT" / "UIDVALIDITY" / status-att = "MESSAGES" / "UIDNEXT" / "UIDVALIDITY" /
"UNSEEN" / "SIZE" "UNSEEN" / "DELETED" / "SIZE"
status-att-val = ("MESSAGES" SP number) / status-att-val = ("MESSAGES" SP number) /
("UIDNEXT" SP nz-number) / ("UIDNEXT" SP nz-number) /
("UIDVALIDITY" SP nz-number) / ("UIDVALIDITY" SP nz-number) /
("UNSEEN" SP number) / ("UNSEEN" SP number) /
("DELETED" SP number) /
("SIZE" SP number64) ("SIZE" SP number64)
; Extensions to the STATUS responses ; Extensions to the STATUS responses
; should extend this production. ; should extend this production.
; Extensions should use the generic ; Extensions should use the generic
; syntax defined by tagged-ext. ; syntax defined by tagged-ext.
status-att-list = status-att-val *(SP status-att-val) status-att-list = status-att-val *(SP status-att-val)
store = "STORE" SP sequence-set SP store-att-flags store = "STORE" SP sequence-set SP store-att-flags
skipping to change at page 128, line 43 skipping to change at page 129, line 39
IMAP4rev2 protocol transactions, including electronic mail data, are IMAP4rev2 protocol transactions, including electronic mail data, are
sent in the clear over the network unless protection from snooping is sent in the clear over the network unless protection from snooping is
negotiated. This can be accomplished either by the use of IMAPS negotiated. This can be accomplished either by the use of IMAPS
service, STARTTLS command, negotiated privacy protection in the service, STARTTLS command, negotiated privacy protection in the
AUTHENTICATE command, or some other protection mechanism. AUTHENTICATE command, or some other protection mechanism.
11.1. STARTTLS Security Considerations 11.1. STARTTLS Security Considerations
IMAP client and server implementations MUST comply with relevant TLS IMAP client and server implementations MUST comply with relevant TLS
recommendations from [RFC8314]. Additionally, when using TLS 1.2, recommendations from [RFC8314].
IMAP implementations MUST implement
Additionally, when using TLS 1.2, IMAP implementations MUST implement
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 cipher suite, and SHOULD TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 cipher suite, and SHOULD
implement the TLS_RSA_WITH_AES_128_CBC_SHA [TLS] cipher suite. This implement the TLS_RSA_WITH_AES_128_CBC_SHA [TLS] cipher suite. This
is important as it assures that any two compliant implementations can is important as it assures that any two compliant implementations can
be configured to interoperate. Other TLS cipher suites recommended be configured to interoperate. Other TLS cipher suites recommended
in RFC 7525 are RECOMMENDED: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, in RFC 7525 are RECOMMENDED: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 and TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 and
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384. All other cipher suites are TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384. All other cipher suites are
OPTIONAL. Note that this is a change from section 2.1 of [IMAP-TLS]. OPTIONAL. Note that this is a change from section 2.1 of [IMAP-TLS].
During the [TLS] negotiation, the client MUST check its understanding During the [TLS] negotiation, the client MUST check its understanding
skipping to change at page 136, line 28 skipping to change at page 137, line 28
Appendix A. Backward compatibility with IMAP4rev1 Appendix A. Backward compatibility with IMAP4rev1
An implementation that wants to remain compatible with IMAP4rev1 can An implementation that wants to remain compatible with IMAP4rev1 can
advertise both IMAP4rev1 and IMAP4rev2 in its CAPABILITY response/ advertise both IMAP4rev1 and IMAP4rev2 in its CAPABILITY response/
response code. While some IMAP4rev1 responses were removed in response code. While some IMAP4rev1 responses were removed in
IMAP4rev2, their presence will not break IMAP4rev2-only clients. IMAP4rev2, their presence will not break IMAP4rev2-only clients.
If both IMAP4rev1 and IMAP4rev2 are advertised, an IMAP client that If both IMAP4rev1 and IMAP4rev2 are advertised, an IMAP client that
wants to use IMAP4rev2 MUST issue an "ENABLE IMAP4rev2" command. wants to use IMAP4rev2 MUST issue an "ENABLE IMAP4rev2" command.
Servers advertising both IMAP4rev1 and IMAP4rev2 SHOULD NOT generate Servers advertising both IMAP4rev1 and IMAP4rev2 SHOULD NOT
UTF-8 quoted strings unless the client has issued "ENABLE IMAP4rev2".
Consider implementation of mechanisms described or referenced in generate UTF-8 quoted strings unless the client has issued "ENABLE
[IMAP-UTF-8] to achieve this goal. IMAP4rev2". Consider implementation of mechanisms described or
referenced in [IMAP-UTF-8] to achieve this goal.
Servers advertising both IMAP4rev1 and IMAP4rev2, and clients Servers advertising both IMAP4rev1 and IMAP4rev2, and clients
intending to be compatible with IMAP4rev1 servers MUST be compatible intending to be compatible with IMAP4rev1 servers MUST be compatible
with the international mailbox naming convention described in the with the international mailbox naming convention described in the
following subsection. following subsection.
A.1. Mailbox International Naming Convention for compatibility with A.1. Mailbox International Naming Convention for compatibility with
IMAP4rev1 IMAP4rev1
Support for the Mailbox International Naming Convention described in Support for the Mailbox International Naming Convention described in
skipping to change at page 139, line 12 skipping to change at page 140, line 15
5. Update recommendations on TLS ciphers to match UTA WG work (as 5. Update recommendations on TLS ciphers to match UTA WG work (as
per RFC 8314, RFC 7525 and RFC 7817) - done. per RFC 8314, RFC 7525 and RFC 7817) - done.
6. Possibly fold in the following extensions/RFC: Base LIST- 6. Possibly fold in the following extensions/RFC: Base LIST-
EXTENDED syntax plus deprecate LSUB (replace it with LIST EXTENDED syntax plus deprecate LSUB (replace it with LIST
\Subscribed) minus the requirement to support multiple list \Subscribed) minus the requirement to support multiple list
patterns, STATUS-in-LIST, SEARCHRES, BINARY (only the FETCH patterns, STATUS-in-LIST, SEARCHRES, BINARY (only the FETCH
changes on leaf body part and make APPEND related ones optional. changes on leaf body part and make APPEND related ones optional.
See the mailing list discussion) - done. See the mailing list discussion) - done.
7. Add STATUS SIZE (total mailbox size) - done Add STATUS DELETED 6.
(number of messages with \Deleted flag set)? Or DELETEDSIZE?
8. Deprecate features: What should we do with NEW search key (which 7. Add STATUS SIZE (total mailbox size) - done. Add STATUS DELETED
implies RECENT): deprecate it or just redefine it to ignore (number of messages with \Deleted flag set) - done.
RECENT state?
9. Drop UTF-7, all mailboxes are always in UTF-8 - done. 8. Drop UTF-7, all mailboxes are always in UTF-8 - done.
10. Revise IANA registration of IMAP extensions and give advice on 9. Revise IANA registration of IMAP extensions and give advice on
use of "X-" convention. use of "X-" convention.
11. Allow word-based searching (as per Chris Newman)? Need to 10. Allow word-based searching (as per Chris Newman)? Need to
discuss header field search, where exact/substring match is discuss header field search, where exact/substring match is
still required for interoperability. still required for interoperability.
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) and MOVE (RFC 6851) extensions. Also folded RFC 5530 and 4959) and MOVE (RFC 6851) extensions. Also folded RFC 5530 and
FETCH side of the BINARY extension (RFC 3516). FETCH side of the BINARY extension (RFC 3516).
skipping to change at page 140, line 5 skipping to change at page 141, line 5
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 and $Forwarded keywords.
8. Added STATUS SIZE. 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,
item are now deprecated. SEARCH NEW items are now deprecated.
12. Clarified that the server doesn't need to send a new 12. Clarified that the server doesn't need to send a new
PERMANENTFLAGS response code when a new keyword was successfully PERMANENTFLAGS response code when a new keyword was successfully
added and the server advertised \* earlier for the same mailbox. added and the server advertised \* earlier for the same mailbox.
13. Removed the CHECK command. Clients should use NOOP instead. 13. Removed the CHECK command. Clients should use NOOP instead.
14. RFC822, RFC822.HEADER and RFC822.TEXT FETCH data items are 14. RFC822, RFC822.HEADER and RFC822.TEXT FETCH data items were
deprecated, but supported in this document. deprecated. Clients should use the corresponding BODY[]
variants instead.
15. Replaced DIGEST-MD5 SASL mechanism with SCRAM-SHA-256. DIGEST- 15. Replaced DIGEST-MD5 SASL mechanism with SCRAM-SHA-256. DIGEST-
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.
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.
Thank you to Timo Sirainen, Bron Gondwana and Arnt Gulbrandsen for Thank you to Timo Sirainen, Bron Gondwana and Arnt Gulbrandsen for
extensive feedback. extensive feedback.
This document incorporate text from RFC 4315, RFC 4466, RFC 4731, RFC This document incorporate text from RFC 4315 (by Mark Crispin), RFC
5161, RFC 6154 so work done by authors/editors of these documents is 4466 (by Cyrus Daboo), RFC 4731 (by Dave Cridland), RFC 5161 (by Arnt
appreciated. Gulbrandsen), RFC 5530 (by Arnt Gulbrandsen), RFC 6154 (by Jamie
Nicolson)
so work done by authors/editors of these documents is appreciated.
Index Index
$ $
$Forwarded (predefined flag) 12 $Forwarded (predefined flag) 12
$MDNSent (predefined flag) 12 $MDNSent (predefined flag) 12
+ +
+FLAGS <flag list> 80 +FLAGS <flag list> 80
+FLAGS.SILENT <flag list> 80 +FLAGS.SILENT <flag list> 80
- -
-FLAGS <flag list> 80 -FLAGS <flag list> 80
-FLAGS.SILENT <flag list> 80 -FLAGS.SILENT <flag list> 80
A A
ALERT (response code) 87 ALERT (response code) 87
ALL (fetch item) 75 ALL (fetch item) 76
ALL (search key) 72 ALL (search key) 72
ALL (search result option) 70 ALL (search result option) 71
ALREADYEXISTS (response code) 87 ALREADYEXISTS (response code) 87
ANSWERED (search key) 72 ANSWERED (search key) 72
APPEND (command) 63 APPEND (command) 63
APPENDUID (response code) 87 APPENDUID (response code) 88
AUTHENTICATE (command) 28 AUTHENTICATE (command) 28
AUTHENTICATIONFAILED (response code) 88 AUTHENTICATIONFAILED (response code) 88
AUTHORIZATIONFAILED (response code) 88 AUTHORIZATIONFAILED (response code) 89
B B
BAD (response) 95 BAD (response) 96
BADCHARSET (response code) 88 BADCHARSET (response code) 89
BCC <string> (search key) 72 BCC <string> (search key) 73
BEFORE <date> (search key) 72 BEFORE <date> (search key) 73
BINARY.PEEK[<section-binary>]<<partial>> (fetch item) 76 BINARY.PEEK[<section-binary>]<<partial>> (fetch item) 77
BINARY.SIZE[<section-binary>] (fetch item) 76 BINARY.SIZE[<section-binary>] (fetch item) 77
BINARY.SIZE[<section-binary>] (fetch result) 104 BINARY.SIZE[<section-binary>] (fetch result) 106
BINARY[<section-binary>]<<number>> (fetch result) 104 BINARY[<section-binary>]<<number>> (fetch result) 105
BINARY[<section-binary>]<<partial>> (fetch item) 75 BINARY[<section-binary>]<<partial>> (fetch item) 76
BODY (fetch item) 76 BODY (fetch item) 77
BODY (fetch result) 105 BODY (fetch result) 106
BODY <string> (search key) 72 BODY <string> (search key) 73
BODY.PEEK[<section>]<<partial>> (fetch item) 78 BODY.PEEK[<section>]<<partial>> (fetch item) 79
BODYSTRUCTURE (fetch item) 78 BODYSTRUCTURE (fetch item) 79
BODYSTRUCTURE (fetch result) 105 BODYSTRUCTURE (fetch result) 107
BODY[<section>]<<origin octet>> (fetch result) 105 BODY[<section>]<<origin octet>> (fetch result) 106
BODY[<section>]<<partial>> (fetch item) 76 BODY[<section>]<<partial>> (fetch item) 77
BYE (response) 95 BYE (response) 97
Body Structure (message attribute) 13 Body Structure (message attribute) 13
C C
CANNOT (response code) 88 CANNOT (response code) 89
CAPABILITY (command) 24 CAPABILITY (command) 24
CAPABILITY (response code) 88 CAPABILITY (response code) 89
CAPABILITY (response) 96 CAPABILITY (response) 98
CC <string> (search key) 72 CC <string> (search key) 73
CLIENTBUG (response code) 89 CLIENTBUG (response code) 89
CLOSE (command) 68 CLOSE (command) 68
CLOSED (response code) 89 CLOSED (response code) 90
CONTACTADMIN (response code) 89 CONTACTADMIN (response code) 90
COPY (command) 80 COPY (command) 81
COPYUID (response code) 89 COPYUID (response code) 90
CORRUPTION (response code) 90 CORRUPTION (response code) 91
COUNT (search result option) 71 COUNT (search result option) 71
CREATE (command) 36 CREATE (command) 36
D D
DELETE (command) 37 DELETE (command) 37
DELETED (search key) 72 DELETED (search key) 73
DRAFT (search key) 72 DELETED (status item) 63
DRAFT (search key) 73
E E
ENABLE (command) 32 ENABLE (command) 32
ENVELOPE (fetch item) 78 ENVELOPE (fetch item) 79
ENVELOPE (fetch result) 108 ENVELOPE (fetch result) 109
ESEARCH (response) 101 ESEARCH (response) 103
EXAMINE (command) 35 EXAMINE (command) 35
EXPIRED (response code) 90 EXPIRED (response code) 91
EXPUNGE (command) 69 EXPUNGE (command) 69
EXPUNGE (response) 103 EXPUNGE (response) 104
EXPUNGEISSUED (response code) 90 EXPUNGEISSUED (response code) 91
Envelope Structure (message attribute) 13 Envelope Structure (message attribute) 13
F F
FAST (fetch item) 75 FAST (fetch item) 76
FETCH (command) 75 FETCH (command) 76
FETCH (response) 104 FETCH (response) 105
FLAGGED (search key) 72 FLAGGED (search key) 73
FLAGS (fetch item) 78 FLAGS (fetch item) 79
FLAGS (fetch result) 109 FLAGS (fetch result) 110
FLAGS (response) 102 FLAGS (response) 103
FLAGS <flag list> (store command data item) 79 FLAGS <flag list> (store command data item) 80
FLAGS.SILENT <flag list> (store command data item) 79 FLAGS.SILENT <flag list> (store command data item) 80
FROM <string> (search key) 72 FROM <string> (search key) 73
FULL (fetch item) 75 FULL (fetch item) 76
Flags (message attribute) 11 Flags (message attribute) 11
H H
HEADER (part specifier) 76 HEADER (part specifier) 77
HEADER <field-name> <string> (search key) 72 HEADER <field-name> <string> (search key) 73
HEADER.FIELDS (part specifier) 76 HEADER.FIELDS (part specifier) 77
HEADER.FIELDS.NOT (part specifier) 76 HEADER.FIELDS.NOT (part specifier) 77
I I
IDLE (command) 66 IDLE (command) 66
INTERNALDATE (fetch item) 78 INTERNALDATE (fetch item) 79
INTERNALDATE (fetch result) 109 INTERNALDATE (fetch result) 110
INUSE (response code) 90 INUSE (response code) 91
Internal Date (message attribute) 12 Internal Date (message attribute) 12
K K
KEYWORD <flag> (search key) 72 KEYWORD <flag> (search key) 73
Keyword (type of flag) 12 Keyword (type of flag) 12
L L
LARGER <n> (search key) 72 LARGER <n> (search key) 73
LIMIT (response code) 91 LIMIT (response code) 92
LIST (command) 41 LIST (command) 41
LIST (response) 97 LIST (response) 99
LOGOUT (command) 26 LOGOUT (command) 26
M M
MAX (search result option) 70 MAX (search result option) 71
MAY (specification requirement term) 5 MAY (specification requirement term) 5
MESSAGES (status item) 63 MESSAGES (status item) 63
MIME (part specifier) 77 MIME (part specifier) 78
MIN (search result option) 70 MIN (search result option) 71
MOVE (command) 81 MOVE (command) 82
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) 57 NAMESPACE (command) 57
NAMESPACE (response) 101 NAMESPACE (response) 102
NEW (search key) 72 NO (response) 95
NO (response) 94 NONEXISTENT (response code) 92
NONEXISTENT (response code) 91
NOOP (command) 25 NOOP (command) 25
NOPERM (response code) 91 NOPERM (response code) 92
NOT <search-key> (search key) 73 NOT <search-key> (search key) 73
NOT RECOMMENDED (specification requirement term) 5 NOT RECOMMENDED (specification requirement term) 5
O O
OK (response) 94 OK (response) 95
ON <date> (search key) 73 ON <date> (search key) 73
OPTIONAL (specification requirement term) 5 OPTIONAL (specification requirement term) 5
OR <search-key1> <search-key2> (search key) 73 OR <search-key1> <search-key2> (search key) 73
OVERQUOTA (response code) 91 OVERQUOTA (response code) 92
P P
PARSE (response code) 92 PARSE (response code) 93
PERMANENTFLAGS (response code) 92 PERMANENTFLAGS (response code) 93
PREAUTH (response) 95 PREAUTH (response) 96
PRIVACYREQUIRED (response code) 92 PRIVACYREQUIRED (response code) 93
Permanent Flag (class of flag) 12 Permanent Flag (class of flag) 12
Predefined keywords 12 Predefined keywords 12
R R
READ-ONLY (response code) 92 READ-ONLY (response code) 93
READ-WRITE (response code) 92 READ-WRITE (response code) 94
RECOMMENDED (specification requirement term) 5 RECOMMENDED (specification requirement term) 5
RENAME (command) 38 RENAME (command) 39
REQUIRED (specification requirement term) 5 REQUIRED (specification requirement term) 5
RFC822 (fetch item) 78
RFC822 (fetch result) 109
RFC822.HEADER (fetch item) 78
RFC822.HEADER (fetch result) 109
RFC822.SIZE (fetch item) 79 RFC822.SIZE (fetch item) 79
RFC822.SIZE (fetch result) 109 RFC822.SIZE (fetch result) 110
RFC822.TEXT (fetch item) 79
RFC822.TEXT (fetch result) 109
S S
SEARCH (command) 69 SEARCH (command) 70
SEEN (search key) 73 SEEN (search key) 74
SELECT (command) 34 SELECT (command) 34
SENTBEFORE <date> (search key) 73 SENTBEFORE <date> (search key) 74
SENTON <date> (search key) 73 SENTON <date> (search key) 74
SENTSINCE <date> (search key) 73 SENTSINCE <date> (search key) 74
SERVERBUG (response code) 92 SERVERBUG (response code) 94
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) 73 SINCE <date> (search key) 74
SIZE (status item) 63 SIZE (status item) 63
SMALLER <n> (search key) 73 SMALLER <n> (search key) 74
STARTTLS (command) 27 STARTTLS (command) 27
STATUS (command) 62 STATUS (command) 62
STATUS (response) 101 STATUS (response) 102
STORE (command) 79 STORE (command) 80
SUBJECT <string> (search key) 73 SUBJECT <string> (search key) 74
SUBSCRIBE (command) 40 SUBSCRIBE (command) 40
Session Flag (class of flag) 12 Session Flag (class of flag) 12
System Flag (type of flag) 11 System Flag (type of flag) 11
T T
TEXT (part specifier) 76 TEXT (part specifier) 77
TEXT <string> (search key) 73 TEXT <string> (search key) 74
TO <string> (search key) 73 TO <string> (search key) 74
TRYCREATE (response code) 93 TRYCREATE (response code) 94
U U
UID (command) 83 UID (command) 84
UID (fetch item) 79 UID (fetch item) 79
UID (fetch result) 109 UID (fetch result) 110
UID <sequence set> (search key) 73 UID <sequence set> (search key) 74
UIDNEXT (response code) 93 UIDNEXT (response code) 94
UIDNEXT (status item) 63 UIDNEXT (status item) 63
UIDNOTSTICKY (response code) 93 UIDNOTSTICKY (response code) 94
UIDVALIDITY (response code) 93 UIDVALIDITY (response code) 94
UIDVALIDITY (status item) 63 UIDVALIDITY (status item) 63
UNANSWERED (search key) 73 UNANSWERED (search key) 74
UNAVAILABLE (response code) 93 UNAVAILABLE (response code) 95
UNDELETED (search key) 73 UNDELETED (search key) 74
UNDRAFT (search key) 73 UNDRAFT (search key) 74
UNFLAGGED (search key) 73 UNFLAGGED (search key) 74
UNKEYWORD <flag> (search key) 74 UNKEYWORD <flag> (search key) 74
UNKNOWN-CTE (response code) 93 UNKNOWN-CTE (response code) 95
UNSEEN (search key) 74 UNSEEN (search key) 74
UNSEEN (status item) 63 UNSEEN (status item) 63
UNSELECT (command) 68 UNSELECT (command) 69
UNSUBSCRIBE (command) 41 UNSUBSCRIBE (command) 41
Unique Identifier (UID) (message attribute) 9 Unique Identifier (UID) (message attribute) 9
X X
X<atom> (command) 85 X<atom> (command) 85
[ [
[RFC-5322] Size (message attribute) 13 [RFC-5322] Size (message attribute) 13
\ \
\All (mailbox name attribute) 99 \All (mailbox name attribute) 100
\Answered (system flag) 11 \Answered (system flag) 11
\Archive (mailbox name attribute) 99 \Archive (mailbox name attribute) 101
\Deleted (system flag) 11 \Deleted (system flag) 12
\Draft (system flag) 12 \Draft (system flag) 12
\Drafts (mailbox name attribute) 99 \Drafts (mailbox name attribute) 101
\Flagged (mailbox name attribute) 100 \Flagged (mailbox name attribute) 101
\Flagged (system flag) 11 \Flagged (system flag) 11
\HasChildren (mailbox name attribute) 98 \HasChildren (mailbox name attribute) 99
\HasNoChildren (mailbox name attribute) 98 \HasNoChildren (mailbox name attribute) 100
\Junk (mailbox name attribute) 100 \Junk (mailbox name attribute) 101
\Marked (mailbox name attribute) 99 \Marked (mailbox name attribute) 100
\Noinferiors (mailbox name attribute) 98 \Noinferiors (mailbox name attribute) 99
\NonExistent (mailbox name attribute) 98 \NonExistent (mailbox name attribute) 99
\Noselect (mailbox name attribute) 98 \Noselect (mailbox name attribute) 99
\Recent (system flag) 12 \Recent (system flag) 12
\Remote (mailbox name attribute) 99 \Remote (mailbox name attribute) 100
\Seen (system flag) 11 \Seen (system flag) 11
\Sent (mailbox name attribute) 100 \Sent (mailbox name attribute) 101
\Subscribed (mailbox name attribute) 99 \Subscribed (mailbox name attribute) 100
\Trash (mailbox name attribute) 100 \Trash (mailbox name attribute) 101
\Unmarked (mailbox name attribute) 99 \Unmarked (mailbox name attribute) 100
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
Email: Alexey.Melnikov@isode.com Email: Alexey.Melnikov@isode.com
 End of changes. 122 change blocks. 
349 lines changed or deleted 387 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/