draft-ietf-extra-imap4rev2-16.txt   draft-ietf-extra-imap4rev2-17.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: January 14, 2021 July 13, 2020 Expires: January 30, 2021 July 29, 2020
Internet Message Access Protocol (IMAP) - Version 4rev2 Internet Message Access Protocol (IMAP) - Version 4rev2
draft-ietf-extra-imap4rev2-16 draft-ietf-extra-imap4rev2-17
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 January 14, 2021. This Internet-Draft will expire on January 30, 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 2, line 47 skipping to change at page 2, line 47
1.3. Special Notes to Implementors . . . . . . . . . . . . . . 6 1.3. Special Notes to Implementors . . . . . . . . . . . . . . 6
2. Protocol Overview . . . . . . . . . . . . . . . . . . . . . . 7 2. Protocol Overview . . . . . . . . . . . . . . . . . . . . . . 7
2.1. Link Level . . . . . . . . . . . . . . . . . . . . . . . 7 2.1. Link Level . . . . . . . . . . . . . . . . . . . . . . . 7
2.2. Commands and Responses . . . . . . . . . . . . . . . . . 7 2.2. Commands and Responses . . . . . . . . . . . . . . . . . 7
2.2.1. Client Protocol Sender and Server Protocol Receiver . 7 2.2.1. Client Protocol Sender and Server Protocol Receiver . 7
2.2.2. Server Protocol Sender and Client Protocol Receiver . 8 2.2.2. Server Protocol Sender and Client Protocol Receiver . 8
2.3. Message Attributes . . . . . . . . . . . . . . . . . . . 9 2.3. Message Attributes . . . . . . . . . . . . . . . . . . . 9
2.3.1. Message Numbers . . . . . . . . . . . . . . . . . . . 9 2.3.1. Message Numbers . . . . . . . . . . . . . . . . . . . 9
2.3.2. Flags Message Attribute . . . . . . . . . . . . . . . 11 2.3.2. Flags Message Attribute . . . . . . . . . . . . . . . 11
2.3.3. Internal Date Message Attribute . . . . . . . . . . . 13 2.3.3. Internal Date Message Attribute . . . . . . . . . . . 13
2.3.4. [RFC-5322] Size Message Attribute . . . . . . . . . . 13 2.3.4. [RFC-5322] Size Message Attribute . . . . . . . . . . 14
2.3.5. Envelope Structure Message Attribute . . . . . . . . 14 2.3.5. Envelope Structure Message Attribute . . . . . . . . 14
2.3.6. Body Structure Message Attribute . . . . . . . . . . 14 2.3.6. Body Structure Message Attribute . . . . . . . . . . 14
2.4. Message Texts . . . . . . . . . . . . . . . . . . . . . . 14 2.4. Message Texts . . . . . . . . . . . . . . . . . . . . . . 14
3. State and Flow Diagram . . . . . . . . . . . . . . . . . . . 14 3. State and Flow Diagram . . . . . . . . . . . . . . . . . . . 14
3.1. Not Authenticated State . . . . . . . . . . . . . . . . . 14 3.1. Not Authenticated State . . . . . . . . . . . . . . . . . 14
3.2. Authenticated State . . . . . . . . . . . . . . . . . . . 14 3.2. Authenticated State . . . . . . . . . . . . . . . . . . . 14
3.3. Selected State . . . . . . . . . . . . . . . . . . . . . 15 3.3. Selected State . . . . . . . . . . . . . . . . . . . . . 15
3.4. Logout State . . . . . . . . . . . . . . . . . . . . . . 15 3.4. Logout State . . . . . . . . . . . . . . . . . . . . . . 15
4. Data Formats . . . . . . . . . . . . . . . . . . . . . . . . 17 4. Data Formats . . . . . . . . . . . . . . . . . . . . . . . . 17
4.1. Atom . . . . . . . . . . . . . . . . . . . . . . . . . . 17 4.1. Atom . . . . . . . . . . . . . . . . . . . . . . . . . . 17
skipping to change at page 4, line 5 skipping to change at page 4, line 5
6.3.11. STATUS Command . . . . . . . . . . . . . . . . . . . 67 6.3.11. STATUS Command . . . . . . . . . . . . . . . . . . . 67
6.3.12. APPEND Command . . . . . . . . . . . . . . . . . . . 68 6.3.12. APPEND Command . . . . . . . . . . . . . . . . . . . 68
6.3.13. IDLE Command . . . . . . . . . . . . . . . . . . . . 71 6.3.13. IDLE Command . . . . . . . . . . . . . . . . . . . . 71
6.4. Client Commands - Selected State . . . . . . . . . . . . 73 6.4. Client Commands - Selected State . . . . . . . . . . . . 73
6.4.1. CLOSE Command . . . . . . . . . . . . . . . . . . . . 73 6.4.1. CLOSE Command . . . . . . . . . . . . . . . . . . . . 73
6.4.2. UNSELECT Command . . . . . . . . . . . . . . . . . . 74 6.4.2. UNSELECT Command . . . . . . . . . . . . . . . . . . 74
6.4.3. EXPUNGE Command . . . . . . . . . . . . . . . . . . . 74 6.4.3. EXPUNGE Command . . . . . . . . . . . . . . . . . . . 74
6.4.4. SEARCH Command . . . . . . . . . . . . . . . . . . . 75 6.4.4. SEARCH Command . . . . . . . . . . . . . . . . . . . 75
6.4.5. FETCH Command . . . . . . . . . . . . . . . . . . . . 87 6.4.5. FETCH Command . . . . . . . . . . . . . . . . . . . . 87
6.4.6. STORE Command . . . . . . . . . . . . . . . . . . . . 91 6.4.6. STORE Command . . . . . . . . . . . . . . . . . . . . 91
6.4.7. COPY Command . . . . . . . . . . . . . . . . . . . . 92 6.4.7. COPY Command . . . . . . . . . . . . . . . . . . . . 93
6.4.8. MOVE Command . . . . . . . . . . . . . . . . . . . . 93 6.4.8. MOVE Command . . . . . . . . . . . . . . . . . . . . 94
6.4.9. UID Command . . . . . . . . . . . . . . . . . . . . . 95 6.4.9. UID Command . . . . . . . . . . . . . . . . . . . . . 95
6.5. Client Commands - Experimental/Expansion . . . . . . . . 97 6.5. Client Commands - Experimental/Expansion . . . . . . . . 97
6.5.1. X<atom> Command . . . . . . . . . . . . . . . . . . . 97 6.5.1. X<atom> Command . . . . . . . . . . . . . . . . . . . 97
7. Server Responses . . . . . . . . . . . . . . . . . . . . . . 98 7. Server Responses . . . . . . . . . . . . . . . . . . . . . . 98
7.1. Server Responses - Status Responses . . . . . . . . . . . 99 7.1. Server Responses - Status Responses . . . . . . . . . . . 99
7.1.1. OK Response . . . . . . . . . . . . . . . . . . . . . 107 7.1.1. OK Response . . . . . . . . . . . . . . . . . . . . . 107
7.1.2. NO Response . . . . . . . . . . . . . . . . . . . . . 107 7.1.2. NO Response . . . . . . . . . . . . . . . . . . . . . 107
7.1.3. BAD Response . . . . . . . . . . . . . . . . . . . . 107 7.1.3. BAD Response . . . . . . . . . . . . . . . . . . . . 108
7.1.4. PREAUTH Response . . . . . . . . . . . . . . . . . . 108 7.1.4. PREAUTH Response . . . . . . . . . . . . . . . . . . 108
7.1.5. BYE Response . . . . . . . . . . . . . . . . . . . . 108 7.1.5. BYE Response . . . . . . . . . . . . . . . . . . . . 108
7.2. Server Responses - Server and Mailbox Status . . . . . . 109 7.2. Server Responses - Server and Mailbox Status . . . . . . 109
7.2.1. The ENABLED Response . . . . . . . . . . . . . . . . 109 7.2.1. The ENABLED Response . . . . . . . . . . . . . . . . 109
7.2.2. CAPABILITY Response . . . . . . . . . . . . . . . . . 109 7.2.2. CAPABILITY Response . . . . . . . . . . . . . . . . . 109
7.2.3. LIST Response . . . . . . . . . . . . . . . . . . . . 110 7.2.3. LIST Response . . . . . . . . . . . . . . . . . . . . 110
7.2.4. NAMESPACE Response . . . . . . . . . . . . . . . . . 114 7.2.4. NAMESPACE Response . . . . . . . . . . . . . . . . . 114
7.2.5. STATUS Response . . . . . . . . . . . . . . . . . . . 114 7.2.5. STATUS Response . . . . . . . . . . . . . . . . . . . 115
7.2.6. ESEARCH Response . . . . . . . . . . . . . . . . . . 115 7.2.6. ESEARCH Response . . . . . . . . . . . . . . . . . . 115
7.2.7. FLAGS Response . . . . . . . . . . . . . . . . . . . 115 7.2.7. FLAGS Response . . . . . . . . . . . . . . . . . . . 115
7.3. Server Responses - Mailbox Size . . . . . . . . . . . . . 116 7.3. Server Responses - Mailbox Size . . . . . . . . . . . . . 116
7.3.1. EXISTS Response . . . . . . . . . . . . . . . . . . . 116 7.3.1. EXISTS Response . . . . . . . . . . . . . . . . . . . 116
7.4. Server Responses - Message Status . . . . . . . . . . . . 116 7.4. Server Responses - Message Status . . . . . . . . . . . . 116
7.4.1. EXPUNGE Response . . . . . . . . . . . . . . . . . . 116 7.4.1. EXPUNGE Response . . . . . . . . . . . . . . . . . . 116
7.4.2. FETCH Response . . . . . . . . . . . . . . . . . . . 117 7.4.2. FETCH Response . . . . . . . . . . . . . . . . . . . 117
7.5. Server Responses - Command Continuation Request . . . . . 123 7.5. Server Responses - Command Continuation Request . . . . . 123
8. Sample IMAP4rev2 connection . . . . . . . . . . . . . . . . . 123 8. Sample IMAP4rev2 connection . . . . . . . . . . . . . . . . . 124
9. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 124 9. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 125
10. Author's Note . . . . . . . . . . . . . . . . . . . . . . . . 142 10. Author's Note . . . . . . . . . . . . . . . . . . . . . . . . 142
11. Security Considerations . . . . . . . . . . . . . . . . . . . 142 11. Security Considerations . . . . . . . . . . . . . . . . . . . 142
11.1. STARTTLS Security Considerations . . . . . . . . . . . . 142 11.1. STARTTLS Security Considerations . . . . . . . . . . . . 142
11.2. COPYUID and APPENDUID response codes . . . . . . . . . . 143 11.2. COPYUID and APPENDUID response codes . . . . . . . . . . 143
11.3. LIST command and Other Users' namespace . . . . . . . . 143 11.3. LIST command and Other Users' namespace . . . . . . . . 143
11.4. Other Security Considerations . . . . . . . . . . . . . 143 11.4. Other Security Considerations . . . . . . . . . . . . . 143
12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 144 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 144
12.1. Updates to IMAP4 Capabilities registry . . . . . . . . . 144 12.1. Updates to IMAP4 Capabilities registry . . . . . . . . . 145
12.2. GSSAPI/SASL service name . . . . . . . . . . . . . . . . 145 12.2. GSSAPI/SASL service name . . . . . . . . . . . . . . . . 145
12.3. LIST Selection Options, LIST Return Options, LIST 12.3. LIST Selection Options, LIST Return Options, LIST
extended data items . . . . . . . . . . . . . . . . . . 145 extended data items . . . . . . . . . . . . . . . . . . 145
13. References . . . . . . . . . . . . . . . . . . . . . . . . . 145 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 145
13.1. Normative References . . . . . . . . . . . . . . . . . . 145 13.1. Normative References . . . . . . . . . . . . . . . . . . 145
13.2. Informative References (related protocols) . . . . . . . 148 13.2. Informative References (related protocols) . . . . . . . 149
13.3. Informative References (historical aspects of IMAP and 13.3. Informative References (historical aspects of IMAP and
related protocols) . . . . . . . . . . . . . . . . . . . 150 related protocols) . . . . . . . . . . . . . . . . . . . 150
Appendix A. Backward compatibility with IMAP4rev1 . . . . . . . 151 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 . . . . . . . . . . . . . . . . . . . . . 151 with IMAP4rev1 . . . . . . . . . . . . . . . . . . . . . 152
Appendix B. Backward compatibility with BINARY extension . . . . 153 Appendix B. Backward compatibility with BINARY extension . . . . 153
Appendix C. Backward compatibility with LIST-EXTENDED extension 153 Appendix C. Backward compatibility with LIST-EXTENDED extension 153
Appendix D. Changes from RFC 3501 / IMAP4rev1 . . . . . . . . . 153 Appendix D. Changes from RFC 3501 / IMAP4rev1 . . . . . . . . . 154
Appendix E. Acknowledgement . . . . . . . . . . . . . . . . . . 155 Appendix E. Acknowledgement . . . . . . . . . . . . . . . . . . 156
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 161 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 162
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 12, line 51 skipping to change at page 13, line 4
choose to mark a message as definitely not containing junk choose to mark a message as definitely not containing junk
($NotJunk; see also the related keyword $Junk). The $NotJunk ($NotJunk; see also the related keyword $Junk). The $NotJunk
keyword can be used to mark, group or show messages that the user keyword can be used to mark, group or show messages that the user
wants to see. See [IMAP-KEYWORDS-REG] for more information. wants to see. See [IMAP-KEYWORDS-REG] for more information.
$Phishing The $Phishing keyword can be used by a delivery agent to $Phishing The $Phishing keyword can be used by a delivery agent to
mark a message as highly likely to be a phishing email. An email mark a message as highly likely to be a phishing email. An email
that's determined to be a phishing email by the delivery agent that's determined to be a phishing email by the delivery agent
should also be considered a junk email and have the appropriate should also be considered a junk email and have the appropriate
junk filtering applied, including setting the $Junk flag and junk filtering applied, including setting the $Junk flag and
placing in the \Junk special-use mailbox if available. placing in the \Junk special-use mailbox (see Section 7.2.3) if
available.
If both the $Phishing flag and the $Junk flag are set, the user If both the $Phishing flag and the $Junk flag are set, the user
agent should display an additional warning message to the user. agent should display an additional warning message to the user.
User agents should not use the term "phishing" in their warning User agents should not use the term "phishing" in their warning
message as most users do not understand this term. Phrasing of message as most users do not understand this term. Phrasing of
the form "this message may be trying to steal your personal the form "this message may be trying to steal your personal
information" is recommended. Additionally the user agent may information" is recommended. Additionally the user agent may
display a warning when clicking on any hyperlinks within the display a warning when clicking on any hyperlinks within the
message. message.
The requirement for both $Phishing and $Junk to be set before a The requirement for both $Phishing and $Junk to be set before a
user agent displays a warning is for better backwards user agent displays a warning is for better backwards
skipping to change at page 21, line 32 skipping to change at page 21, line 32
3. Although the list-wildcard characters ("%" and "*") are valid in 3. Although the list-wildcard characters ("%" and "*") are valid in
a mailbox name, it is difficult to use such mailbox names with a mailbox name, it is difficult to use such mailbox names with
the LIST command due to the conflict with wildcard the LIST command due to the conflict with wildcard
interpretation. interpretation.
4. Usually, a character (determined by the server implementation) is 4. Usually, a character (determined by the server implementation) is
reserved to delimit levels of hierarchy. reserved to delimit levels of hierarchy.
5. Two characters, "#" and "&", have meanings by convention, and 5. Two characters, "#" and "&", have meanings by convention, and
should be avoided except when used in that convention. should be avoided except when used in that convention. See
Section 5.1.2.1 and Appendix A.1 respectively.
5.1.1. Mailbox Hierarchy Naming 5.1.1. Mailbox Hierarchy Naming
If it is desired to export hierarchical mailbox names, mailbox names If it is desired to export hierarchical mailbox names, mailbox names
MUST be left-to-right hierarchical using a single character to MUST be left-to-right hierarchical using a single character to
separate levels of hierarchy. The same hierarchy separator character separate levels of hierarchy. The same hierarchy separator character
is used for all levels of hierarchy within a single name. is used for all levels of hierarchy within a single name.
5.1.2. Namespaces 5.1.2. Namespaces
skipping to change at page 48, line 26 skipping to change at page 48, line 26
supported. Each non-initial option will be enabled by a capability supported. Each non-initial option will be enabled by a capability
string (one capability may enable multiple options), and a client string (one capability may enable multiple options), and a client
MUST NOT send an option for which the server has not advertised MUST NOT send an option for which the server has not advertised
support. A server MUST respond to options it does not recognize with support. A server MUST respond to options it does not recognize with
a BAD response. The client SHOULD NOT specify any option more than a BAD response. The client SHOULD NOT specify any option more than
once; however, if the client does this, the server MUST act as if it once; however, if the client does this, the server MUST act as if it
received the option only once. The order in which options are received the option only once. The order in which options are
specified by the client is not significant. specified by the client is not significant.
In general, each selection option except RECURSIVEMATCH will have a In general, each selection option except RECURSIVEMATCH will have a
corresponding return option. The REMOTE selection option is an corresponding return option with the same name. The REMOTE selection
anomaly in this regard, and does not have a corresponding return option is an anomaly in this regard, and does not have a
option. That is because it expands, rather than restricts, the set corresponding return option. That is because it expands, rather than
of mailboxes that are returned. Future extensions to this restricts, the set of mailboxes that are returned. Future extensions
specification should keep parallelism in mind and define a pair of to this specification should keep this parallelism in mind and define
corresponding options. a pair of corresponding selection and return options.
Server implementations are permitted to "hide" otherwise accessible Server implementations are permitted to "hide" otherwise accessible
mailboxes from the wildcard characters, by preventing certain mailboxes from the wildcard characters, by preventing certain
characters or names from matching a wildcard in certain situations. characters or names from matching a wildcard in certain situations.
For example, a UNIX-based server might restrict the interpretation of For example, a UNIX-based server might restrict the interpretation of
"*" so that an initial "/" character does not match. "*" so that an initial "/" character does not match.
The special name INBOX is included in the output from LIST, if INBOX The special name INBOX is included in the output from LIST, if INBOX
is supported by this server for this user and if the uppercase string is supported by this server for this user and if the uppercase string
"INBOX" matches the interpreted reference and mailbox name arguments "INBOX" matches the interpreted reference and mailbox name arguments
skipping to change at page 50, line 35 skipping to change at page 50, line 35
CHILDREN - requests mailbox child information as originally proposed CHILDREN - requests mailbox child information as originally proposed
in [RFC3348]. See Section 6.3.9.5, below, for details. This in [RFC3348]. See Section 6.3.9.5, below, for details. This
option MUST be supported by all servers. option MUST be supported by all servers.
STATUS - requests STATUS response for each matching mailbox. STATUS - requests STATUS response for each matching mailbox.
This option takes STATUS data items as parameters. For each This option takes STATUS data items as parameters. For each
selectable mailbox matching the list pattern and selection selectable mailbox matching the list pattern and selection
options, the server MUST return an untagged LIST response options, the server MUST return an untagged LIST response
followed by an untagged STATUS response containing the followed by an untagged STATUS response containing the
information requested in the STATUS return option. information requested in the STATUS return option, except for
some cases described below.
If an attempted STATUS for a listed mailbox fails because the If an attempted STATUS for a listed mailbox fails because the
mailbox can't be selected (e.g., if the "l" ACL right [RFC4314] mailbox can't be selected (e.g., if the "l" ACL right [RFC4314]
is granted to the mailbox and the "r" right is not granted, or is granted to the mailbox and the "r" right is not granted, or
due to a race condition between LIST and STATUS changing the due to a race condition between LIST and STATUS changing the
mailbox to \NoSelect), the STATUS response MUST NOT be returned mailbox to \NoSelect), the STATUS response MUST NOT be returned
and the LIST response MUST include the \NoSelect attribute. and the LIST response MUST include the \NoSelect attribute.
This means the server may have to buffer the LIST reply until This means the server may have to buffer the LIST reply until
it has successfully looked up the necessary STATUS information. it has successfully looked up the necessary STATUS information.
skipping to change at page 52, line 16 skipping to change at page 52, line 16
+--------------------+-------------------+ +--------------------+-------------------+
| returned attribute | implied attribute | | returned attribute | implied attribute |
+--------------------+-------------------+ +--------------------+-------------------+
| \NoInferiors | \HasNoChildren | | \NoInferiors | \HasNoChildren |
| \NonExistent | \NoSelect | | \NonExistent | \NoSelect |
+--------------------+-------------------+ +--------------------+-------------------+
6.3.9.5. The CHILDREN Return Option 6.3.9.5. The CHILDREN Return Option
The CHILDREN return option implements the Child Mailbox Extension, The CHILDREN return option is simply an indication that the client
originally proposed by Mike Gahrns and Raymond Cheng, of Microsoft wants information about whether or not mailboxes contain children
Corporation. Most of the information in this section is taken mailboxes; a server MAY provide it even if the option is not
directly from their original specification [RFC3348]. The CHILDREN
return option is simply an indication that the client wants this
information; a server MAY provide it even if the option is not
specified. specified.
Many IMAP4 clients present to the user a hierarchical view of the Many IMAP4 clients present to the user a hierarchical view of the
mailboxes that a user has access to. Rather than initially mailboxes that a user has access to. Rather than initially
presenting to the user the entire mailbox hierarchy, it is often presenting to the user the entire mailbox hierarchy, it is often
preferable to show to the user a collapsed outline list of the preferable to show to the user a collapsed outline list of the
mailbox hierarchy (particularly if there is a large number of mailbox hierarchy (particularly if there is a large number of
mailboxes). The user can then expand the collapsed outline hierarchy mailboxes). The user can then expand the collapsed outline hierarchy
as needed. It is common to include within the collapsed hierarchy a as needed. It is common to include within the collapsed hierarchy a
visual clue (such as a ''+'') to indicate that there are child visual clue (such as a ''+'') to indicate that there are child
skipping to change at page 54, line 18 skipping to change at page 54, line 14
Examples 8 and 10 in Section 6.3.9.8 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 IMAP4rev2 | | exists | meets the | has a child that | returned |
| | selection | meets the | /LIST-EXTENDED | | | selection | meets the | IMAP4rev2/LIST-EXTENDED |
| | criteria | selection | attributes and | | | criteria | selection | attributes and |
| | | criteria | CHILDINFO | | | | criteria | CHILDINFO |
+--------+-------------+------------------+-------------------------+ +--------+-------------+------------------+-------------------------+
| no | no | no | no LIST response | | no | no | no | no LIST response |
| | | | returned | | | | | returned |
| yes | no | no | no LIST response | | yes | no | no | no LIST response |
| | | | returned | | | | | returned |
| no | yes | no | (\NonExistent <attr>) | | no | yes | no | (\NonExistent <attr>) |
| yes | yes | no | (<attr>) | | yes | yes | no | (<attr>) |
| no | no | yes | (\NonExistent) + | | no | no | yes | (\NonExistent) + |
skipping to change at page 62, line 41 skipping to change at page 62, line 41
Result: OK - command completed Result: OK - command completed
NO - Can't complete the command NO - Can't complete the command
BAD - arguments invalid BAD - arguments invalid
The NAMESPACE command causes a single ungagged NAMESPACE response to The NAMESPACE command causes a single ungagged NAMESPACE response to
be returned. The untagged NAMESPACE response contains the prefix and be returned. The untagged NAMESPACE response contains the prefix and
hierarchy delimiter to the server's Personal Namespace(s), Other hierarchy delimiter to the server's Personal Namespace(s), Other
Users' Namespace(s), and Shared Namespace(s) that the server wishes Users' Namespace(s), and Shared Namespace(s) that the server wishes
to expose. The response will contain a NIL for any namespace class to expose. The response will contain a NIL for any namespace class
that is not available. Namespace-Response-Extensions ABNF non that is not available. The Namespace-Response-Extensions ABNF non
terminal is defined for extensibility and MAY be included in the terminal is defined for extensibility and MAY be included in the
response. NAMESPACE response.
Example 1: Example 1:
In this example a server supports a single personal namespace. No In this example a server supports a single personal namespace. No
leading prefix is used on personal mailboxes and "/" is the hierarchy leading prefix is used on personal mailboxes and "/" is the hierarchy
delimiter. delimiter.
C: A001 NAMESPACE C: A001 NAMESPACE
S: * NAMESPACE (("" "/")) NIL NIL S: * NAMESPACE (("" "/")) NIL NIL
S: A001 OK NAMESPACE command completed S: A001 OK NAMESPACE command completed
skipping to change at page 88, line 43 skipping to change at page 88, line 43
Requests that the specified section be transmitted after Requests that the specified section be transmitted after
performing Content-Transfer-Encoding-related decoding. performing Content-Transfer-Encoding-related decoding.
The <partial> argument, if present, requests that a subset of The <partial> argument, if present, requests that a subset of
the data be returned. The semantics of a partial FETCH BINARY the data be returned. The semantics of a partial FETCH BINARY
command are the same as for a partial FETCH BODY command, with command are the same as for a partial FETCH BODY command, with
the exception that the <partial> arguments refer to the DECODED the exception that the <partial> arguments refer to the DECODED
section data. section data.
Note that this data item can only be requested for leaf (i.e.
non multipart/*, non message/rfc822 and non message/global)
body parts.
BINARY.PEEK[<section-binary>]<<partial>> An alternate form of BINARY.PEEK[<section-binary>]<<partial>> An alternate form of
BINARY[<section-binary>] that does not implicitly set the \Seen BINARY[<section-binary>] that does not implicitly set the \Seen
flag. flag.
BINARY.SIZE[<section-binary>] BINARY.SIZE[<section-binary>]
Requests the decoded size of the section (i.e., the size to Requests the decoded size of the section (i.e., the size to
expect in response to the corresponding FETCH BINARY request). expect in response to the corresponding FETCH BINARY request).
Note: client authors are cautioned that this might be an Note: client authors are cautioned that this might be an
expensive operation for some server implementations. expensive operation for some server implementations.
Needlessly issuing this request could result in degraded Needlessly issuing this request could result in degraded
performance due to servers having to calculate the value every performance due to servers having to calculate the value every
time the request is issued. time the request is issued.
Note that this data item can only be requested for leaf (i.e.
non multipart/*, non message/rfc822 and non message/global)
body parts.
BODY Non-extensible form of BODYSTRUCTURE. BODY Non-extensible form of BODYSTRUCTURE.
BODY[<section>]<<partial>> BODY[<section>]<<partial>>
The text of a particular body section. The section The text of a particular body section. The section
specification is a set of zero or more part specifiers specification is a set of zero or more part specifiers
delimited by periods. A part specifier is either a part number delimited by periods. A part specifier is either a part number
or one of the following: HEADER, HEADER.FIELDS, or one of the following: HEADER, HEADER.FIELDS,
HEADER.FIELDS.NOT, MIME, and TEXT. An empty section HEADER.FIELDS.NOT, MIME, and TEXT. An empty section
specification refers to the entire message, including the specification refers to the entire message, including the
skipping to change at page 127, line 4 skipping to change at page 127, line 9
body-ext-mpart = body-fld-param [SP body-fld-dsp [SP body-fld-lang body-ext-mpart = body-fld-param [SP body-fld-dsp [SP body-fld-lang
[SP body-fld-loc *(SP body-extension)]]] [SP body-fld-loc *(SP body-extension)]]]
; MUST NOT be returned on non-extensible ; MUST NOT be returned on non-extensible
; "BODY" fetch ; "BODY" fetch
body-fields = body-fld-param SP body-fld-id SP body-fld-desc SP body-fields = body-fld-param SP body-fld-id SP body-fld-desc SP
body-fld-enc SP body-fld-octets body-fld-enc SP body-fld-octets
body-fld-desc = nstring body-fld-desc = nstring
body-fld-dsp = "(" string SP body-fld-param ")" / nil body-fld-dsp = "(" string SP body-fld-param ")" / nil
body-fld-enc = (DQUOTE ("7BIT" / "8BIT" / "BINARY" / "BASE64"/ body-fld-enc = (DQUOTE ("7BIT" / "8BIT" / "BINARY" / "BASE64"/
"QUOTED-PRINTABLE") DQUOTE) / string "QUOTED-PRINTABLE") DQUOTE) / string
; Content-Transfer-Encoding header field value.
; Defaults to "7BIT" (as per RFC 2045)
; if not present in the body part.
body-fld-id = nstring body-fld-id = nstring
body-fld-lang = nstring / "(" string *(SP string) ")" body-fld-lang = nstring / "(" string *(SP string) ")"
body-fld-loc = nstring body-fld-loc = nstring
body-fld-lines = number body-fld-lines = number
body-fld-md5 = nstring body-fld-md5 = nstring
skipping to change at page 133, line 36 skipping to change at page 133, line 45
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 /
"\Subscribed" / "\Remote" / flag-extension "\Subscribed" / "\Remote" / flag-extension
; Other flags; multiple possible per LIST response ; Other flags; multiple possible per LIST response
mbx-list-sflag = "\NonExistent" / "\Noselect" / "\Marked" / "\Unmarked" mbx-list-sflag = "\NonExistent" / "\Noselect" / "\Marked" / "\Unmarked"
; Selectability flags; only one per LIST response ; Selectability flags; only one per LIST response
media-basic = ((DQUOTE ("APPLICATION" / "AUDIO" / "IMAGE" / media-basic = ((DQUOTE ("APPLICATION" / "AUDIO" / "IMAGE" /
"MESSAGE" / "VIDEO" / "FONT") DQUOTE) / string) SP "FONT" / "MESSAGE" / "MODEL" / "VIDEO" ) DQUOTE)
media-subtype / string)
SP media-subtype
; Defined in [MIME-IMT]. ; Defined in [MIME-IMT].
; FONT defined in RFC YYYY. ; FONT defined in RFC 8081.
media-message = DQUOTE "MESSAGE" DQUOTE SP media-message = DQUOTE "MESSAGE" DQUOTE SP
DQUOTE ("RFC822" / "GLOBAL") DQUOTE DQUOTE ("RFC822" / "GLOBAL") DQUOTE
; Defined in [MIME-IMT] ; Defined in [MIME-IMT]
media-subtype = string media-subtype = string
; Defined in [MIME-IMT] ; Defined in [MIME-IMT]
media-text = DQUOTE "TEXT" DQUOTE SP media-subtype media-text = DQUOTE "TEXT" DQUOTE SP media-subtype
; Defined in [MIME-IMT] ; Defined in [MIME-IMT]
skipping to change at page 140, line 45 skipping to change at page 141, line 6
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-string = astring
; <tag> represented as <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 ")"
;; Extensions that follow this general ; Extensions that follow this general
;; syntax should use nstring instead of ; syntax should use nstring instead of
;; astring when appropriate in the context ; astring when appropriate in the context
;; of the extension. ; of the extension.
;; Note that a message set or a "number" ; Note that a message set or a "number"
;; can always be represented as an "atom". ; can always be represented as an "atom".
;; An URL should be represented as ; An URL should be represented as
;; a "quoted" string. ; a "quoted" string.
tagged-ext-simple = sequence-set / number / number64 tagged-ext-simple = sequence-set / number / number64
tagged-ext-val = tagged-ext-simple / tagged-ext-val = tagged-ext-simple /
"(" [tagged-ext-comp] ")" "(" [tagged-ext-comp] ")"
text = 1*TEXT-CHAR text = 1*(TEXT-CHAR / UTF8-2 / UTF8-3 / UTF8-4)
; Non ASCII text can only be returned
; after ENABLE IMAP4rev2 command
TEXT-CHAR = <any CHAR except CR and LF> TEXT-CHAR = <any CHAR except CR and LF>
time = 2DIGIT ":" 2DIGIT ":" 2DIGIT time = 2DIGIT ":" 2DIGIT ":" 2DIGIT
; Hours minutes seconds ; Hours minutes seconds
uid = "UID" SP uid = "UID" SP
(copy / move / fetch / search / store / uid-expunge) (copy / move / fetch / search / store / uid-expunge)
; Unique identifiers used instead of message ; Unique identifiers used instead of message
; sequence numbers ; sequence numbers
skipping to change at page 142, line 23 skipping to change at page 142, line 35
; 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".
10. Author's Note 10. Author's Note
This document is a revision or rewrite of earlier documents, and This document is a revision or rewrite of earlier documents, and
supercedes the protocol specification in those documents: RFC 2060, supercedes the protocol specification in those documents: RFC 3501,
RFC 1730, unpublished IMAP2bis.TXT document, RFC 1176, and RFC 1064. RFC 2060, RFC 1730, unpublished IMAP2bis.TXT document, RFC 1176, and
RFC 1064.
11. Security Considerations 11. Security Considerations
IMAP4rev2 protocol transactions, including electronic mail data, are IMAP4rev2 protocol transactions, including electronic mail data, are
sent in the clear over the network unless protection from snooping is sent in the clear over the network unless protection from snooping is
negotiated. This can be accomplished either by the use of IMAPS negotiated. This can be accomplished either by the use of IMAPS
service, STARTTLS command, negotiated privacy protection in the service, STARTTLS command, negotiated privacy protection in the
AUTHENTICATE command, or some other protection mechanism. AUTHENTICATE command, or some other protection mechanism.
11.1. STARTTLS Security Considerations 11.1. STARTTLS Security Considerations
skipping to change at page 144, line 18 skipping to change at page 144, line 31
mechanisms that use plaintext passwords, even if the password is mechanisms that use plaintext passwords, even if the password is
correct. correct.
A server error message for a failing LOGIN command SHOULD NOT specify A server error message for a failing LOGIN command SHOULD NOT specify
that the user name, as opposed to the password, is invalid. that the user name, as opposed to the password, is invalid.
A server SHOULD have mechanisms in place to limit or delay failed A server SHOULD have mechanisms in place to limit or delay failed
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 (see Section 6.2.2) and LOGIN (see
Section 6.2.3) 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 port 143 and the corresponding "imap" 1. Registration for TCP port 143 and the corresponding "imap"
service name should be updated to point to this document and RFC service name should be updated to point to this document and RFC
3501. 3501.
skipping to change at page 155, line 45 skipping to change at page 156, line 18
18. 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.
19. 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.
20. All unsolicited FETCH updates are required to include UID. 20. All unsolicited FETCH updates are required to include UID.
21. 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.)
22. After ENABLE IMAP4rev2 human readable response text can include
non ASCII encoded in UTF-8.
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, Stephan Bosch and Arnt
extensive feedback. Gulbrandsen for 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 5465 (by Arnt Gulbrandsen and Curtis King), RFC Gulbrandsen), RFC 5465 (by Arnt Gulbrandsen and Curtis King), RFC
5530 (by Arnt Gulbrandsen), RFC 5819 (by Timo Sirainen), RFC 6154 (by 5530 (by Arnt Gulbrandsen), RFC 5819 (by Timo Sirainen), RFC 6154 (by
Jamie Nicolson), RFC 8438 (by Stephan Bosch) so work done by authors/ 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.
The CHILDREN return option was originally proposed by Mike Gahrns and
Raymond Cheng in [RFC3348]. Most of the information in
Section 6.3.9.5 is taken directly from their original specification
[RFC3348].
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
+ +
skipping to change at page 156, line 48 skipping to change at page 157, line 36
ALL (search result option) 76 ALL (search result option) 76
ALREADYEXISTS (response code) 99 ALREADYEXISTS (response code) 99
ANSWERED (search key) 78 ANSWERED (search key) 78
APPEND (command) 68 APPEND (command) 68
APPENDUID (response code) 99 APPENDUID (response code) 99
AUTHENTICATE (command) 29 AUTHENTICATE (command) 29
AUTHENTICATIONFAILED (response code) 100 AUTHENTICATIONFAILED (response code) 100
AUTHORIZATIONFAILED (response code) 100 AUTHORIZATIONFAILED (response code) 100
B B
BAD (response) 107 BAD (response) 108
BADCHARSET (response code) 101 BADCHARSET (response code) 101
BCC <string> (search key) 78 BCC <string> (search key) 78
BEFORE <date> (search key) 78 BEFORE <date> (search key) 78
BINARY.PEEK[<section-binary>]<<partial>> (fetch item) 88 BINARY.PEEK[<section-binary>]<<partial>> (fetch item) 88
BINARY.SIZE[<section-binary>] (fetch item) 88 BINARY.SIZE[<section-binary>] (fetch item) 88
BINARY.SIZE[<section-binary>] (fetch result) 118 BINARY.SIZE[<section-binary>] (fetch result) 118
BINARY[<section-binary>]<<number>> (fetch result) 117 BINARY[<section-binary>]<<number>> (fetch result) 117
BINARY[<section-binary>]<<partial>> (fetch item) 88 BINARY[<section-binary>]<<partial>> (fetch item) 88
BODY (fetch item) 89 BODY (fetch item) 89
BODY (fetch result) 118 BODY (fetch result) 118
skipping to change at page 157, line 27 skipping to change at page 158, line 15
Body Structure (message attribute) 14 Body Structure (message attribute) 14
C C
CANNOT (response code) 101 CANNOT (response code) 101
CAPABILITY (command) 25 CAPABILITY (command) 25
CAPABILITY (response code) 101 CAPABILITY (response code) 101
CAPABILITY (response) 109 CAPABILITY (response) 109
CC <string> (search key) 78 CC <string> (search key) 78
CLIENTBUG (response code) 101 CLIENTBUG (response code) 101
CLOSE (command) 73 CLOSE (command) 73
CLOSED (response code) 101 CLOSED (response code) 102
CONTACTADMIN (response code) 102 CONTACTADMIN (response code) 102
COPY (command) 92 COPY (command) 93
COPYUID (response code) 102 COPYUID (response code) 102
CORRUPTION (response code) 102 CORRUPTION (response code) 102
COUNT (search result option) 76 COUNT (search result option) 76
CREATE (command) 38 CREATE (command) 38
D D
DELETE (command) 39 DELETE (command) 39
DELETED (search key) 78 DELETED (search key) 78
DELETED (status item) 68 DELETED (status item) 68
DRAFT (search key) 78 DRAFT (search key) 78
skipping to change at page 158, line 11 skipping to change at page 158, line 47
EXPUNGE (response) 116 EXPUNGE (response) 116
EXPUNGEISSUED (response code) 103 EXPUNGEISSUED (response code) 103
Envelope Structure (message attribute) 14 Envelope Structure (message attribute) 14
F F
FAST (fetch item) 88 FAST (fetch item) 88
FETCH (command) 87 FETCH (command) 87
FETCH (response) 117 FETCH (response) 117
FLAGGED (search key) 78 FLAGGED (search key) 78
FLAGS (fetch item) 91 FLAGS (fetch item) 91
FLAGS (fetch result) 122 FLAGS (fetch result) 123
FLAGS (response) 115 FLAGS (response) 115
FLAGS <flag list> (store command data item) 92 FLAGS <flag list> (store command data item) 92
FLAGS.SILENT <flag list> (store command data item) 92 FLAGS.SILENT <flag list> (store command data item) 92
FROM <string> (search key) 78 FROM <string> (search key) 78
FULL (fetch item) 88 FULL (fetch item) 88
Flags (message attribute) 11 Flags (message attribute) 11
H H
HASCHILDREN (response code) 103 HASCHILDREN (response code) 103
HEADER (part specifier) 89 HEADER (part specifier) 89
HEADER <field-name> <string> (search key) 78 HEADER <field-name> <string> (search key) 78
HEADER.FIELDS (part specifier) 89 HEADER.FIELDS (part specifier) 89
HEADER.FIELDS.NOT (part specifier) 89 HEADER.FIELDS.NOT (part specifier) 89
I I
IDLE (command) 71 IDLE (command) 71
INTERNALDATE (fetch item) 91 INTERNALDATE (fetch item) 91
INTERNALDATE (fetch result) 122 INTERNALDATE (fetch result) 123
INUSE (response code) 103 INUSE (response code) 103
Internal Date (message attribute) 13 Internal Date (message attribute) 13
K K
KEYWORD <flag> (search key) 79 KEYWORD <flag> (search key) 79
Keyword (type of flag) 12 Keyword (type of flag) 12
L L
LARGER <n> (search key) 79 LARGER <n> (search key) 79
LIMIT (response code) 103 LIMIT (response code) 104
LIST (command) 44 LIST (command) 44
LIST (response) 110 LIST (response) 110
LOGOUT (command) 27 LOGOUT (command) 27
M M
MAX (search result option) 76 MAX (search result option) 76
MAY (specification requirement term) 5 MAY (specification requirement term) 5
MESSAGES (status item) 68 MESSAGES (status item) 68
MIME (part specifier) 90 MIME (part specifier) 90
MIN (search result option) 76 MIN (search result option) 76
MOVE (command) 93 MOVE (command) 94
MUST (specification requirement term) 5 MUST (specification requirement term) 5
MUST NOT (specification requirement term) 5 MUST NOT (specification requirement term) 5
Message Sequence Number (message attribute) 11 Message Sequence Number (message attribute) 11
N N
NAMESPACE (command) 62 NAMESPACE (command) 62
NAMESPACE (response) 114 NAMESPACE (response) 114
NO (response) 107 NO (response) 107
NONEXISTENT (response code) 104 NONEXISTENT (response code) 104
NOOP (command) 26 NOOP (command) 26
skipping to change at page 159, line 25 skipping to change at page 160, line 14
O O
OK (response) 107 OK (response) 107
ON <date> (search key) 79 ON <date> (search key) 79
OPTIONAL (specification requirement term) 5 OPTIONAL (specification requirement term) 5
OR <search-key1> <search-key2> (search key) 79 OR <search-key1> <search-key2> (search key) 79
OVERQUOTA (response code) 104 OVERQUOTA (response code) 104
P P
PARSE (response code) 104 PARSE (response code) 104
PERMANENTFLAGS (response code) 104 PERMANENTFLAGS (response code) 105
PREAUTH (response) 108 PREAUTH (response) 108
PRIVACYREQUIRED (response code) 105 PRIVACYREQUIRED (response code) 105
Permanent Flag (class of flag) 13 Permanent Flag (class of flag) 13
Predefined keywords 12 Predefined keywords 12
R R
READ-ONLY (response code) 105 READ-ONLY (response code) 105
READ-WRITE (response code) 105 READ-WRITE (response code) 105
RECOMMENDED (specification requirement term) 5 RECOMMENDED (specification requirement term) 5
RENAME (command) 41 RENAME (command) 41
skipping to change at page 159, line 48 skipping to change at page 160, line 37
RFC822.SIZE (fetch result) 123 RFC822.SIZE (fetch result) 123
S S
SAVE (search result option) 76 SAVE (search result option) 76
SEARCH (command) 75 SEARCH (command) 75
SEEN (search key) 79 SEEN (search key) 79
SELECT (command) 35 SELECT (command) 35
SENTBEFORE <date> (search key) 79 SENTBEFORE <date> (search key) 79
SENTON <date> (search key) 79 SENTON <date> (search key) 79
SENTSINCE <date> (search key) 79 SENTSINCE <date> (search key) 79
SERVERBUG (response code) 105 SERVERBUG (response code) 106
SHOULD (specification requirement term) 5 SHOULD (specification requirement term) 5
SHOULD NOT (specification requirement term) 5 SHOULD NOT (specification requirement term) 5
SINCE <date> (search key) 79 SINCE <date> (search key) 79
SIZE (status item) 68 SIZE (status item) 68
SMALLER <n> (search key) 79 SMALLER <n> (search key) 79
STARTTLS (command) 28 STARTTLS (command) 28
STATUS (command) 67 STATUS (command) 67
STATUS (response) 114 STATUS (response) 115
STORE (command) 91 STORE (command) 91
SUBJECT <string> (search key) 79 SUBJECT <string> (search key) 79
SUBSCRIBE (command) 43 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) 89 TEXT (part specifier) 89
TEXT <string> (search key) 79 TEXT <string> (search key) 79
TO <string> (search key) 80 TO <string> (search key) 80
TRYCREATE (response code) 105 TRYCREATE (response code) 106
U U
UID (command) 95 UID (command) 95
UID (fetch item) 91 UID (fetch item) 91
UID (fetch result) 123 UID (fetch result) 123
UID <sequence set> (search key) 80 UID <sequence set> (search key) 80
UIDNEXT (response code) 106 UIDNEXT (response code) 106
UIDNEXT (status item) 68 UIDNEXT (status item) 68
UIDNOTSTICKY (response code) 106 UIDNOTSTICKY (response code) 106
UIDVALIDITY (response code) 106 UIDVALIDITY (response code) 106
UIDVALIDITY (status item) 68 UIDVALIDITY (status item) 68
UNANSWERED (search key) 80 UNANSWERED (search key) 80
UNAVAILABLE (response code) 106 UNAVAILABLE (response code) 106
UNDELETED (search key) 80 UNDELETED (search key) 80
UNDRAFT (search key) 80 UNDRAFT (search key) 80
UNFLAGGED (search key) 80 UNFLAGGED (search key) 80
UNKEYWORD <flag> (search key) 80 UNKEYWORD <flag> (search key) 80
UNKNOWN-CTE (response code) 106 UNKNOWN-CTE (response code) 107
UNSEEN (search key) 80 UNSEEN (search key) 80
UNSEEN (status item) 68 UNSEEN (status item) 68
UNSELECT (command) 74 UNSELECT (command) 74
UNSUBSCRIBE (command) 44 UNSUBSCRIBE (command) 44
Unique Identifier (UID) (message attribute) 9 Unique Identifier (UID) (message attribute) 9
X X
X<atom> (command) 97 X<atom> (command) 97
[ [
[RFC-5322] Size (message attribute) 13 [RFC-5322] Size (message attribute) 14
\ \
\All (mailbox name attribute) 112 \All (mailbox name attribute) 112
\Answered (system flag) 11 \Answered (system flag) 11
\Archive (mailbox name attribute) 112 \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) 112 \Drafts (mailbox name attribute) 113
\Flagged (mailbox name attribute) 112 \Flagged (mailbox name attribute) 113
\Flagged (system flag) 11 \Flagged (system flag) 11
\HasChildren (mailbox name attribute) 111 \HasChildren (mailbox name attribute) 111
\HasNoChildren (mailbox name attribute) 111 \HasNoChildren (mailbox name attribute) 112
\Junk (mailbox name attribute) 113 \Junk (mailbox name attribute) 113
\Marked (mailbox name attribute) 111 \Marked (mailbox name attribute) 112
\Noinferiors (mailbox name attribute) 111 \Noinferiors (mailbox name attribute) 111
\NonExistent (mailbox name attribute) 110 \NonExistent (mailbox name attribute) 111
\Noselect (mailbox name attribute) 111 \Noselect (mailbox name attribute) 111
\Recent (system flag) 12 \Recent (system flag) 12
\Remote (mailbox name attribute) 112 \Remote (mailbox name attribute) 112
\Seen (system flag) 11 \Seen (system flag) 11
\Sent (mailbox name attribute) 113 \Sent (mailbox name attribute) 113
\Subscribed (mailbox name attribute) 112 \Subscribed (mailbox name attribute) 112
\Trash (mailbox name attribute) 113 \Trash (mailbox name attribute) 113
\Unmarked (mailbox name attribute) 111 \Unmarked (mailbox name attribute) 112
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. 53 change blocks. 
75 lines changed or deleted 98 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/