| < draft-ietf-extra-imap4rev2-10.txt | draft-ietf-extra-imap4rev2-11.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 Huawei Technologies | Intended status: Standards Track Huawei Technologies | |||
| Expires: May 29, 2020 November 26, 2019 | Expires: June 5, 2020 December 3, 2019 | |||
| INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4rev2 | INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4rev2 | |||
| draft-ietf-extra-imap4rev2-10 | draft-ietf-extra-imap4rev2-11 | |||
| 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 May 29, 2020. | This Internet-Draft will expire on June 5, 2020. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2019 IETF Trust and the persons identified as the | Copyright (c) 2019 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 23 ¶ | skipping to change at page 3, line 23 ¶ | |||
| 4.4. Parenthesized List . . . . . . . . . . . . . . . . . . . 18 | 4.4. Parenthesized List . . . . . . . . . . . . . . . . . . . 18 | |||
| 4.5. NIL . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 | 4.5. NIL . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 | |||
| 5. Operational Considerations . . . . . . . . . . . . . . . . . 19 | 5. Operational Considerations . . . . . . . . . . . . . . . . . 19 | |||
| 5.1. Mailbox Naming . . . . . . . . . . . . . . . . . . . . . 19 | 5.1. Mailbox Naming . . . . . . . . . . . . . . . . . . . . . 19 | |||
| 5.1.1. Mailbox Hierarchy Naming . . . . . . . . . . . . . . 20 | 5.1.1. Mailbox Hierarchy Naming . . . . . . . . . . . . . . 20 | |||
| 5.1.2. Namespaces . . . . . . . . . . . . . . . . . . . . . 20 | 5.1.2. Namespaces . . . . . . . . . . . . . . . . . . . . . 20 | |||
| 5.2. Mailbox Size and Message Status Updates . . . . . . . . . 21 | 5.2. Mailbox Size and Message Status Updates . . . . . . . . . 21 | |||
| 5.3. Response when no Command in Progress . . . . . . . . . . 22 | 5.3. Response when no Command in Progress . . . . . . . . . . 22 | |||
| 5.4. Autologout Timer . . . . . . . . . . . . . . . . . . . . 22 | 5.4. Autologout Timer . . . . . . . . . . . . . . . . . . . . 22 | |||
| 5.5. Multiple Commands in Progress (Command Pipelining) . . . 22 | 5.5. Multiple Commands in Progress (Command Pipelining) . . . 22 | |||
| 6. Client Commands . . . . . . . . . . . . . . . . . . . . . . . 23 | 6. Client Commands . . . . . . . . . . . . . . . . . . . . . . . 24 | |||
| 6.1. Client Commands - Any State . . . . . . . . . . . . . . . 24 | 6.1. Client Commands - Any State . . . . . . . . . . . . . . . 24 | |||
| 6.1.1. CAPABILITY Command . . . . . . . . . . . . . . . . . 24 | 6.1.1. CAPABILITY Command . . . . . . . . . . . . . . . . . 24 | |||
| 6.1.2. NOOP Command . . . . . . . . . . . . . . . . . . . . 25 | 6.1.2. NOOP Command . . . . . . . . . . . . . . . . . . . . 25 | |||
| 6.1.3. LOGOUT Command . . . . . . . . . . . . . . . . . . . 26 | 6.1.3. LOGOUT Command . . . . . . . . . . . . . . . . . . . 26 | |||
| 6.2. Client Commands - Not Authenticated State . . . . . . . . 26 | 6.2. Client Commands - Not Authenticated State . . . . . . . . 26 | |||
| 6.2.1. STARTTLS Command . . . . . . . . . . . . . . . . . . 27 | 6.2.1. STARTTLS Command . . . . . . . . . . . . . . . . . . 27 | |||
| 6.2.2. AUTHENTICATE Command . . . . . . . . . . . . . . . . 28 | 6.2.2. AUTHENTICATE Command . . . . . . . . . . . . . . . . 28 | |||
| 6.2.3. LOGIN Command . . . . . . . . . . . . . . . . . . . . 31 | 6.2.3. LOGIN Command . . . . . . . . . . . . . . . . . . . . 31 | |||
| 6.3. Client Commands - Authenticated State . . . . . . . . . . 31 | 6.3. Client Commands - Authenticated State . . . . . . . . . . 32 | |||
| 6.3.1. ENABLE Command . . . . . . . . . . . . . . . . . . . 32 | 6.3.1. ENABLE Command . . . . . . . . . . . . . . . . . . . 32 | |||
| 6.3.2. SELECT Command . . . . . . . . . . . . . . . . . . . 34 | 6.3.2. SELECT Command . . . . . . . . . . . . . . . . . . . 34 | |||
| 6.3.3. EXAMINE Command . . . . . . . . . . . . . . . . . . . 36 | 6.3.3. EXAMINE Command . . . . . . . . . . . . . . . . . . . 36 | |||
| 6.3.4. CREATE Command . . . . . . . . . . . . . . . . . . . 37 | 6.3.4. CREATE Command . . . . . . . . . . . . . . . . . . . 37 | |||
| 6.3.5. DELETE Command . . . . . . . . . . . . . . . . . . . 38 | 6.3.5. DELETE Command . . . . . . . . . . . . . . . . . . . 38 | |||
| 6.3.6. RENAME Command . . . . . . . . . . . . . . . . . . . 39 | 6.3.6. RENAME Command . . . . . . . . . . . . . . . . . . . 39 | |||
| 6.3.7. SUBSCRIBE Command . . . . . . . . . . . . . . . . . . 41 | 6.3.7. SUBSCRIBE Command . . . . . . . . . . . . . . . . . . 41 | |||
| 6.3.8. UNSUBSCRIBE Command . . . . . . . . . . . . . . . . . 42 | 6.3.8. UNSUBSCRIBE Command . . . . . . . . . . . . . . . . . 42 | |||
| 6.3.9. LIST Command . . . . . . . . . . . . . . . . . . . . 42 | 6.3.9. LIST Command . . . . . . . . . . . . . . . . . . . . 42 | |||
| 6.3.10. NAMESPACE Command . . . . . . . . . . . . . . . . . . 60 | 6.3.10. NAMESPACE Command . . . . . . . . . . . . . . . . . . 60 | |||
| 6.3.11. STATUS Command . . . . . . . . . . . . . . . . . . . 65 | 6.3.11. STATUS Command . . . . . . . . . . . . . . . . . . . 65 | |||
| 6.3.12. APPEND Command . . . . . . . . . . . . . . . . . . . 66 | 6.3.12. APPEND Command . . . . . . . . . . . . . . . . . . . 66 | |||
| 6.3.13. IDLE Command . . . . . . . . . . . . . . . . . . . . 69 | 6.3.13. IDLE Command . . . . . . . . . . . . . . . . . . . . 69 | |||
| 6.4. Client Commands - Selected State . . . . . . . . . . . . 71 | 6.4. Client Commands - Selected State . . . . . . . . . . . . 71 | |||
| 6.4.1. CLOSE Command . . . . . . . . . . . . . . . . . . . . 71 | 6.4.1. CLOSE Command . . . . . . . . . . . . . . . . . . . . 71 | |||
| 6.4.2. UNSELECT Command . . . . . . . . . . . . . . . . . . 72 | 6.4.2. UNSELECT Command . . . . . . . . . . . . . . . . . . 72 | |||
| 6.4.3. EXPUNGE Command . . . . . . . . . . . . . . . . . . . 72 | 6.4.3. EXPUNGE Command . . . . . . . . . . . . . . . . . . . 72 | |||
| 6.4.4. SEARCH Command . . . . . . . . . . . . . . . . . . . 73 | 6.4.4. SEARCH Command . . . . . . . . . . . . . . . . . . . 73 | |||
| 6.4.5. FETCH Command . . . . . . . . . . . . . . . . . . . . 79 | 6.4.5. FETCH Command . . . . . . . . . . . . . . . . . . . . 85 | |||
| 6.4.6. STORE Command . . . . . . . . . . . . . . . . . . . . 83 | 6.4.6. STORE Command . . . . . . . . . . . . . . . . . . . . 89 | |||
| 6.4.7. COPY Command . . . . . . . . . . . . . . . . . . . . 84 | 6.4.7. COPY Command . . . . . . . . . . . . . . . . . . . . 90 | |||
| 6.4.8. MOVE Command . . . . . . . . . . . . . . . . . . . . 85 | 6.4.8. MOVE Command . . . . . . . . . . . . . . . . . . . . 91 | |||
| 6.4.9. UID Command . . . . . . . . . . . . . . . . . . . . . 87 | 6.4.9. UID Command . . . . . . . . . . . . . . . . . . . . . 93 | |||
| 6.5. Client Commands - Experimental/Expansion . . . . . . . . 88 | 6.5. Client Commands - Experimental/Expansion . . . . . . . . 95 | |||
| 6.5.1. X<atom> Command . . . . . . . . . . . . . . . . . . . 88 | 6.5.1. X<atom> Command . . . . . . . . . . . . . . . . . . . 95 | |||
| 7. Server Responses . . . . . . . . . . . . . . . . . . . . . . 89 | 7. Server Responses . . . . . . . . . . . . . . . . . . . . . . 96 | |||
| 7.1. Server Responses - Status Responses . . . . . . . . . . . 90 | 7.1. Server Responses - Status Responses . . . . . . . . . . . 97 | |||
| 7.1.1. OK Response . . . . . . . . . . . . . . . . . . . . . 98 | 7.1.1. OK Response . . . . . . . . . . . . . . . . . . . . . 105 | |||
| 7.1.2. NO Response . . . . . . . . . . . . . . . . . . . . . 98 | 7.1.2. NO Response . . . . . . . . . . . . . . . . . . . . . 105 | |||
| 7.1.3. BAD Response . . . . . . . . . . . . . . . . . . . . 99 | 7.1.3. BAD Response . . . . . . . . . . . . . . . . . . . . 106 | |||
| 7.1.4. PREAUTH Response . . . . . . . . . . . . . . . . . . 99 | 7.1.4. PREAUTH Response . . . . . . . . . . . . . . . . . . 106 | |||
| 7.1.5. BYE Response . . . . . . . . . . . . . . . . . . . . 100 | 7.1.5. BYE Response . . . . . . . . . . . . . . . . . . . . 106 | |||
| 7.2. Server Responses - Server and Mailbox Status . . . . . . 100 | 7.2. Server Responses - Server and Mailbox Status . . . . . . 107 | |||
| 7.2.1. The ENABLED Response . . . . . . . . . . . . . . . . 100 | 7.2.1. The ENABLED Response . . . . . . . . . . . . . . . . 107 | |||
| 7.2.2. CAPABILITY Response . . . . . . . . . . . . . . . . . 101 | 7.2.2. CAPABILITY Response . . . . . . . . . . . . . . . . . 107 | |||
| 7.2.3. LIST Response . . . . . . . . . . . . . . . . . . . . 102 | 7.2.3. LIST Response . . . . . . . . . . . . . . . . . . . . 108 | |||
| 7.2.4. NAMESPACE Response . . . . . . . . . . . . . . . . . 105 | 7.2.4. NAMESPACE Response . . . . . . . . . . . . . . . . . 112 | |||
| 7.2.5. STATUS Response . . . . . . . . . . . . . . . . . . . 105 | 7.2.5. STATUS Response . . . . . . . . . . . . . . . . . . . 112 | |||
| 7.2.6. ESEARCH Response . . . . . . . . . . . . . . . . . . 106 | 7.2.6. ESEARCH Response . . . . . . . . . . . . . . . . . . 113 | |||
| 7.2.7. FLAGS Response . . . . . . . . . . . . . . . . . . . 106 | 7.2.7. FLAGS Response . . . . . . . . . . . . . . . . . . . 113 | |||
| 7.3. Server Responses - Mailbox Size . . . . . . . . . . . . . 107 | 7.3. Server Responses - Mailbox Size . . . . . . . . . . . . . 114 | |||
| 7.3.1. EXISTS Response . . . . . . . . . . . . . . . . . . . 107 | 7.3.1. EXISTS Response . . . . . . . . . . . . . . . . . . . 114 | |||
| 7.4. Server Responses - Message Status . . . . . . . . . . . . 107 | 7.4. Server Responses - Message Status . . . . . . . . . . . . 114 | |||
| 7.4.1. EXPUNGE Response . . . . . . . . . . . . . . . . . . 107 | 7.4.1. EXPUNGE Response . . . . . . . . . . . . . . . . . . 114 | |||
| 7.4.2. FETCH Response . . . . . . . . . . . . . . . . . . . 108 | 7.4.2. FETCH Response . . . . . . . . . . . . . . . . . . . 115 | |||
| 7.5. Server Responses - Command Continuation Request . . . . . 114 | 7.5. Server Responses - Command Continuation Request . . . . . 121 | |||
| 8. Sample IMAP4rev2 connection . . . . . . . . . . . . . . . . . 114 | 8. Sample IMAP4rev2 connection . . . . . . . . . . . . . . . . . 121 | |||
| 9. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 115 | 9. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 122 | |||
| 10. Author's Note . . . . . . . . . . . . . . . . . . . . . . . . 132 | 10. Author's Note . . . . . . . . . . . . . . . . . . . . . . . . 139 | |||
| 11. Security Considerations . . . . . . . . . . . . . . . . . . . 132 | 11. Security Considerations . . . . . . . . . . . . . . . . . . . 139 | |||
| 11.1. STARTTLS Security Considerations . . . . . . . . . . . . 132 | 11.1. STARTTLS Security Considerations . . . . . . . . . . . . 140 | |||
| 11.2. COPYUID and APPENDUID response codes . . . . . . . . . . 133 | 11.2. COPYUID and APPENDUID response codes . . . . . . . . . . 140 | |||
| 11.3. LIST command and Other Users' namespace . . . . . . . . 133 | 11.3. LIST command and Other Users' namespace . . . . . . . . 140 | |||
| 11.4. Other Security Considerations . . . . . . . . . . . . . 133 | 11.4. Other Security Considerations . . . . . . . . . . . . . 141 | |||
| 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 134 | 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 141 | |||
| 12.1. Updates to IMAP4 Capabilities registry . . . . . . . . . 134 | 12.1. Updates to IMAP4 Capabilities registry . . . . . . . . . 142 | |||
| 12.2. GSSAPI/SASL service name . . . . . . . . . . . . . . . . 135 | 12.2. GSSAPI/SASL service name . . . . . . . . . . . . . . . . 142 | |||
| 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 135 | 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 142 | |||
| 13.1. Normative References . . . . . . . . . . . . . . . . . . 135 | 13.1. Normative References . . . . . . . . . . . . . . . . . . 142 | |||
| 13.2. Informative References (related protocols) . . . . . . . 138 | 13.2. Informative References (related protocols) . . . . . . . 145 | |||
| 13.3. Informative References (historical aspects of IMAP and | 13.3. Informative References (historical aspects of IMAP and | |||
| related protocols) . . . . . . . . . . . . . . . . . . . 139 | related protocols) . . . . . . . . . . . . . . . . . . . 147 | |||
| Appendix A. Backward compatibility with IMAP4rev1 . . . . . . . 140 | Appendix A. Backward compatibility with IMAP4rev1 . . . . . . . 147 | |||
| A.1. Mailbox International Naming Convention for compatibility | A.1. Mailbox International Naming Convention for compatibility | |||
| with IMAP4rev1 . . . . . . . . . . . . . . . . . . . . . 140 | with IMAP4rev1 . . . . . . . . . . . . . . . . . . . . . 148 | |||
| Appendix B. Backward compatibility with BINARY extension . . . . 142 | Appendix B. Backward compatibility with BINARY extension . . . . 149 | |||
| Appendix C. Changes from RFC 3501 / IMAP4rev1 . . . . . . . . . 142 | Appendix C. Changes from RFC 3501 / IMAP4rev1 . . . . . . . . . 150 | |||
| Appendix D. Acknowledgement . . . . . . . . . . . . . . . . . . 144 | Appendix D. Acknowledgement . . . . . . . . . . . . . . . . . . 152 | |||
| Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 | Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 150 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 157 | |||
| 1. How to Read This Document | 1. How to Read This Document | |||
| 1.1. Organization of This Document | 1.1. Organization of This Document | |||
| This document is written from the point of view of the implementor of | This document is written from the point of view of the implementor of | |||
| an IMAP4rev2 client or server. Beyond the protocol overview in | an IMAP4rev2 client or server. Beyond the protocol overview in | |||
| section 2, it is not optimized for someone trying to understand the | section 2, it is not optimized for someone trying to understand the | |||
| operation of the protocol. The material in sections 3 through 5 | operation of the protocol. The material in sections 3 through 5 | |||
| provides the general context and definitions with which IMAP4rev2 | provides the general context and definitions with which IMAP4rev2 | |||
| skipping to change at page 6, line 48 ¶ | skipping to change at page 6, line 48 ¶ | |||
| Appendix C and [IMAP-OBSOLETE]. | Appendix C and [IMAP-OBSOLETE]. | |||
| Other compatibility issues with IMAP2bis, the most common variant of | Other compatibility issues with IMAP2bis, the most common variant of | |||
| the earlier protocol, are discussed in [IMAP-COMPAT]. A full | the earlier protocol, are discussed in [IMAP-COMPAT]. A full | |||
| discussion of compatibility issues with rare (and presumed extinct) | discussion of compatibility issues with rare (and presumed extinct) | |||
| variants of [IMAP2] is in [IMAP-HISTORICAL]; this document is | variants of [IMAP2] is in [IMAP-HISTORICAL]; this document is | |||
| primarily of historical interest. | primarily of historical interest. | |||
| IMAP was originally developed for the older [RFC-822] standard, and | IMAP was originally developed for the older [RFC-822] standard, and | |||
| as a consequence several fetch items in IMAP incorporate "RFC822" in | as a consequence several fetch items in IMAP incorporate "RFC822" in | |||
| their name. With the exception of RFC822.SIZE, there are more modern | their name. In all cases, "RFC822" should be interpreted as a | |||
| replacements; for example, the modern version of RFC822.HEADER is | ||||
| BODY.PEEK[HEADER]. 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. | port 143. | |||
| skipping to change at page 22, line 48 ¶ | skipping to change at page 22, line 48 ¶ | |||
| The client MAY send another command without waiting for the | The client MAY send another command without waiting for the | |||
| completion result response of a command, subject to ambiguity rules | completion result response of a command, subject to ambiguity rules | |||
| (see below) and flow control constraints on the underlying data | (see below) and flow control constraints on the underlying data | |||
| stream. Similarly, a server MAY begin processing another command | stream. Similarly, a server MAY begin processing another command | |||
| before processing the current command to completion, subject to | before processing the current command to completion, subject to | |||
| ambiguity rules. However, any command continuation request responses | ambiguity rules. However, any command continuation request responses | |||
| and command continuations MUST be negotiated before any subsequent | and command continuations MUST be negotiated before any subsequent | |||
| command is initiated. | command is initiated. | |||
| The exception is if an ambiguity would result because of a command | The exception is if an ambiguity would result because of a command | |||
| that would affect the results of other commands. Clients MUST NOT | that would affect the results of other commands. | |||
| send multiple commands without waiting if an ambiguity would result. | ||||
| If the server detects a possible ambiguity, it MUST execute commands | If the server detects a possible ambiguity, it MUST execute commands | |||
| to completion in the order given by the client. | to completion in the order given by the client. | |||
| The most obvious example of ambiguity is when a command would affect | The most obvious example of ambiguity is when a command would affect | |||
| the results of another command, e.g., a FETCH of a message's flags | the results of another command, e.g., a FETCH of a message's flags | |||
| and a STORE of that same message's flags. | and a STORE of that same message's flags. | |||
| A non-obvious ambiguity occurs with commands that permit an untagged | A non-obvious ambiguity occurs with commands that permit an untagged | |||
| EXPUNGE response (commands other than FETCH, STORE, and SEARCH), | EXPUNGE response (commands other than FETCH, STORE, and SEARCH), | |||
| since an untagged EXPUNGE response can invalidate sequence numbers in | since an untagged EXPUNGE response can invalidate sequence numbers in | |||
| skipping to change at page 23, line 45 ¶ | skipping to change at page 23, line 45 ¶ | |||
| The following are examples of valid non-waiting command sequences: | The following are examples of valid non-waiting command sequences: | |||
| FETCH + STORE + SEARCH + NOOP | FETCH + STORE + SEARCH + NOOP | |||
| STORE + COPY + EXPUNGE | STORE + COPY + EXPUNGE | |||
| UID SEARCH + UID SEARCH may be valid or invalid as a non-waiting | UID SEARCH + UID SEARCH may be valid or invalid as a non-waiting | |||
| command sequence, depending upon whether or not the second UID | command sequence, depending upon whether or not the second UID | |||
| SEARCH contains message sequence numbers. | SEARCH contains message sequence numbers. | |||
| Use of SEARCH result variable (see Section 6.4.4.1) creates direct | ||||
| dependency between two commands. See Section 6.4.4.2 for more | ||||
| considerations about pipelining such dependent commands. | ||||
| 6. Client Commands | 6. Client Commands | |||
| IMAP4rev2 commands are described in this section. Commands are | IMAP4rev2 commands are described in this section. Commands are | |||
| organized by the state in which the command is permitted. Commands | organized by the state in which the command is permitted. Commands | |||
| which are permitted in multiple states are listed in the minimum | which are permitted in multiple states are listed in the minimum | |||
| permitted state (for example, commands valid in authenticated and | permitted state (for example, commands valid in authenticated and | |||
| selected state are listed in the authenticated state commands). | selected state are listed in the authenticated state commands). | |||
| Command arguments, identified by "Arguments:" in the command | Command arguments, identified by "Arguments:" in the command | |||
| descriptions below, are described by function, not by syntax. The | descriptions below, are described by function, not by syntax. The | |||
| skipping to change at page 73, line 30 ¶ | skipping to change at page 73, line 30 ¶ | |||
| Note: In this example, messages 3, 4, 7, and 11 had the \Deleted flag | Note: In this example, messages 3, 4, 7, and 11 had the \Deleted flag | |||
| set. See the description of the EXPUNGE response for further | set. See the description of the EXPUNGE response for further | |||
| explanation. | explanation. | |||
| 6.4.4. SEARCH Command | 6.4.4. SEARCH Command | |||
| Arguments: OPTIONAL result specifier | Arguments: OPTIONAL result specifier | |||
| OPTIONAL [CHARSET] specification | OPTIONAL [CHARSET] specification | |||
| searching criteria (one or more) | searching criteria (one or more) | |||
| Responses: REQUIRED untagged response: ESEARCH | Responses: OPTIONAL untagged response: ESEARCH | |||
| Result: OK - search completed | Result: OK - search completed | |||
| NO - search error: can't search that [CHARSET] or | NO - search error: can't search that [CHARSET] or | |||
| criteria | criteria | |||
| BAD - command unknown or arguments invalid | BAD - command unknown or arguments invalid | |||
| The SEARCH command searches the mailbox for messages that match the | The SEARCH command searches the mailbox for messages that match the | |||
| given searching criteria. | given searching criteria. | |||
| The SEARCH command may contain result options. Result options | The SEARCH command may contain result options. Result options | |||
| control what kind of information is returned about messages matching | control what kind of information is returned about messages matching | |||
| the search criteria in an untagged ESEARCH response. If no result | the search criteria in an untagged ESEARCH response. If no result | |||
| option is specified or empty list of options is specified "()", ALL | option is specified or empty list of options is specified "()", ALL | |||
| is assumed (see below). | is assumed (see below). The order of individual options is | |||
| arbitrary. Individual options may contain parameters enclosed in | ||||
| The order of individual options is arbitrary. Individual options may | parentheses (*). If an option has parameters, they consist of atoms | |||
| contain parameters enclosed in parentheses (*). If an option has | and/or strings and/or lists in a specific order. Any options not | |||
| parameters, they consist of atoms and/or strings and/or lists in a | defined by extensions that the server supports must be rejected with | |||
| specific order. Any options not defined by extensions that the | a BAD response. | |||
| server supports must be rejected with a BAD response. | ||||
| (*) - if an option has a mandatory parameter, which can always be | (*) - if an option has a mandatory parameter, which can always be | |||
| represented as a number or a sequence-set, the option parameter does | represented as a number or a sequence-set, the option parameter does | |||
| not need the enclosing (). See ABNF for more details. | not need the enclosing (). See ABNF for more details. | |||
| This document specifies the following result options: | This document specifies the following result options: | |||
| MIN | MIN | |||
| Return the lowest message number/UID that satisfies the SEARCH | Return the lowest message number/UID that satisfies the SEARCH | |||
| skipping to change at page 74, line 44 ¶ | skipping to change at page 74, line 44 ¶ | |||
| order. | order. | |||
| If the SEARCH results in no matches, the server MUST NOT | If the SEARCH results in no matches, the server MUST NOT | |||
| include the ALL result option in the ESEARCH response; however, | include the ALL result option in the ESEARCH response; however, | |||
| it still MUST send the ESEARCH response. | it still MUST send the ESEARCH response. | |||
| COUNT Return number of the messages that satisfy the SEARCH | COUNT Return number of the messages that satisfy the SEARCH | |||
| criteria. This result option MUST always be included in the | criteria. This result option MUST always be included in the | |||
| ESEARCH response. | ESEARCH response. | |||
| SAVE | ||||
| This option tells the server to remember the result of the | ||||
| SEARCH or UID SEARCH command (as well as any command based on | ||||
| SEARCH, e.g., SORT and THREAD [RFC5256]>) and store it in an | ||||
| internal variable that we will reference as the "search result | ||||
| variable". The client can use the "$" marker to reference the | ||||
| content of this internal variable. The "$" marker can be used | ||||
| instead of message sequence or UID sequence in order to | ||||
| indicate that the server should substitute it with the list of | ||||
| messages from the search result variable. Thus, the client can | ||||
| use the result of the latest remembered SEARCH command as a | ||||
| parameter to another command. See Section 6.4.4.1 for details | ||||
| on how the value of the search result variable is determined, | ||||
| how it is affected by other commands executed, and how SAVE | ||||
| return option interacts with other return options. | ||||
| In absence of any other SEARCH result option, the SAVE result | ||||
| option also suppresses any ESEARCH response that would have | ||||
| been otherwise returned by the SEARCH command. | ||||
| Note: future extensions to this document can allow servers to return | Note: future extensions to this document can allow servers to return | |||
| multiple ESEARCH responses for a single extended SEARCH command. | multiple ESEARCH responses for a single extended SEARCH command. | |||
| However all options specified above MUST result in a single ESEARCH | However all options specified above MUST result in a single ESEARCH | |||
| response. | response. | |||
| These extensions will have to describe how results from multiple | These extensions will have to describe how results from multiple | |||
| ESEARCH responses are to be amalgamated. | ESEARCH responses are to be amalgamated. | |||
| Searching criteria consist of one or more search keys. | Searching criteria consist of one or more search keys. | |||
| skipping to change at page 79, line 5 ¶ | skipping to change at page 79, line 20 ¶ | |||
| S: * ESEARCH (TAG "A285") UID MIN 7 MAX 3800 | S: * ESEARCH (TAG "A285") UID MIN 7 MAX 3800 | |||
| S: A285 OK SEARCH completed | S: A285 OK SEARCH completed | |||
| The following example demonstrates returning the number of deleted | The following example demonstrates returning the number of deleted | |||
| messages: | messages: | |||
| Example: C: A286 SEARCH RETURN (COUNT) DELETED | Example: C: A286 SEARCH RETURN (COUNT) DELETED | |||
| S: * ESEARCH (TAG "A286") COUNT 15 | S: * ESEARCH (TAG "A286") COUNT 15 | |||
| S: A286 OK SEARCH completed | S: A286 OK SEARCH completed | |||
| 6.4.4.1. SAVE result option and SEARCH result variable | ||||
| Upon successful completion of a SELECT or an EXAMINE command (after | ||||
| the tagged OK response), the current search result variable is reset | ||||
| to the empty sequence. | ||||
| A successful SEARCH command with the SAVE result option sets the | ||||
| value of the search result variable to the list of messages found in | ||||
| the SEARCH command. For example, if no messages were found, the | ||||
| search result variable will contain the empty sequence. | ||||
| Any of the following SEARCH commands MUST NOT change the search | ||||
| result variable: | ||||
| a SEARCH command that caused the server to return the BAD tagged | ||||
| response, | ||||
| a SEARCH command with no SAVE result option that caused the server | ||||
| to return NO tagged response, | ||||
| a successful SEARCH command with no SAVE result option. | ||||
| A SEARCH command with the SAVE result option that caused the server | ||||
| to return the NO tagged response sets the value of the search result | ||||
| variable to the empty sequence. | ||||
| When a message listed in the search result variable is EXPUNGEd, it | ||||
| is automatically removed from the list. Implementors are reminded | ||||
| that if the server stores the list as a list of message numbers, it | ||||
| MUST automatically adjust them when notifying the client about | ||||
| expunged messages, as described in Section 7.4.1. | ||||
| If the server decides to send a new UIDVALIDITY value while the | ||||
| mailbox is opened, this causes resetting of the search variable to | ||||
| the empty sequence. | ||||
| Note that even if the "$" marker contains the empty sequence of | ||||
| messages, it must be treated by all commands accepting message sets | ||||
| as parameters as a valid, but non-matching list of messages. For | ||||
| example, the "FETCH $" command would return a tagged OK response and | ||||
| no FETCH responses. See also the Example 5 in Section 6.4.4.4. | ||||
| The SAVE result option doesn't change whether the server would return | ||||
| items corresponding to MIN, MAX, ALL, or COUNT result options. | ||||
| When the SAVE result option is combined with the MIN or MAX result | ||||
| option, and both ALL and COUNT result options are absent, the | ||||
| corresponding MIN/MAX is returned (if the search result is not | ||||
| empty), but the "$" marker would contain a single message as returned | ||||
| in the MIN/MAX return item. | ||||
| If the SAVE result option is combined with both MIN and MAX result | ||||
| options, and both ALL and COUNT result options are absent, the "$" | ||||
| marker would contain zero, one or two messages as returned in the | ||||
| MIN/MAX return items. | ||||
| If the SAVE result option is combined with the ALL and/or COUNT | ||||
| result option(s), the "$" marker would always contain all messages | ||||
| found by the SEARCH or UID SEARCH command. | ||||
| The following table summarizes the additional requirement on ESEARCH | ||||
| server implementations described in this section. | ||||
| +------------------------------+--------------------+ | ||||
| | Combination of Result option | "$" marker value | | ||||
| +------------------------------+--------------------+ | ||||
| | SAVE MIN | MIN | | ||||
| | SAVE MAX | MAX | | ||||
| | SAVE MIN MAX | MIN & MAX | | ||||
| | SAVE * [m] | all found messages | | ||||
| +------------------------------+--------------------+ | ||||
| where '*' means "ALL" and/or "COUNT", and '[m]' means optional "MIN" | ||||
| and/or "MAX" | ||||
| Implementation note: server implementors should note that "$" can | ||||
| reference IMAP message sequences or UID sequences, depending on the | ||||
| context where it is used. For example, the "$" marker can be set as | ||||
| a result of a SEARCH (SAVE) command and used as a parameter to a UID | ||||
| FETCH command (which accepts a UID sequence, not a message sequence), | ||||
| or the "$" marker can be set as a result of a UID SEARCH (SAVE) | ||||
| command and used as a parameter to a FETCH command (which accepts a | ||||
| message sequence, not a UID sequence). Server implementations need | ||||
| to automatically map the "$" marker value to message numbers or UIDs, | ||||
| depending on context where the "$" marker is used. | ||||
| 6.4.4.2. Multiple Commands in Progress | ||||
| Use of a SEARCH RETURN (SAVE) command followed by a command using the | ||||
| "$" marker creates direct dependency between the two commands. As | ||||
| directed by Section 5.5, a server MUST execute the two commands in | ||||
| the order they were received. | ||||
| A client MAY pipeline a SEARCH RETURN (SAVE) command with one or more | ||||
| command using the "$" marker, as long as this doesn't create an | ||||
| ambiguity, as described in by Section 5.5. Examples 7-9 in | ||||
| Section 6.4.4.4 explain this in more details. | ||||
| 6.4.4.3. Refusing to Save Search Results | ||||
| In some cases, the server MAY refuse to save a SEARCH (SAVE) result, | ||||
| for example, if an internal limit on the number of saved results is | ||||
| reached. In this case, the server MUST return a tagged NO response | ||||
| containing the NOTSAVED response code and set the search result | ||||
| variable to the empty sequence, as described in Section 6.4.4.1. | ||||
| 6.4.4.4. Examples showing use of SAVE result option | ||||
| Only in this section: explanatory comments in examples that start | ||||
| with // are not part of the protocol. | ||||
| 1) The following example demonstrates how the client can use the | ||||
| result of a SEARCH command to FETCH headers of interesting messages: | ||||
| Example 1: | ||||
| C: A282 SEARCH RETURN (SAVE) FLAGGED SINCE 1-Feb-1994 | ||||
| NOT FROM "Smith" | ||||
| S: A282 OK SEARCH completed, result saved | ||||
| C: A283 FETCH $ (UID INTERNALDATE FLAGS BODY.PEEK[HEADER]) | ||||
| S: * 2 FETCH (UID 14 ... | ||||
| S: * 84 FETCH (UID 100 ... | ||||
| S: * 882 FETCH (UID 1115 ... | ||||
| S: A283 OK completed | ||||
| The client can also pipeline the two commands: | ||||
| Example 2: | ||||
| C: A282 SEARCH RETURN (SAVE) FLAGGED SINCE 1-Feb-1994 | ||||
| NOT FROM "Smith" | ||||
| C: A283 FETCH $ (UID INTERNALDATE FLAGS BODY.PEEK[HEADER]) | ||||
| S: A282 OK SEARCH completed | ||||
| S: * 2 FETCH (UID 14 ... | ||||
| S: * 84 FETCH (UID 100 ... | ||||
| S: * 882 FETCH (UID 1115 ... | ||||
| S: A283 OK completed | ||||
| 2) The following example demonstrates that the result of one SEARCH | ||||
| command can be used as input to another SEARCH command: | ||||
| Example 3: | ||||
| C: A300 SEARCH RETURN (SAVE) SINCE 1-Jan-2004 | ||||
| NOT FROM "Smith" | ||||
| S: A300 OK SEARCH completed | ||||
| C: A301 UID SEARCH UID $ SMALLER 4096 | ||||
| S: * ESEARCH (TAG "A301") UID ALL 17,900,901 | ||||
| S: A301 OK completed | ||||
| Note that the second command in Example 3 can be replaced with: | ||||
| C: A301 UID SEARCH $ SMALLER 4096 | ||||
| and the result of the command would be the same. | ||||
| 3) The following example shows that the "$" marker can be combined | ||||
| with other message numbers using the OR SEARCH criterion. | ||||
| Example 4: | ||||
| C: P282 SEARCH RETURN (SAVE) SINCE 1-Feb-1994 | ||||
| NOT FROM "Smith" | ||||
| S: P282 OK SEARCH completed | ||||
| C: P283 SEARCH CHARSET UTF-8 (OR $ 1,3000:3021) TEXT {8} | ||||
| C: YYYYYYYY | ||||
| S: * ESEARCH (TAG "P283") ALL 882,1102,3003,3005:3006 | ||||
| S: P283 OK completed | ||||
| Note: Since this document format is restricted to 7-bit ASCII text, | ||||
| it is not possible to show actual UTF-8 data. The "YYYYYYYY" is a | ||||
| placeholder for what would be 8 octets of 8-bit data in an actual | ||||
| transaction. | ||||
| 4) The following example demonstrates that a failed SEARCH sets the | ||||
| search result variable to the empty list. The server doesn't | ||||
| implement the KOI8-R charset. | ||||
| Example 5: | ||||
| C: B282 SEARCH RETURN (SAVE) SINCE 1-Feb-1994 | ||||
| NOT FROM "Smith" | ||||
| S: B282 OK SEARCH completed | ||||
| C: B283 SEARCH CHARSET KOI8-R (OR $ 1,3000:3021) TEXT {4} | ||||
| C: XXXX | ||||
| S: B283 NO [BADCHARSET UTF-8] KOI8-R is not supported | ||||
| //After this command the saved result variable contains | ||||
| //no messages. A client that wants to reissue the B283 | ||||
| //SEARCH command with another CHARSET would have to reissue | ||||
| //the B282 command as well. One possible workaround for | ||||
| //this is to include the desired CHARSET parameter | ||||
| //in the earliest SEARCH RETURN (SAVE) command in a | ||||
| //sequence of related SEARCH commands. | ||||
| //A better approach might be to always use CHARSET UTF-8 | ||||
| //instead. | ||||
| Note: Since this document format is restricted to 7-bit ASCII text, | ||||
| it is not possible to show actual KOI8-R data. The "XXXX" is a | ||||
| placeholder for what would be 4 octets of 8-bit data in an actual | ||||
| transaction. | ||||
| 5) The following example demonstrates that it is not an error to use | ||||
| the "$" marker when it contains no messages. | ||||
| Example 6: | ||||
| C: E282 SEARCH RETURN (SAVE) SINCE 28-Oct-2006 | ||||
| NOT FROM "Eric" | ||||
| C: E283 COPY $ "Other Messages" | ||||
| //The "$" contains no messages | ||||
| S: E282 OK SEARCH completed | ||||
| S: E283 OK COPY completed, nothing copied | ||||
| Example 7: | ||||
| C: F282 SEARCH RETURN (SAVE) KEYWORD $Junk | ||||
| C: F283 COPY $ "Junk" | ||||
| C: F284 STORE $ +FLAGS.Silent (\Deleted) | ||||
| S: F282 OK SEARCH completed | ||||
| S: F283 OK COPY completed | ||||
| S: F284 OK STORE completed | ||||
| Example 8: | ||||
| C: G282 SEARCH RETURN (SAVE) KEYWORD $Junk | ||||
| C: G283 SEARCH RETURN (ALL) SINCE 28-Oct-2006 | ||||
| FROM "Eric" | ||||
| // The server can execute the two SEARCH commands | ||||
| // in any order, as they don't have any dependency. | ||||
| // For example, it may return: | ||||
| S: * ESEARCH (TAG "G283") ALL 3:15,27,29:103 | ||||
| S: G283 OK SEARCH completed | ||||
| S: G282 OK SEARCH completed | ||||
| The following example demonstrates that the result of the second | ||||
| SEARCH RETURN (SAVE) always overrides the result of the first. | ||||
| Example 9: | ||||
| C: H282 SEARCH RETURN (SAVE) KEYWORD $Junk | ||||
| C: H283 SEARCH RETURN (SAVE) SINCE 28-Oct-2006 | ||||
| FROM "Eric" | ||||
| S: H282 OK SEARCH completed | ||||
| S: H283 OK SEARCH completed | ||||
| // At this point "$" would contain results of H283 | ||||
| The following example demonstrates behavioral difference for | ||||
| different combinations of ESEARCH result options. Explanatory | ||||
| comments start with // and are not part of the protocol: | ||||
| Example 10: | ||||
| C: C282 SEARCH RETURN (ALL) SINCE 12-Feb-2006 | ||||
| NOT FROM "Smith" | ||||
| S: * ESEARCH (TAG "C283") ALL 2,10:15,21 | ||||
| //$ value hasn't changed | ||||
| S: C282 OK SEARCH completed | ||||
| C: C283 SEARCH RETURN (ALL SAVE) SINCE 12-Feb-2006 | ||||
| NOT FROM "Smith" | ||||
| S: * ESEARCH (TAG "C283") ALL 2,10:15,21 | ||||
| //$ value is 2,10:15,21 | ||||
| S: C283 OK SEARCH completed | ||||
| C: C284 SEARCH RETURN (SAVE MIN) SINCE 12-Feb-2006 | ||||
| NOT FROM "Smith" | ||||
| S: * ESEARCH (TAG "C284") MIN 2 | ||||
| //$ value is 2 | ||||
| S: C284 OK SEARCH completed | ||||
| C: C285 SEARCH RETURN (MAX SAVE MIN) SINCE | ||||
| 12-Feb-2006 NOT FROM "Smith" | ||||
| S: * ESEARCH (TAG "C285") MIN 2 MAX 21 | ||||
| //$ value is 2,21 | ||||
| S: C285 OK SEARCH completed | ||||
| C: C286 SEARCH RETURN (MAX SAVE MIN COUNT) | ||||
| SINCE 12-Feb-2006 NOT FROM "Smith" | ||||
| S: * ESEARCH (TAG "C286") MIN 2 MAX 21 COUNT 8 | ||||
| //$ value is 2,10:15,21 | ||||
| S: C286 OK SEARCH completed | ||||
| C: C286 SEARCH RETURN (ALL SAVE MIN) SINCE | ||||
| 12-Feb-2006 NOT FROM "Smith" | ||||
| S: * ESEARCH (TAG "C286") MIN 2 ALL 2,10:15,21 | ||||
| //$ value is 2,10:15,21 | ||||
| S: C286 OK SEARCH completed | ||||
| 6.4.5. FETCH Command | 6.4.5. FETCH Command | |||
| Arguments: sequence set | Arguments: sequence set | |||
| message data item names or macro | message data item names or macro | |||
| Responses: untagged responses: FETCH | Responses: untagged responses: FETCH | |||
| Result: OK - fetch completed | Result: OK - fetch completed | |||
| NO - fetch error: can't fetch that data | NO - fetch error: can't fetch that data | |||
| BAD - command unknown or arguments invalid | BAD - command unknown or arguments invalid | |||
| skipping to change at page 102, line 10 ¶ | skipping to change at page 108, line 44 ¶ | |||
| send a separate CAPABILITY command if it recognizes these automatic | send a separate CAPABILITY command if it recognizes these automatic | |||
| capabilities. | capabilities. | |||
| Example: S: * CAPABILITY IMAP4rev2 STARTTLS AUTH=GSSAPI XPIG-LATIN | Example: S: * CAPABILITY IMAP4rev2 STARTTLS AUTH=GSSAPI XPIG-LATIN | |||
| 7.2.3. LIST Response | 7.2.3. LIST Response | |||
| Contents: name attributes | Contents: name attributes | |||
| hierarchy delimiter | hierarchy delimiter | |||
| name | name | |||
| OPTIONAL extension data | ||||
| The LIST response occurs as a result of a LIST command. It returns a | The LIST response occurs as a result of a LIST command. It returns a | |||
| single name that matches the LIST specification. There can be | single name that matches the LIST specification. There can be | |||
| multiple LIST responses for a single LIST command. | multiple LIST responses for a single LIST command. | |||
| The following base name attributes are defined: | The following base name attributes are defined: | |||
| \NonExistent The "\NonExistent" attribute indicates that a mailbox | \NonExistent The "\NonExistent" attribute indicates that a mailbox | |||
| name does not refer to an existing mailbox. Note that this | name does not refer to an existing mailbox. Note that this | |||
| attribute is not meaningful by itself, as mailbox names that match | attribute is not meaningful by itself, as mailbox names that match | |||
| skipping to change at page 105, line 21 ¶ | skipping to change at page 112, line 7 ¶ | |||
| mailboxes, and to search higher or lower levels of naming hierarchy. | mailboxes, and to search higher or lower levels of naming hierarchy. | |||
| All children of a top-level hierarchy node MUST use the same | All children of a top-level hierarchy node MUST use the same | |||
| separator character. A NIL hierarchy delimiter means that no | separator character. A NIL hierarchy delimiter means that no | |||
| hierarchy exists; the name is a "flat" name. | hierarchy exists; the name is a "flat" name. | |||
| The name represents an unambiguous left-to-right hierarchy, and MUST | The name represents an unambiguous left-to-right hierarchy, and MUST | |||
| be valid for use as a reference in LIST command. Unless \Noselect or | be valid for use as a reference in LIST command. Unless \Noselect or | |||
| \NonExistent is indicated, the name MUST also be valid as an argument | \NonExistent is indicated, the name MUST also be valid as an argument | |||
| for commands, such as SELECT, that accept mailbox names. | for commands, such as SELECT, that accept mailbox names. | |||
| The name might be followed by an OPTIONAL series of extended fields, | ||||
| a parenthesized list of tagged data (also referred to as "extended | ||||
| data item"). The first element of an extended field is a tag, which | ||||
| identifies the type of data. | ||||
| The server MAY return data in the extended fields that was not | ||||
| directly solicited by the client in the corresponding LIST command. | ||||
| For example, the client can enable extra extended fields by using | ||||
| another IMAP extension that make use of the extended LIST responses. | ||||
| The client MUST ignore all extended fields it doesn't recognize. | ||||
| Example: S: * LIST (\Noselect) "/" ~/Mail/foo | Example: S: * LIST (\Noselect) "/" ~/Mail/foo | |||
| Example: S: * LIST (\Marked) ":" Tables (tablecloth (("edge" "lacy") | ||||
| ("color" "red")) Sample "text") | ||||
| S: * LIST () ":" Tables:new (tablecloth ("edge" "lacy") | ||||
| Sample ("text" "more text")) | ||||
| 7.2.4. NAMESPACE Response | 7.2.4. NAMESPACE Response | |||
| Contents: the prefix and hierarchy delimiter to the server's | Contents: the prefix and hierarchy delimiter to the server's | |||
| Personal Namespace(s), Other Users' Namespace(s), and | Personal Namespace(s), Other Users' Namespace(s), and | |||
| Shared Namespace(s) | Shared Namespace(s) | |||
| The NAMESPACE response occurs as a result of a NAMESPACE command. It | The NAMESPACE response occurs as a result of a NAMESPACE command. It | |||
| contains the prefix and hierarchy delimiter to the server's Personal | contains the prefix and hierarchy delimiter to the server's Personal | |||
| Namespace(s), Other Users' Namespace(s), and Shared Namespace(s) that | Namespace(s), Other Users' Namespace(s), and Shared Namespace(s) that | |||
| the server wishes to expose. The response will contain a NIL for any | the server wishes to expose. The response will contain a NIL for any | |||
| skipping to change at page 127, line 37 ¶ | skipping to change at page 134, line 37 ¶ | |||
| [flag-perm *(SP flag-perm)] ")" / | [flag-perm *(SP flag-perm)] ")" / | |||
| "READ-ONLY" / "READ-WRITE" / "TRYCREATE" / | "READ-ONLY" / "READ-WRITE" / "TRYCREATE" / | |||
| "UIDNEXT" SP nz-number / "UIDVALIDITY" SP nz-number / | "UIDNEXT" SP nz-number / "UIDVALIDITY" SP nz-number / | |||
| resp-code-apnd / resp-code-copy / "UIDNOTSTICKY" / | resp-code-apnd / resp-code-copy / "UIDNOTSTICKY" / | |||
| "UNAVAILABLE" / "AUTHENTICATIONFAILED" / | "UNAVAILABLE" / "AUTHENTICATIONFAILED" / | |||
| "AUTHORIZATIONFAILED" / "EXPIRED" / | "AUTHORIZATIONFAILED" / "EXPIRED" / | |||
| "PRIVACYREQUIRED" / "CONTACTADMIN" / "NOPERM" / | "PRIVACYREQUIRED" / "CONTACTADMIN" / "NOPERM" / | |||
| "INUSE" / "EXPUNGEISSUED" / "CORRUPTION" / | "INUSE" / "EXPUNGEISSUED" / "CORRUPTION" / | |||
| "SERVERBUG" / "CLIENTBUG" / "CANNOT" / | "SERVERBUG" / "CLIENTBUG" / "CANNOT" / | |||
| "LIMIT" / "OVERQUOTA" / "ALREADYEXISTS" / | "LIMIT" / "OVERQUOTA" / "ALREADYEXISTS" / | |||
| "NONEXISTENT" / | "NONEXISTENT" / "NOTSAVED" / | |||
| "CLOSED" / | "CLOSED" / | |||
| "UNKNOWN-CTE" / | "UNKNOWN-CTE" / | |||
| atom [SP 1*<any TEXT-CHAR except "]">] | atom [SP 1*<any TEXT-CHAR except "]">] | |||
| return-option = "SUBSCRIBED" / "CHILDREN" / status-option / | return-option = "SUBSCRIBED" / "CHILDREN" / status-option / | |||
| option-extension | option-extension | |||
| search = "SEARCH" [search-return-opts] | search = "SEARCH" [search-return-opts] | |||
| SP search-program | SP search-program | |||
| skipping to change at page 128, line 41 ¶ | skipping to change at page 135, line 41 ¶ | |||
| ; Note that not every SEARCH return option | ; Note that not every SEARCH return option | |||
| ; is required to have the corresponding | ; is required to have the corresponding | |||
| ; ESEARCH return data. | ; ESEARCH return data. | |||
| search-return-data = "MIN" SP nz-number / | search-return-data = "MIN" SP nz-number / | |||
| "MAX" SP nz-number / | "MAX" SP nz-number / | |||
| "ALL" SP sequence-set / | "ALL" SP sequence-set / | |||
| "COUNT" SP number / | "COUNT" SP number / | |||
| search-ret-data-ext | search-ret-data-ext | |||
| ; All return data items conform to | ; All return data items conform to | |||
| ; search-ret-data-ext syntax | ; search-ret-data-ext syntax. | |||
| ; Note that "$" marker is not allowed | ||||
| ; after the ALL return data item. | ||||
| search-return-opts = SP "RETURN" SP "(" [search-return-opt | search-return-opts = SP "RETURN" SP "(" [search-return-opt | |||
| *(SP search-return-opt)] ")" | *(SP search-return-opt)] ")" | |||
| search-return-opt = "MIN" / "MAX" / "ALL" / "COUNT" / | search-return-opt = "MIN" / "MAX" / "ALL" / "COUNT" / | |||
| "SAVE" / | ||||
| search-ret-opt-ext | search-ret-opt-ext | |||
| ; conforms to generic search-ret-opt-ext | ; conforms to generic search-ret-opt-ext | |||
| ; syntax | ; syntax | |||
| search-ret-opt-ext = search-modifier-name [SP search-mod-params] | search-ret-opt-ext = search-modifier-name [SP search-mod-params] | |||
| search-return-value = tagged-ext-val | search-return-value = tagged-ext-val | |||
| ; Data for the returned search option. | ; Data for the returned search option. | |||
| ; A single "nz-number"/"number"/"number64" value | ; A single "nz-number"/"number"/"number64" value | |||
| ; can be returned as an atom (i.e., without | ; can be returned as an atom (i.e., without | |||
| ; quoting). A sequence-set can be returned | ; quoting). A sequence-set can be returned | |||
| ; as an atom as well. | ; as an atom as well. | |||
| section = "[" [section-spec] "]" | section = "[" [section-spec] "]" | |||
| section-binary = "[" [section-part] "]" | section-binary = "[" [section-part] "]" | |||
| skipping to change at page 130, line 4 ¶ | skipping to change at page 137, line 8 ¶ | |||
| ; response to a command that uses a message | ; response to a command that uses a message | |||
| ; sequence number greater than the number of | ; sequence number greater than the number of | |||
| ; messages in the selected mailbox. This | ; messages in the selected mailbox. This | |||
| ; includes "*" if the selected mailbox is empty. | ; includes "*" if the selected mailbox is empty. | |||
| seq-range = seq-number ":" seq-number | seq-range = seq-number ":" seq-number | |||
| ; two seq-number values and all values between | ; two seq-number values and all values between | |||
| ; these two regardless of order. | ; these two regardless of order. | |||
| ; Example: 2:4 and 4:2 are equivalent and indicate | ; Example: 2:4 and 4:2 are equivalent and indicate | |||
| ; values 2, 3, and 4. | ; values 2, 3, and 4. | |||
| ; Example: a unique identifier sequence range of | ; Example: a unique identifier sequence range of | |||
| ; 3291:* includes the UID of the last message in | ; 3291:* includes the UID of the last message in | |||
| ; the mailbox, even if that value is less than 3291. | ; the mailbox, even if that value is less than 3291. | |||
| sequence-set = (seq-number / seq-range) ["," sequence-set] | sequence-set = (seq-number / seq-range) ["," sequence-set] | |||
| ; set of seq-number values, regardless of order. | ; set of seq-number values, regardless of order. | |||
| ; Servers MAY coalesce overlaps and/or execute the | ; Servers MAY coalesce overlaps and/or execute the | |||
| ; sequence in any order. | ; sequence in any order. | |||
| ; Example: a message sequence number set of | ; Example: a message sequence number set of | |||
| ; 2,4:7,9,12:* for a mailbox with 15 messages is | ; 2,4:7,9,12:* for a mailbox with 15 messages is | |||
| ; equivalent to 2,4,5,6,7,9,12,13,14,15 | ; equivalent to 2,4,5,6,7,9,12,13,14,15 | |||
| ; Example: a message sequence number set of *:4,5:7 | ; Example: a message sequence number set of *:4,5:7 | |||
| ; for a mailbox with 10 messages is equivalent to | ; for a mailbox with 10 messages is equivalent to | |||
| ; 10,9,8,7,6,5,4,5,6,7 and MAY be reordered and | ; 10,9,8,7,6,5,4,5,6,7 and MAY be reordered and | |||
| ; overlap coalesced to be 4,5,6,7,8,9,10. | ; overlap coalesced to be 4,5,6,7,8,9,10. | |||
| sequence-set =/ seq-last-command | ||||
| ; Allow for "result of the last command" indicator. | ||||
| seq-last-command = "$" | ||||
| status = "STATUS" SP mailbox SP | status = "STATUS" SP mailbox SP | |||
| "(" status-att *(SP status-att) ")" | "(" status-att *(SP status-att) ")" | |||
| status-att = "MESSAGES" / "UIDNEXT" / "UIDVALIDITY" / | status-att = "MESSAGES" / "UIDNEXT" / "UIDVALIDITY" / | |||
| "UNSEEN" / "DELETED" / "SIZE" | "UNSEEN" / "DELETED" / "SIZE" | |||
| status-att-val = ("MESSAGES" SP number) / | status-att-val = ("MESSAGES" SP number) / | |||
| ("UIDNEXT" SP nz-number) / | ("UIDNEXT" SP nz-number) / | |||
| ("UIDVALIDITY" SP nz-number) / | ("UIDVALIDITY" SP nz-number) / | |||
| ("UNSEEN" SP number) / | ("UNSEEN" SP number) / | |||
| skipping to change at page 138, line 17 ¶ | skipping to change at page 145, line 40 ¶ | |||
| RFC 2683, September 1999, | RFC 2683, September 1999, | |||
| <http://www.rfc-editor.org/info/rfc2683>. | <http://www.rfc-editor.org/info/rfc2683>. | |||
| [IMAP-MULTIACCESS] | [IMAP-MULTIACCESS] | |||
| Gahrns, M., "IMAP4 Multi-Accessed Mailbox Practice", | Gahrns, M., "IMAP4 Multi-Accessed Mailbox Practice", | |||
| 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) | |||
| [RFC5256] Crispin, M. and K. Murchison, "Internet Message Access | ||||
| Protocol - SORT and THREAD Extensions", RFC 5256, | ||||
| DOI 10.17487/RFC5256, June 2008, | ||||
| <https://www.rfc-editor.org/info/rfc5256>. | ||||
| [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>. | |||
| [RFC2193] Gahrns, M., "IMAP4 Mailbox Referrals", RFC 2193, | [RFC2193] Gahrns, M., "IMAP4 Mailbox Referrals", RFC 2193, | |||
| DOI 10.17487/RFC2193, September 1997, | DOI 10.17487/RFC2193, September 1997, | |||
| <https://www.rfc-editor.org/info/rfc2193>. | <https://www.rfc-editor.org/info/rfc2193>. | |||
| [RFC3348] Gahrns, M. and R. Cheng, "The Internet Message Action | [RFC3348] Gahrns, M. and R. Cheng, "The Internet Message Action | |||
| skipping to change at page 145, line 4 ¶ | skipping to change at page 152, line 30 ¶ | |||
| messages and mailbox names. | messages and mailbox names. | |||
| Thank you to Tony Hansen for helping with the index generation. | Thank you to Tony Hansen for helping with the index generation. | |||
| Thank you to Timo Sirainen, Bron Gondwana and Arnt Gulbrandsen for | Thank you to Timo Sirainen, Bron Gondwana and Arnt Gulbrandsen for | |||
| extensive feedback. | extensive feedback. | |||
| This document incorporate text from RFC 4315 (by Mark Crispin), RFC | This document incorporate text from RFC 4315 (by Mark Crispin), RFC | |||
| 4466 (by Cyrus Daboo), RFC 4731 (by Dave Cridland), RFC 5161 (by Arnt | 4466 (by Cyrus Daboo), RFC 4731 (by Dave Cridland), RFC 5161 (by Arnt | |||
| Gulbrandsen), RFC 5530 (by Arnt Gulbrandsen), RFC 5819 (by Timo | Gulbrandsen), RFC 5530 (by Arnt Gulbrandsen), RFC 5819 (by Timo | |||
| Sirainen), RFC 6154 (by Jamie Nicolson) | Sirainen), RFC 6154 (by Jamie Nicolson) | |||
| so work done by authors/editors of these documents is appreciated. | so work done by authors/editors of these documents is appreciated. | |||
| Note that editors of this document were redacted from the above list. | Note that editors of this document were redacted from the above list. | |||
| Index | Index | |||
| $ | $ | |||
| $Forwarded (predefined flag) 12 | $Forwarded (predefined flag) 12 | |||
| $MDNSent (predefined flag) 12 | $MDNSent (predefined flag) 12 | |||
| + | + | |||
| +FLAGS <flag list> 83 | +FLAGS <flag list> 90 | |||
| +FLAGS.SILENT <flag list> 83 | +FLAGS.SILENT <flag list> 90 | |||
| - | - | |||
| -FLAGS <flag list> 83 | -FLAGS <flag list> 90 | |||
| -FLAGS.SILENT <flag list> 83 | -FLAGS.SILENT <flag list> 90 | |||
| A | A | |||
| ALERT (response code) 90 | ALERT (response code) 97 | |||
| ALL (fetch item) 79 | ALL (fetch item) 86 | |||
| ALL (search key) 75 | ALL (search key) 76 | |||
| ALL (search result option) 74 | ALL (search result option) 74 | |||
| ALREADYEXISTS (response code) 90 | ALREADYEXISTS (response code) 97 | |||
| ANSWERED (search key) 75 | ANSWERED (search key) 76 | |||
| APPEND (command) 66 | APPEND (command) 66 | |||
| APPENDUID (response code) 91 | APPENDUID (response code) 97 | |||
| AUTHENTICATE (command) 28 | AUTHENTICATE (command) 28 | |||
| AUTHENTICATIONFAILED (response code) 91 | AUTHENTICATIONFAILED (response code) 98 | |||
| AUTHORIZATIONFAILED (response code) 92 | AUTHORIZATIONFAILED (response code) 98 | |||
| B | B | |||
| BAD (response) 99 | BAD (response) 106 | |||
| BADCHARSET (response code) 92 | BADCHARSET (response code) 99 | |||
| BCC <string> (search key) 76 | BCC <string> (search key) 76 | |||
| BEFORE <date> (search key) 76 | BEFORE <date> (search key) 76 | |||
| BINARY.PEEK[<section-binary>]<<partial>> (fetch item) 80 | BINARY.PEEK[<section-binary>]<<partial>> (fetch item) 86 | |||
| BINARY.SIZE[<section-binary>] (fetch item) 80 | BINARY.SIZE[<section-binary>] (fetch item) 86 | |||
| BINARY.SIZE[<section-binary>] (fetch result) 109 | BINARY.SIZE[<section-binary>] (fetch result) 116 | |||
| BINARY[<section-binary>]<<number>> (fetch result) 108 | BINARY[<section-binary>]<<number>> (fetch result) 115 | |||
| BINARY[<section-binary>]<<partial>> (fetch item) 79 | BINARY[<section-binary>]<<partial>> (fetch item) 86 | |||
| BODY (fetch item) 80 | BODY (fetch item) 87 | |||
| BODY (fetch result) 109 | BODY (fetch result) 116 | |||
| BODY <string> (search key) 76 | BODY <string> (search key) 76 | |||
| BODY.PEEK[<section>]<<partial>> (fetch item) 82 | BODY.PEEK[<section>]<<partial>> (fetch item) 89 | |||
| BODYSTRUCTURE (fetch item) 82 | BODYSTRUCTURE (fetch item) 89 | |||
| BODYSTRUCTURE (fetch result) 110 | BODYSTRUCTURE (fetch result) 117 | |||
| BODY[<section>]<<origin octet>> (fetch result) 109 | BODY[<section>]<<origin octet>> (fetch result) 116 | |||
| BODY[<section>]<<partial>> (fetch item) 80 | BODY[<section>]<<partial>> (fetch item) 87 | |||
| BYE (response) 100 | BYE (response) 106 | |||
| Body Structure (message attribute) 13 | Body Structure (message attribute) 13 | |||
| C | C | |||
| CANNOT (response code) 92 | CANNOT (response code) 99 | |||
| CAPABILITY (command) 24 | CAPABILITY (command) 24 | |||
| CAPABILITY (response code) 92 | CAPABILITY (response code) 99 | |||
| CAPABILITY (response) 101 | CAPABILITY (response) 107 | |||
| CC <string> (search key) 76 | CC <string> (search key) 76 | |||
| CLIENTBUG (response code) 92 | CLIENTBUG (response code) 99 | |||
| CLOSE (command) 71 | CLOSE (command) 71 | |||
| CLOSED (response code) 93 | CLOSED (response code) 99 | |||
| CONTACTADMIN (response code) 93 | CONTACTADMIN (response code) 100 | |||
| COPY (command) 84 | COPY (command) 90 | |||
| COPYUID (response code) 93 | COPYUID (response code) 100 | |||
| CORRUPTION (response code) 94 | CORRUPTION (response code) 100 | |||
| COUNT (search result option) 74 | COUNT (search result option) 74 | |||
| CREATE (command) 37 | CREATE (command) 37 | |||
| D | D | |||
| DELETE (command) 38 | DELETE (command) 38 | |||
| DELETED (search key) 76 | DELETED (search key) 76 | |||
| DELETED (status item) 66 | DELETED (status item) 66 | |||
| DRAFT (search key) 76 | DRAFT (search key) 76 | |||
| E | E | |||
| ENABLE (command) 32 | ENABLE (command) 32 | |||
| ENVELOPE (fetch item) 82 | ENVELOPE (fetch item) 89 | |||
| ENVELOPE (fetch result) 112 | ENVELOPE (fetch result) 119 | |||
| ESEARCH (response) 106 | ESEARCH (response) 113 | |||
| EXAMINE (command) 36 | EXAMINE (command) 36 | |||
| EXPIRED (response code) 94 | EXPIRED (response code) 101 | |||
| EXPUNGE (command) 72 | EXPUNGE (command) 72 | |||
| EXPUNGE (response) 107 | EXPUNGE (response) 114 | |||
| EXPUNGEISSUED (response code) 94 | EXPUNGEISSUED (response code) 101 | |||
| Envelope Structure (message attribute) 13 | Envelope Structure (message attribute) 13 | |||
| F | F | |||
| FAST (fetch item) 79 | FAST (fetch item) 86 | |||
| FETCH (command) 79 | FETCH (command) 85 | |||
| FETCH (response) 108 | FETCH (response) 115 | |||
| FLAGGED (search key) 76 | FLAGGED (search key) 76 | |||
| FLAGS (fetch item) 82 | FLAGS (fetch item) 89 | |||
| FLAGS (fetch result) 113 | FLAGS (fetch result) 120 | |||
| FLAGS (response) 106 | FLAGS (response) 113 | |||
| FLAGS <flag list> (store command data item) 83 | FLAGS <flag list> (store command data item) 90 | |||
| FLAGS.SILENT <flag list> (store command data item) 83 | FLAGS.SILENT <flag list> (store command data item) 90 | |||
| FROM <string> (search key) 76 | FROM <string> (search key) 76 | |||
| FULL (fetch item) 79 | FULL (fetch item) 86 | |||
| Flags (message attribute) 11 | Flags (message attribute) 11 | |||
| H | H | |||
| HEADER (part specifier) 80 | HEADER (part specifier) 87 | |||
| HEADER <field-name> <string> (search key) 76 | HEADER <field-name> <string> (search key) 76 | |||
| HEADER.FIELDS (part specifier) 80 | HEADER.FIELDS (part specifier) 87 | |||
| HEADER.FIELDS.NOT (part specifier) 80 | HEADER.FIELDS.NOT (part specifier) 87 | |||
| I | I | |||
| IDLE (command) 69 | IDLE (command) 69 | |||
| INTERNALDATE (fetch item) 82 | INTERNALDATE (fetch item) 89 | |||
| INTERNALDATE (fetch result) 113 | INTERNALDATE (fetch result) 120 | |||
| INUSE (response code) 94 | INUSE (response code) 101 | |||
| Internal Date (message attribute) 12 | Internal Date (message attribute) 12 | |||
| K | K | |||
| KEYWORD <flag> (search key) 76 | KEYWORD <flag> (search key) 77 | |||
| Keyword (type of flag) 12 | Keyword (type of flag) 12 | |||
| L | L | |||
| LARGER <n> (search key) 76 | LARGER <n> (search key) 77 | |||
| LIMIT (response code) 95 | LIMIT (response code) 101 | |||
| LIST (command) 42 | LIST (command) 42 | |||
| LIST (response) 102 | LIST (response) 108 | |||
| LOGOUT (command) 26 | LOGOUT (command) 26 | |||
| M | M | |||
| MAX (search result option) 74 | MAX (search result option) 74 | |||
| MAY (specification requirement term) 5 | MAY (specification requirement term) 5 | |||
| MESSAGES (status item) 66 | MESSAGES (status item) 66 | |||
| MIME (part specifier) 81 | MIME (part specifier) 88 | |||
| MIN (search result option) 74 | MIN (search result option) 74 | |||
| MOVE (command) 85 | MOVE (command) 91 | |||
| 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) 60 | NAMESPACE (command) 60 | |||
| NAMESPACE (response) 105 | NAMESPACE (response) 112 | |||
| NO (response) 98 | NO (response) 105 | |||
| NONEXISTENT (response code) 95 | NONEXISTENT (response code) 102 | |||
| NOOP (command) 25 | NOOP (command) 25 | |||
| NOPERM (response code) 95 | NOPERM (response code) 102 | |||
| NOT <search-key> (search key) 76 | NOT <search-key> (search key) 77 | |||
| NOT RECOMMENDED (specification requirement term) 5 | NOT RECOMMENDED (specification requirement term) 5 | |||
| O | O | |||
| OK (response) 98 | OK (response) 105 | |||
| ON <date> (search key) 76 | ON <date> (search key) 77 | |||
| OPTIONAL (specification requirement term) 5 | OPTIONAL (specification requirement term) 5 | |||
| OR <search-key1> <search-key2> (search key) 76 | OR <search-key1> <search-key2> (search key) 77 | |||
| OVERQUOTA (response code) 95 | OVERQUOTA (response code) 102 | |||
| P | P | |||
| PARSE (response code) 96 | PARSE (response code) 102 | |||
| PERMANENTFLAGS (response code) 96 | PERMANENTFLAGS (response code) 102 | |||
| PREAUTH (response) 99 | PREAUTH (response) 106 | |||
| PRIVACYREQUIRED (response code) 96 | PRIVACYREQUIRED (response code) 103 | |||
| Permanent Flag (class of flag) 12 | Permanent Flag (class of flag) 12 | |||
| Predefined keywords 12 | Predefined keywords 12 | |||
| R | R | |||
| READ-ONLY (response code) 96 | READ-ONLY (response code) 103 | |||
| READ-WRITE (response code) 97 | READ-WRITE (response code) 103 | |||
| RECOMMENDED (specification requirement term) 5 | RECOMMENDED (specification requirement term) 5 | |||
| RENAME (command) 39 | RENAME (command) 39 | |||
| REQUIRED (specification requirement term) 5 | REQUIRED (specification requirement term) 5 | |||
| RFC822.SIZE (fetch item) 82 | RFC822.SIZE (fetch item) 89 | |||
| RFC822.SIZE (fetch result) 114 | RFC822.SIZE (fetch result) 121 | |||
| S | S | |||
| SAVE (search result option) 74 | ||||
| SEARCH (command) 73 | SEARCH (command) 73 | |||
| SEEN (search key) 77 | SEEN (search key) 77 | |||
| SELECT (command) 34 | SELECT (command) 34 | |||
| SENTBEFORE <date> (search key) 77 | SENTBEFORE <date> (search key) 77 | |||
| SENTON <date> (search key) 77 | SENTON <date> (search key) 77 | |||
| SENTSINCE <date> (search key) 77 | SENTSINCE <date> (search key) 77 | |||
| SERVERBUG (response code) 97 | SERVERBUG (response code) 103 | |||
| SHOULD (specification requirement term) 5 | SHOULD (specification requirement term) 5 | |||
| SHOULD NOT (specification requirement term) 5 | SHOULD NOT (specification requirement term) 5 | |||
| SINCE <date> (search key) 77 | SINCE <date> (search key) 77 | |||
| SIZE (status item) 66 | SIZE (status item) 66 | |||
| SMALLER <n> (search key) 77 | SMALLER <n> (search key) 77 | |||
| STARTTLS (command) 27 | STARTTLS (command) 27 | |||
| STATUS (command) 65 | STATUS (command) 65 | |||
| STATUS (response) 105 | STATUS (response) 112 | |||
| STORE (command) 83 | STORE (command) 89 | |||
| SUBJECT <string> (search key) 77 | SUBJECT <string> (search key) 77 | |||
| SUBSCRIBE (command) 41 | SUBSCRIBE (command) 41 | |||
| Session Flag (class of flag) 12 | Session Flag (class of flag) 12 | |||
| System Flag (type of flag) 11 | System Flag (type of flag) 11 | |||
| T | T | |||
| TEXT (part specifier) 80 | TEXT (part specifier) 87 | |||
| TEXT <string> (search key) 77 | TEXT <string> (search key) 77 | |||
| TO <string> (search key) 77 | TO <string> (search key) 77 | |||
| TRYCREATE (response code) 97 | TRYCREATE (response code) 103 | |||
| U | U | |||
| UID (command) 87 | UID (command) 93 | |||
| UID (fetch item) 82 | UID (fetch item) 89 | |||
| UID (fetch result) 114 | UID (fetch result) 121 | |||
| UID <sequence set> (search key) 77 | UID <sequence set> (search key) 78 | |||
| UIDNEXT (response code) 97 | UIDNEXT (response code) 104 | |||
| UIDNEXT (status item) 66 | UIDNEXT (status item) 66 | |||
| UIDNOTSTICKY (response code) 97 | UIDNOTSTICKY (response code) 104 | |||
| UIDVALIDITY (response code) 97 | UIDVALIDITY (response code) 104 | |||
| UIDVALIDITY (status item) 66 | UIDVALIDITY (status item) 66 | |||
| UNANSWERED (search key) 77 | UNANSWERED (search key) 78 | |||
| UNAVAILABLE (response code) 98 | UNAVAILABLE (response code) 104 | |||
| UNDELETED (search key) 77 | UNDELETED (search key) 78 | |||
| UNDRAFT (search key) 77 | UNDRAFT (search key) 78 | |||
| UNFLAGGED (search key) 77 | UNFLAGGED (search key) 78 | |||
| UNKEYWORD <flag> (search key) 77 | UNKEYWORD <flag> (search key) 78 | |||
| UNKNOWN-CTE (response code) 98 | UNKNOWN-CTE (response code) 104 | |||
| UNSEEN (search key) 77 | UNSEEN (search key) 78 | |||
| UNSEEN (status item) 66 | UNSEEN (status item) 66 | |||
| UNSELECT (command) 72 | UNSELECT (command) 72 | |||
| UNSUBSCRIBE (command) 42 | UNSUBSCRIBE (command) 42 | |||
| Unique Identifier (UID) (message attribute) 9 | Unique Identifier (UID) (message attribute) 9 | |||
| X | X | |||
| X<atom> (command) 88 | X<atom> (command) 95 | |||
| [ | [ | |||
| [RFC-5322] Size (message attribute) 13 | [RFC-5322] Size (message attribute) 13 | |||
| \ | \ | |||
| \All (mailbox name attribute) 103 | \All (mailbox name attribute) 110 | |||
| \Answered (system flag) 11 | \Answered (system flag) 11 | |||
| \Archive (mailbox name attribute) 104 | \Archive (mailbox name attribute) 110 | |||
| \Deleted (system flag) 12 | \Deleted (system flag) 12 | |||
| \Draft (system flag) 12 | \Draft (system flag) 12 | |||
| \Drafts (mailbox name attribute) 104 | \Drafts (mailbox name attribute) 110 | |||
| \Flagged (mailbox name attribute) 104 | \Flagged (mailbox name attribute) 111 | |||
| \Flagged (system flag) 11 | \Flagged (system flag) 11 | |||
| \HasChildren (mailbox name attribute) 102 | \HasChildren (mailbox name attribute) 109 | |||
| \HasNoChildren (mailbox name attribute) 103 | \HasNoChildren (mailbox name attribute) 109 | |||
| \Junk (mailbox name attribute) 104 | \Junk (mailbox name attribute) 111 | |||
| \Marked (mailbox name attribute) 103 | \Marked (mailbox name attribute) 110 | |||
| \Noinferiors (mailbox name attribute) 102 | \Noinferiors (mailbox name attribute) 109 | |||
| \NonExistent (mailbox name attribute) 102 | \NonExistent (mailbox name attribute) 109 | |||
| \Noselect (mailbox name attribute) 102 | \Noselect (mailbox name attribute) 109 | |||
| \Recent (system flag) 12 | \Recent (system flag) 12 | |||
| \Remote (mailbox name attribute) 103 | \Remote (mailbox name attribute) 110 | |||
| \Seen (system flag) 11 | \Seen (system flag) 11 | |||
| \Sent (mailbox name attribute) 104 | \Sent (mailbox name attribute) 111 | |||
| \Subscribed (mailbox name attribute) 103 | \Subscribed (mailbox name attribute) 110 | |||
| \Trash (mailbox name attribute) 104 | \Trash (mailbox name attribute) 111 | |||
| \Unmarked (mailbox name attribute) 103 | \Unmarked (mailbox name attribute) 110 | |||
| 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. 75 change blocks. | ||||
| 188 lines changed or deleted | 518 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/ | ||||