| < draft-ietf-extra-imap4rev2-25.txt | draft-ietf-extra-imap4rev2-26.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: July 24, 2021 January 20, 2021 | Expires: July 28, 2021 January 24, 2021 | |||
| Internet Message Access Protocol (IMAP) - Version 4rev2 | Internet Message Access Protocol (IMAP) - Version 4rev2 | |||
| draft-ietf-extra-imap4rev2-25 | draft-ietf-extra-imap4rev2-26 | |||
| 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 48 ¶ | skipping to change at page 1, line 48 ¶ | |||
| 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 July 24, 2021. | This Internet-Draft will expire on July 28, 2021. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2021 IETF Trust and the persons identified as the | Copyright (c) 2021 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 42 ¶ | skipping to change at page 3, line 42 ¶ | |||
| 6.3. Client Commands - Authenticated State . . . . . . . . . . 33 | 6.3. Client Commands - Authenticated State . . . . . . . . . . 33 | |||
| 6.3.1. ENABLE Command . . . . . . . . . . . . . . . . . . . 34 | 6.3.1. ENABLE Command . . . . . . . . . . . . . . . . . . . 34 | |||
| 6.3.2. SELECT Command . . . . . . . . . . . . . . . . . . . 36 | 6.3.2. SELECT Command . . . . . . . . . . . . . . . . . . . 36 | |||
| 6.3.3. EXAMINE Command . . . . . . . . . . . . . . . . . . . 38 | 6.3.3. EXAMINE Command . . . . . . . . . . . . . . . . . . . 38 | |||
| 6.3.4. CREATE Command . . . . . . . . . . . . . . . . . . . 39 | 6.3.4. CREATE Command . . . . . . . . . . . . . . . . . . . 39 | |||
| 6.3.5. DELETE Command . . . . . . . . . . . . . . . . . . . 40 | 6.3.5. DELETE Command . . . . . . . . . . . . . . . . . . . 40 | |||
| 6.3.6. RENAME Command . . . . . . . . . . . . . . . . . . . 42 | 6.3.6. RENAME Command . . . . . . . . . . . . . . . . . . . 42 | |||
| 6.3.7. SUBSCRIBE Command . . . . . . . . . . . . . . . . . . 44 | 6.3.7. SUBSCRIBE Command . . . . . . . . . . . . . . . . . . 44 | |||
| 6.3.8. UNSUBSCRIBE Command . . . . . . . . . . . . . . . . . 45 | 6.3.8. UNSUBSCRIBE Command . . . . . . . . . . . . . . . . . 45 | |||
| 6.3.9. LIST Command . . . . . . . . . . . . . . . . . . . . 45 | 6.3.9. LIST Command . . . . . . . . . . . . . . . . . . . . 45 | |||
| 6.3.10. NAMESPACE Command . . . . . . . . . . . . . . . . . . 63 | 6.3.10. NAMESPACE Command . . . . . . . . . . . . . . . . . . 64 | |||
| 6.3.11. STATUS Command . . . . . . . . . . . . . . . . . . . 68 | 6.3.11. STATUS Command . . . . . . . . . . . . . . . . . . . 68 | |||
| 6.3.12. APPEND Command . . . . . . . . . . . . . . . . . . . 69 | 6.3.12. APPEND Command . . . . . . . . . . . . . . . . . . . 69 | |||
| 6.3.13. IDLE Command . . . . . . . . . . . . . . . . . . . . 72 | 6.3.13. IDLE Command . . . . . . . . . . . . . . . . . . . . 72 | |||
| 6.4. Client Commands - Selected State . . . . . . . . . . . . 74 | 6.4. Client Commands - Selected State . . . . . . . . . . . . 74 | |||
| 6.4.1. CLOSE Command . . . . . . . . . . . . . . . . . . . . 75 | 6.4.1. CLOSE Command . . . . . . . . . . . . . . . . . . . . 75 | |||
| 6.4.2. UNSELECT Command . . . . . . . . . . . . . . . . . . 75 | 6.4.2. UNSELECT Command . . . . . . . . . . . . . . . . . . 75 | |||
| 6.4.3. EXPUNGE Command . . . . . . . . . . . . . . . . . . . 76 | 6.4.3. EXPUNGE Command . . . . . . . . . . . . . . . . . . . 76 | |||
| 6.4.4. SEARCH Command . . . . . . . . . . . . . . . . . . . 76 | 6.4.4. SEARCH Command . . . . . . . . . . . . . . . . . . . 76 | |||
| 6.4.5. FETCH Command . . . . . . . . . . . . . . . . . . . . 88 | 6.4.5. FETCH Command . . . . . . . . . . . . . . . . . . . . 88 | |||
| 6.4.6. STORE Command . . . . . . . . . . . . . . . . . . . . 93 | 6.4.6. STORE Command . . . . . . . . . . . . . . . . . . . . 93 | |||
| skipping to change at page 5, line 4 ¶ | skipping to change at page 5, line 4 ¶ | |||
| 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 149 | 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 149 | |||
| 12.1. Updates to IMAP4 Capabilities registry . . . . . . . . . 149 | 12.1. Updates to IMAP4 Capabilities registry . . . . . . . . . 149 | |||
| 12.2. GSSAPI/SASL service name . . . . . . . . . . . . . . . . 149 | 12.2. GSSAPI/SASL service name . . . . . . . . . . . . . . . . 149 | |||
| 12.3. LIST Selection Options, LIST Return Options, LIST | 12.3. LIST Selection Options, LIST Return Options, LIST | |||
| extended data items . . . . . . . . . . . . . . . . . . 150 | extended data items . . . . . . . . . . . . . . . . . . 150 | |||
| 12.4. IMAP Mailbox Name Attributes and IMAP Response Codes . . 150 | 12.4. IMAP Mailbox Name Attributes and IMAP Response Codes . . 150 | |||
| 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 150 | 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 150 | |||
| 13.1. Normative References . . . . . . . . . . . . . . . . . . 150 | 13.1. Normative References . . . . . . . . . . . . . . . . . . 150 | |||
| 13.2. Informative References (related protocols) . . . . . . . 153 | 13.2. Informative References (related protocols) . . . . . . . 153 | |||
| 13.3. Informative References (historical aspects of IMAP and | 13.3. Informative References (historical aspects of IMAP and | |||
| related protocols) . . . . . . . . . . . . . . . . . . . 155 | related protocols) . . . . . . . . . . . . . . . . . . . 156 | |||
| Appendix A. Backward compatibility with IMAP4rev1 . . . . . . . 156 | Appendix A. Backward compatibility with IMAP4rev1 . . . . . . . 156 | |||
| A.1. Mailbox International Naming Convention for compatibility | A.1. Mailbox International Naming Convention for compatibility | |||
| with IMAP4rev1 . . . . . . . . . . . . . . . . . . . . . 157 | with IMAP4rev1 . . . . . . . . . . . . . . . . . . . . . 157 | |||
| Appendix B. Backward compatibility with BINARY extension . . . . 158 | Appendix B. Backward compatibility with BINARY extension . . . . 159 | |||
| Appendix C. Backward compatibility with LIST-EXTENDED extension 158 | Appendix C. Backward compatibility with LIST-EXTENDED extension 159 | |||
| Appendix D. 63 bit body part and message sizes . . . . . . . . . 159 | Appendix D. 63 bit body part and message sizes . . . . . . . . . 159 | |||
| Appendix E. Changes from RFC 3501 / IMAP4rev1 . . . . . . . . . 159 | Appendix E. Changes from RFC 3501 / IMAP4rev1 . . . . . . . . . 159 | |||
| Appendix F. Other Recommended IMAP Extensions . . . . . . . . . 161 | Appendix F. Other Recommended IMAP Extensions . . . . . . . . . 161 | |||
| Appendix G. Acknowledgement . . . . . . . . . . . . . . . . . . 161 | Appendix G. Acknowledgement . . . . . . . . . . . . . . . . . . 162 | |||
| Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 | Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 167 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 168 | |||
| 1. How to Read This Document | 1. How to Read This Document | |||
| 1.1. Organization of This Document | 1.1. Organization of This Document | |||
| This document is written from the point of view of the implementor of | This document is written from the point of view of the implementor of | |||
| an IMAP4rev2 client or server. Beyond the protocol overview in | an IMAP4rev2 client or server. Beyond the protocol overview in | |||
| section 2, it is not optimized for someone trying to understand the | section 2, it is not optimized for someone trying to understand the | |||
| operation of the protocol. The material in sections 3 through 5 | operation of the protocol. The material in sections 3 through 5 | |||
| provides the general context and definitions with which IMAP4rev2 | provides the general context and definitions with which IMAP4rev2 | |||
| skipping to change at page 7, line 29 ¶ | skipping to change at page 7, line 29 ¶ | |||
| 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 | |||
| reference to the updated [RFC-5322] standard. | reference to the updated [RFC-5322] standard. | |||
| 2. Protocol Overview | 2. Protocol Overview | |||
| 2.1. Link Level | 2.1. Link Level | |||
| The IMAP4rev2 protocol assumes a reliable data stream such as that | The IMAP4rev2 protocol assumes a reliable data stream such as that | |||
| provided by TCP. When TCP is used, an IMAP4rev2 server listens on | provided by TCP. When TCP is used, an IMAP4rev2 server listens on | |||
| port 143 or port 993 (IMAP-over-TLS). | port 143 (cleartext port) or port 993 (Implicit TLS port). | |||
| 2.2. Commands and Responses | 2.2. Commands and Responses | |||
| An IMAP4rev2 connection consists of the establishment of a client/ | An IMAP4rev2 connection consists of the establishment of a client/ | |||
| server network connection, an initial greeting from the server, and | server network connection, an initial greeting from the server, and | |||
| client/server interactions. These client/server interactions consist | client/server interactions. These client/server interactions consist | |||
| of a client command, server data, and a server completion result | of a client command, server data, and a server completion result | |||
| response. | response. | |||
| All interactions transmitted by client and server are in the form of | All interactions transmitted by client and server are in the form of | |||
| skipping to change at page 31, line 30 ¶ | skipping to change at page 31, line 30 ¶ | |||
| the tagged OK response for the server. | the tagged OK response for the server. | |||
| While client and server implementations MUST implement the | While client and server implementations MUST implement the | |||
| AUTHENTICATE command itself, it is not required to implement any | AUTHENTICATE command itself, it is not required to implement any | |||
| authentication mechanisms other than the PLAIN mechanism described in | authentication mechanisms other than the PLAIN mechanism described in | |||
| [PLAIN]. Also, an authentication mechanism is not required to | [PLAIN]. Also, an authentication mechanism is not required to | |||
| support any security layers. | support any security layers. | |||
| Note: a server implementation MUST implement a configuration in | Note: a server implementation MUST implement a configuration in | |||
| which it does NOT permit any plaintext password mechanisms, unless | which it does NOT permit any plaintext password mechanisms, unless | |||
| either the STARTTLS command has been negotiated or some other | either the STARTTLS command has been negotiated, TLS has been | |||
| mechanism that protects the session from password snooping has | negotiated on an Implicit TLS port, or some other mechanism that | |||
| been provided. Server sites SHOULD NOT use any configuration | protects the session from password snooping has been provided. | |||
| which permits a plaintext password mechanism without such a | Server sites SHOULD NOT use any configuration which permits a | |||
| protection mechanism against password snooping. Client and server | plaintext password mechanism without such a protection mechanism | |||
| implementations SHOULD implement additional [SASL] mechanisms that | against password snooping. Client and server implementations | |||
| do not use plaintext passwords, such the GSSAPI mechanism | SHOULD implement additional [SASL] mechanisms that do not use | |||
| described in [SASL] and/or the SCRAM-SHA-256/SCRAM-SHA-256-PLUS | plaintext passwords, such the GSSAPI mechanism described in | |||
| [SCRAM-SHA-256] mechanisms. | [RFC4752], the SCRAM-SHA-256/SCRAM-SHA-256-PLUS [SCRAM-SHA-256] | |||
| mechanisms and/or EXTERNAL [SASL] mechanism for mutual TLS | ||||
| authentication. (Note that SASL framework allows creation of SASL | ||||
| mechanisms that support 2FA (2-factor authentication), however | ||||
| none are fully ready to be recommended by this document.) | ||||
| Servers and clients can support multiple authentication mechanisms. | Servers and clients can support multiple authentication mechanisms. | |||
| The server SHOULD list its supported authentication mechanisms in the | The server SHOULD list its supported authentication mechanisms in the | |||
| response to the CAPABILITY command so that the client knows which | response to the CAPABILITY command so that the client knows which | |||
| authentication mechanisms to use. | authentication mechanisms to use. | |||
| A server MAY include a CAPABILITY response code in the tagged OK | A server MAY include a CAPABILITY response code in the tagged OK | |||
| response of a successful AUTHENTICATE command in order to send | response of a successful AUTHENTICATE command in order to send | |||
| capabilities automatically. It is unnecessary for a client to send a | capabilities automatically. It is unnecessary for a client to send a | |||
| separate CAPABILITY command if it recognizes these automatic | separate CAPABILITY command if it recognizes these automatic | |||
| skipping to change at page 33, line 36 ¶ | skipping to change at page 33, line 36 ¶ | |||
| CAPABILITY command if it recognizes these automatic capabilities. | CAPABILITY command if it recognizes these automatic capabilities. | |||
| Example: C: a001 LOGIN SMITH SESAME | Example: C: a001 LOGIN SMITH SESAME | |||
| S: a001 OK LOGIN completed | S: a001 OK LOGIN completed | |||
| Note: Use of the LOGIN command over an insecure network (such as the | Note: Use of the LOGIN command over an insecure network (such as the | |||
| Internet) is a security risk, because anyone monitoring network | Internet) is a security risk, because anyone monitoring network | |||
| traffic can obtain plaintext passwords. For that reason clients MUST | traffic can obtain plaintext passwords. For that reason clients MUST | |||
| NOT use LOGIN on unsecure networks. | NOT use LOGIN on unsecure networks. | |||
| Unless either the client is accessing IMAP service on IMAPS port | Unless either the client is accessing IMAP service on Implicit TLS | |||
| [RFC8314], the STARTTLS command has been negotiated or some other | port [RFC8314], the STARTTLS command has been negotiated or some | |||
| mechanism that protects the session from password snooping has been | other mechanism that protects the session from password snooping has | |||
| provided, a server implementation MUST implement a configuration in | been provided, a server implementation MUST implement a configuration | |||
| which it advertises the LOGINDISABLED capability and does NOT permit | in which it advertises the LOGINDISABLED capability and does NOT | |||
| the LOGIN command. Server sites SHOULD NOT use any configuration | permit the LOGIN command. Server sites SHOULD NOT use any | |||
| which permits the LOGIN command without such a protection mechanism | configuration which permits the LOGIN command without such a | |||
| against password snooping. A client implementation MUST NOT send a | protection mechanism against password snooping. A client | |||
| LOGIN command if the LOGINDISABLED capability is advertised. | implementation MUST NOT send a LOGIN command if the LOGINDISABLED | |||
| capability is advertised. | ||||
| 6.3. Client Commands - Authenticated State | 6.3. Client Commands - Authenticated State | |||
| In the authenticated state, commands that manipulate mailboxes as | In the authenticated state, commands that manipulate mailboxes as | |||
| atomic entities are permitted. Of these commands, the SELECT and | atomic entities are permitted. Of these commands, the SELECT and | |||
| EXAMINE commands will select a mailbox for access and enter the | EXAMINE commands will select a mailbox for access and enter the | |||
| selected state. | selected state. | |||
| In addition to the universal commands (CAPABILITY, NOOP, and LOGOUT), | In addition to the universal commands (CAPABILITY, NOOP, and LOGOUT), | |||
| the following commands are valid in the authenticated state: ENABLE, | the following commands are valid in the authenticated state: ENABLE, | |||
| skipping to change at page 50, line 28 ¶ | skipping to change at page 50, line 28 ¶ | |||
| attribute MUST be supported and MUST be accurately computed when | attribute MUST be supported and MUST be accurately computed when | |||
| the SUBSCRIBED selection option is specified. | the SUBSCRIBED selection option is specified. | |||
| Note that the SUBSCRIBED selection option implies the SUBSCRIBED | Note that the SUBSCRIBED selection option implies the SUBSCRIBED | |||
| return option (see below). | return option (see below). | |||
| REMOTE - causes the LIST command to show remote mailboxes as well as | REMOTE - causes the LIST command to show remote mailboxes as well as | |||
| local ones, as described in [RFC2193]. This option is intended to | local ones, as described in [RFC2193]. This option is intended to | |||
| replace the RLIST command and, in conjunction with the SUBSCRIBED | replace the RLIST command and, in conjunction with the SUBSCRIBED | |||
| selection option, the RLSUB command. Servers that don't support | selection option, the RLSUB command. Servers that don't support | |||
| remote mailboxes just ignore this option. | the concept of remote mailboxes just ignore this option. | |||
| This option defines a mailbox attribute, "\Remote", that indicates | This option defines a mailbox attribute, "\Remote", that indicates | |||
| that a mailbox is a remote mailbox. The "\Remote" attribute MUST | that a mailbox is a remote mailbox. The "\Remote" attribute MUST | |||
| be accurately computed when the REMOTE option is specified. | be accurately computed when the REMOTE option is specified. | |||
| The REMOTE selection option has no interaction with other options. | The REMOTE selection option has no interaction with other options. | |||
| Its effect is to tell the server to apply the other options, if | Its effect is to tell the server to apply the other options, if | |||
| any, to remote mailboxes, in addition to local ones. In | any, to remote mailboxes, in addition to local ones. In | |||
| particular, it has no interaction with RECURSIVEMATCH (see below). | particular, it has no interaction with RECURSIVEMATCH (see below). | |||
| A request for (REMOTE RECURSIVEMATCH) is invalid, because a | A request for (REMOTE RECURSIVEMATCH) is invalid, because a | |||
| skipping to change at page 51, line 28 ¶ | skipping to change at page 51, line 28 ¶ | |||
| they can be deleted/renamed after the LIST response was sent, but | they can be deleted/renamed after the LIST response was sent, but | |||
| before the client had a chance to access them. | before the client had a chance to access them. | |||
| 6.3.9.2. LIST Return Options | 6.3.9.2. LIST Return Options | |||
| The return options defined in this specification are as follows: | The return options defined in this specification are as follows: | |||
| SUBSCRIBED - causes the LIST command to return subscription state | SUBSCRIBED - causes the LIST command to return subscription state | |||
| for all matching mailbox names. The "\Subscribed" attribute MUST | for all matching mailbox names. The "\Subscribed" attribute MUST | |||
| be supported and MUST be accurately computed when the SUBSCRIBED | be supported and MUST be accurately computed when the SUBSCRIBED | |||
| return option is specified. Further, all mailbox flags MUST be | return option is specified. Further, all other mailbox attributes | |||
| accurately computed (this differs from the behavior of the | MUST be accurately computed (this differs from the behavior of the | |||
| obsolete LSUB command from IMAP4rev1). | obsolete LSUB command from RFC 3501). Note that the above | |||
| requirements don't override the requirement for the LIST command | ||||
| to return results quickly (see Section 6.3.9), i.e. server | ||||
| implementations need to compute results quickly and accurately. | ||||
| For example, server implementors might need to create quick access | ||||
| indices. | ||||
| 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. | in [RFC3348]. See Section 6.3.9.5, below, for details. | |||
| 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 | |||
| skipping to change at page 107, line 6 ¶ | skipping to change at page 107, line 6 ¶ | |||
| to return a new PERMANENTFLAGS response code when a new keyword | to return a new PERMANENTFLAGS response code when a new keyword | |||
| was successfully set on a message upon client request. However | was successfully set on a message upon client request. However | |||
| if the server has a limit on the number of different keywords | if the server has a limit on the number of different keywords | |||
| that can be stored in a mailbox and that limit is reached, the | that can be stored in a mailbox and that limit is reached, the | |||
| server MUST send a new PERMANENTFLAGS response code without the | server MUST send a new PERMANENTFLAGS response code without the | |||
| special flag \*. | special flag \*. | |||
| PRIVACYREQUIRED | PRIVACYREQUIRED | |||
| The operation is not permitted due to a lack of privacy. If | The operation is not permitted due to a lack of privacy. If | |||
| Transport Layer Security (TLS) is not in use, the client could | Transport Layer Security (TLS) is not in use, the client could | |||
| try STARTTLS (see Section 6.2.1) and then repeat the operation. | try STARTTLS (see Section 6.2.1) or alternatively reconnect to | |||
| Implicit TLS port, and then repeat the operation. | ||||
| C: d login "fred" "foo" | C: d login "fred" "foo" | |||
| S: d NO [PRIVACYREQUIRED] Connection offers no privacy | S: d NO [PRIVACYREQUIRED] Connection offers no privacy | |||
| C: d select inbox | C: d select inbox | |||
| S: d NO [PRIVACYREQUIRED] Connection offers no privacy | S: d NO [PRIVACYREQUIRED] Connection offers no privacy | |||
| READ-ONLY | READ-ONLY | |||
| The mailbox is selected read-only, or its access while selected | The mailbox is selected read-only, or its access while selected | |||
| skipping to change at page 110, line 19 ¶ | skipping to change at page 110, line 19 ¶ | |||
| The PREAUTH response is always untagged, and is one of three possible | The PREAUTH response is always untagged, and is one of three possible | |||
| greetings at connection startup. It indicates that the connection | greetings at connection startup. It indicates that the connection | |||
| has already been authenticated by external means; thus no LOGIN/ | has already been authenticated by external means; thus no LOGIN/ | |||
| AUTHENTICATE command is needed. | AUTHENTICATE command is needed. | |||
| Because PREAUTH moves the connection directly to the authenticated | Because PREAUTH moves the connection directly to the authenticated | |||
| state, it effectively prevents the client from using the STARTTLS | state, it effectively prevents the client from using the STARTTLS | |||
| command Section 6.2.1. For this reason PREAUTH response SHOULD only | command Section 6.2.1. For this reason PREAUTH response SHOULD only | |||
| be returned by servers on connections that are protected by TLS (such | be returned by servers on connections that are protected by TLS (such | |||
| as on IMAPS port [RFC8314]) or protected through other means such as | as on implicit TLS port [RFC8314]) or protected through other means | |||
| IPSec. Clients that require mandatory TLS MUST close the connection | such as IPSec. Clients that require mandatory TLS MUST close the | |||
| after receiving PREAUTH response on a non protected port. | connection after receiving PREAUTH response on a non protected port. | |||
| Example: S: * PREAUTH IMAP4rev2 server logged in as Smith | Example: S: * PREAUTH IMAP4rev2 server logged in as Smith | |||
| 7.1.5. BYE Response | 7.1.5. BYE Response | |||
| Contents: OPTIONAL response code | Contents: OPTIONAL response code | |||
| human-readable text | human-readable text | |||
| The BYE response is always untagged, and indicates that the server is | The BYE response is always untagged, and indicates that the server is | |||
| about to close the connection. The human-readable text MAY be | about to close the connection. The human-readable text MAY be | |||
| skipping to change at page 112, line 14 ¶ | skipping to change at page 112, line 14 ¶ | |||
| Other capability names indicate that the server supports an | Other capability names indicate that the server supports an | |||
| extension, revision, or amendment to the IMAP4rev2 protocol. Server | extension, revision, or amendment to the IMAP4rev2 protocol. Server | |||
| responses MUST conform to this document until the client issues a | responses MUST conform to this document until the client issues a | |||
| command that uses the associated capability. | command that uses the associated capability. | |||
| Capability names SHOULD be registered with IANA using RFC Required | Capability names SHOULD be registered with IANA using RFC Required | |||
| policy. A server SHOULD NOT offer unregistered capability names. | policy. A server SHOULD NOT offer unregistered capability names. | |||
| Client implementations SHOULD NOT require any capability name other | Client implementations SHOULD NOT require any capability name other | |||
| than "IMAP4rev2", "STARTTLS", "LOGINDISABLED". Client | than "IMAP4rev2", and possibly "STARTTLS" and "LOGINDISABLED" (on a | |||
| implementations MUST ignore any unknown capability names. | non implicit TLS port). Client implementations MUST ignore any | |||
| unknown capability names. | ||||
| A server MAY send capabilities automatically, by using the CAPABILITY | A server MAY send capabilities automatically, by using the CAPABILITY | |||
| response code in the initial PREAUTH or OK responses, and by sending | response code in the initial PREAUTH or OK responses, and by sending | |||
| an updated CAPABILITY response code in the tagged OK response as part | an updated CAPABILITY response code in the tagged OK response as part | |||
| of a successful authentication. It is unnecessary for a client to | of a successful authentication. It is unnecessary for a client to | |||
| send a separate CAPABILITY command if it recognizes these automatic | send a separate CAPABILITY command if it recognizes these automatic | |||
| capabilities. | capabilities. | |||
| The list of capabilities returned by a server MAY change during the | The list of capabilities returned by a server MAY change during the | |||
| connection. In particular, it is quite common for the server to | connection. In particular, it is quite common for the server to | |||
| skipping to change at page 146, line 9 ¶ | skipping to change at page 146, line 9 ¶ | |||
| 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 3501, | supercedes the protocol specification in those documents: RFC 3501, | |||
| RFC 2060, RFC 1730, unpublished IMAP2bis.TXT document, RFC 1176, and | RFC 2060, RFC 1730, unpublished IMAP2bis.TXT document, RFC 1176, and | |||
| RFC 1064. | 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 Implicit | |||
| service, STARTTLS command, negotiated privacy protection in the | TLS port, STARTTLS command, negotiated privacy protection in the | |||
| AUTHENTICATE command, or some other protection mechanism. | AUTHENTICATE command, or some other protection mechanism. | |||
| 11.1. TLS related Security Considerations | 11.1. TLS related Security Considerations | |||
| This section applies to both use of STARTTLS command and Implicit TLS | This section applies to both use of STARTTLS command and Implicit TLS | |||
| port. | port. | |||
| IMAP client and server implementations MUST comply with relevant TLS | IMAP client and server implementations MUST comply with relevant TLS | |||
| recommendations from [RFC8314]. | recommendations from [RFC8314]. | |||
| skipping to change at page 146, line 49 ¶ | skipping to change at page 146, line 49 ¶ | |||
| prevent man-in-the-middle attacks. This procedure is described in | prevent man-in-the-middle attacks. This procedure is described in | |||
| [RFC7817]. | [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 ([TLS-1.3][TLS-1.2]) negotiation to see | command and subsequent TLS ([TLS-1.3][TLS-1.2]) negotiation to see | |||
| whether acceptable authentication and/or privacy was achieved. | whether acceptable authentication and/or privacy was achieved. | |||
| 11.2. STARTTLS command versa use of Implicit TLS port | 11.2. STARTTLS command versa use of Implicit TLS port | |||
| For maximum backward compatibility clients MUST implement both TLS | For maximum backward compatibility clients MUST implement both TLS | |||
| negotiation using STARTTLS command and on implicit TLS port. | negotiation on implicit TLS port and TLS negotiation using STARTTLS | |||
| command. | ||||
| Servers MUST support TLS negotiation on implicit TLS port and SHOULD | Servers MUST implement TLS negotiation on implicit TLS port and | |||
| support STARTTLS command. | SHOULD implement STARTTLS command on cleartext port. | |||
| Some site/firewall maintainers insist on TLS site-wide and prefer not | Some site/firewall maintainers insist on TLS site-wide and prefer not | |||
| to rely on a configuration option in each higher-level protocol. For | to rely on a configuration option in each higher-level protocol. For | |||
| this reason, IMAP4rev2 clients SHOULD try both ports 993 and 143 (and | this reason, IMAP4rev2 clients SHOULD try both ports 993 and 143 (and | |||
| both IPv4 and IPv6) concurrently by default, unless overriden by | both IPv4 and IPv6) concurrently by default, unless overriden by | |||
| either user configuration or SRV records. Note that if a server | either user configuration or DNS SRV records [RFC6186]. Note that if | |||
| answers on both ports, it MUST allow STARTTLS command on port 143. | a server answers on both ports, it MUST allow STARTTLS command on | |||
| port 143. | ||||
| 11.3. Client handling of unsolicited responses not suitable for the | 11.3. Client handling of unsolicited responses not suitable for the | |||
| current connection state | current connection state | |||
| Cleartext mail transmission (whether caused by firewall configuration | Cleartext mail transmission (whether caused by firewall configuration | |||
| errors that result in TLS stripping or weak security policies in | errors that result in TLS stripping or weak security policies in | |||
| email clients that choose not to negotiate TLS in the first place) | email clients that choose not to negotiate TLS in the first place) | |||
| can enable injection of responses that can confuse or even cause | can enable injection of responses that can confuse or even cause | |||
| crashes in email clients. The following measures are recommended to | crashes in email clients. The following measures are recommended to | |||
| minimize damage from them. | minimize damage from them. | |||
| skipping to change at page 150, line 35 ¶ | skipping to change at page 150, line 35 ¶ | |||
| IANA is requested to update the "IMAP Mailbox Name Attributes" | IANA is requested to update the "IMAP Mailbox Name Attributes" | |||
| registry to point to this document in addition to RFC 3501. | registry to point to this document in addition to RFC 3501. | |||
| IANA is requested to update the "IMAP Response Codes" registry to | IANA is requested to update the "IMAP Response Codes" registry to | |||
| point to this document in addition to RFC 3501. | point to this document in addition to RFC 3501. | |||
| 13. References | 13. References | |||
| 13.1. Normative References | 13.1. Normative References | |||
| [RFC4752] Melnikov, A., Ed., "The Kerberos V5 ("GSSAPI") Simple | ||||
| Authentication and Security Layer (SASL) Mechanism", | ||||
| RFC 4752, DOI 10.17487/RFC4752, November 2006, | ||||
| <https://www.rfc-editor.org/info/rfc4752>. | ||||
| [RFC5258] Leiba, B. and A. Melnikov, "Internet Message Access | [RFC5258] Leiba, B. and A. Melnikov, "Internet Message Access | |||
| Protocol version 4 - LIST Command Extensions", RFC 5258, | Protocol version 4 - LIST Command Extensions", RFC 5258, | |||
| DOI 10.17487/RFC5258, June 2008, | DOI 10.17487/RFC5258, June 2008, | |||
| <https://www.rfc-editor.org/info/rfc5258>. | <https://www.rfc-editor.org/info/rfc5258>. | |||
| [RFC5788] Melnikov, A. and D. Cridland, "IMAP4 Keyword Registry", | [RFC5788] Melnikov, A. and D. Cridland, "IMAP4 Keyword Registry", | |||
| RFC 5788, DOI 10.17487/RFC5788, March 2010, | RFC 5788, DOI 10.17487/RFC5788, March 2010, | |||
| <https://www.rfc-editor.org/info/rfc5788>. | <https://www.rfc-editor.org/info/rfc5788>. | |||
| [ABNF] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax | [ABNF] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax | |||
| skipping to change at page 154, line 5 ¶ | skipping to change at page 154, line 10 ¶ | |||
| RFC 2180, July 1997, | RFC 2180, July 1997, | |||
| <http://www.rfc-editor.org/info/rfc2180>. | <http://www.rfc-editor.org/info/rfc2180>. | |||
| 13.2. Informative References (related protocols) | 13.2. Informative References (related protocols) | |||
| [CERT-555316] | [CERT-555316] | |||
| CERT, "Vulnerability Note VU#555316: STARTTLS plaintext | CERT, "Vulnerability Note VU#555316: STARTTLS plaintext | |||
| command injection vulnerability", September 2011, | command injection vulnerability", September 2011, | |||
| <https://www.kb.cert.org/vuls/id/555316>. | <https://www.kb.cert.org/vuls/id/555316>. | |||
| [RFC2193] Gahrns, M., "IMAP4 Mailbox Referrals", RFC 2193, | ||||
| DOI 10.17487/RFC2193, September 1997, | ||||
| <https://www.rfc-editor.org/info/rfc2193>. | ||||
| [RFC3348] Gahrns, M. and R. Cheng, "The Internet Message Action | ||||
| Protocol (IMAP4) Child Mailbox Extension", RFC 3348, | ||||
| DOI 10.17487/RFC3348, July 2002, | ||||
| <https://www.rfc-editor.org/info/rfc3348>. | ||||
| [RFC3503] Melnikov, A., "Message Disposition Notification (MDN) | [RFC3503] Melnikov, A., "Message Disposition Notification (MDN) | |||
| profile for Internet Message Access Protocol (IMAP)", | profile for Internet Message Access Protocol (IMAP)", | |||
| RFC 3503, DOI 10.17487/RFC3503, March 2003, | RFC 3503, DOI 10.17487/RFC3503, March 2003, | |||
| <https://www.rfc-editor.org/info/rfc3503>. | <https://www.rfc-editor.org/info/rfc3503>. | |||
| [RFC5256] Crispin, M. and K. Murchison, "Internet Message Access | [RFC5256] Crispin, M. and K. Murchison, "Internet Message Access | |||
| Protocol - SORT and THREAD Extensions", RFC 5256, | Protocol - SORT and THREAD Extensions", RFC 5256, | |||
| DOI 10.17487/RFC5256, June 2008, | DOI 10.17487/RFC5256, June 2008, | |||
| <https://www.rfc-editor.org/info/rfc5256>. | <https://www.rfc-editor.org/info/rfc5256>. | |||
| [RFC2193] Gahrns, M., "IMAP4 Mailbox Referrals", RFC 2193, | ||||
| DOI 10.17487/RFC2193, September 1997, | ||||
| <https://www.rfc-editor.org/info/rfc2193>. | ||||
| [RFC3348] Gahrns, M. and R. Cheng, "The Internet Message Action | ||||
| Protocol (IMAP4) Child Mailbox Extension", RFC 3348, | ||||
| DOI 10.17487/RFC3348, July 2002, | ||||
| <https://www.rfc-editor.org/info/rfc3348>. | ||||
| [RFC5465] Gulbrandsen, A., King, C., and A. Melnikov, "The IMAP | [RFC5465] Gulbrandsen, A., King, C., and A. Melnikov, "The IMAP | |||
| NOTIFY Extension", RFC 5465, DOI 10.17487/RFC5465, | NOTIFY Extension", RFC 5465, DOI 10.17487/RFC5465, | |||
| February 2009, <https://www.rfc-editor.org/info/rfc5465>. | February 2009, <https://www.rfc-editor.org/info/rfc5465>. | |||
| [RFC6186] Daboo, C., "Use of SRV Records for Locating Email | ||||
| Submission/Access Services", RFC 6186, | ||||
| DOI 10.17487/RFC6186, March 2011, | ||||
| <https://www.rfc-editor.org/info/rfc6186>. | ||||
| [RFC7888] Melnikov, A., Ed., "IMAP4 Non-synchronizing Literals", | [RFC7888] Melnikov, A., Ed., "IMAP4 Non-synchronizing Literals", | |||
| RFC 7888, DOI 10.17487/RFC7888, May 2016, | RFC 7888, DOI 10.17487/RFC7888, May 2016, | |||
| <https://www.rfc-editor.org/info/rfc7888>. | <https://www.rfc-editor.org/info/rfc7888>. | |||
| [IMAP-DISC] | [IMAP-DISC] | |||
| Melnikov, A., Ed., "Synchronization Operations for | Melnikov, A., Ed., "Synchronization Operations for | |||
| Disconnected IMAP4 Clients", RFC 4549, June 2006, | Disconnected IMAP4 Clients", RFC 4549, June 2006, | |||
| <http://www.rfc-editor.org/info/rfc4549>. | <http://www.rfc-editor.org/info/rfc4549>. | |||
| [IMAP-I18N] | [IMAP-I18N] | |||
| skipping to change at page 165, line 19 ¶ | skipping to change at page 165, line 35 ¶ | |||
| MAY (specification requirement term) 5 | MAY (specification requirement term) 5 | |||
| MESSAGES (status item) 69 | MESSAGES (status item) 69 | |||
| MIME (part specifier) 92 | MIME (part specifier) 92 | |||
| MIN (search result option) 77 | MIN (search result option) 77 | |||
| MOVE (command) 95 | MOVE (command) 95 | |||
| 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) 63 | NAMESPACE (command) 64 | |||
| NAMESPACE (response) 116 | NAMESPACE (response) 116 | |||
| NO (response) 109 | NO (response) 109 | |||
| NONEXISTENT (response code) 105 | NONEXISTENT (response code) 105 | |||
| NOOP (command) 27 | NOOP (command) 27 | |||
| NOPERM (response code) 105 | NOPERM (response code) 105 | |||
| NOT <search-key> (search key) 80 | NOT <search-key> (search key) 80 | |||
| NOT RECOMMENDED (specification requirement term) 5 | NOT RECOMMENDED (specification requirement term) 5 | |||
| O | O | |||
| OK (response) 108 | OK (response) 108 | |||
| End of changes. 25 change blocks. | ||||
| 55 lines changed or deleted | 79 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/ | ||||