| < 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 4 ¶ | skipping to change at page 142, line 15 ¶ | |||
| uniqueid = nz-number | uniqueid = nz-number | |||
| ; Strictly ascending | ; Strictly ascending | |||
| unsubscribe = "UNSUBSCRIBE" SP mailbox | unsubscribe = "UNSUBSCRIBE" SP mailbox | |||
| userid = astring | userid = astring | |||
| UTF8-2 = <Defined in Section 4 of RFC 3629> | UTF8-2 = <Defined in Section 4 of RFC 3629> | |||
| UTF8-3 = <Defined in Section 4 of RFC 3629> | UTF8-3 = <Defined in Section 4 of RFC 3629> | |||
| UTF8-4 = <Defined in Section 4 of RFC 3629> | UTF8-4 = <Defined in Section 4 of RFC 3629> | |||
| vendor-token = "vendor." name-component | vendor-token = "vendor." name-component | |||
| ; Definition copied from RFC 2244. | ; Definition copied from RFC 2244. | |||
| ; MUST be registered with IANA | ; MUST be registered with IANA | |||
| x-command = "X" atom <experimental command arguments> | x-command = "X" atom <experimental command arguments> | |||
| zone = ("+" / "-") 4DIGIT | zone = ("+" / "-") 4DIGIT | |||
| ; Signed four-digit value of hhmm representing | ; Signed four-digit value of hhmm representing | |||
| ; hours and minutes east of Greenwich (that is, | ; hours and minutes east of Greenwich (that is, | |||
| ; the amount that the given time differs from | ; the amount that the given time differs from | |||
| ; Universal Time). Subtracting the timezone | ; Universal Time). Subtracting the timezone | |||
| ; from the given time will give the UT form. | ; from the given time will give the UT form. | |||
| ; The Universal Time zone is "+0000". | ; The Universal Time zone is "+0000". | |||
| 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. 54 change blocks. | ||||
| 75 lines changed or deleted | 99 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/ | ||||