draft-ietf-extra-imap4rev2-18.txt   draft-ietf-extra-imap4rev2-19.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: March 19, 2021 September 15, 2020 Expires: April 30, 2021 October 27, 2020
Internet Message Access Protocol (IMAP) - Version 4rev2 Internet Message Access Protocol (IMAP) - Version 4rev2
draft-ietf-extra-imap4rev2-18 draft-ietf-extra-imap4rev2-19
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 March 19, 2021. This Internet-Draft will expire on April 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 3, line 4 skipping to change at page 3, line 4
2.3. Message Attributes . . . . . . . . . . . . . . . . . . . 9 2.3. Message Attributes . . . . . . . . . . . . . . . . . . . 9
2.3.1. Message Numbers . . . . . . . . . . . . . . . . . . . 9 2.3.1. Message Numbers . . . . . . . . . . . . . . . . . . . 9
2.3.2. Flags Message Attribute . . . . . . . . . . . . . . . 11 2.3.2. Flags Message Attribute . . . . . . . . . . . . . . . 11
2.3.3. Internal Date Message Attribute . . . . . . . . . . . 13 2.3.3. Internal Date Message Attribute . . . . . . . . . . . 13
2.3.4. [RFC-5322] Size Message Attribute . . . . . . . . . . 14 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 . . . . . . . . . . . . . . . . . . . 15
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
4.1.1. Sequence set and UID set . . . . . . . . . . . . . . 17 4.1.1. Sequence set and UID set . . . . . . . . . . . . . . 17
4.2. Number . . . . . . . . . . . . . . . . . . . . . . . . . 17 4.2. Number . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.3. String . . . . . . . . . . . . . . . . . . . . . . . . . 17 4.3. String . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.3.1. 8-bit and Binary Strings . . . . . . . . . . . . . . 18 4.3.1. 8-bit and Binary Strings . . . . . . . . . . . . . . 18
4.4. Parenthesized List . . . . . . . . . . . . . . . . . . . 19 4.4. Parenthesized List . . . . . . . . . . . . . . . . . . . 19
4.5. NIL . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 4.5. NIL . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
skipping to change at page 4, line 40 skipping to change at page 4, line 40
7.5. Server Responses - Command Continuation Request . . . . . 124 7.5. Server Responses - Command Continuation Request . . . . . 124
8. Sample IMAP4rev2 connection . . . . . . . . . . . . . . . . . 124 8. Sample IMAP4rev2 connection . . . . . . . . . . . . . . . . . 124
9. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 125 9. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 125
10. Author's Note . . . . . . . . . . . . . . . . . . . . . . . . 143 10. Author's Note . . . . . . . . . . . . . . . . . . . . . . . . 143
11. Security Considerations . . . . . . . . . . . . . . . . . . . 143 11. Security Considerations . . . . . . . . . . . . . . . . . . . 143
11.1. STARTTLS Security Considerations . . . . . . . . . . . . 143 11.1. STARTTLS Security Considerations . . . . . . . . . . . . 143
11.2. COPYUID and APPENDUID response codes . . . . . . . . . . 144 11.2. COPYUID and APPENDUID response codes . . . . . . . . . . 144
11.3. LIST command and Other Users' namespace . . . . . . . . 144 11.3. LIST command and Other Users' namespace . . . . . . . . 144
11.4. Other Security Considerations . . . . . . . . . . . . . 144 11.4. Other Security Considerations . . . . . . . . . . . . . 144
12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 145 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 145
12.1. Updates to IMAP4 Capabilities registry . . . . . . . . . 145 12.1. Updates to IMAP4 Capabilities registry . . . . . . . . . 146
12.2. GSSAPI/SASL service name . . . . . . . . . . . . . . . . 146 12.2. GSSAPI/SASL service name . . . . . . . . . . . . . . . . 146
12.3. LIST Selection Options, LIST Return Options, LIST 12.3. LIST Selection Options, LIST Return Options, LIST
extended data items . . . . . . . . . . . . . . . . . . 146 extended data items . . . . . . . . . . . . . . . . . . 146
13. References . . . . . . . . . . . . . . . . . . . . . . . . . 146 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 146
13.1. Normative References . . . . . . . . . . . . . . . . . . 146 13.1. Normative References . . . . . . . . . . . . . . . . . . 146
13.2. Informative References (related protocols) . . . . . . . 149 13.2. Informative References (related protocols) . . . . . . . 150
13.3. Informative References (historical aspects of IMAP and 13.3. Informative References (historical aspects of IMAP and
related protocols) . . . . . . . . . . . . . . . . . . . 151 related protocols) . . . . . . . . . . . . . . . . . . . 152
Appendix A. Backward compatibility with IMAP4rev1 . . . . . . . 152 Appendix A. Backward compatibility with IMAP4rev1 . . . . . . . 152
A.1. Mailbox International Naming Convention for compatibility A.1. Mailbox International Naming Convention for compatibility
with IMAP4rev1 . . . . . . . . . . . . . . . . . . . . . 152 with IMAP4rev1 . . . . . . . . . . . . . . . . . . . . . 153
Appendix B. Backward compatibility with BINARY extension . . . . 154 Appendix B. Backward compatibility with BINARY extension . . . . 154
Appendix C. Backward compatibility with LIST-EXTENDED extension 154 Appendix C. Backward compatibility with LIST-EXTENDED extension 155
Appendix D. Changes from RFC 3501 / IMAP4rev1 . . . . . . . . . 154 Appendix D. Changes from RFC 3501 / IMAP4rev1 . . . . . . . . . 155
Appendix E. Acknowledgement . . . . . . . . . . . . . . . . . . 157 Appendix E. Other Recommended IMAP Extensions . . . . . . . . . 156
Appendix F. Acknowledgement . . . . . . . . . . . . . . . . . . 157
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 162 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 163
1. How to Read This Document 1. How to Read This Document
1.1. Organization of This Document 1.1. Organization of This Document
This document is written from the point of view of the implementor of This document is written from the point of view of the implementor of
an IMAP4rev2 client or server. Beyond the protocol overview in an IMAP4rev2 client or server. Beyond the protocol overview in
section 2, it is not optimized for someone trying to understand the section 2, it is not optimized for someone trying to understand the
operation of the protocol. The material in sections 3 through 5 operation of the protocol. The material in sections 3 through 5
provides the general context and definitions with which IMAP4rev2 provides the general context and definitions with which IMAP4rev2
skipping to change at page 6, line 36 skipping to change at page 6, line 40
Implementors of the IMAP protocol are strongly encouraged to read the Implementors of the IMAP protocol are strongly encouraged to read the
IMAP implementation recommendations document [IMAP-IMPLEMENTATION] in IMAP implementation recommendations document [IMAP-IMPLEMENTATION] in
conjunction with this document, to help understand the intricacies of conjunction with this document, to help understand the intricacies of
this protocol and how best to build an interoperable product. this protocol and how best to build an interoperable product.
IMAP4rev2 is designed to be upwards compatible from the [IMAP2] and IMAP4rev2 is designed to be upwards compatible from the [IMAP2] and
unpublished IMAP2bis protocols. IMAP4rev2 is largely compatible with unpublished IMAP2bis protocols. IMAP4rev2 is largely compatible with
the IMAP4rev1 protocol described in RFC 3501 and the IMAP4 protocol the IMAP4rev1 protocol described in RFC 3501 and the IMAP4 protocol
described in RFC 1730; the exception being in certain facilities described in RFC 1730; the exception being in certain facilities
added in RFC 1730 that proved problematic and were subsequently added in RFC 1730 and RFC 3501 that proved problematic and were
removed. In the course of the evolution of IMAP4rev2, some aspects subsequently removed or replaced by better alternatives. In the
in the earlier protocols have become obsolete. Obsolete commands, course of the evolution of IMAP4rev2, some aspects in the earlier
responses, and data formats which an IMAP4rev2 implementation can protocols have become obsolete. Obsolete commands, responses, and
encounter when used with an earlier implementation are described in data formats which an IMAP4rev2 implementation can encounter when
Appendix D and [IMAP-OBSOLETE]. used with an earlier implementation are described in Appendix D,
Appendix A and [IMAP-OBSOLETE]. IMAP4rev2 compatibility with BINARY
and LIST-EXTENDED IMAP extensions are described in Appendix B and
Appendix C respectively.
Other compatibility issues with IMAP2bis, the most common variant of Other compatibility issues with IMAP2bis, the most common variant of
the earlier protocol, are discussed in [IMAP-COMPAT]. A full the earlier protocol, are discussed in [IMAP-COMPAT]. A full
discussion of compatibility issues with rare (and presumed extinct) discussion of compatibility issues with rare (and presumed extinct)
variants of [IMAP2] is in [IMAP-HISTORICAL]; this document is variants of [IMAP2] is in [IMAP-HISTORICAL]; this document is
primarily of historical interest. primarily of historical interest.
IMAP was originally developed for the older [RFC-822] standard, and IMAP was originally developed for the older [RFC-822] standard, and
as a consequence several fetch items in IMAP incorporate "RFC822" in as a consequence several fetch items in IMAP incorporate "RFC822" in
their name. In all cases, "RFC822" should be interpreted as a their name. In all cases, "RFC822" should be interpreted as a
skipping to change at page 28, line 32 skipping to change at page 28, line 32
STARTTLS, AUTHENTICATE and LOGIN. See the Security Considerations STARTTLS, AUTHENTICATE and LOGIN. See the Security Considerations
section for important information about these commands. section for important information about these commands.
6.2.1. STARTTLS Command 6.2.1. STARTTLS Command
Arguments: none Arguments: none
Responses: no specific response for this command Responses: no specific response for this command
Result: OK - starttls completed, begin TLS negotiation Result: OK - starttls completed, begin TLS negotiation
BAD - command unknown or arguments invalid BAD - STARTTLS received after a successful TLS
negotiation or arguments invalid
A [TLS] negotiation begins immediately after the CRLF at the end of A TLS [TLS-1.3] negotiation begins immediately after the CRLF at the
the tagged OK response from the server. Once a client issues a end of the tagged OK response from the server. Once a client issues
STARTTLS command, it MUST NOT issue further commands until a server a STARTTLS command, it MUST NOT issue further commands until a server
response is seen and the [TLS] negotiation is complete. response is seen and the TLS negotiation is complete.
The server remains in the non-authenticated state, even if client The server remains in the non-authenticated state, even if client
credentials are supplied during the [TLS] negotiation. This does not credentials are supplied during the TLS negotiation. This does not
preclude an authentication mechanism such as EXTERNAL (defined in preclude an authentication mechanism such as EXTERNAL (defined in
[SASL]) from using client identity determined by the [TLS] [SASL]) from using client identity determined by the TLS negotiation.
negotiation.
Once [TLS] has been started, the client MUST discard cached Once TLS has been started, the client MUST discard cached information
information about server capabilities and SHOULD re-issue the about server capabilities and SHOULD re-issue the CAPABILITY command.
CAPABILITY command. This is necessary to protect against man-in- This is necessary to protect against man-in- the-middle attacks which
the-middle attacks which alter the capabilities list prior to alter the capabilities list prior to STARTTLS. The server MAY
STARTTLS. The server MAY advertise different capabilities, and in advertise different capabilities, and in particular SHOULD NOT
particular SHOULD NOT advertise the STARTTLS capability, after a advertise the STARTTLS capability, after a successful STARTTLS
successful STARTTLS command. command.
Example: C: a001 CAPABILITY Example: C: a001 CAPABILITY
S: * CAPABILITY IMAP4rev2 STARTTLS LOGINDISABLED S: * CAPABILITY IMAP4rev2 STARTTLS LOGINDISABLED
S: a001 OK CAPABILITY completed S: a001 OK CAPABILITY completed
C: a002 STARTTLS C: a002 STARTTLS
S: a002 OK Begin TLS negotiation now S: a002 OK Begin TLS negotiation now
<TLS negotiation, further commands are under [TLS] layer> <TLS negotiation, further commands are under TLS layer>
C: a003 CAPABILITY C: a003 CAPABILITY
S: * CAPABILITY IMAP4rev2 AUTH=PLAIN S: * CAPABILITY IMAP4rev2 AUTH=PLAIN
S: a003 OK CAPABILITY completed S: a003 OK CAPABILITY completed
C: a004 LOGIN joe password C: a004 LOGIN joe password
S: a004 OK LOGIN completed S: a004 OK LOGIN completed
6.2.2. AUTHENTICATE Command 6.2.2. AUTHENTICATE Command
Arguments: SASL authentication mechanism name Arguments: SASL authentication mechanism name
OPTIONAL initial response OPTIONAL initial response
Responses: continuation data can be requested Responses: continuation data can be requested
Result: OK - authenticate completed, now in authenticated state Result: OK - authenticate completed, now in authenticated state
NO - authenticate failure: unsupported authentication NO - authenticate failure: unsupported authentication
skipping to change at page 143, line 42 skipping to change at page 143, line 42
IMAP4rev2 protocol transactions, including electronic mail data, are IMAP4rev2 protocol transactions, including electronic mail data, are
sent in the clear over the network unless protection from snooping is sent in the clear over the network unless protection from snooping is
negotiated. This can be accomplished either by the use of IMAPS negotiated. This can be accomplished either by the use of IMAPS
service, STARTTLS command, negotiated privacy protection in the service, STARTTLS command, negotiated privacy protection in the
AUTHENTICATE command, or some other protection mechanism. AUTHENTICATE command, or some other protection mechanism.
11.1. STARTTLS Security Considerations 11.1. STARTTLS Security Considerations
IMAP client and server implementations MUST comply with relevant TLS IMAP client and server implementations MUST comply with relevant TLS
recommendations from [RFC8314]. Additionally, when using TLS 1.2, recommendations from [RFC8314].
IMAP implementations MUST implement
Clients and servers MUST implement TLS 1.2 or newer. Use of TLS 1.3
[TLS-1.3] is RECOMMENDED. However [TLS-1.2] MAY be used.
Additionally, when using TLS 1.2, IMAP implementations MUST implement
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 cipher suite, and SHOULD TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 cipher suite, and SHOULD
implement the TLS_RSA_WITH_AES_128_CBC_SHA [TLS] cipher suite. This implement the TLS_RSA_WITH_AES_128_CBC_SHA [TLS-1.2] cipher suite.
is important as it assures that any two compliant implementations can This is important as it assures that any two compliant
be configured to interoperate. Other TLS cipher suites recommended implementations can be configured to interoperate. Other TLS cipher
in RFC 7525 are RECOMMENDED: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, suites recommended in RFC 7525 are RECOMMENDED:
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 and TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 and
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384. All other cipher suites are TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384. All other cipher suites are
OPTIONAL. Note that this is a change from section 2.1 of [IMAP-TLS]. OPTIONAL. Note that this is a change from section 2.1 of [IMAP-TLS].
During the [TLS] negotiation, the client MUST check its understanding The list of mandatory-to-implement TLS 1.3 cipher suites is described
of the server hostname against the server's identity as presented in in Section 9.1 of [TLS-1.3].
the server Certificate message, in order to prevent man-in-the-middle
attacks. This procedure is described in [RFC7817]. During the TLS negotiation [TLS-1.3][TLS-1.2], the client MUST check
its understanding of the server hostname against the server's
identity as presented in the server Certificate message, in order to
prevent man-in-the-middle attacks. This procedure is described in
[RFC7817].
Both the client and server MUST check the result of the STARTTLS Both the client and server MUST check the result of the STARTTLS
command and subsequent [TLS] negotiation to see whether acceptable command and subsequent TLS ([TLS-1.3][TLS-1.2]) negotiation to see
authentication and/or privacy was achieved. whether acceptable authentication and/or privacy was achieved.
11.2. COPYUID and APPENDUID response codes 11.2. COPYUID and APPENDUID response codes
The COPYUID and APPENDUID response codes return information about the The COPYUID and APPENDUID response codes return information about the
mailbox, which may be considered sensitive if the mailbox has mailbox, which may be considered sensitive if the mailbox has
permissions set that permit the client to COPY or APPEND to the permissions set that permit the client to COPY or APPEND to the
mailbox, but not SELECT or EXAMINE it. mailbox, but not SELECT or EXAMINE it.
Consequently, these response codes SHOULD NOT be issued if the client Consequently, these response codes SHOULD NOT be issued if the client
does not have access to SELECT or EXAMINE the mailbox. does not have access to SELECT or EXAMINE the mailbox.
skipping to change at page 148, line 35 skipping to change at page 148, line 45
1997, <https://www.rfc-editor.org/info/rfc2231>. 1997, <https://www.rfc-editor.org/info/rfc2231>.
[RFC-5322] [RFC-5322]
Resnick, P., Ed., "Internet Message Format", RFC 5322, Resnick, P., Ed., "Internet Message Format", RFC 5322,
October 2008, <http://www.rfc-editor.org/info/rfc5322>. October 2008, <http://www.rfc-editor.org/info/rfc5322>.
[SASL] Melnikov, A., Ed. and K. Zeilenga, Ed., "Simple [SASL] Melnikov, A., Ed. and K. Zeilenga, Ed., "Simple
Authentication and Security Layer (SASL)", RFC 4422, June Authentication and Security Layer (SASL)", RFC 4422, June
2006, <http://www.rfc-editor.org/info/rfc4422>. 2006, <http://www.rfc-editor.org/info/rfc4422>.
[TLS] Dierks, T. and E. Rescorla, "The Transport Layer Security [TLS-1.2] Dierks, T. and E. Rescorla, "The Transport Layer Security
(TLS) Protocol Version 1.2", RFC 5246, August 2008, (TLS) Protocol Version 1.2", RFC 5246, August 2008,
<http://www.rfc-editor.org/info/rfc5246>. <http://www.rfc-editor.org/info/rfc5246>.
[TLS-1.3] Rescorla, E., "The Transport Layer Security (TLS) Protocol
Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018,
<https://www.rfc-editor.org/info/rfc8446>.
[UTF-7] Goldsmith, D. and M. Davis, "UTF-7 A Mail-Safe [UTF-7] Goldsmith, D. and M. Davis, "UTF-7 A Mail-Safe
Transformation Format of Unicode", RFC 2152, May 1997, Transformation Format of Unicode", RFC 2152, May 1997,
<http://www.rfc-editor.org/info/rfc2152>. <http://www.rfc-editor.org/info/rfc2152>.
[UTF-8] Yergeau, F., "UTF-8, a transformation format of ISO [UTF-8] Yergeau, F., "UTF-8, a transformation format of ISO
10646", STD 63, RFC 3629, DOI 10.17487/RFC3629, November 10646", STD 63, RFC 3629, DOI 10.17487/RFC3629, November
2003, <http://www.rfc-editor.org/info/rfc3629>. 2003, <http://www.rfc-editor.org/info/rfc3629>.
[MULTIAPPEND] [MULTIAPPEND]
Crispin, M., "Internet Message Access Protocol (IMAP) - Crispin, M., "Internet Message Access Protocol (IMAP) -
skipping to change at page 152, line 48 skipping to change at page 153, line 18
Servers advertising both IMAP4rev1 and IMAP4rev2, and clients Servers advertising both IMAP4rev1 and IMAP4rev2, and clients
intending to be compatible with IMAP4rev1 servers MUST be compatible intending to be compatible with IMAP4rev1 servers MUST be compatible
with the international mailbox naming convention described in the with the international mailbox naming convention described in the
following subsection. following subsection.
A.1. Mailbox International Naming Convention for compatibility with A.1. Mailbox International Naming Convention for compatibility with
IMAP4rev1 IMAP4rev1
Support for the Mailbox International Naming Convention described in Support for the Mailbox International Naming Convention described in
this section is not required for IMAP4rev2-only clients and servers. this section is not required for IMAP4rev2-only clients and servers.
It is only used for backward compatibility with IMAP4rev1
implementations.
By convention, international mailbox names in IMAP4rev1 are specified By convention, international mailbox names in IMAP4rev1 are specified
using a modified version of the UTF-7 encoding described in [UTF-7]. using a modified version of the UTF-7 encoding described in [UTF-7].
Modified UTF-7 may also be usable in servers that implement an Modified UTF-7 may also be usable in servers that implement an
earlier version of this protocol. earlier version of this protocol.
In modified UTF-7, printable US-ASCII characters, except for "&", In modified UTF-7, printable US-ASCII characters, except for "&",
represent themselves; that is, characters with octet values 0x20-0x25 represent themselves; that is, characters with octet values 0x20-0x25
and 0x27-0x7e. The character "&" (0x26) is represented by the two- and 0x27-0x7e. The character "&" (0x26) is represented by the two-
octet sequence "&-". octet sequence "&-".
skipping to change at page 154, line 43 skipping to change at page 155, line 17
Appendix C. Backward compatibility with LIST-EXTENDED extension Appendix C. Backward compatibility with LIST-EXTENDED extension
IMAP4rev2 is incorporates most of functionality provided by the LIST- IMAP4rev2 is incorporates most of functionality provided by the LIST-
EXTENDED extension [RFC5258]. In particular, multiple mailbox EXTENDED extension [RFC5258]. In particular, multiple mailbox
patterns syntax is not supported in IMAP4rev2, unless LIST-EXTENDED patterns syntax is not supported in IMAP4rev2, unless LIST-EXTENDED
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 Below is the summary of changes since RFC 3501:
change over time.
1. Revise IANA registration of IMAP extensions and give advice on
use of "X-" convention.
2. Add a section on other recommended extensions?
The following changes were already done:
1. Fold in the following extensions/RFC: RFC 5530 (IMAP Response
Codes), UIDPLUS, ENABLE, ESEARCH, SPECIAL-USE (list of new
mailbox attributes), LITERAL-, NAMESPACE, SASL-IR, LIST-STATUS,
SEARCHRES, IDLE, MOVE.
2. Add CLOSED response code (from CONDSTORE).
3. Add support for $Phishing, $Junk, $NonJunk, $MDNSent and
$Forwarded IMAP keywords. Add more examples showing their use?
4. Require all unsolicited FETCH updates to include UID.
5. Update recommendations on TLS ciphers to match UTA WG work (as
per RFC 8314, RFC 7525 and RFC 7817).
6. Fold in the following extensions/RFC: Base LIST-EXTENDED syntax
plus deprecate LSUB (replace it with LIST \Subscribed) minus the
requirement to support multiple list patterns, BINARY (only the
FETCH changes on leaf body part and make APPEND related ones
optional. See the mailing list discussion).
7. Add STATUS SIZE (total mailbox size). Add STATUS DELETED (number
of messages with \Deleted flag set).
8. Drop UTF-7, all mailboxes are always in UTF-8.
The following changes since RFC 3501 were done so far:
1. Folded in IMAP UNSELECT (RFC 3691), UIDPLUS (RFC 4315), ESEARCH 1. Folded in IMAP NAMESPACE (RFC 2342), UNSELECT (RFC 3691),
(RFC 4731), SEARCHRES (RFC 5182), ENABLE (RFC 5161), IDLE (RFC UIDPLUS (RFC 4315), ESEARCH (RFC 4731), SEARCHRES (RFC 5182),
2177), SASL-IR (RFC 4959), LIST-STATUS (RFC 5819) and MOVE (RFC ENABLE (RFC 5161), IDLE (RFC 2177), SASL-IR (RFC 4959), LIST-
6851) extensions. Also folded RFC 5530 and FETCH side of the EXTENDED (RFC 5258), LIST-STATUS (RFC 5819), MOVE (RFC 6851) and
BINARY extension (RFC 3516). LITERAL- (RFC 7888) extensions. Also folded RFC 4466 (IMAP ABNF
extensions), RFC 5530 (response codes), the FETCH side of the
BINARY extension (RFC 3516) and the list of new mailbox
attributes from SPECIAL-USE (RFC 6154).
2. Clarified that server should decode parameter value 2. Added STATUS SIZE (RFC 8438) and STATUS DELETED.
continuations as described in [RFC2231]. This requirement was
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. Clarified which SEARCH keys has to use substring match and which 4. Clarified which SEARCH keys has to use substring match and which
don't. don't.
5. Added CLOSED response code from RFC 7162. SELECT/EXAMINE when a 5. Clarified that server should decode parameter value
continuations as described in [RFC2231]. This requirement was
hidden in RFC 2231 itself.
6. 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.
6. SELECT/EXAMINE are now required to return untagged LIST 7. SELECT/EXAMINE are now required to return untagged LIST
response. response.
7. Updated to use modern TLS-related recommendations as per RFC 8. UNSEEN response code on SELECT/EXAMINE is now deprecated.
8314, RFC 7817, RFC 7525.
8. For future extensibility extended ABNF for tagged-ext-simple to 9. RECENT response on SELECT/EXAMINE, \Recent flag, RECENT STATUS,
SEARCH NEW items are now deprecated.
10. Clarified that the server doesn't need to send a new
PERMANENTFLAGS response code when a new keyword was successfully
added and the server advertised \* earlier for the same mailbox.
11. For future extensibility extended ABNF for tagged-ext-simple to
allow for bare number64. allow for bare number64.
9. Added SHOULD level requirement on IMAP servers to support 12. Added SHOULD level requirement on IMAP servers to support
$MDNSent, $Forwarded, $Junk, $NonJunk and $Phishing keywords. $MDNSent, $Forwarded, $Junk, $NonJunk and $Phishing keywords.
10. Added STATUS SIZE (RFC 8438) and STATUS DELETED. 13. Mailbox names and message headers now allow for UTF-8. Support
11. 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.
12. UNSEEN response code on SELECT/EXAMINE is now deprecated. 14. Removed the CHECK command. Clients should use NOOP instead.
13. RECENT response on SELECT/EXAMINE, \Recent flag, RECENT STATUS,
SEARCH NEW items are now deprecated.
14. Clarified that the server doesn't need to send a new
PERMANENTFLAGS response code when a new keyword was successfully
added and the server advertised \* earlier for the same mailbox.
15. Removed the CHECK command. Clients should use NOOP instead.
16. 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.
17. Replaced DIGEST-MD5 SASL mechanism with SCRAM-SHA-256. DIGEST- 16. LSUB command was deprecated. Clients should use LIST
MD5 was deprecated.
18. LSUB command was deprecated. Clients should use LIST
(SUBSCRIBED) instead. (SUBSCRIBED) instead.
19. resp-text ABNF non terminal was updated to allow for empty text. 17. IDLE command can now return updates not related to the currently
20. IDLE command can now return updates not related to the currently
selected mailbox state. selected mailbox state.
21. All unsolicited FETCH updates are required to include UID. 18. All unsolicited FETCH updates are required to include UID.
22. Clarified that client implementations MUST ignore response codes 19. 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.)
23. After ENABLE IMAP4rev2 human readable response text can include 20. resp-text ABNF non terminal was updated to allow for empty text.
21. After ENABLE IMAP4rev2 human readable response text can include
non ASCII encoded in UTF-8. non ASCII encoded in UTF-8.
Appendix E. Acknowledgement 22. Updated to use modern TLS-related recommendations as per RFC
8314, RFC 7817, RFC 7525.
23. Replaced DIGEST-MD5 SASL mechanism with SCRAM-SHA-256. DIGEST-
MD5 was deprecated.
Appendix E. Other Recommended IMAP Extensions
Support for the following extensions is recommended for all IMAP
client and servers. Why they significantly reduce bandwidth and/or
number of round trips used by IMAP in certain situations, the EXTRA
WG decided that requiring them as a part of IMAP4rev2 would push the
bar to implement too high for new implementations. Also note that
absence of any IMAP extension from this list doesn't make it somehow
deficient or not recommended for use with IMAP4rev2.
1. QRESYNC and CONDSTORE extensions (RFC 7162). They make
discovering changes to IMAP mailboxes more efficient, at the
expense of storing a bit more state.
2. OBJECTID extension (RFC 8474) helps with preserving IMAP client
cache when messages moved/copied or mailboxes are renamed.
Appendix F. 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, Stephan Bosch and Arnt Thank you to Timo Sirainen, Bron Gondwana, Stephan Bosch and Arnt
skipping to change at page 157, line 41 skipping to change at page 157, line 48
Section 6.3.9.5 is taken directly from their original specification Section 6.3.9.5 is taken directly from their original specification
[RFC3348]. [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) 13
+ +
+FLAGS <flag list> 92 +FLAGS <flag list> 92
+FLAGS.SILENT <flag list> 92 +FLAGS.SILENT <flag list> 92
- -
-FLAGS <flag list> 92 -FLAGS <flag list> 92
-FLAGS.SILENT <flag list> 92 -FLAGS.SILENT <flag list> 92
A A
skipping to change at page 162, line 22 skipping to change at page 162, line 30
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) 14 [RFC-5322] Size (message attribute) 14
\ \
\All (mailbox name attribute) 113 \All (mailbox name attribute) 113
\Answered (system flag) 11 \Answered (system flag) 12
\Archive (mailbox name attribute) 113 \Archive (mailbox name attribute) 113
\Deleted (system flag) 12 \Deleted (system flag) 12
\Draft (system flag) 12 \Draft (system flag) 12
\Drafts (mailbox name attribute) 113 \Drafts (mailbox name attribute) 113
\Flagged (mailbox name attribute) 113 \Flagged (mailbox name attribute) 113
\Flagged (system flag) 11 \Flagged (system flag) 12
\HasChildren (mailbox name attribute) 112 \HasChildren (mailbox name attribute) 112
\HasNoChildren (mailbox name attribute) 112 \HasNoChildren (mailbox name attribute) 112
\Junk (mailbox name attribute) 113 \Junk (mailbox name attribute) 113
\Marked (mailbox name attribute) 112 \Marked (mailbox name attribute) 112
\Noinferiors (mailbox name attribute) 111 \Noinferiors (mailbox name attribute) 111
\NonExistent (mailbox name attribute) 111 \NonExistent (mailbox name attribute) 111
\Noselect (mailbox name attribute) 111 \Noselect (mailbox name attribute) 111
\Recent (system flag) 12 \Recent (system flag) 12
\Remote (mailbox name attribute) 112 \Remote (mailbox name attribute) 112
\Seen (system flag) 11 \Seen (system flag) 12
\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) 112 \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
Barry Leiba (editor) Barry Leiba (editor)
Futurewei Technologies Futurewei Technologies
 End of changes. 46 change blocks. 
137 lines changed or deleted 141 lines changed or added

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