draft-ietf-extra-imap4rev2-15.txt   draft-ietf-extra-imap4rev2-16.txt 
Network Working Group A. Melnikov, Ed. Network Working Group A. Melnikov, Ed.
Internet-Draft Isode Ltd Internet-Draft Isode Ltd
Obsoletes: 3501 (if approved) B. Leiba, Ed. Obsoletes: 3501 (if approved) B. Leiba, Ed.
Intended status: Standards Track Futurewei Technologies Intended status: Standards Track Futurewei Technologies
Expires: December 19, 2020 June 17, 2020 Expires: January 14, 2021 July 13, 2020
Internet Message Access Protocol (IMAP) - Version 4rev2 Internet Message Access Protocol (IMAP) - Version 4rev2
draft-ietf-extra-imap4rev2-15 draft-ietf-extra-imap4rev2-16
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 December 19, 2020. This Internet-Draft will expire on January 14, 2021.
Copyright Notice Copyright Notice
Copyright (c) 2020 IETF Trust and the persons identified as the Copyright (c) 2020 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 3, line 38 skipping to change at page 3, line 38
6.2. Client Commands - Not Authenticated State . . . . . . . . 27 6.2. Client Commands - Not Authenticated State . . . . . . . . 27
6.2.1. STARTTLS Command . . . . . . . . . . . . . . . . . . 28 6.2.1. STARTTLS Command . . . . . . . . . . . . . . . . . . 28
6.2.2. AUTHENTICATE Command . . . . . . . . . . . . . . . . 29 6.2.2. AUTHENTICATE Command . . . . . . . . . . . . . . . . 29
6.2.3. LOGIN Command . . . . . . . . . . . . . . . . . . . . 32 6.2.3. LOGIN Command . . . . . . . . . . . . . . . . . . . . 32
6.3. Client Commands - Authenticated State . . . . . . . . . . 33 6.3. Client Commands - Authenticated State . . . . . . . . . . 33
6.3.1. ENABLE Command . . . . . . . . . . . . . . . . . . . 33 6.3.1. ENABLE Command . . . . . . . . . . . . . . . . . . . 33
6.3.2. SELECT Command . . . . . . . . . . . . . . . . . . . 35 6.3.2. SELECT Command . . . . . . . . . . . . . . . . . . . 35
6.3.3. EXAMINE Command . . . . . . . . . . . . . . . . . . . 37 6.3.3. EXAMINE Command . . . . . . . . . . . . . . . . . . . 37
6.3.4. CREATE Command . . . . . . . . . . . . . . . . . . . 38 6.3.4. CREATE Command . . . . . . . . . . . . . . . . . . . 38
6.3.5. DELETE Command . . . . . . . . . . . . . . . . . . . 39 6.3.5. DELETE Command . . . . . . . . . . . . . . . . . . . 39
6.3.6. RENAME Command . . . . . . . . . . . . . . . . . . . 40 6.3.6. RENAME Command . . . . . . . . . . . . . . . . . . . 41
6.3.7. SUBSCRIBE Command . . . . . . . . . . . . . . . . . . 42 6.3.7. SUBSCRIBE Command . . . . . . . . . . . . . . . . . . 43
6.3.8. UNSUBSCRIBE Command . . . . . . . . . . . . . . . . . 43 6.3.8. UNSUBSCRIBE Command . . . . . . . . . . . . . . . . . 44
6.3.9. LIST Command . . . . . . . . . . . . . . . . . . . . 43 6.3.9. LIST Command . . . . . . . . . . . . . . . . . . . . 44
6.3.10. NAMESPACE Command . . . . . . . . . . . . . . . . . . 61 6.3.10. NAMESPACE Command . . . . . . . . . . . . . . . . . . 62
6.3.11. STATUS Command . . . . . . . . . . . . . . . . . . . 65 6.3.11. STATUS Command . . . . . . . . . . . . . . . . . . . 67
6.3.12. APPEND Command . . . . . . . . . . . . . . . . . . . 66 6.3.12. APPEND Command . . . . . . . . . . . . . . . . . . . 68
6.3.13. IDLE Command . . . . . . . . . . . . . . . . . . . . 69 6.3.13. IDLE Command . . . . . . . . . . . . . . . . . . . . 71
6.4. Client Commands - Selected State . . . . . . . . . . . . 71 6.4. Client Commands - Selected State . . . . . . . . . . . . 73
6.4.1. CLOSE Command . . . . . . . . . . . . . . . . . . . . 71 6.4.1. CLOSE Command . . . . . . . . . . . . . . . . . . . . 73
6.4.2. UNSELECT Command . . . . . . . . . . . . . . . . . . 72 6.4.2. UNSELECT Command . . . . . . . . . . . . . . . . . . 74
6.4.3. EXPUNGE Command . . . . . . . . . . . . . . . . . . . 72 6.4.3. EXPUNGE Command . . . . . . . . . . . . . . . . . . . 74
6.4.4. SEARCH Command . . . . . . . . . . . . . . . . . . . 73 6.4.4. SEARCH Command . . . . . . . . . . . . . . . . . . . 75
6.4.5. FETCH Command . . . . . . . . . . . . . . . . . . . . 85 6.4.5. FETCH Command . . . . . . . . . . . . . . . . . . . . 87
6.4.6. STORE Command . . . . . . . . . . . . . . . . . . . . 89 6.4.6. STORE Command . . . . . . . . . . . . . . . . . . . . 91
6.4.7. COPY Command . . . . . . . . . . . . . . . . . . . . 90 6.4.7. COPY Command . . . . . . . . . . . . . . . . . . . . 92
6.4.8. MOVE Command . . . . . . . . . . . . . . . . . . . . 91 6.4.8. MOVE Command . . . . . . . . . . . . . . . . . . . . 93
6.4.9. UID Command . . . . . . . . . . . . . . . . . . . . . 93 6.4.9. UID Command . . . . . . . . . . . . . . . . . . . . . 95
6.5. Client Commands - Experimental/Expansion . . . . . . . . 95 6.5. Client Commands - Experimental/Expansion . . . . . . . . 97
6.5.1. X<atom> Command . . . . . . . . . . . . . . . . . . . 95 6.5.1. X<atom> Command . . . . . . . . . . . . . . . . . . . 97
7. Server Responses . . . . . . . . . . . . . . . . . . . . . . 96 7. Server Responses . . . . . . . . . . . . . . . . . . . . . . 98
7.1. Server Responses - Status Responses . . . . . . . . . . . 97 7.1. Server Responses - Status Responses . . . . . . . . . . . 99
7.1.1. OK Response . . . . . . . . . . . . . . . . . . . . . 105 7.1.1. OK Response . . . . . . . . . . . . . . . . . . . . . 107
7.1.2. NO Response . . . . . . . . . . . . . . . . . . . . . 105 7.1.2. NO Response . . . . . . . . . . . . . . . . . . . . . 107
7.1.3. BAD Response . . . . . . . . . . . . . . . . . . . . 106 7.1.3. BAD Response . . . . . . . . . . . . . . . . . . . . 107
7.1.4. PREAUTH Response . . . . . . . . . . . . . . . . . . 106 7.1.4. PREAUTH Response . . . . . . . . . . . . . . . . . . 108
7.1.5. BYE Response . . . . . . . . . . . . . . . . . . . . 106 7.1.5. BYE Response . . . . . . . . . . . . . . . . . . . . 108
7.2. Server Responses - Server and Mailbox Status . . . . . . 107 7.2. Server Responses - Server and Mailbox Status . . . . . . 109
7.2.1. The ENABLED Response . . . . . . . . . . . . . . . . 107 7.2.1. The ENABLED Response . . . . . . . . . . . . . . . . 109
7.2.2. CAPABILITY Response . . . . . . . . . . . . . . . . . 107 7.2.2. CAPABILITY Response . . . . . . . . . . . . . . . . . 109
7.2.3. LIST Response . . . . . . . . . . . . . . . . . . . . 108 7.2.3. LIST Response . . . . . . . . . . . . . . . . . . . . 110
7.2.4. NAMESPACE Response . . . . . . . . . . . . . . . . . 112 7.2.4. NAMESPACE Response . . . . . . . . . . . . . . . . . 114
7.2.5. STATUS Response . . . . . . . . . . . . . . . . . . . 113 7.2.5. STATUS Response . . . . . . . . . . . . . . . . . . . 114
7.2.6. ESEARCH Response . . . . . . . . . . . . . . . . . . 113 7.2.6. ESEARCH Response . . . . . . . . . . . . . . . . . . 115
7.2.7. FLAGS Response . . . . . . . . . . . . . . . . . . . 113 7.2.7. FLAGS Response . . . . . . . . . . . . . . . . . . . 115
7.3. Server Responses - Mailbox Size . . . . . . . . . . . . . 114 7.3. Server Responses - Mailbox Size . . . . . . . . . . . . . 116
7.3.1. EXISTS Response . . . . . . . . . . . . . . . . . . . 114 7.3.1. EXISTS Response . . . . . . . . . . . . . . . . . . . 116
7.4. Server Responses - Message Status . . . . . . . . . . . . 114 7.4. Server Responses - Message Status . . . . . . . . . . . . 116
7.4.1. EXPUNGE Response . . . . . . . . . . . . . . . . . . 114 7.4.1. EXPUNGE Response . . . . . . . . . . . . . . . . . . 116
7.4.2. FETCH Response . . . . . . . . . . . . . . . . . . . 115 7.4.2. FETCH Response . . . . . . . . . . . . . . . . . . . 117
7.5. Server Responses - Command Continuation Request . . . . . 121 7.5. Server Responses - Command Continuation Request . . . . . 123
8. Sample IMAP4rev2 connection . . . . . . . . . . . . . . . . . 122 8. Sample IMAP4rev2 connection . . . . . . . . . . . . . . . . . 123
9. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 123 9. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 124
10. Author's Note . . . . . . . . . . . . . . . . . . . . . . . . 140 10. Author's Note . . . . . . . . . . . . . . . . . . . . . . . . 142
11. Security Considerations . . . . . . . . . . . . . . . . . . . 140 11. Security Considerations . . . . . . . . . . . . . . . . . . . 142
11.1. STARTTLS Security Considerations . . . . . . . . . . . . 140 11.1. STARTTLS Security Considerations . . . . . . . . . . . . 142
11.2. COPYUID and APPENDUID response codes . . . . . . . . . . 140 11.2. COPYUID and APPENDUID response codes . . . . . . . . . . 143
11.3. LIST command and Other Users' namespace . . . . . . . . 141 11.3. LIST command and Other Users' namespace . . . . . . . . 143
11.4. Other Security Considerations . . . . . . . . . . . . . 141 11.4. Other Security Considerations . . . . . . . . . . . . . 143
12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 142 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 144
12.1. Updates to IMAP4 Capabilities registry . . . . . . . . . 142 12.1. Updates to IMAP4 Capabilities registry . . . . . . . . . 144
12.2. GSSAPI/SASL service name . . . . . . . . . . . . . . . . 142 12.2. GSSAPI/SASL service name . . . . . . . . . . . . . . . . 145
13. References . . . . . . . . . . . . . . . . . . . . . . . . . 142 12.3. LIST Selection Options, LIST Return Options, LIST
13.1. Normative References . . . . . . . . . . . . . . . . . . 142 extended data items . . . . . . . . . . . . . . . . . . 145
13.2. Informative References (related protocols) . . . . . . . 145 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 145
13.1. Normative References . . . . . . . . . . . . . . . . . . 145
13.2. Informative References (related protocols) . . . . . . . 148
13.3. Informative References (historical aspects of IMAP and 13.3. Informative References (historical aspects of IMAP and
related protocols) . . . . . . . . . . . . . . . . . . . 147 related protocols) . . . . . . . . . . . . . . . . . . . 150
Appendix A. Backward compatibility with IMAP4rev1 . . . . . . . 148 Appendix A. Backward compatibility with IMAP4rev1 . . . . . . . 151
A.1. Mailbox International Naming Convention for compatibility A.1. Mailbox International Naming Convention for compatibility
with IMAP4rev1 . . . . . . . . . . . . . . . . . . . . . 148 with IMAP4rev1 . . . . . . . . . . . . . . . . . . . . . 151
Appendix B. Backward compatibility with BINARY extension . . . . 150
Appendix C. Backward compatibility with LIST-EXTENDED extension 150 Appendix B. Backward compatibility with BINARY extension . . . . 153
Appendix D. Changes from RFC 3501 / IMAP4rev1 . . . . . . . . . 150 Appendix C. Backward compatibility with LIST-EXTENDED extension 153
Appendix E. Acknowledgement . . . . . . . . . . . . . . . . . . 153 Appendix D. Changes from RFC 3501 / IMAP4rev1 . . . . . . . . . 153
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 Appendix E. Acknowledgement . . . . . . . . . . . . . . . . . . 155
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 158 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 161
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 10, line 18 skipping to change at page 10, line 18
value. It is not intended to provide any guarantee that any value. It is not intended to provide any guarantee that any
message will have this unique identifier. A client can only message will have this unique identifier. A client can only
assume, at the time that it obtains the next unique identifier assume, at the time that it obtains the next unique identifier
value, that messages arriving after that time will have a UID value, that messages arriving after that time will have a UID
greater than or equal to that value. greater than or equal to that value.
The unique identifier validity value is sent in a UIDVALIDITY The unique identifier validity value is sent in a UIDVALIDITY
response code in an OK untagged response at mailbox selection time. response code in an OK untagged response at mailbox selection time.
If unique identifiers from an earlier session fail to persist in this If unique identifiers from an earlier session fail to persist in this
session, the unique identifier validity value MUST be greater than session, the unique identifier validity value MUST be greater than
the one used in the earlier session. the one used in the earlier session. A good UIDVALIDITY value to use
is a 32-bit representation of the current date/time when the value is
assigned: this ensures that the value is unique and always increases.
Another possible alternative is a global counter that gets
incremented every time a mailbox is created.
Note: Ideally, unique identifiers SHOULD persist at all times. Note: Ideally, unique identifiers SHOULD persist at all times.
Although this specification recognizes that failure to persist can Although this specification recognizes that failure to persist can
be unavoidable in certain server environments, it STRONGLY be unavoidable in certain server environments, it STRONGLY
ENCOURAGES message store implementation techniques that avoid this ENCOURAGES message store implementation techniques that avoid this
problem. For example: problem. For example:
1. Unique identifiers MUST be strictly ascending in the mailbox 1. Unique identifiers MUST be strictly ascending in the mailbox
at all times. If the physical message store is re-ordered by at all times. If the physical message store is re-ordered by
a non-IMAP agent, this requires that the unique identifiers in a non-IMAP agent, this requires that the unique identifiers in
the mailbox be regenerated, since the former unique the mailbox be regenerated, since the former unique
identifiers are no longer strictly ascending as a result of identifiers are no longer strictly ascending as a result of
the re-ordering. the re-ordering.
2. If the message store has no mechanism to store unique 2. If the message store has no mechanism to store unique
identifiers, it must regenerate unique identifiers at each identifiers, it must regenerate unique identifiers at each
session, and each session must have a unique UIDVALIDITY session, and each session must have a unique UIDVALIDITY
value. value.
3. If the mailbox is deleted and a new mailbox with the same name 3. If the mailbox is deleted/renamed and a new mailbox with the
is created at a later date, the server must either keep track same name is created at a later date, the server must either
of unique identifiers from the previous instance of the keep track of unique identifiers from the previous instance of
mailbox, or it must assign a new UIDVALIDITY value to the new the mailbox, or it must assign a new UIDVALIDITY value to the
instance of the mailbox. A good UIDVALIDITY value to use in new instance of the mailbox.
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,
but only if it guaranteed that unique identifiers will never
be reused, even in the case of a mailbox being deleted (or
renamed) and a new mailbox by the same name created at some
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 (or expunged) message on that
In particular, the internal date, [RFC-5322] size, envelope, server forever. In particular, the internal date, [RFC-5322]
body structure, and message texts (all BODY[...] fetch data size, envelope, body structure, and message texts (all
items) must never change. This does not include message BODY[...] fetch data items) must never change. This does not
numbers, nor does it include attributes that can be set by a include message numbers, nor does it include attributes that
STORE command (e.g., FLAGS). can be set by a STORE command (e.g., FLAGS). When a message
is expunged, its UID MUST NOT be reused under the same
UIDVALIDITY value.
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 13, line 25 skipping to change at page 13, line 25
compatibility with existing clients that understand the $Junk flag compatibility with existing clients that understand the $Junk flag
but not the $Phishing flag. This so that when an unextended but not the $Phishing flag. This so that when an unextended
client removes the $Junk flag, an extended client will also show client removes the $Junk flag, an extended client will also show
the correct state. See [IMAP-KEYWORDS-REG] for more information. the correct state. See [IMAP-KEYWORDS-REG] for more information.
$Junk and $NotJunk are mutually exclusive. If more than one of them $Junk and $NotJunk are mutually exclusive. If more than one of them
is set for a message, the client MUST treat this as if none of them is set for a message, the client MUST treat this as if none of them
is set and SHOULD unset both of them on the IMAP server. is set and SHOULD unset both of them on the IMAP server.
Other registered keywords can be found in the "IMAP and JMAP Other registered keywords can be found in the "IMAP and JMAP
Keywords" registry [IMAP-KEYWORDS-REG]. Keywords" registry [IMAP-KEYWORDS-REG]. New keywords SHOULD be
registered in this registry using the procedure specified in
[RFC5788].
A flag can be permanent or session-only on a per-flag basis. A flag can be permanent or session-only on a per-flag basis.
Permanent flags are those which the client can add or remove from the Permanent flags are those which the client can add or remove from the
message flags permanently; that is, concurrent and subsequent message flags permanently; that is, concurrent and subsequent
sessions will see any change in permanent flags. Changes to session sessions will see any change in permanent flags. Changes to session
flags are valid only in that session. flags are valid only in that session.
2.3.3. Internal Date Message Attribute 2.3.3. Internal Date Message Attribute
The internal date and time of the message on the server. This is not The internal date and time of the message on the server. This is not
skipping to change at page 35, line 47 skipping to change at page 35, line 47
changes to deployed server responses (and thus benefit from ENABLE) changes to deployed server responses (and thus benefit from ENABLE)
have a higher complexity cost than extensions that do not. have a higher complexity cost than extensions that do not.
6.3.2. SELECT Command 6.3.2. SELECT Command
Arguments: mailbox name Arguments: mailbox name
Responses: REQUIRED untagged responses: FLAGS, EXISTS Responses: REQUIRED untagged responses: FLAGS, EXISTS
REQUIRED OK untagged responses: PERMANENTFLAGS, REQUIRED OK untagged responses: PERMANENTFLAGS,
UIDNEXT, UIDVALIDITY UIDNEXT, UIDVALIDITY
OPTIONAL untagged response: LIST
Result: OK - select completed, now in selected state Result: OK - select completed, now in selected state
NO - select failure, now in authenticated state: no NO - select failure, now in authenticated state: no
such mailbox, can't access mailbox such mailbox, can't access mailbox
BAD - command unknown or arguments invalid BAD - command unknown or arguments invalid
The SELECT command selects a mailbox so that messages in the mailbox The SELECT command selects a mailbox so that messages in the mailbox
can be accessed. Before returning an OK to the client, the server can be accessed. Before returning an OK to the client, the server
MUST send the following untagged data to the client. Note that MUST send the following untagged data to the client. (The order of
earlier versions of this protocol only required the FLAGS and EXISTS individual responses is not important.) Note that earlier versions
untagged data; consequently, client implementations SHOULD implement of this protocol only required the FLAGS and EXISTS untagged data;
default behavior for missing data as discussed with the individual consequently, client implementations SHOULD implement default
item. behavior for missing data as discussed with the individual item.
FLAGS Defined flags in the mailbox. See the description of the FLAGS Defined flags in the mailbox. See the description of the
FLAGS response for more detail. FLAGS response 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.
LIST If the server allows de-normalized UTF-8 mailbox names (see
Section 5.1) and the supplied mailbox name differs from the
normalized version, the server SHOULD return LIST with OLDNAME
extended data item. See Section 6.3.9.7 for more details.
OK [PERMANENTFLAGS (<list of flags>)] A list of message flags that OK [PERMANENTFLAGS (<list of flags>)] A list of message flags that
the client can change permanently. If this is missing, the client the client can change permanently. If this is missing, the client
should assume that all flags can be changed permanently. should assume that all flags can be changed permanently.
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. If this is missing, the
client can not make any assumptions about the next unique client can not make any assumptions about the next unique
identifier value. identifier value.
OK [UIDVALIDITY <n>] The unique identifier validity value. Refer to OK [UIDVALIDITY <n>] The unique identifier validity value. Refer to
skipping to change at page 37, line 45 skipping to change at page 37, line 50
RECENT". Pure IMAP4rev2 clients are advised to ignore the untagged RECENT". Pure IMAP4rev2 clients are advised to ignore the untagged
RECENT response. RECENT response.
6.3.3. EXAMINE Command 6.3.3. EXAMINE Command
Arguments: mailbox name Arguments: mailbox name
Responses: REQUIRED untagged responses: FLAGS, EXISTS Responses: REQUIRED untagged responses: FLAGS, EXISTS
REQUIRED OK untagged responses: PERMANENTFLAGS, REQUIRED OK untagged responses: PERMANENTFLAGS,
UIDNEXT, UIDVALIDITY UIDNEXT, UIDVALIDITY
OPTIONAL untagged response: LIST
Result: OK - examine completed, now in selected state Result: OK - examine completed, now in selected state
NO - examine failure, now in authenticated state: no NO - examine failure, now in authenticated state: no
such mailbox, can't access mailbox BAD - command unknown such mailbox, can't access mailbox BAD - command unknown
or arguments invalid or arguments invalid
The EXAMINE command is identical to SELECT and returns the same The EXAMINE command is identical to SELECT and returns the same
output; however, the selected mailbox is identified as read-only. No output; however, the selected mailbox is identified as read-only. No
changes to the permanent state of the mailbox, including per-user changes to the permanent state of the mailbox, including per-user
state, are permitted. state, are permitted.
skipping to change at page 38, line 25 skipping to change at page 38, line 30
S: * OK [UIDVALIDITY 3857529045] UIDs valid S: * OK [UIDVALIDITY 3857529045] UIDs valid
S: * OK [UIDNEXT 4392] Predicted next UID S: * OK [UIDNEXT 4392] Predicted next UID
S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft) S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
S: * OK [PERMANENTFLAGS ()] No permanent flags permitted S: * OK [PERMANENTFLAGS ()] No permanent flags permitted
S: A932 OK [READ-ONLY] EXAMINE completed S: A932 OK [READ-ONLY] EXAMINE completed
6.3.4. CREATE Command 6.3.4. CREATE Command
Arguments: mailbox name Arguments: mailbox name
Responses: no specific responses for this command Responses: OPTIONAL untagged response: LIST
Result: OK - create completed Result: OK - create completed
NO - create failure: can't create mailbox with that name NO - create failure: can't create mailbox with that name
BAD - command unknown or arguments invalid BAD - command unknown or arguments invalid
The CREATE command creates a mailbox with the given name. An OK The CREATE command creates a mailbox with the given name. An OK
response is returned only if a new mailbox with that name has been response is returned only if a new mailbox with that name has been
created. It is an error to attempt to create INBOX or a mailbox with created. It is an error to attempt to create INBOX or a mailbox with
a name that refers to an extant mailbox. Any error in creation will a name that refers to an extant mailbox. Any error in creation will
return a tagged NO response. If a client attempts to create a UTF-8 return a tagged NO response. If a client attempts to create a UTF-8
mailbox name that is not a valid Net-Unicode name, the server MUST mailbox name that is not a valid Net-Unicode name, the server MUST
reject the creation or convert the name to Net-Unicode prior to reject the creation or convert the name to Net-Unicode prior to
creating the mailbox. creating the mailbox. If the server decides to convert (normalize)
the name, it SHOULD return an untagged LIST with OLDNAME extended
data item, with the OLDNAME value being the supplied mailbox name and
the name parameter being the normalized mailbox name. (See
Section 6.3.9.7 for more details.)
Mailboxes created in one IMAP session MAY be announced to other IMAP
sessions using unsolicited LIST response. If the server
automatically subscribes a mailbox when it is created, then the
unsolicited LIST response for each affected subscribed mailbox name
MUST include the \Subscribed attribute.
If the mailbox name is suffixed with the server's hierarchy separator If the mailbox name is suffixed with the server's hierarchy separator
character (as returned from the server by a LIST command), this is a character (as returned from the server by a LIST command), this is a
declaration that the client intends to create mailbox names under declaration that the client intends to create mailbox names under
this name in the hierarchy. Server implementations that do not this name in the hierarchy. Server implementations that do not
require this declaration MUST ignore the declaration. In any case, require this declaration MUST ignore the declaration. In any case,
the name created is without the trailing hierarchy delimiter. the name created is without the trailing hierarchy delimiter.
If the server's hierarchy separator character appears elsewhere in If the server's hierarchy separator character appears elsewhere in
the name, the server SHOULD create any superior hierarchical names the name, the server SHOULD create any superior hierarchical names
skipping to change at page 39, line 11 skipping to change at page 39, line 27
In other words, an attempt to create "foo/bar/zap" on a server in In other words, an attempt to create "foo/bar/zap" on a server in
which "/" is the hierarchy separator character SHOULD create foo/ and which "/" is the hierarchy separator character SHOULD create foo/ and
foo/bar/ if they do not already exist. foo/bar/ if they do not already exist.
If a new mailbox is created with the same name as a mailbox which was If a new mailbox is created with the same name as a mailbox which was
deleted, its unique identifiers MUST be greater than any unique deleted, its unique identifiers MUST be greater than any unique
identifiers used in the previous incarnation of the mailbox UNLESS identifiers used in the previous incarnation of the mailbox UNLESS
the new incarnation has a different unique identifier validity value. the new incarnation has a different unique identifier validity value.
See the description of the UID command for more detail. See the description of the UID command for more detail.
Example: C: A003 CREATE owatagusiam/ Example: C: A003 CREATE owatagusiam/
S: A003 OK CREATE completed S: A003 OK CREATE completed
C: A004 CREATE owatagusiam/blurdybloop C: A004 CREATE owatagusiam/blurdybloop
S: A004 OK CREATE completed S: A004 OK CREATE completed
C: A005 CREATE NonNormalized
S: * LIST () "/" "Normalized" ("OLDNAME" ("NonNormalized"))
S: A005 OK CREATE completed
(in the last example imagine that "NonNormalized" is
a non NFC normalized Unicode mailbox name and that
"Normalized" is its NFC normalized version.)
Note: The interpretation of this example depends on whether "/" Note: The interpretation of this example depends on whether "/"
was returned as the hierarchy separator from LIST. If "/" is the was returned as the hierarchy separator from LIST. If "/" is the
hierarchy separator, a new level of hierarchy named "owatagusiam" hierarchy separator, a new level of hierarchy named "owatagusiam"
with a member called "blurdybloop" is created. Otherwise, two with a member called "blurdybloop" is created. Otherwise, two
mailboxes at the same hierarchy level are created. mailboxes at the same hierarchy level are created.
6.3.5. DELETE Command 6.3.5. DELETE Command
Arguments: mailbox name Arguments: mailbox name
Responses: no specific responses for this command Responses: OPTIONAL untagged response: LIST
Result: OK - delete completed Result: OK - delete completed
NO - delete failure: can't delete mailbox with that name NO - delete failure: can't delete mailbox with that name
BAD - command unknown or arguments invalid BAD - command unknown or arguments invalid
The DELETE command permanently removes the mailbox with the given The DELETE command permanently removes the mailbox with the given
name. A tagged OK response is returned only if the mailbox has been name. A tagged OK response is returned only if the mailbox has been
deleted. It is an error to attempt to delete INBOX or a mailbox name deleted. It is an error to attempt to delete INBOX or a mailbox name
that does not exist. that does not exist.
skipping to change at page 40, line 14 skipping to change at page 40, line 38
If the server returns OK response, all messages in that mailbox are If the server returns OK response, all messages in that mailbox are
removed by the DELETE command. removed by the DELETE command.
The value of the highest-used unique identifier of the deleted The value of the highest-used unique identifier of the deleted
mailbox MUST be preserved so that a new mailbox created with the same mailbox MUST be preserved so that a new mailbox created with the same
name will not reuse the identifiers of the former incarnation, UNLESS name will not reuse the identifiers of the former incarnation, UNLESS
the new incarnation has a different unique identifier validity value. the new incarnation has a different unique identifier validity value.
See the description of the UID command for more detail. See the description of the UID command for more detail.
Mailboxes deleted in one IMAP session MAY be announced to other IMAP
sessions using unsolicited LIST response, containing the
"\NonExistent" attribute.
Examples: C: A682 LIST "" * Examples: C: A682 LIST "" *
S: * LIST () "/" blurdybloop S: * LIST () "/" blurdybloop
S: * LIST (\Noselect) "/" foo S: * LIST (\Noselect) "/" foo
S: * LIST () "/" foo/bar S: * LIST () "/" foo/bar
S: A682 OK LIST completed S: A682 OK LIST completed
C: A683 DELETE blurdybloop C: A683 DELETE blurdybloop
S: A683 OK DELETE completed S: A683 OK DELETE completed
C: A684 DELETE foo C: A684 DELETE foo
S: A684 NO Name "foo" has inferior hierarchical names S: A684 NO Name "foo" has inferior hierarchical names
C: A685 DELETE foo/bar C: A685 DELETE foo/bar
skipping to change at page 40, line 51 skipping to change at page 41, line 42
S: A85 OK LIST completed S: A85 OK LIST completed
C: A86 LIST "" % C: A86 LIST "" %
S: * LIST (\Noselect) "." foo S: * LIST (\Noselect) "." foo
S: A86 OK LIST completed S: A86 OK LIST completed
6.3.6. RENAME Command 6.3.6. RENAME Command
Arguments: existing mailbox name Arguments: existing mailbox name
new mailbox name new mailbox name
Responses: no specific responses for this command Responses: OPTIONAL untagged response: LIST
Result: OK - rename completed Result: OK - rename completed
NO - rename failure: can't rename mailbox with that name, NO - rename failure: can't rename mailbox with that name,
can't rename to mailbox with that name can't rename to mailbox with that name
BAD - command unknown or arguments invalid BAD - command unknown or arguments invalid
The RENAME command changes the name of a mailbox. A tagged OK The RENAME command changes the name of a mailbox. A tagged OK
response is returned only if the mailbox has been renamed. It is an response is returned only if the mailbox has been renamed. It is an
error to attempt to rename from a mailbox name that does not exist or error to attempt to rename from a mailbox name that does not exist or
to a mailbox name that already exists. Any error in renaming will to a mailbox name that already exists. Any error in renaming will
return a tagged NO response. return a tagged NO response.
If the name has inferior hierarchical names, then the inferior If the name has inferior hierarchical names, then the inferior
hierarchical names MUST also be renamed. For example, a rename of hierarchical names MUST also be renamed. For example, a rename of
"foo" to "zap" will rename "foo/bar" (assuming "/" is the hierarchy "foo" to "zap" will rename "foo/bar" (assuming "/" is the hierarchy
delimiter character) to "zap/bar". delimiter character) to "zap/bar".
If the server's hierarchy separator character appears in the name, If the server's hierarchy separator character appears in the name,
the server SHOULD create any superior hierarchical names that are the server SHOULD create any superior hierarchical names that are
needed for the RENAME command to complete successfully. In other needed for the RENAME command to complete successfully. In other
words, an attempt to rename "foo/bar/zap" to baz/rag/zowie on a words, an attempt to rename "foo/bar/zap" to baz/rag/zowie on a
server in which "/" is the hierarchy separator character SHOULD server in which "/" is the hierarchy separator character in the
create baz/ and baz/rag/ if they do not already exist. corresponding namespace SHOULD create baz/ and baz/rag/ if they do
not already exist.
The value of the highest-used unique identifier of the old mailbox The value of the highest-used unique identifier of the old mailbox
name MUST be preserved so that a new mailbox created with the same name MUST be preserved so that a new mailbox created with the same
name will not reuse the identifiers of the former incarnation, UNLESS name will not reuse the identifiers of the former incarnation, UNLESS
the new incarnation has a different unique identifier validity value. the new incarnation has a different unique identifier validity value.
See the description of the UID command for more detail. See the description of the UID command for more detail.
Renaming INBOX is permitted, and has special behavior. (Note that Renaming INBOX is permitted, and has special behavior. (Note that
some servers disallow renaming INBOX, so clients need to be able to some servers disallow renaming INBOX, so clients need to be able to
handle such RENAME failing). It moves all messages in INBOX to a new handle such RENAME failing). It moves all messages in INBOX to a new
mailbox with the given name, leaving INBOX empty. If the server mailbox with the given name, leaving INBOX empty. If the server
implementation supports inferior hierarchical names of INBOX, these implementation supports inferior hierarchical names of INBOX, these
are unaffected by a rename of INBOX. are unaffected by a rename of INBOX.
If the server allows creation of mailboxes with names that are not
valid Net-Unicode names, the server normalizes both the existing
mailbox name parameter and the new mailbox name parameter. If the
normalized version of any of these 2 parameters differs from the
corresponding supplied version, the server SHOULD return an untagged
LIST response with OLDNAME extended data item, with the OLDNAME value
being the supplied existing mailbox name and the name parameter being
the normalized new mailbox name (see Section 6.3.9.7). This would
allow the client to correlate supplied name with the normalized name.
Mailboxes renamed in one IMAP session MAY be announced to other IMAP
sessions using unsolicited LIST response with OLDNAME extended data
item.
In both of the above cases: if the server automatically subscribes a
mailbox when it is renamed, then the unsolicited LIST response for
each affected subscribed mailbox name MUST include the \Subscribed
attribute. No unsolicited LIST responses need to be sent for
children mailboxes, if any. When INBOX is successfully renamed, a
new INBOX is assumed to be created. No unsolicited LIST responses
need to be sent for INBOX in this case.
Examples: C: A682 LIST "" * Examples: C: A682 LIST "" *
S: * LIST () "/" blurdybloop S: * LIST () "/" blurdybloop
S: * LIST (\Noselect) "/" foo S: * LIST (\Noselect) "/" foo
S: * LIST () "/" foo/bar S: * LIST () "/" foo/bar
S: A682 OK LIST completed S: A682 OK LIST completed
C: A683 RENAME blurdybloop sarasoop C: A683 RENAME blurdybloop sarasoop
S: A683 OK RENAME completed S: A683 OK RENAME completed
C: A684 RENAME foo zowie C: A684 RENAME foo zowie
S: A684 OK RENAME Completed S: A684 OK RENAME Completed
C: A685 LIST "" * C: A685 LIST "" *
skipping to change at page 48, line 43 skipping to change at page 49, line 47
about parent mailboxes that don't match other selection options, about parent mailboxes that don't match other selection options,
but have some submailboxes that do. Information about children is but have some submailboxes that do. Information about children is
returned in the CHILDINFO extended data item, as described in returned in the CHILDINFO extended data item, as described in
Section 6.3.9.6. Section 6.3.9.6.
Note 1: In order for a parent mailbox to be returned, it still has Note 1: In order for a parent mailbox to be returned, it still has
to match the canonical LIST pattern. to match the canonical LIST pattern.
Note 2: When returning the CHILDINFO extended data item, it Note 2: When returning the CHILDINFO extended data item, it
doesn't matter whether or not the submailbox matches the canonical doesn't matter whether or not the submailbox matches the canonical
LIST pattern. See also example 9 in Section 6.3.9.7. LIST pattern. See also example 9 in Section 6.3.9.8.
The RECURSIVEMATCH option MUST NOT occur as the only selection The RECURSIVEMATCH option MUST NOT occur as the only selection
option (or only with REMOTE), as it only makes sense when other option (or only with REMOTE), as it only makes sense when other
selection options are also used. The server MUST return BAD selection options are also used. The server MUST return BAD
tagged response in such case. tagged response in such case.
Note that even if the RECURSIVEMATCH option is specified, the Note that even if the RECURSIVEMATCH option is specified, the
client MUST still be able to handle a case when a CHILDINFO client MUST still be able to handle a case when a CHILDINFO
extended data item is returned and there are no submailboxes that extended data item is returned and there are no submailboxes that
meet the selection criteria of the subsequent LIST command, as meet the selection criteria of the subsequent LIST command, as
skipping to change at page 52, line 35 skipping to change at page 53, line 43
that the mailbox has at least one descendant mailbox that matches the that the mailbox has at least one descendant mailbox that matches the
selection criteria. selection criteria.
Note: Some servers allow for mailboxes to exist without requiring Note: Some servers allow for mailboxes to exist without requiring
their parent to exist. For example, a mailbox "Customers/ABC" can their parent to exist. For example, a mailbox "Customers/ABC" can
exist while the mailbox "Customers" does not. As CHILDINFO extended exist while the mailbox "Customers" does not. As CHILDINFO extended
data item is not allowed if the RECURSIVEMATCH selection option is data item is not allowed if the RECURSIVEMATCH selection option is
not specified, such servers SHOULD use the "\NonExistent not specified, such servers SHOULD use the "\NonExistent
\HasChildren" attribute pair to signal to the client that there is a \HasChildren" attribute pair to signal to the client that there is a
descendant mailbox that matches the selection criteria. See example descendant mailbox that matches the selection criteria. See example
11 in Section 6.3.9.7. 11 in Section 6.3.9.8.
The returned selection criteria allow the client to distinguish a The returned selection criteria allow the client to distinguish a
solicited response from an unsolicited one, as well as to distinguish solicited response from an unsolicited one, as well as to distinguish
among solicited responses caused by multiple pipelined LIST commands among solicited responses caused by multiple pipelined LIST commands
that specify different criteria. that specify different criteria.
Servers SHOULD ONLY return a non-matching mailbox name along with Servers SHOULD ONLY return a non-matching mailbox name along with
CHILDINFO if at least one matching child is not also being returned. CHILDINFO if at least one matching child is not also being returned.
That is, servers SHOULD suppress redundant CHILDINFO responses. That is, servers SHOULD suppress redundant CHILDINFO responses.
Examples 8 and 10 in Section 6.3.9.7 demonstrate the difference Examples 8 and 10 in Section 6.3.9.8 demonstrate the difference
between present CHILDINFO extended data item and the "\HasChildren" between present CHILDINFO extended data item and the "\HasChildren"
attribute. attribute.
The following table summarizes interaction between the "\NonExistent" The following table summarizes interaction between the "\NonExistent"
attribute and CHILDINFO (the first column indicates whether the attribute and CHILDINFO (the first column indicates whether the
parent mailbox exists): parent mailbox exists):
+--------+--------------+--------------------+----------------------+ +--------+-------------+------------------+-------------------------+
| exists | meets the | has a child that | returned LIST- | | exists | meets the | has a child that | returned IMAP4rev2 |
| | selection | meets the | EXTENDED attributes | | | selection | meets the | /LIST-EXTENDED |
| | criteria | selection criteria | and CHILDINFO | | | criteria | selection | attributes and |
+--------+--------------+--------------------+----------------------+ | | | criteria | CHILDINFO |
| no | no | no | no LIST response | +--------+-------------+------------------+-------------------------+
| | | | returned | | no | no | no | no LIST response |
| yes | no | no | no LIST response | | | | | returned |
| | | | returned | | yes | no | no | no LIST response |
| no | yes | no | (\NonExistent | | | | | returned |
| | | | <attr>) | | no | yes | no | (\NonExistent <attr>) |
| yes | yes | no | (<attr>) | | yes | yes | no | (<attr>) |
| no | no | yes | (\NonExistent) + | | no | no | yes | (\NonExistent) + |
| | | | CHILDINFO | | | | | CHILDINFO |
| yes | no | yes | () + CHILDINFO | | yes | no | yes | () + CHILDINFO |
| no | yes | yes | (\NonExistent | | no | yes | yes | (\NonExistent <attr>) + |
| | | | <attr>) + CHILDINFO | | | | | CHILDINFO |
| yes | yes | yes | (<attr>) + CHILDINFO | | yes | yes | yes | (<attr>) + CHILDINFO |
+--------+--------------+--------------------+----------------------+ +--------+-------------+------------------+-------------------------+
where <attr> is one or more attributes that correspond to the where <attr> is one or more attributes that correspond to the
selection criteria; for example, for the SUBSCRIBED option the <attr> selection criteria; for example, for the SUBSCRIBED option the <attr>
is \Subscribed. is \Subscribed.
6.3.9.7. LIST Command Examples 6.3.9.7. OLDNAME Extended Data Item
The OLDNAME extended data item is included when a mailbox name is
created (with CREATE command), renamed (with RENAME command) or
deleted (with DELETE command). (When a mailbox is deleted the
"\NonExistent" attribute is also included.) IMAP extensions can
specify other conditions when OLDNAME extended data item should be
included.
If the server allows de-normalized mailbox names (see Section 5.1) in
SELECT/EXAMINE, CREATE, RENAME or DELETE, it SHOULD return an
unsolicited LIST response that includes OLDNAME extended data item,
whenever the supplied mailbox name differs from the resulting
normalized mailbox name. From the client point of view this is
indistinguishable from another user renaming of deleting the mailbox,
as specified in the previous paragraph.
A deleted mailbox can be announced like this:
S: * LIST (\NonExistent) "." "INBOX.DeletedMailbox"
Example of a renamed mailbox:
S: * LIST () "/" "NewMailbox" ("OLDNAME" ("OldMailbox"))
6.3.9.8. LIST Command Examples
This example shows some uses of the basic LIST command: This example shows some uses of the basic LIST command:
Example: C: A101 LIST "" "" Example: C: A101 LIST "" ""
S: * LIST (\Noselect) "/" "" S: * LIST (\Noselect) "/" ""
S: A101 OK LIST Completed S: A101 OK LIST Completed
C: A102 LIST #news.comp.mail.misc "" C: A102 LIST #news.comp.mail.misc ""
S: * LIST (\Noselect) "." #news. S: * LIST (\Noselect) "." #news.
S: A102 OK LIST Completed S: A102 OK LIST Completed
C: A103 LIST /usr/staff/jones "" C: A103 LIST /usr/staff/jones ""
skipping to change at page 74, line 7 skipping to change at page 76, line 7
option is specified or empty list of options is specified "()", ALL option is specified or empty list of options is specified "()", ALL
is assumed (see below). The order of individual options is is assumed (see below). The order of individual options is
arbitrary. Individual options may contain parameters enclosed in arbitrary. Individual options may contain parameters enclosed in
parentheses (*). If an option has parameters, they consist of atoms parentheses (*). If an option has parameters, they consist of atoms
and/or strings and/or lists in a specific order. Any options not and/or strings and/or lists in a specific order. Any options not
defined by extensions that the server supports must be rejected with defined by extensions that the server supports must be rejected with
a BAD response. 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 the 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
criteria. criteria.
If the SEARCH results in no matches, the server MUST NOT If the SEARCH results in no matches, the server MUST NOT
include the MIN result option in the ESEARCH response; however, include the MIN result option in the ESEARCH response; however,
skipping to change at page 76, line 5 skipping to change at page 78, line 5
MAY be supported. Clients SHOULD use UTF-8. Note that if "CHARSET" MAY be supported. Clients SHOULD use UTF-8. Note that if "CHARSET"
is not provided IMAP4rev2 server MUST assume UTF-8, so selecting is not provided IMAP4rev2 server MUST assume UTF-8, so selecting
CHARSET UTF-8 is redundant. It is permitted for improved CHARSET UTF-8 is redundant. It is permitted for improved
compatibility with existing IMAP4rev1 clients. compatibility with existing IMAP4rev1 clients.
If the server does not support the specified [CHARSET], it MUST If the server does not support the specified [CHARSET], it MUST
return a tagged NO response (not a BAD). This response SHOULD return a tagged NO response (not a BAD). This response SHOULD
contain the BADCHARSET response code, which MAY list the [CHARSET]s contain the BADCHARSET response code, which MAY list the [CHARSET]s
supported by the server. supported by the server.
In all search keys that use strings, a message matches the key if the In all search keys that use strings and unless specified otherwise, a
string is a substring of the associated text. The matching SHOULD be message matches the key if the string is a substring of the
case-insensitive for characters within ASCII range. Consider using associated text. The matching SHOULD be case-insensitive for
[IMAP-I18N] for language-sensitive case-insensitive searching. Note characters within ASCII range. Consider using [IMAP-I18N] for
that the empty string is a substring; this is useful when doing a language-sensitive case-insensitive searching. Note that the empty
HEADER search in order to test for a header field presence in the string is a substring; this is useful when doing a HEADER search in
message. order to test for a header field presence in the 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> 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.
BEFORE <date> Messages whose internal date (disregarding time and BEFORE <date> Messages whose internal date (disregarding time and
timezone) is earlier than the specified date. timezone) is earlier than the specified date.
BODY <string> Messages that contain the specified string in the body BODY <string> Messages that contain the specified string in the body
of the message. Unlike TEXT (see below), this doesn't match any of the message. Unlike TEXT (see below), this doesn't match any
header fields. header fields. Servers are allowed to implement flexible matching
for this search key, for example matching "swim" to both "swam"
and "swum" in English language text or only doing full word
matching (where "swim" will not match "swimming").
CC <string> Messages that contain the specified string in the CC <string> Messages that contain the specified string in the
envelope structure's CC field. envelope structure's CC field.
DELETED Messages with the \Deleted flag set. DELETED Messages with the \Deleted flag set.
DRAFT Messages with the \Draft flag set. DRAFT Messages with the \Draft flag set.
FLAGGED Messages with the \Flagged flag set. FLAGGED Messages with the \Flagged flag set.
skipping to change at page 77, line 46 skipping to change at page 79, line 49
timezone) is within or later than the specified date. timezone) is within or later than the specified date.
SMALLER <n> Messages with an [RFC-5322] size smaller than the SMALLER <n> Messages with an [RFC-5322] size smaller than the
specified number of octets. specified number of octets.
SUBJECT <string> Messages that contain the specified string in the SUBJECT <string> Messages that contain the specified string in the
envelope structure's SUBJECT field. envelope structure's SUBJECT field.
TEXT <string> Messages that contain the specified string in the TEXT <string> Messages that contain the specified string in the
header (including MIME header fields) or body of the message. header (including MIME header fields) or body of the message.
Servers are allowed to implement flexible matching for this search
key, for example matching "swim" to both "swam" and "swum" in
English language text or only doing full word matching (where
"swim" will not match "swimming").
TO <string> Messages that contain the specified string in the TO <string> Messages that contain the specified string in the
envelope structure's TO field. envelope structure's TO field.
UID <sequence set> Messages with unique identifiers corresponding to UID <sequence set> Messages with unique identifiers corresponding to
the specified unique identifier set. Sequence set ranges are the specified unique identifier set. Sequence set ranges are
permitted. permitted.
UNANSWERED Messages that do not have the \Answered flag set. UNANSWERED Messages that do not have the \Answered flag set.
skipping to change at page 100, line 13 skipping to change at page 102, line 13
responses for the previously opened mailbox (which was closed) responses for the previously opened mailbox (which was closed)
and the newly selected mailbox; all responses before the CLOSED and the newly selected mailbox; all responses before the CLOSED
response code relate to the mailbox that was closed, and all response code relate to the mailbox that was closed, and all
subsequent responses relate to the newly opened mailbox. subsequent responses relate to the newly opened mailbox.
There is no need to return the CLOSED response code on There is no need to return the CLOSED response code on
completion of the CLOSE or the UNSELECT command (or similar), completion of the CLOSE or the UNSELECT command (or similar),
whose purpose is to close the currently selected mailbox whose purpose is to close the currently selected mailbox
without opening a new one. without opening a new one.
The server MAY also return an unsolicited CLOSED response code
when it wants to force the client to return to authenticated
state. For example, the server can do that when the mailbox
requires repairs or is deleted in another session.
CONTACTADMIN CONTACTADMIN
The user should contact the system administrator or support The user should contact the system administrator or support
desk. desk.
C: e login "fred" "foo" C: e login "fred" "foo"
S: e OK [CONTACTADMIN] S: e OK [CONTACTADMIN]
COPYUID COPYUID
skipping to change at page 112, line 16 skipping to change at page 114, line 4
separator character. A NIL hierarchy delimiter means that no separator character. A NIL hierarchy delimiter means that no
hierarchy exists; the name is a "flat" name. hierarchy exists; the name is a "flat" name.
The name represents an unambiguous left-to-right hierarchy, and MUST The name represents an unambiguous left-to-right hierarchy, and MUST
be valid for use as a reference in LIST command. Unless \Noselect or be valid for use as a reference in LIST command. Unless \Noselect or
\NonExistent is indicated, the name MUST also be valid as an argument \NonExistent is indicated, the name MUST also be valid as an argument
for commands, such as SELECT, that accept mailbox names. for commands, such as SELECT, that accept mailbox names.
The name might be followed by an OPTIONAL series of extended fields, The name might be followed by an OPTIONAL series of extended fields,
a parenthesized list of tagged data (also referred to as "extended a parenthesized list of tagged data (also referred to as "extended
data item"). The first element of an extended field is a tag, which data item"). The first element of an extended field is a string,
identifies the type of data. [RFC5258] specified requirements on tag which identifies the type of data. [RFC5258] specified requirements
registration, in particular it said that "Tags MUST be registered on string registration (which are called "tags" there; such tags are
with IANA". This document doesn't change that. See Section 9.5 of not to be confused with IMAP command tags), in particular it said
[RFC5258] for the registration template. The server MAY return data that "Tags MUST be registered with IANA". This document doesn't
in the extended fields that was not directly solicited by the client change that. See Section 9.5 of [RFC5258] for the registration
in the corresponding LIST command. For example, the client can template. The server MAY return data in the extended fields that was
enable extra extended fields by using another IMAP extension that not directly solicited by the client in the corresponding LIST
make use of the extended LIST responses. The client MUST ignore all command. For example, the client can enable extra extended fields by
extended fields it doesn't recognize. using another IMAP extension that make use of the extended LIST
responses. The client MUST ignore all extended fields it doesn't
recognize.
Example: S: * LIST (\Noselect) "/" ~/Mail/foo Example: S: * LIST (\Noselect) "/" ~/Mail/foo
Example: S: * LIST (\Marked) ":" Tables (tablecloth (("edge" "lacy") Example: S: * LIST (\Marked) ":" Tables (tablecloth (("edge" "lacy")
("color" "red")) Sample "text") ("color" "red")) Sample "text")
S: * LIST () ":" Tables:new (tablecloth ("edge" "lacy") S: * LIST () ":" Tables:new (tablecloth ("edge" "lacy")
Sample ("text" "more text")) Sample ("text" "more text"))
7.2.4. NAMESPACE Response 7.2.4. NAMESPACE Response
skipping to change at page 117, line 50 skipping to change at page 119, line 44
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]. Servers SHOULD decode
parameter value continuations as described in [RFC2231], for parameter value continuations and parameter value character
example, if the message contains parameters "foo*0*" and sets as described in [RFC2231], for example, if the message
"foo*1*", the server should RFC2231-decode them, concatenate contains parameters "baz*0", "baz*1" and "baz*2", the server
and return the resulting value as "foo*". should RFC2231-decode them, concatenate and return the
resulting value as a parameter "baz". Similarly, if the
message contains parameters "foo*0*" and "foo*1*", the
server should RFC2231-decode them, convert to UTF-8,
concatenate and return the resulting value as a parameter
"foo*".
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 126, line 10 skipping to change at page 128, line 5
capability-data = "CAPABILITY" *(SP capability) SP "IMAP4rev2" capability-data = "CAPABILITY" *(SP capability) SP "IMAP4rev2"
*(SP capability) *(SP capability)
; Servers MUST implement the STARTTLS, AUTH=PLAIN, ; Servers MUST implement the STARTTLS, AUTH=PLAIN,
; and LOGINDISABLED capabilities. ; and LOGINDISABLED capabilities.
; Servers which offer RFC 1730 compatibility MUST ; Servers which offer RFC 1730 compatibility MUST
; list "IMAP4" as the first capability. ; list "IMAP4" as the first capability.
; Servers which offer RFC 3501 compatibility MUST ; Servers which offer RFC 3501 compatibility MUST
; list "IMAP4rev1" as one of capabilities. ; list "IMAP4rev1" as one of capabilities.
CHAR = <defined in [ABNF]>
CHAR8 = %x01-ff CHAR8 = %x01-ff
; any OCTET except NUL, %x00 ; any OCTET except NUL, %x00
charset = atom / quoted charset = atom / quoted
childinfo-extended-item = "CHILDINFO" SP "(" childinfo-extended-item = "CHILDINFO" SP "("
list-select-base-opt-quoted list-select-base-opt-quoted
*(SP list-select-base-opt-quoted) ")" *(SP list-select-base-opt-quoted) ")"
; Extended data item (mbox-list-extended-item) ; Extended data item (mbox-list-extended-item)
; returned when the RECURSIVEMATCH ; returned when the RECURSIVEMATCH
; selection option is specified. ; selection option is specified.
; Note 1: the CHILDINFO tag can be returned ; Note 1: the CHILDINFO extended data item tag can be
; with and without surrounding quotes, as per ; returned with and without surrounding quotes, as per
; mbox-list-extended-item-tag production. ; mbox-list-extended-item-tag production.
; Note 2: The selection options are always returned ; Note 2: The selection options are always returned
; quoted, unlike their specification in ; quoted, unlike their specification in
; the extended LIST command. ; the extended LIST command.
child-mbox-flag = "\HasChildren" / "\HasNoChildren" child-mbox-flag = "\HasChildren" / "\HasNoChildren"
; attributes for CHILDREN return option, at most one ; attributes for CHILDREN return option, at most one
; possible per LIST response ; possible per LIST response
command = tag SP (command-any / command-auth / command-nonauth / command = tag SP (command-any / command-auth / command-nonauth /
skipping to change at page 127, line 37 skipping to change at page 129, line 32
date-time = DQUOTE date-day-fixed "-" date-month "-" date-year date-time = DQUOTE date-day-fixed "-" date-month "-" date-year
SP time SP zone DQUOTE SP time SP zone DQUOTE
delete = "DELETE" SP mailbox delete = "DELETE" SP mailbox
; Use of INBOX gives a NO error ; Use of INBOX gives a NO error
digit-nz = %x31-39 digit-nz = %x31-39
; 1-9 ; 1-9
eitem-standard-tag = atom eitem-standard-tag = atom
; a tag for extended list data defined in a Standard ; a tag for LIST extended data item defined in a Standard
; Track or Experimental RFC. ; Track or Experimental RFC.
eitem-vendor-tag = vendor-token "-" atom eitem-vendor-tag = vendor-token "-" atom
; a vendor-specific tag for extended list data ; a vendor-specific tag for LIST extended data item
enable = "ENABLE" 1*(SP capability) enable = "ENABLE" 1*(SP capability)
enable-data = "ENABLED" *(SP capability) enable-data = "ENABLED" *(SP capability)
envelope = "(" env-date SP env-subject SP env-from SP envelope = "(" env-date SP env-subject SP env-from SP
env-sender SP env-reply-to SP env-to SP env-cc SP env-sender SP env-reply-to SP env-to SP env-cc SP
env-bcc SP env-in-reply-to SP env-message-id ")" env-bcc SP env-in-reply-to SP env-message-id ")"
env-bcc = "(" 1*address ")" / nil env-bcc = "(" 1*address ")" / nil
skipping to change at page 131, line 20 skipping to change at page 133, line 15
mailbox-list = "(" [mbx-list-flags] ")" SP mailbox-list = "(" [mbx-list-flags] ")" SP
(DQUOTE QUOTED-CHAR DQUOTE / nil) SP mailbox (DQUOTE QUOTED-CHAR DQUOTE / nil) SP mailbox
[SP mbox-list-extended] [SP mbox-list-extended]
; This is the list information pointed to by the ABNF ; This is the list information pointed to by the ABNF
; item "mailbox-data", which is defined in [IMAP4] ; item "mailbox-data", which is defined in [IMAP4]
mbox-list-extended = "(" [mbox-list-extended-item mbox-list-extended = "(" [mbox-list-extended-item
*(SP mbox-list-extended-item)] ")" *(SP mbox-list-extended-item)] ")"
mbox-list-extended-item = mbox-list-extended-item-tag SP mbox-list-extended-item = mbox-list-extended-item-tag SP
tagged-ext-val tagged-ext-val
mbox-list-extended-item-tag = astring mbox-list-extended-item-tag = astring
; The content MUST conform to either "eitem-vendor-tag" ; The content MUST conform to either "eitem-vendor-tag"
; or "eitem-standard-tag" ABNF productions. ; or "eitem-standard-tag" ABNF productions.
mbox-or-pat = list-mailbox / patterns mbox-or-pat = list-mailbox / patterns
mbx-list-flags = *(mbx-list-oflag SP) mbx-list-sflag mbx-list-flags = *(mbx-list-oflag SP) mbx-list-sflag
*(SP mbx-list-oflag) / *(SP mbx-list-oflag) /
mbx-list-oflag *(SP mbx-list-oflag) mbx-list-oflag *(SP mbx-list-oflag)
mbx-list-oflag = "\Noinferiors" / child-mbox-flag / mbx-list-oflag = "\Noinferiors" / child-mbox-flag /
skipping to change at page 132, line 27 skipping to change at page 134, line 21
msg-att-static = "ENVELOPE" SP envelope / "INTERNALDATE" SP date-time / msg-att-static = "ENVELOPE" SP envelope / "INTERNALDATE" SP date-time /
"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
name-component = 1*UTF8-CHAR
; MUST NOT contain ".", "/", "%", or "*"
Namespace = nil / "(" 1*Namespace-Descr ")" Namespace = nil / "(" 1*Namespace-Descr ")"
Namespace-Command = "NAMESPACE" Namespace-Command = "NAMESPACE"
Namespace-Descr = "(" string SP Namespace-Descr = "(" string SP
(DQUOTE QUOTED-CHAR DQUOTE / nil) (DQUOTE QUOTED-CHAR DQUOTE / nil)
[Namespace-Response-Extensions] ")" [Namespace-Response-Extensions] ")"
Namespace-Response-Extensions = *(Namespace-Response-Extension) Namespace-Response-Extensions = *Namespace-Response-Extension
Namespace-Response-Extension = SP string SP Namespace-Response-Extension = SP string SP
"(" string *(SP string) ")" "(" string *(SP string) ")"
Namespace-Response = "NAMESPACE" SP Namespace Namespace-Response = "NAMESPACE" SP Namespace
SP Namespace SP Namespace SP Namespace SP Namespace
; The first Namespace is the Personal Namespace(s). ; The first Namespace is the Personal Namespace(s).
; The second Namespace is the Other Users' ; The second Namespace is the Other Users'
; Namespace(s). ; Namespace(s).
; The third Namespace is the Shared Namespace(s). ; The third Namespace is the Shared Namespace(s).
skipping to change at page 133, line 14 skipping to change at page 135, line 13
; (0 <= n < 4,294,967,296) ; (0 <= n < 4,294,967,296)
number64 = 1*DIGIT number64 = 1*DIGIT
; Unsigned 63-bit integer ; Unsigned 63-bit integer
; (0 <= n <= 9,223,372,036,854,775,807) ; (0 <= n <= 9,223,372,036,854,775,807)
nz-number = digit-nz *DIGIT nz-number = digit-nz *DIGIT
; Non-zero unsigned 32-bit integer ; Non-zero unsigned 32-bit integer
; (0 < n < 4,294,967,296) ; (0 < n < 4,294,967,296)
oldname-extended-item = "OLDNAME" SP "(" mailbox ")"
; Extended data item (mbox-list-extended-item)
; returned in a LIST response when a mailbox is
; renamed or deleted. Also returned when
; the server canonicalized the provided mailbox
; name.
; Note 1: the OLDNAME tag can be returned
; with or without surrounding quotes, as per
; mbox-list-extended-item-tag production.
option-extension = (option-standard-tag / option-vendor-tag) option-extension = (option-standard-tag / option-vendor-tag)
[SP option-value] [SP option-value]
option-standard-tag = atom option-standard-tag = atom
; an option defined in a Standards Track or ; an option defined in a Standards Track or
; Experimental RFC ; Experimental RFC
option-val-comp = astring / option-val-comp = astring /
option-val-comp *(SP option-val-comp) / option-val-comp *(SP option-val-comp) /
"(" option-val-comp ")" "(" option-val-comp ")"
skipping to change at page 134, line 42 skipping to change at page 136, line 51
resp-cond-state = ("OK" / "NO" / "BAD") SP resp-text resp-cond-state = ("OK" / "NO" / "BAD") SP resp-text
; Status condition ; Status condition
resp-specials = "]" resp-specials = "]"
resp-text = ["[" resp-text-code "]" SP] [text] resp-text = ["[" resp-text-code "]" SP] [text]
resp-text-code = "ALERT" / resp-text-code = "ALERT" /
"BADCHARSET" [SP "(" charset *(SP charset) ")" ] / "BADCHARSET" [SP "(" charset *(SP charset) ")" ] /
capability-data / "PARSE" / capability-data / "PARSE" /
"PERMANENTFLAGS" SP "(" "PERMANENTFLAGS" SP
[flag-perm *(SP flag-perm)] ")" / "(" [flag-perm *(SP flag-perm)] ")" /
"READ-ONLY" / "READ-WRITE" / "TRYCREATE" / "READ-ONLY" / "READ-WRITE" / "TRYCREATE" /
"UIDNEXT" SP nz-number / "UIDVALIDITY" SP nz-number / "UIDNEXT" SP nz-number / "UIDVALIDITY" SP nz-number /
resp-code-apnd / resp-code-copy / "UIDNOTSTICKY" / resp-code-apnd / resp-code-copy / "UIDNOTSTICKY" /
"UNAVAILABLE" / "AUTHENTICATIONFAILED" / "UNAVAILABLE" / "AUTHENTICATIONFAILED" /
"AUTHORIZATIONFAILED" / "EXPIRED" / "AUTHORIZATIONFAILED" / "EXPIRED" /
"PRIVACYREQUIRED" / "CONTACTADMIN" / "NOPERM" / "PRIVACYREQUIRED" / "CONTACTADMIN" / "NOPERM" /
"INUSE" / "EXPUNGEISSUED" / "CORRUPTION" / "INUSE" / "EXPUNGEISSUED" / "CORRUPTION" /
"SERVERBUG" / "CLIENTBUG" / "CANNOT" / "SERVERBUG" / "CLIENTBUG" / "CANNOT" /
"LIMIT" / "OVERQUOTA" / "ALREADYEXISTS" / "LIMIT" / "OVERQUOTA" / "ALREADYEXISTS" /
"NONEXISTENT" / "NOTSAVED" / "HASCHILDREN" / "NONEXISTENT" / "NOTSAVED" / "HASCHILDREN" /
skipping to change at page 138, line 31 skipping to change at page 140, line 41
store-att-flags = (["+" / "-"] "FLAGS" [".SILENT"]) SP store-att-flags = (["+" / "-"] "FLAGS" [".SILENT"]) SP
(flag-list / (flag *(SP flag))) (flag-list / (flag *(SP flag)))
string = quoted / literal string = quoted / literal
subscribe = "SUBSCRIBE" SP mailbox subscribe = "SUBSCRIBE" SP mailbox
tag = 1*<any ASTRING-CHAR except "+"> tag = 1*<any ASTRING-CHAR except "+">
tag-string = astring
; <tag> represented as <astring>
tagged-ext-label = tagged-label-fchar *tagged-label-char tagged-ext-label = tagged-label-fchar *tagged-label-char
;; Is a valid RFC 3501 "atom". ;; Is a valid RFC 3501 "atom".
tagged-label-fchar = ALPHA / "-" / "_" / "." tagged-label-fchar = ALPHA / "-" / "_" / "."
tagged-label-char = tagged-label-fchar / DIGIT / ":" tagged-label-char = tagged-label-fchar / DIGIT / ":"
tagged-ext-comp = astring / tagged-ext-comp = astring /
tagged-ext-comp *(SP tagged-ext-comp) / tagged-ext-comp *(SP tagged-ext-comp) /
"(" tagged-ext-comp ")" "(" tagged-ext-comp ")"
skipping to change at page 139, line 40 skipping to change at page 142, line 4
uniqueid = nz-number uniqueid = nz-number
; Strictly ascending ; Strictly ascending
unsubscribe = "UNSUBSCRIBE" SP mailbox unsubscribe = "UNSUBSCRIBE" SP mailbox
userid = astring userid = astring
UTF8-2 = <Defined in Section 4 of RFC 3629> UTF8-2 = <Defined in Section 4 of RFC 3629>
UTF8-3 = <Defined in Section 4 of RFC 3629> UTF8-3 = <Defined in Section 4 of RFC 3629>
UTF8-4 = <Defined in Section 4 of RFC 3629> UTF8-4 = <Defined in Section 4 of RFC 3629>
vendor-token = "vendor." name-component
; Definition copied from RFC 2244.
; MUST be registered with IANA
x-command = "X" atom <experimental command arguments> x-command = "X" atom <experimental command arguments>
zone = ("+" / "-") 4DIGIT zone = ("+" / "-") 4DIGIT
; Signed four-digit value of hhmm representing ; Signed four-digit value of hhmm representing
; hours and minutes east of Greenwich (that is, ; hours and minutes east of Greenwich (that is,
; the amount that the given time differs from ; the amount that the given time differs from
; Universal Time). Subtracting the timezone ; Universal Time). Subtracting the timezone
; from the given time will give the UT form. ; from the given time will give the UT form.
; The Universal Time zone is "+0000". ; The Universal Time zone is "+0000".
skipping to change at page 142, line 10 skipping to change at page 144, line 25
AUTHENTICATE/LOGIN attempts. AUTHENTICATE/LOGIN attempts.
Additional security considerations are discussed in the section Additional security considerations are discussed in the section
discussing the AUTHENTICATE and LOGIN commands. discussing the AUTHENTICATE and LOGIN commands.
12. IANA Considerations 12. IANA Considerations
IANA is requested to update "Service Names and Transport Protocol IANA is requested to update "Service Names and Transport Protocol
Port Numbers" registry as follows: Port Numbers" registry as follows:
1. Registration for TCP "imap" port 143 should be updated to point 1. Registration for TCP port 143 and the corresponding "imap"
to this document and RFC 3501. service name should be updated to point to this document and RFC
3501.
2. Registration for TCP "imaps" port 993 should be updated to point 2. Registration for TCP port 993 and the corresponding "imaps"
to this document, RFC 8314 and RFC 3501. service name should be updated to point to this document, RFC
8314 and RFC 3501.
3. Both UDP port 143 and UDP port 993 should be marked as "Reserved" 3. Both UDP port 143 and UDP port 993 should be marked as "Reserved"
in the registry. in the registry.
Additional IANA actions are specified in subsection of this section. Additional IANA actions are specified in subsection of this section.
12.1. Updates to IMAP4 Capabilities registry 12.1. Updates to IMAP4 Capabilities registry
IMAP4 capabilities are registered by publishing a standards track or IMAP4 capabilities are registered by publishing a standards track or
IESG approved informational or experimental RFC. The registry is IESG approved informational or experimental RFC. The registry is
skipping to change at page 142, line 43 skipping to change at page 145, line 15
12.2. GSSAPI/SASL service name 12.2. GSSAPI/SASL service name
GSSAPI/Kerberos/SASL service names are registered by publishing a GSSAPI/Kerberos/SASL service names are registered by publishing a
standards track or IESG approved experimental RFC. The registry is standards track or IESG approved experimental RFC. The registry is
currently located at: https://www.iana.org/assignments/gssapi- currently located at: https://www.iana.org/assignments/gssapi-
service-names service-names
IANA is requested to update the "imap" service name previously IANA is requested to update the "imap" service name previously
registered in RFC 3501, to point to this document. registered in RFC 3501, to point to this document.
12.3. LIST Selection Options, LIST Return Options, LIST extended data
items
[RFC5258] specifies IANA registration procedures for LIST Selection
Options, LIST Return Options, LIST extended data items. This
document doesn't change these registration procedures. In particular
LIST selection options Section 6.3.9.1 and LIST return options
Section 6.3.9.2 are registered using the procedure specified in
Section 9 of [RFC5258] (and using the registration template from
Section 9.3 of [RFC5258]). LIST Extended Data Items are registered
using the registration template from Section 9.6 of [RFC5258]).
IANA is requested to add a reference to [RFCXXXX] for the "OLDNAME"
LIST-EXTENDED extended data item entry. This is in addition to the
existing reference to [RFC5465].
13. References 13. References
13.1. Normative References 13.1. Normative References
[RFC5258] Leiba, B. and A. Melnikov, "Internet Message Access
Protocol version 4 - LIST Command Extensions", RFC 5258,
DOI 10.17487/RFC5258, June 2008,
<https://www.rfc-editor.org/info/rfc5258>.
[RFC5788] Melnikov, A. and D. Cridland, "IMAP4 Keyword Registry",
RFC 5788, DOI 10.17487/RFC5788, March 2010,
<https://www.rfc-editor.org/info/rfc5788>.
[ABNF] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax [ABNF] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax
Specifications: ABNF", STD 68, RFC 5234, January 2008, Specifications: ABNF", STD 68, RFC 5234, January 2008,
<http://www.rfc-editor.org/info/rfc5234>. <http://www.rfc-editor.org/info/rfc5234>.
[ANONYMOUS] [ANONYMOUS]
Zeilenga, K., "Anonymous Simple Authentication and Zeilenga, K., "Anonymous Simple Authentication and
Security Layer (SASL) Mechanism", RFC 4505, June 2006, Security Layer (SASL) Mechanism", RFC 4505, June 2006,
<http://www.rfc-editor.org/info/rfc4505>. <http://www.rfc-editor.org/info/rfc4505>.
[CHARSET] Freed, N. and J. Postel, "IANA Charset Registration [CHARSET] Freed, N. and J. Postel, "IANA Charset Registration
skipping to change at page 146, line 10 skipping to change at page 148, line 50
[RFC3503] Melnikov, A., "Message Disposition Notification (MDN) [RFC3503] Melnikov, A., "Message Disposition Notification (MDN)
profile for Internet Message Access Protocol (IMAP)", profile for Internet Message Access Protocol (IMAP)",
RFC 3503, DOI 10.17487/RFC3503, March 2003, RFC 3503, DOI 10.17487/RFC3503, March 2003,
<https://www.rfc-editor.org/info/rfc3503>. <https://www.rfc-editor.org/info/rfc3503>.
[RFC5256] Crispin, M. and K. Murchison, "Internet Message Access [RFC5256] Crispin, M. and K. Murchison, "Internet Message Access
Protocol - SORT and THREAD Extensions", RFC 5256, Protocol - SORT and THREAD Extensions", RFC 5256,
DOI 10.17487/RFC5256, June 2008, DOI 10.17487/RFC5256, June 2008,
<https://www.rfc-editor.org/info/rfc5256>. <https://www.rfc-editor.org/info/rfc5256>.
[RFC5258] Leiba, B. and A. Melnikov, "Internet Message Access
Protocol version 4 - LIST Command Extensions", RFC 5258,
DOI 10.17487/RFC5258, June 2008,
<https://www.rfc-editor.org/info/rfc5258>.
[RFC2193] Gahrns, M., "IMAP4 Mailbox Referrals", RFC 2193, [RFC2193] Gahrns, M., "IMAP4 Mailbox Referrals", RFC 2193,
DOI 10.17487/RFC2193, September 1997, DOI 10.17487/RFC2193, September 1997,
<https://www.rfc-editor.org/info/rfc2193>. <https://www.rfc-editor.org/info/rfc2193>.
[RFC3348] Gahrns, M. and R. Cheng, "The Internet Message Action [RFC3348] Gahrns, M. and R. Cheng, "The Internet Message Action
Protocol (IMAP4) Child Mailbox Extension", RFC 3348, Protocol (IMAP4) Child Mailbox Extension", RFC 3348,
DOI 10.17487/RFC3348, July 2002, DOI 10.17487/RFC3348, July 2002,
<https://www.rfc-editor.org/info/rfc3348>. <https://www.rfc-editor.org/info/rfc3348>.
[RFC5465] Gulbrandsen, A., King, C., and A. Melnikov, "The IMAP
NOTIFY Extension", RFC 5465, DOI 10.17487/RFC5465,
February 2009, <https://www.rfc-editor.org/info/rfc5465>.
[RFC7888] Melnikov, A., Ed., "IMAP4 Non-synchronizing Literals", [RFC7888] Melnikov, A., Ed., "IMAP4 Non-synchronizing Literals",
RFC 7888, DOI 10.17487/RFC7888, May 2016, RFC 7888, DOI 10.17487/RFC7888, May 2016,
<https://www.rfc-editor.org/info/rfc7888>. <https://www.rfc-editor.org/info/rfc7888>.
[IMAP-DISC] [IMAP-DISC]
Melnikov, A., Ed., "Synchronization Operations for Melnikov, A., Ed., "Synchronization Operations for
Disconnected IMAP4 Clients", RFC 4549, June 2006, Disconnected IMAP4 Clients", RFC 4549, June 2006,
<http://www.rfc-editor.org/info/rfc4549>. <http://www.rfc-editor.org/info/rfc4549>.
[IMAP-I18N] [IMAP-I18N]
skipping to change at page 150, line 49 skipping to change at page 153, line 43
capability is also advertised in CAPABILITY response/response code. capability is also advertised in CAPABILITY response/response code.
Appendix D. Changes from RFC 3501 / IMAP4rev1 Appendix D. Changes from RFC 3501 / IMAP4rev1
The following is the plan for remaining changes. The plan might The following is the plan for remaining changes. The plan might
change over time. change over time.
1. Revise IANA registration of IMAP extensions and give advice on 1. Revise IANA registration of IMAP extensions and give advice on
use of "X-" convention. use of "X-" convention.
2. Allow word-based searching (as per Chris Newman)? Need to 2. Add a section on other recommended extensions?
discuss header field search, where exact/substring match is still
required for interoperability.
3. Add a section on other recommended extensions?
The following changes were already done: The following changes were already done:
1. Fold in the following extensions/RFC: RFC 5530 (IMAP Response 1. Fold in the following extensions/RFC: RFC 5530 (IMAP Response
Codes), UIDPLUS, ENABLE, ESEARCH, SPECIAL-USE (list of new Codes), UIDPLUS, ENABLE, ESEARCH, SPECIAL-USE (list of new
mailbox attributes), LITERAL-, NAMESPACE, SASL-IR, LIST-STATUS, mailbox attributes), LITERAL-, NAMESPACE, SASL-IR, LIST-STATUS,
SEARCHRES, IDLE, MOVE. SEARCHRES, IDLE, MOVE.
2. Add CLOSED response code (from CONDSTORE). 2. Add CLOSED response code (from CONDSTORE).
skipping to change at page 151, line 50 skipping to change at page 154, line 39
6851) extensions. Also folded RFC 5530 and FETCH side of the 6851) extensions. Also folded RFC 5530 and FETCH side of the
BINARY extension (RFC 3516). BINARY extension (RFC 3516).
2. Clarified that server should decode parameter value 2. Clarified that server should decode parameter value
continuations as described in [RFC2231]. This requirement was continuations as described in [RFC2231]. This requirement was
hidden in RFC 2231 itself. hidden in RFC 2231 itself.
3. SEARCH command now requires to return ESEARCH response (SEARCH 3. SEARCH command now requires to return ESEARCH response (SEARCH
response is now deprecated). response is now deprecated).
4. Added CLOSED response code from RFC 7162. SELECT/EXAMINE when a 4. Clarified which SEARCH keys has to use substring match and which
don't.
5. Added CLOSED response code from RFC 7162. SELECT/EXAMINE when a
mailbox is already selected now require for the CLOSED response mailbox is already selected now require for the CLOSED response
code to be returned. code to be returned.
5. Updated to use modern TLS-related recommendations as per RFC 6. 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 7. 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 8. Added SHOULD level requirement on IMAP servers to support
$MDNSent, $Forwarded, $Junk, $NonJunk and $Phishing keywords. $MDNSent, $Forwarded, $Junk, $NonJunk and $Phishing keywords.
8. Added STATUS SIZE and STATUS DELETED. 9. Added STATUS SIZE (RFC 8438) and STATUS DELETED.
9. Mailbox names and message headers now allow for UTF-8. Support 10. 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. 11. UNSEEN response code on SELECT/EXAMINE is now deprecated.
11. RECENT response on SELECT/EXAMINE, \Recent flag, RECENT STATUS, 12. RECENT response on SELECT/EXAMINE, \Recent flag, RECENT STATUS,
SEARCH NEW items are now deprecated. SEARCH NEW items are now deprecated.
12. Clarified that the server doesn't need to send a new 13. 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. 14. Removed the CHECK command. Clients should use NOOP instead.
14. RFC822, RFC822.HEADER and RFC822.TEXT FETCH data items were 15. RFC822, RFC822.HEADER and RFC822.TEXT FETCH data items were
deprecated. Clients should use the corresponding BODY[] deprecated. Clients should use the corresponding BODY[]
variants instead. variants instead.
15. Replaced DIGEST-MD5 SASL mechanism with SCRAM-SHA-256. DIGEST- 16. 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 17. LSUB command was deprecated. Clients should use LIST
(SUBSCRIBED) instead. (SUBSCRIBED) instead.
17. resp-text ABNF non terminal was updated to allow for empty text. 18. resp-text ABNF non terminal was updated to allow for empty text.
18. IDLE command can now return updates not related to the currently 19. IDLE command can now return updates not related to the currently
selected mailbox state. selected mailbox state.
19. All unsolicited FETCH updates are required to include UID. 20. All unsolicited FETCH updates are required to include UID.
20. Clarified that client implementations MUST ignore response codes 21. Clarified that client implementations MUST ignore response codes
that they do not recognize. (Change from a SHOULD to a MUST.) that they do not recognize. (Change from a SHOULD to a MUST.)
Appendix E. Acknowledgement Appendix E. 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 (by Mark Crispin), RFC This document incorporate text from RFC 4315 (by Mark Crispin), RFC
4466 (by Cyrus Daboo), RFC 4731 (by Dave Cridland), RFC 5161 (by Arnt 4466 (by Cyrus Daboo), RFC 4731 (by Dave Cridland), RFC 5161 (by Arnt
Gulbrandsen), RFC 5530 (by Arnt Gulbrandsen), RFC 5819 (by Timo Gulbrandsen), RFC 5465 (by Arnt Gulbrandsen and Curtis King), RFC
Sirainen), RFC 6154 (by Jamie Nicolson) so work done by authors/ 5530 (by Arnt Gulbrandsen), RFC 5819 (by Timo Sirainen), RFC 6154 (by
Jamie Nicolson), RFC 8438 (by Stephan Bosch) so work done by authors/
editors of these documents is appreciated. Note that editors of this editors of these documents is appreciated. Note that editors of this
document were redacted from the above list. document were redacted from the above list.
Index Index
$ $
$Forwarded (predefined flag) 12 $Forwarded (predefined flag) 12
$Junk (predefined flag) 12 $Junk (predefined flag) 12
$MDNSent (predefined flag) 12 $MDNSent (predefined flag) 12
$NotJunk (predefined flag) 12 $NotJunk (predefined flag) 12
$Phishing (predefined flag) 12 $Phishing (predefined flag) 12
+ +
+FLAGS <flag list> 90 +FLAGS <flag list> 92
+FLAGS.SILENT <flag list> 90 +FLAGS.SILENT <flag list> 92
- -
-FLAGS <flag list> 90 -FLAGS <flag list> 92
-FLAGS.SILENT <flag list> 90 -FLAGS.SILENT <flag list> 92
A A
ALERT (response code) 97 ALERT (response code) 99
ALL (fetch item) 86 ALL (fetch item) 88
ALL (search key) 76 ALL (search key) 78
ALL (search result option) 74 ALL (search result option) 76
ALREADYEXISTS (response code) 97 ALREADYEXISTS (response code) 99
ANSWERED (search key) 76 ANSWERED (search key) 78
APPEND (command) 66 APPEND (command) 68
APPENDUID (response code) 97 APPENDUID (response code) 99
AUTHENTICATE (command) 29 AUTHENTICATE (command) 29
AUTHENTICATIONFAILED (response code) 98 AUTHENTICATIONFAILED (response code) 100
AUTHORIZATIONFAILED (response code) 98 AUTHORIZATIONFAILED (response code) 100
B B
BAD (response) 106 BAD (response) 107
BADCHARSET (response code) 99 BADCHARSET (response code) 101
BCC <string> (search key) 76 BCC <string> (search key) 78
BEFORE <date> (search key) 76 BEFORE <date> (search key) 78
BINARY.PEEK[<section-binary>]<<partial>> (fetch item) 86 BINARY.PEEK[<section-binary>]<<partial>> (fetch item) 88
BINARY.SIZE[<section-binary>] (fetch item) 86 BINARY.SIZE[<section-binary>] (fetch item) 88
BINARY.SIZE[<section-binary>] (fetch result) 116 BINARY.SIZE[<section-binary>] (fetch result) 118
BINARY[<section-binary>]<<number>> (fetch result) 115 BINARY[<section-binary>]<<number>> (fetch result) 117
BINARY[<section-binary>]<<partial>> (fetch item) 86 BINARY[<section-binary>]<<partial>> (fetch item) 88
BODY (fetch item) 87 BODY (fetch item) 89
BODY (fetch result) 116 BODY (fetch result) 118
BODY <string> (search key) 76 BODY <string> (search key) 78
BODY.PEEK[<section>]<<partial>> (fetch item) 89 BODY.PEEK[<section>]<<partial>> (fetch item) 91
BODYSTRUCTURE (fetch item) 89 BODYSTRUCTURE (fetch item) 91
BODYSTRUCTURE (fetch result) 117 BODYSTRUCTURE (fetch result) 119
BODY[<section>]<<origin octet>> (fetch result) 116 BODY[<section>]<<origin octet>> (fetch result) 118
BODY[<section>]<<partial>> (fetch item) 87 BODY[<section>]<<partial>> (fetch item) 89
BYE (response) 106 BYE (response) 108
Body Structure (message attribute) 14 Body Structure (message attribute) 14
C C
CANNOT (response code) 99 CANNOT (response code) 101
CAPABILITY (command) 25 CAPABILITY (command) 25
CAPABILITY (response code) 99 CAPABILITY (response code) 101
CAPABILITY (response) 107 CAPABILITY (response) 109
CC <string> (search key) 76 CC <string> (search key) 78
CLIENTBUG (response code) 99 CLIENTBUG (response code) 101
CLOSE (command) 71 CLOSE (command) 73
CLOSED (response code) 99 CLOSED (response code) 101
CONTACTADMIN (response code) 100 CONTACTADMIN (response code) 102
COPY (command) 90 COPY (command) 92
COPYUID (response code) 100 COPYUID (response code) 102
CORRUPTION (response code) 100 CORRUPTION (response code) 102
COUNT (search result option) 74 COUNT (search result option) 76
CREATE (command) 38 CREATE (command) 38
D D
DELETE (command) 39 DELETE (command) 39
DELETED (search key) 76 DELETED (search key) 78
DELETED (status item) 66 DELETED (status item) 68
DRAFT (search key) 76 DRAFT (search key) 78
E E
ENABLE (command) 33 ENABLE (command) 33
ENVELOPE (fetch item) 89 ENVELOPE (fetch item) 91
ENVELOPE (fetch result) 119 ENVELOPE (fetch result) 121
ESEARCH (response) 113 ESEARCH (response) 115
EXAMINE (command) 37 EXAMINE (command) 37
EXPIRED (response code) 101 EXPIRED (response code) 103
EXPUNGE (command) 72 EXPUNGE (command) 74
EXPUNGE (response) 114 EXPUNGE (response) 116
EXPUNGEISSUED (response code) 101 EXPUNGEISSUED (response code) 103
Envelope Structure (message attribute) 14 Envelope Structure (message attribute) 14
F F
FAST (fetch item) 86 FAST (fetch item) 88
FETCH (command) 85 FETCH (command) 87
FETCH (response) 115 FETCH (response) 117
FLAGGED (search key) 76 FLAGGED (search key) 78
FLAGS (fetch item) 89 FLAGS (fetch item) 91
FLAGS (fetch result) 121 FLAGS (fetch result) 122
FLAGS (response) 113 FLAGS (response) 115
FLAGS <flag list> (store command data item) 90 FLAGS <flag list> (store command data item) 92
FLAGS.SILENT <flag list> (store command data item) 90 FLAGS.SILENT <flag list> (store command data item) 92
FROM <string> (search key) 76 FROM <string> (search key) 78
FULL (fetch item) 86 FULL (fetch item) 88
Flags (message attribute) 11 Flags (message attribute) 11
H H
HASCHILDREN (response code) 101 HASCHILDREN (response code) 103
HEADER (part specifier) 87 HEADER (part specifier) 89
HEADER <field-name> <string> (search key) 76 HEADER <field-name> <string> (search key) 78
HEADER.FIELDS (part specifier) 87 HEADER.FIELDS (part specifier) 89
HEADER.FIELDS.NOT (part specifier) 87 HEADER.FIELDS.NOT (part specifier) 89
I I
IDLE (command) 69 IDLE (command) 71
INTERNALDATE (fetch item) 89 INTERNALDATE (fetch item) 91
INTERNALDATE (fetch result) 121 INTERNALDATE (fetch result) 122
INUSE (response code) 101 INUSE (response code) 103
Internal Date (message attribute) 13 Internal Date (message attribute) 13
K K
KEYWORD <flag> (search key) 77 KEYWORD <flag> (search key) 79
Keyword (type of flag) 12 Keyword (type of flag) 12
L L
LARGER <n> (search key) 77 LARGER <n> (search key) 79
LIMIT (response code) 102 LIMIT (response code) 103
LIST (command) 43 LIST (command) 44
LIST (response) 108 LIST (response) 110
LOGOUT (command) 27 LOGOUT (command) 27
M M
MAX (search result option) 74 MAX (search result option) 76
MAY (specification requirement term) 5 MAY (specification requirement term) 5
MESSAGES (status item) 66 MESSAGES (status item) 68
MIME (part specifier) 88 MIME (part specifier) 90
MIN (search result option) 74 MIN (search result option) 76
MOVE (command) 91 MOVE (command) 93
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) 61 NAMESPACE (command) 62
NAMESPACE (response) 112 NAMESPACE (response) 114
NO (response) 105 NO (response) 107
NONEXISTENT (response code) 102 NONEXISTENT (response code) 104
NOOP (command) 26 NOOP (command) 26
NOPERM (response code) 102 NOPERM (response code) 104
NOT <search-key> (search key) 77 NOT <search-key> (search key) 79
NOT RECOMMENDED (specification requirement term) 5 NOT RECOMMENDED (specification requirement term) 5
O O
OK (response) 105 OK (response) 107
ON <date> (search key) 77 ON <date> (search key) 79
OPTIONAL (specification requirement term) 5 OPTIONAL (specification requirement term) 5
OR <search-key1> <search-key2> (search key) 77 OR <search-key1> <search-key2> (search key) 79
OVERQUOTA (response code) 102 OVERQUOTA (response code) 104
P P
PARSE (response code) 102 PARSE (response code) 104
PERMANENTFLAGS (response code) 103 PERMANENTFLAGS (response code) 104
PREAUTH (response) 106 PREAUTH (response) 108
PRIVACYREQUIRED (response code) 103 PRIVACYREQUIRED (response code) 105
Permanent Flag (class of flag) 13 Permanent Flag (class of flag) 13
Predefined keywords 12 Predefined keywords 12
R R
READ-ONLY (response code) 103 READ-ONLY (response code) 105
READ-WRITE (response code) 103 READ-WRITE (response code) 105
RECOMMENDED (specification requirement term) 5 RECOMMENDED (specification requirement term) 5
RENAME (command) 40 RENAME (command) 41
REQUIRED (specification requirement term) 5 REQUIRED (specification requirement term) 5
RFC822.SIZE (fetch item) 89 RFC822.SIZE (fetch item) 91
RFC822.SIZE (fetch result) 121 RFC822.SIZE (fetch result) 123
S S
SAVE (search result option) 74 SAVE (search result option) 76
SEARCH (command) 73 SEARCH (command) 75
SEEN (search key) 77 SEEN (search key) 79
SELECT (command) 35 SELECT (command) 35
SENTBEFORE <date> (search key) 77 SENTBEFORE <date> (search key) 79
SENTON <date> (search key) 77 SENTON <date> (search key) 79
SENTSINCE <date> (search key) 77 SENTSINCE <date> (search key) 79
SERVERBUG (response code) 103 SERVERBUG (response code) 105
SHOULD (specification requirement term) 5 SHOULD (specification requirement term) 5
SHOULD NOT (specification requirement term) 5 SHOULD NOT (specification requirement term) 5
SINCE <date> (search key) 77 SINCE <date> (search key) 79
SIZE (status item) 66 SIZE (status item) 68
SMALLER <n> (search key) 77 SMALLER <n> (search key) 79
STARTTLS (command) 28 STARTTLS (command) 28
STATUS (command) 65 STATUS (command) 67
STATUS (response) 113 STATUS (response) 114
STORE (command) 89 STORE (command) 91
SUBJECT <string> (search key) 77 SUBJECT <string> (search key) 79
SUBSCRIBE (command) 42 SUBSCRIBE (command) 43
Session Flag (class of flag) 13 Session Flag (class of flag) 13
System Flag (type of flag) 11 System Flag (type of flag) 11
T T
TEXT (part specifier) 87 TEXT (part specifier) 89
TEXT <string> (search key) 77 TEXT <string> (search key) 79
TO <string> (search key) 77 TO <string> (search key) 80
TRYCREATE (response code) 104 TRYCREATE (response code) 105
U U
UID (command) 93 UID (command) 95
UID (fetch item) 89 UID (fetch item) 91
UID (fetch result) 121 UID (fetch result) 123
UID <sequence set> (search key) 78 UID <sequence set> (search key) 80
UIDNEXT (response code) 104 UIDNEXT (response code) 106
UIDNEXT (status item) 66 UIDNEXT (status item) 68
UIDNOTSTICKY (response code) 104 UIDNOTSTICKY (response code) 106
UIDVALIDITY (response code) 104 UIDVALIDITY (response code) 106
UIDVALIDITY (status item) 66 UIDVALIDITY (status item) 68
UNANSWERED (search key) 78 UNANSWERED (search key) 80
UNAVAILABLE (response code) 104 UNAVAILABLE (response code) 106
UNDELETED (search key) 78 UNDELETED (search key) 80
UNDRAFT (search key) 78 UNDRAFT (search key) 80
UNFLAGGED (search key) 78 UNFLAGGED (search key) 80
UNKEYWORD <flag> (search key) 78 UNKEYWORD <flag> (search key) 80
UNKNOWN-CTE (response code) 105 UNKNOWN-CTE (response code) 106
UNSEEN (search key) 78 UNSEEN (search key) 80
UNSEEN (status item) 66 UNSEEN (status item) 68
UNSELECT (command) 72 UNSELECT (command) 74
UNSUBSCRIBE (command) 43 UNSUBSCRIBE (command) 44
Unique Identifier (UID) (message attribute) 9 Unique Identifier (UID) (message attribute) 9
X X
X<atom> (command) 95 X<atom> (command) 97
[ [
[RFC-5322] Size (message attribute) 13 [RFC-5322] Size (message attribute) 13
\ \
\All (mailbox name attribute) 110 \All (mailbox name attribute) 112
\Answered (system flag) 11 \Answered (system flag) 11
\Archive (mailbox name attribute) 110 \Archive (mailbox name attribute) 112
\Deleted (system flag) 12 \Deleted (system flag) 12
\Draft (system flag) 12 \Draft (system flag) 12
\Drafts (mailbox name attribute) 111 \Drafts (mailbox name attribute) 112
\Flagged (mailbox name attribute) 111 \Flagged (mailbox name attribute) 112
\Flagged (system flag) 11 \Flagged (system flag) 11
\HasChildren (mailbox name attribute) 109 \HasChildren (mailbox name attribute) 111
\HasNoChildren (mailbox name attribute) 110 \HasNoChildren (mailbox name attribute) 111
\Junk (mailbox name attribute) 111 \Junk (mailbox name attribute) 113
\Marked (mailbox name attribute) 110 \Marked (mailbox name attribute) 111
\Noinferiors (mailbox name attribute) 109 \Noinferiors (mailbox name attribute) 111
\NonExistent (mailbox name attribute) 109 \NonExistent (mailbox name attribute) 110
\Noselect (mailbox name attribute) 109 \Noselect (mailbox name attribute) 111
\Recent (system flag) 12 \Recent (system flag) 12
\Remote (mailbox name attribute) 110 \Remote (mailbox name attribute) 112
\Seen (system flag) 11 \Seen (system flag) 11
\Sent (mailbox name attribute) 111 \Sent (mailbox name attribute) 113
\Subscribed (mailbox name attribute) 110 \Subscribed (mailbox name attribute) 112
\Trash (mailbox name attribute) 111 \Trash (mailbox name attribute) 113
\Unmarked (mailbox name attribute) 110 \Unmarked (mailbox name attribute) 111
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. 110 change blocks. 
354 lines changed or deleted 493 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/