| < draft-ietf-extra-imap4rev2-04.txt | draft-ietf-extra-imap4rev2-05.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: September 10, 2019 March 9, 2019 | Expires: January 10, 2020 July 9, 2019 | |||
| INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4rev2 | INTERNET MESSAGE ACCESS PROTOCOL - VERSION 4rev2 | |||
| draft-ietf-extra-imap4rev2-04 | draft-ietf-extra-imap4rev2-05 | |||
| 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 September 10, 2019. | This Internet-Draft will expire on January 10, 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 42 ¶ | skipping to change at page 3, line 42 ¶ | |||
| 6.3. Client Commands - Authenticated State . . . . . . . . . . 31 | 6.3. Client Commands - Authenticated State . . . . . . . . . . 31 | |||
| 6.3.1. ENABLE Command . . . . . . . . . . . . . . . . . . . 31 | 6.3.1. ENABLE Command . . . . . . . . . . . . . . . . . . . 31 | |||
| 6.3.2. SELECT Command . . . . . . . . . . . . . . . . . . . 33 | 6.3.2. SELECT Command . . . . . . . . . . . . . . . . . . . 33 | |||
| 6.3.3. EXAMINE Command . . . . . . . . . . . . . . . . . . . 35 | 6.3.3. EXAMINE Command . . . . . . . . . . . . . . . . . . . 35 | |||
| 6.3.4. CREATE Command . . . . . . . . . . . . . . . . . . . 35 | 6.3.4. CREATE Command . . . . . . . . . . . . . . . . . . . 35 | |||
| 6.3.5. DELETE Command . . . . . . . . . . . . . . . . . . . 36 | 6.3.5. DELETE Command . . . . . . . . . . . . . . . . . . . 36 | |||
| 6.3.6. RENAME Command . . . . . . . . . . . . . . . . . . . 38 | 6.3.6. RENAME Command . . . . . . . . . . . . . . . . . . . 38 | |||
| 6.3.7. SUBSCRIBE Command . . . . . . . . . . . . . . . . . . 40 | 6.3.7. SUBSCRIBE Command . . . . . . . . . . . . . . . . . . 40 | |||
| 6.3.8. UNSUBSCRIBE Command . . . . . . . . . . . . . . . . . 41 | 6.3.8. UNSUBSCRIBE Command . . . . . . . . . . . . . . . . . 41 | |||
| 6.3.9. LIST Command . . . . . . . . . . . . . . . . . . . . 41 | 6.3.9. LIST Command . . . . . . . . . . . . . . . . . . . . 41 | |||
| 6.3.10. LSUB Command . . . . . . . . . . . . . . . . . . . . 44 | 6.3.10. LSUB Command . . . . . . . . . . . . . . . . . . . . 58 | |||
| 6.3.11. NAMESPACE Command . . . . . . . . . . . . . . . . . . 45 | 6.3.11. NAMESPACE Command . . . . . . . . . . . . . . . . . . 59 | |||
| 6.3.12. STATUS Command . . . . . . . . . . . . . . . . . . . 49 | 6.3.12. STATUS Command . . . . . . . . . . . . . . . . . . . 63 | |||
| 6.3.13. APPEND Command . . . . . . . . . . . . . . . . . . . 51 | 6.3.13. APPEND Command . . . . . . . . . . . . . . . . . . . 65 | |||
| 6.3.14. IDLE Command . . . . . . . . . . . . . . . . . . . . 53 | 6.3.14. IDLE Command . . . . . . . . . . . . . . . . . . . . 67 | |||
| 6.4. Client Commands - Selected State . . . . . . . . . . . . 55 | 6.4. Client Commands - Selected State . . . . . . . . . . . . 69 | |||
| 6.4.1. CHECK Command . . . . . . . . . . . . . . . . . . . . 56 | 6.4.1. CHECK Command . . . . . . . . . . . . . . . . . . . . 70 | |||
| 6.4.2. CLOSE Command . . . . . . . . . . . . . . . . . . . . 56 | 6.4.2. CLOSE Command . . . . . . . . . . . . . . . . . . . . 70 | |||
| 6.4.3. UNSELECT Command . . . . . . . . . . . . . . . . . . 57 | 6.4.3. UNSELECT Command . . . . . . . . . . . . . . . . . . 71 | |||
| 6.4.4. EXPUNGE Command . . . . . . . . . . . . . . . . . . . 57 | 6.4.4. EXPUNGE Command . . . . . . . . . . . . . . . . . . . 71 | |||
| 6.4.5. SEARCH Command . . . . . . . . . . . . . . . . . . . 58 | 6.4.5. SEARCH Command . . . . . . . . . . . . . . . . . . . 72 | |||
| 6.4.6. FETCH Command . . . . . . . . . . . . . . . . . . . . 63 | 6.4.6. FETCH Command . . . . . . . . . . . . . . . . . . . . 77 | |||
| 6.4.7. STORE Command . . . . . . . . . . . . . . . . . . . . 67 | 6.4.7. STORE Command . . . . . . . . . . . . . . . . . . . . 81 | |||
| 6.4.8. COPY Command . . . . . . . . . . . . . . . . . . . . 68 | 6.4.8. COPY Command . . . . . . . . . . . . . . . . . . . . 82 | |||
| 6.4.9. MOVE Command . . . . . . . . . . . . . . . . . . . . 69 | 6.4.9. MOVE Command . . . . . . . . . . . . . . . . . . . . 83 | |||
| 6.4.10. UID Command . . . . . . . . . . . . . . . . . . . . . 71 | 6.4.10. UID Command . . . . . . . . . . . . . . . . . . . . . 85 | |||
| 6.5. Client Commands - Experimental/Expansion . . . . . . . . 73 | 6.5. Client Commands - Experimental/Expansion . . . . . . . . 87 | |||
| 6.5.1. X<atom> Command . . . . . . . . . . . . . . . . . . . 73 | 6.5.1. X<atom> Command . . . . . . . . . . . . . . . . . . . 87 | |||
| 7. Server Responses . . . . . . . . . . . . . . . . . . . . . . 74 | 7. Server Responses . . . . . . . . . . . . . . . . . . . . . . 88 | |||
| 7.1. Server Responses - Status Responses . . . . . . . . . . . 75 | 7.1. Server Responses - Status Responses . . . . . . . . . . . 89 | |||
| 7.1.1. OK Response . . . . . . . . . . . . . . . . . . . . . 82 | 7.1.1. OK Response . . . . . . . . . . . . . . . . . . . . . 96 | |||
| 7.1.2. NO Response . . . . . . . . . . . . . . . . . . . . . 82 | 7.1.2. NO Response . . . . . . . . . . . . . . . . . . . . . 96 | |||
| 7.1.3. BAD Response . . . . . . . . . . . . . . . . . . . . 83 | 7.1.3. BAD Response . . . . . . . . . . . . . . . . . . . . 97 | |||
| 7.1.4. PREAUTH Response . . . . . . . . . . . . . . . . . . 83 | 7.1.4. PREAUTH Response . . . . . . . . . . . . . . . . . . 97 | |||
| 7.1.5. BYE Response . . . . . . . . . . . . . . . . . . . . 83 | 7.1.5. BYE Response . . . . . . . . . . . . . . . . . . . . 97 | |||
| 7.2. Server Responses - Server and Mailbox Status . . . . . . 84 | 7.2. Server Responses - Server and Mailbox Status . . . . . . 98 | |||
| 7.2.1. The ENABLED Response . . . . . . . . . . . . . . . . 84 | 7.2.1. The ENABLED Response . . . . . . . . . . . . . . . . 98 | |||
| 7.2.2. CAPABILITY Response . . . . . . . . . . . . . . . . . 84 | 7.2.2. CAPABILITY Response . . . . . . . . . . . . . . . . . 98 | |||
| 7.2.3. LIST Response . . . . . . . . . . . . . . . . . . . . 85 | 7.2.3. LIST Response . . . . . . . . . . . . . . . . . . . . 99 | |||
| 7.2.4. LSUB Response . . . . . . . . . . . . . . . . . . . . 88 | 7.2.4. LSUB Response . . . . . . . . . . . . . . . . . . . . 102 | |||
| 7.2.5. NAMESPACE Response . . . . . . . . . . . . . . . . . 89 | 7.2.5. NAMESPACE Response . . . . . . . . . . . . . . . . . 103 | |||
| 7.2.6. STATUS Response . . . . . . . . . . . . . . . . . . . 89 | 7.2.6. STATUS Response . . . . . . . . . . . . . . . . . . . 103 | |||
| 7.2.7. ESEARCH Response . . . . . . . . . . . . . . . . . . 89 | 7.2.7. ESEARCH Response . . . . . . . . . . . . . . . . . . 103 | |||
| 7.2.8. FLAGS Response . . . . . . . . . . . . . . . . . . . 90 | 7.2.8. FLAGS Response . . . . . . . . . . . . . . . . . . . 104 | |||
| 7.3. Server Responses - Mailbox Size . . . . . . . . . . . . . 90 | 7.3. Server Responses - Mailbox Size . . . . . . . . . . . . . 104 | |||
| 7.3.1. EXISTS Response . . . . . . . . . . . . . . . . . . . 90 | 7.3.1. EXISTS Response . . . . . . . . . . . . . . . . . . . 104 | |||
| 7.4. Server Responses - Message Status . . . . . . . . . . . . 90 | 7.4. Server Responses - Message Status . . . . . . . . . . . . 104 | |||
| 7.4.1. EXPUNGE Response . . . . . . . . . . . . . . . . . . 91 | 7.4.1. EXPUNGE Response . . . . . . . . . . . . . . . . . . 105 | |||
| 7.4.2. FETCH Response . . . . . . . . . . . . . . . . . . . 91 | 7.4.2. FETCH Response . . . . . . . . . . . . . . . . . . . 105 | |||
| 7.5. Server Responses - Command Continuation Request . . . . . 97 | 7.5. Server Responses - Command Continuation Request . . . . . 111 | |||
| 8. Sample IMAP4rev2 connection . . . . . . . . . . . . . . . . . 98 | 8. Sample IMAP4rev2 connection . . . . . . . . . . . . . . . . . 112 | |||
| 9. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 99 | 9. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 113 | |||
| 10. Author's Note . . . . . . . . . . . . . . . . . . . . . . . . 114 | 10. Author's Note . . . . . . . . . . . . . . . . . . . . . . . . 128 | |||
| 11. Security Considerations . . . . . . . . . . . . . . . . . . . 114 | 11. Security Considerations . . . . . . . . . . . . . . . . . . . 128 | |||
| 11.1. STARTTLS Security Considerations . . . . . . . . . . . . 114 | 11.1. STARTTLS Security Considerations . . . . . . . . . . . . 128 | |||
| 11.2. COPYUID and APPENDUID response codes . . . . . . . . . . 115 | 11.2. COPYUID and APPENDUID response codes . . . . . . . . . . 129 | |||
| 11.3. Other Security Considerations . . . . . . . . . . . . . 115 | 11.3. Other Security Considerations . . . . . . . . . . . . . 129 | |||
| 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 116 | 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 130 | |||
| 12.1. Updates to IMAP4 Capabilities registry . . . . . . . . . 116 | 12.1. Updates to IMAP4 Capabilities registry . . . . . . . . . 130 | |||
| 12.2. GSSAPI/SASL service name . . . . . . . . . . . . . . . . 116 | 12.2. GSSAPI/SASL service name . . . . . . . . . . . . . . . . 130 | |||
| 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 116 | 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 130 | |||
| 13.1. Normative References . . . . . . . . . . . . . . . . . . 116 | 13.1. Normative References . . . . . . . . . . . . . . . . . . 130 | |||
| 13.2. Informative References (related protocols) . . . . . . . 119 | 13.2. Informative References (related protocols) . . . . . . . 133 | |||
| 13.3. Informative References (historical aspects of IMAP and | 13.3. Informative References (historical aspects of IMAP and | |||
| related protocols) . . . . . . . . . . . . . . . . . . . 120 | related protocols) . . . . . . . . . . . . . . . . . . . 135 | |||
| Appendix A. Backward compatibility with IMAP4rev1 . . . . . . . 121 | Appendix A. Backward compatibility with IMAP4rev1 . . . . . . . 135 | |||
| A.1. Mailbox International Naming Convention . . . . . . . . . 121 | A.1. Mailbox International Naming Convention . . . . . . . . . 136 | |||
| Appendix B. Backward compatibility with BINARY extension . . . . 123 | Appendix B. Backward compatibility with BINARY extension . . . . 137 | |||
| Appendix C. Changes from RFC 3501 / IMAP4rev1 . . . . . . . . . 123 | Appendix C. Changes from RFC 3501 / IMAP4rev1 . . . . . . . . . 138 | |||
| Appendix D. Acknowledgement . . . . . . . . . . . . . . . . . . 125 | Appendix D. Acknowledgement . . . . . . . . . . . . . . . . . . 139 | |||
| Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 | Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 130 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 145 | |||
| 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 5, line 35 ¶ | skipping to change at page 5, line 35 ¶ | |||
| 1.2. Conventions Used in This Document | 1.2. Conventions Used in This Document | |||
| "Conventions" are basic principles or procedures. Document | "Conventions" are basic principles or procedures. Document | |||
| conventions are noted in this section. | conventions are noted in this section. | |||
| In examples, "C:" and "S:" indicate lines sent by the client and | In examples, "C:" and "S:" indicate lines sent by the client and | |||
| server respectively. | server respectively. | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| document are to be interpreted as described in [KEYWORDS]. | "OPTIONAL" in this document are to be interpreted as described in BCP | |||
| 14 [RFC2119] [RFC8174] when, and only when, they appear in all | ||||
| capitals, as shown here. | ||||
| The word "can" (not "may") is used to refer to a possible | The word "can" (not "may") is used to refer to a possible | |||
| circumstance or situation, as opposed to an optional facility of the | circumstance or situation, as opposed to an optional facility of the | |||
| protocol. | protocol. | |||
| "User" is used to refer to a human user, whereas "client" refers to | "User" is used to refer to a human user, whereas "client" refers to | |||
| the software being run by the user. | the software being run by the user. | |||
| "Connection" refers to the entire sequence of client/server | "Connection" refers to the entire sequence of client/server | |||
| interaction from the initial establishment of the network connection | interaction from the initial establishment of the network connection | |||
| skipping to change at page 41, line 33 ¶ | skipping to change at page 41, line 33 ¶ | |||
| The UNSUBSCRIBE command removes the specified mailbox name from the | The UNSUBSCRIBE command removes the specified mailbox name from the | |||
| server's set of "active" or "subscribed" mailboxes as returned by the | server's set of "active" or "subscribed" mailboxes as returned by the | |||
| LSUB command. This command returns a tagged OK response only if the | LSUB command. This command returns a tagged OK response only if the | |||
| unsubscription is successful. | unsubscription is successful. | |||
| Example: C: A002 UNSUBSCRIBE #news.comp.mail.mime | Example: C: A002 UNSUBSCRIBE #news.comp.mail.mime | |||
| S: A002 OK UNSUBSCRIBE completed | S: A002 OK UNSUBSCRIBE completed | |||
| 6.3.9. LIST Command | 6.3.9. LIST Command | |||
| Arguments: reference name | Arguments (basic): reference name | |||
| mailbox name with possible wildcards | mailbox name with possible wildcards | |||
| Arguments (extended): selection options (OPTIONAL) | ||||
| reference name | ||||
| mailbox patterns | ||||
| return options (OPTIONAL) | ||||
| Responses: untagged responses: LIST | Responses: untagged responses: LIST | |||
| Result: OK - list completed | Result: OK - list completed | |||
| NO - list failure: can't list that reference or name | NO - list failure: can't list that reference or name | |||
| BAD - command unknown or arguments invalid | BAD - command unknown or arguments invalid | |||
| THIS VERSION HAS ONLY AN INITIAL PASS AT ADDING THE EXTENDED LIST | ||||
| SYNTAX AND OPTIONS. THERE'S STILL A GOOD DEAL OR WORK TO DO ON IT, | ||||
| AND THE ABNF IS NOT THERE YET. | ||||
| The LIST command returns a subset of names from the complete set of | The LIST command returns a subset of names from the complete set of | |||
| all names available to the client. Zero or more untagged LIST | all names available to the client. Zero or more untagged LIST | |||
| replies are returned, containing the name attributes, hierarchy | replies are returned, containing the name attributes, hierarchy | |||
| delimiter, and name; see the description of the LIST reply for more | delimiter, and name; see the description of the LIST reply for more | |||
| detail. | detail. | |||
| The LIST command SHOULD return its data quickly, without undue delay. | The LIST command SHOULD return its data quickly, without undue delay. | |||
| For example, it SHOULD NOT go to excess trouble to calculate the | For example, it SHOULD NOT go to excess trouble to calculate the | |||
| \Marked or \Unmarked status or perform other processing; if each name | \Marked or \Unmarked status or perform other processing; if each name | |||
| requires 1 second of processing, then a list of 1200 names would take | requires 1 second of processing, then a list of 1200 names would take | |||
| 20 minutes! | 20 minutes! | |||
| The extended LIST command, introduced in [RFC5258] provides | ||||
| capabilities beyond that of the original IMAP LIST command. The | ||||
| extended syntax is being used if one of the following conditions is | ||||
| true: | ||||
| 1. if the first word after the command name begins with a | ||||
| parenthesis ("LIST selection options") | ||||
| 2. if the second word after the command name begins with a | ||||
| parenthesis ("multiple mailbox patterns") | ||||
| 3. if the LIST command has more than 2 parameters ("LIST return | ||||
| options") | ||||
| An empty ("" string) reference name argument indicates that the | An empty ("" string) reference name argument indicates that the | |||
| mailbox name is interpreted as by SELECT. The returned mailbox names | mailbox name is interpreted as by SELECT. The returned mailbox names | |||
| MUST match the supplied mailbox name pattern. A non-empty reference | MUST match the supplied mailbox name pattern(s). A non-empty | |||
| name argument is the name of a mailbox or a level of mailbox | reference name argument is the name of a mailbox or a level of | |||
| hierarchy, and indicates the context in which the mailbox name is | mailbox hierarchy, and indicates the context in which the mailbox | |||
| interpreted. | name is interpreted. | |||
| An empty ("" string) mailbox name argument is a special request to | In the basic syntax only, an empty ("" string) mailbox name argument | |||
| return the hierarchy delimiter and the root name of the name given in | is a special request to return the hierarchy delimiter and the root | |||
| the reference. The value returned as the root MAY be the empty | name of the name given in the reference. The value returned as the | |||
| string if the reference is non-rooted or is an empty string. In all | root MAY be the empty string if the reference is non-rooted or is an | |||
| cases, a hierarchy delimiter (or NIL if there is no hierarchy) is | empty string. In all cases, a hierarchy delimiter (or NIL if there | |||
| returned. This permits a client to get the hierarchy delimiter (or | is no hierarchy) is returned. This permits a client to get the | |||
| find out that the mailbox names are flat) even when no mailboxes by | hierarchy delimiter (or find out that the mailbox names are flat) | |||
| that name currently exist. | even when no mailboxes by that name currently exist. | |||
| In the extended syntax, any mailbox name arguments that are empty | ||||
| strings are ignored. There is no special meaning for empty mailbox | ||||
| names when the extended syntax is used. | ||||
| The reference and mailbox name arguments are interpreted into a | The reference and mailbox name arguments are interpreted into a | |||
| canonical form that represents an unambiguous left-to-right | canonical form that represents an unambiguous left-to-right | |||
| hierarchy. The returned mailbox names will be in the interpreted | hierarchy. The returned mailbox names will be in the interpreted | |||
| form. | form. | |||
| Note: The interpretation of the reference argument is | Note: The interpretation of the reference argument is | |||
| implementation-defined. It depends upon whether the server | implementation-defined. It depends upon whether the server | |||
| implementation has a concept of the "current working directory" | implementation has a concept of the "current working directory" | |||
| and leading "break out characters", which override the current | and leading "break out characters", which override the current | |||
| skipping to change at page 43, line 45 ¶ | skipping to change at page 44, line 33 ¶ | |||
| The character "*" is a wildcard, and matches zero or more characters | The character "*" is a wildcard, and matches zero or more characters | |||
| at this position. The character "%" is similar to "*", but it does | at this position. The character "%" is similar to "*", but it does | |||
| not match a hierarchy delimiter. If the "%" wildcard is the last | not match a hierarchy delimiter. If the "%" wildcard is the last | |||
| character of a mailbox name argument, matching levels of hierarchy | character of a mailbox name argument, matching levels of hierarchy | |||
| are also returned. If these levels of hierarchy are not also | are also returned. If these levels of hierarchy are not also | |||
| selectable mailboxes, they are returned with the \Noselect mailbox | selectable mailboxes, they are returned with the \Noselect mailbox | |||
| name attribute (see the description of the LIST response for more | name attribute (see the description of the LIST response for more | |||
| details). | details). | |||
| If multiple mailbox patterns are used (in the extended syntax), a | ||||
| mailbox matches if it matches at least one mailbox pattern. If a | ||||
| mailbox matches more than one pattern, it is still only returned | ||||
| once. Any syntactically valid pattern that is not accepted by a | ||||
| server for any reason MUST be silently ignored. | ||||
| Selection options tell the server to limit the mailbox names that are | ||||
| selected by the LIST operation. If selection options are used, the | ||||
| mailboxes returned are those that match both the list of mailbox | ||||
| patterns and the selection options. Unless a particular selection | ||||
| option provides special rules, the selection options are cumulative: | ||||
| a mailbox that matches the mailbox patterns is selected only if it | ||||
| also matches all of the selection options. (An example of a | ||||
| selection option with special rules is the RECURSIVEMATCH option.) | ||||
| Return options control what information is returned for each matched | ||||
| mailbox. Return options MUST NOT cause the server to report | ||||
| information about additional mailbox names other than those that | ||||
| match the patterns and selection options. If no return options are | ||||
| specified, the client is only expecting information about mailbox | ||||
| attributes. The server MAY return other information about the | ||||
| matched mailboxes, and clients MUST be able to handle that situation. | ||||
| Initial selection options and return options are defined in the | ||||
| following subsections, and new ones will also be defined in | ||||
| extensions. Initial options MUST be supported. Each non-initial | ||||
| option will be enabled by a capability string (one capability may | ||||
| enable multiple options), and a client MUST NOT send an option for | ||||
| which the server has not advertised support. A server MUST respond | ||||
| to options it does not recognize with 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 received the option only | ||||
| once. The order in which options are specified by the client is not | ||||
| significant. | ||||
| In general, each selection option except RECURSIVEMATCH will have a | ||||
| corresponding return option. The REMOTE selection option is an | ||||
| anomaly in this regard, and does not have a corresponding return | ||||
| option. That is because it expands, rather than restricts, the set | ||||
| of mailboxes that are returned. Future extensions to this | ||||
| specification should keep parallelism in mind and define a pair of | ||||
| corresponding 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 | |||
| with wildcards as described above. The criteria for omitting INBOX | with wildcards as described above. The criteria for omitting INBOX | |||
| is whether SELECT INBOX will return failure; it is not relevant | is whether SELECT INBOX will return failure; it is not relevant | |||
| whether the user's real INBOX resides on this or some other server. | whether the user's real INBOX resides on this or some other server. | |||
| 6.3.9.1. LIST Selection Options | ||||
| The selection options defined in this specification are as follows: | ||||
| SUBSCRIBED - causes the LIST command to list subscribed names, | ||||
| rather than the existing mailboxes. This will often be a subset | ||||
| of the actual mailboxes. It's also possible for this list to | ||||
| contain the names of mailboxes that don't exist. In any case, the | ||||
| list MUST include exactly those mailbox names that match the | ||||
| canonical list pattern and are subscribed to. This option is | ||||
| intended to supplement the LSUB command. Of particular note are | ||||
| the mailbox attributes as returned by this option, compared with | ||||
| what is returned by LSUB. With the latter, the attributes | ||||
| returned may not reflect the actual attribute status on the | ||||
| mailbox name, and the \NoSelect attribute has a second special | ||||
| meaning (it indicates that this mailbox is not, itself, | ||||
| subscribed, but that it has descendant mailboxes that are). With | ||||
| the SUBSCRIBED selection option described here, the attributes are | ||||
| accurate and complete, and have no special meanings. "LSUB" and | ||||
| "LIST (SUBSCRIBED)" are, thus, not the same thing, and some | ||||
| servers must do significant extra work to respond to "LIST | ||||
| (SUBSCRIBED)". Because of this, clients SHOULD continue to use | ||||
| "LSUB" unless they specifically want the additional information | ||||
| offered by "LIST (SUBSCRIBED)". | ||||
| This option defines a new mailbox attribute, "\Subscribed", that | ||||
| indicates that a mailbox name is subscribed to. The "\Subscribed" | ||||
| attribute MUST be supported and MUST be accurately computed when | ||||
| the SUBSCRIBED selection option is specified. | ||||
| Note that the SUBSCRIBED selection option implies the SUBSCRIBED | ||||
| return option (see below). | ||||
| REMOTE - causes the LIST command to show remote mailboxes as well as | ||||
| local ones, as described in [RFC2193]. This option is intended to | ||||
| replace the RLIST command and, in conjunction with the SUBSCRIBED | ||||
| selection option, the RLSUB command. | ||||
| This option defines a new mailbox attribute, "\Remote", that | ||||
| indicates that a mailbox is a remote mailbox. The "\Remote" | ||||
| attribute MUST be accurately computed when the REMOTE option is | ||||
| specified. | ||||
| The REMOTE selection option has no interaction with other options. | ||||
| Its effect is to tell the server to apply the other options, if | ||||
| any, to remote mailboxes, in addition to local ones. In | ||||
| particular, it has no interaction with RECURSIVEMATCH (see below). | ||||
| A request for (REMOTE RECURSIVEMATCH) is invalid, because a | ||||
| request for (RECURSIVEMATCH) is. A request for (REMOTE | ||||
| RECURSIVEMATCH SUBSCRIBED) is asking for all subscribed mailboxes, | ||||
| both local and remote. | ||||
| RECURSIVEMATCH - this option forces the server to return information | ||||
| about parent mailboxes that don't match other selection options, | ||||
| but have some submailboxes that do. Information about children is | ||||
| returned in the CHILDINFO extended data item, as described in | ||||
| Section 6.3.9.5. | ||||
| Note 1: In order for a parent mailbox to be returned, it still has | ||||
| to match the canonical LIST pattern. | ||||
| Note 2: When returning the CHILDINFO extended data item, it | ||||
| doesn't matter whether or not the submailbox matches the canonical | ||||
| LIST pattern. See also example 9 in Section 6.3.9.6. | ||||
| The RECURSIVEMATCH option MUST NOT occur as the only selection | ||||
| option (or only with REMOTE), as it only makes sense when other | ||||
| selection options are also used. The server MUST return BAD | ||||
| tagged response in such case. | ||||
| Note that even if the RECURSIVEMATCH option is specified, the | ||||
| client MUST still be able to handle a case when a CHILDINFO | ||||
| extended data item is returned and there are no submailboxes that | ||||
| meet the selection criteria of the subsequent LIST command, as | ||||
| they can be deleted/renamed after the LIST response was sent, but | ||||
| before the client had a chance to access them. | ||||
| 6.3.9.2. LIST Return Options | ||||
| The return options defined in this specification are as follows: | ||||
| SUBSCRIBED - causes the LIST command to return subscription state | ||||
| for all matching mailbox names. The "\Subscribed" attribute MUST | ||||
| be supported and MUST be accurately computed when the SUBSCRIBED | ||||
| return option is specified. Further, all mailbox flags MUST be | ||||
| accurately computed (this differs from the behavior of the LSUB | ||||
| command). | ||||
| CHILDREN - requests mailbox child information as originally proposed | ||||
| in [RFC3348]. See Section 6.3.9.4, below, for details. This | ||||
| option MUST be supported by all servers. | ||||
| 6.3.9.3. General Principles for Returning LIST Responses | ||||
| This section outlines several principles that can be used by server | ||||
| implementations of this document to decide whether a LIST response | ||||
| should be returned, as well as how many responses and what kind of | ||||
| information they may contain. | ||||
| 1. At most one LIST response should be returned for each mailbox | ||||
| name that matches the canonical LIST pattern. Server | ||||
| implementors must not assume that clients will be able to | ||||
| assemble mailbox attributes and other information returned in | ||||
| multiple LIST responses. | ||||
| 2. There are only two reasons for including a matching mailbox name | ||||
| in the responses to the LIST command (note that the server is | ||||
| allowed to return unsolicited responses at any time, and such | ||||
| responses are not governed by this rule): | ||||
| A. The mailbox name also satisfies the selection criteria. | ||||
| B. The mailbox name doesn't satisfy the selection criteria, but | ||||
| it has at least one descendant mailbox name that satisfies | ||||
| the selection criteria and that doesn't match the canonical | ||||
| LIST pattern. | ||||
| For more information on this case, see the CHILDINFO extended | ||||
| data item described in Section 6.3.9.5. Note that the | ||||
| CHILDINFO extended data item can only be returned when the | ||||
| RECURSIVEMATCH selection option is specified. | ||||
| 3. Attributes returned in the same LIST response must be treated | ||||
| additively. For example, the following response | ||||
| S: * LIST (\Subscribed \NonExistent) "/" "Fruit/Peach" | ||||
| means that the "Fruit/Peach" mailbox doesn't exist, but it is | ||||
| subscribed. | ||||
| 6.3.9.4. The CHILDREN Return Option | ||||
| The CHILDREN return option implements the Child Mailbox Extension, | ||||
| originally proposed by Mike Gahrns and Raymond Cheng, of Microsoft | ||||
| Corporation. Most of the information in this section is taken | ||||
| 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. | ||||
| Many IMAP4 clients present to the user a hierarchical view of the | ||||
| mailboxes that a user has access to. Rather than initially | ||||
| presenting to the user the entire mailbox hierarchy, it is often | ||||
| preferable to show to the user a collapsed outline list of the | ||||
| mailbox hierarchy (particularly if there is a large number of | ||||
| mailboxes). The user can then expand the collapsed outline hierarchy | ||||
| as needed. It is common to include within the collapsed hierarchy a | ||||
| visual clue (such as a ''+'') to indicate that there are child | ||||
| mailboxes under a particular mailbox. When the visual clue is | ||||
| clicked, the hierarchy list is expanded to show the child mailboxes. | ||||
| The CHILDREN return option provides a mechanism for a client to | ||||
| efficiently determine whether a particular mailbox has children, | ||||
| without issuing a LIST "" * or a LIST "" % for each mailbox name. | ||||
| The CHILDREN return option defines two new attributes that MUST be | ||||
| returned within a LIST response: \HasChildren and \HasNoChildren. | ||||
| Although these attributes MAY be returned in response to any LIST | ||||
| command, the CHILDREN return option is provided to indicate that the | ||||
| client particularly wants this information. If the CHILDREN return | ||||
| option is present, the server MUST return these attributes even if | ||||
| their computation is expensive. | ||||
| \HasChildren | ||||
| The presence of this attribute indicates that the mailbox has | ||||
| child mailboxes. A server SHOULD NOT set this attribute if | ||||
| there are child mailboxes and the user does not have permission | ||||
| to access any of them. In this case, \HasNoChildren SHOULD be | ||||
| used. In many cases, however, a server may not be able to | ||||
| efficiently compute whether a user has access to any child | ||||
| mailbox. Note that even though the \HasChildren attribute for a | ||||
| mailbox must be correct at the time of processing of the | ||||
| mailbox, a client must be prepared to deal with a situation when | ||||
| a mailbox is marked with the \HasChildren attribute, but no | ||||
| child mailbox appears in the response to the LIST command. This | ||||
| might happen, for example, due to children mailboxes being | ||||
| deleted or made inaccessible to the user (using access control) | ||||
| by another client before the server is able to list them. | ||||
| \HasNoChildren | ||||
| The presence of this attribute indicates that the mailbox has NO | ||||
| child mailboxes that are accessible to the currently | ||||
| authenticated user. | ||||
| It is an error for the server to return both a \HasChildren and a | ||||
| \HasNoChildren attribute in the same LIST response. | ||||
| Note: the \HasNoChildren attribute should not be confused with the | ||||
| IMAP4 defined attribute \NoInferiors, which indicates that no child | ||||
| mailboxes exist now and none can be created in the future. | ||||
| 6.3.9.5. CHILDINFO Extended Data Item | ||||
| The CHILDINFO extended data item MUST NOT be returned unless the | ||||
| client has specified the RECURSIVEMATCH selection option. | ||||
| The CHILDINFO extended data item in a LIST response describes the | ||||
| selection criteria that has caused it to be returned and indicates | ||||
| that the mailbox has at least one descendant mailbox that matches the | ||||
| selection criteria. | ||||
| The LSUB command indicates this condition by using the "\NoSelect" | ||||
| attribute, but the LIST (SUBSCRIBED) command MUST NOT do that, since | ||||
| "\NoSelect" retains its original meaning here. Further, the | ||||
| CHILDINFO extended data item is more general, in that it can be used | ||||
| with any extended set of selection criteria. | ||||
| Note: Some servers allow for mailboxes to exist without requiring | ||||
| their parent to exist. For example, a mailbox "Customers/ABC" can | ||||
| exist while the mailbox "Customers" does not. As CHILDINFO extended | ||||
| data item is not allowed if the RECURSIVEMATCH selection option is | ||||
| not specified, such servers SHOULD use the "\NonExistent | ||||
| \HasChildren" attribute pair to signal to the client that there is a | ||||
| descendant mailbox that matches the selection criteria. See example | ||||
| 11 in Section 6.3.9.6. | ||||
| The returned selection criteria allow the client to distinguish a | ||||
| solicited response from an unsolicited one, as well as to distinguish | ||||
| among solicited responses caused by multiple pipelined LIST commands | ||||
| that specify different criteria. | ||||
| Servers SHOULD ONLY return a non-matching mailbox name along with | ||||
| CHILDINFO if at least one matching child is not also being returned. | ||||
| That is, servers SHOULD suppress redundant CHILDINFO responses. | ||||
| Examples 8 and 10 in Section 6.3.9.6 demonstrate the difference | ||||
| between present CHILDINFO extended data item and the "\HasChildren" | ||||
| attribute. | ||||
| The following table summarizes interaction between the "\NonExistent" | ||||
| attribute and CHILDINFO (the first column indicates whether the | ||||
| parent mailbox exists): | ||||
| +--------+--------------+--------------------+----------------------+ | ||||
| | exists | meets the | has a child that | returned LIST- | | ||||
| | | selection | meets the | EXTENDED attributes | | ||||
| | | criteria | selection criteria | and CHILDINFO | | ||||
| +--------+--------------+--------------------+----------------------+ | ||||
| | no | no | no | no LIST response | | ||||
| | | | | returned | | ||||
| | yes | no | no | no LIST response | | ||||
| | | | | returned | | ||||
| | no | yes | no | (\NonExistent | | ||||
| | | | | <attr>) | | ||||
| | yes | yes | no | (<attr>) | | ||||
| | no | no | yes | (\NonExistent) + | | ||||
| | | | | CHILDINFO | | ||||
| | yes | no | yes | () + CHILDINFO | | ||||
| | no | yes | yes | (\NonExistent | | ||||
| | | | | <attr>) + CHILDINFO | | ||||
| | yes | yes | yes | (<attr>) + CHILDINFO | | ||||
| +--------+--------------+--------------------+----------------------+ | ||||
| where <attr> is one or more attributes that correspond to the | ||||
| selection criteria; for example, for the SUBSCRIBED option the <attr> | ||||
| is \Subscribed. | ||||
| 6.3.9.6. LIST Command Examples | ||||
| This example shows some uses of the basic LIST command: | ||||
| Example: C: A101 LIST "" "" | Example: C: A101 LIST "" "" | |||
| S: * LIST (\Noselect) "/" "" | S: * LIST (\Noselect) "/" "" | |||
| S: A101 OK LIST Completed | S: A101 OK LIST Completed | |||
| C: A102 LIST #news.comp.mail.misc "" | C: A102 LIST #news.comp.mail.misc "" | |||
| S: * LIST (\Noselect) "." #news. | S: * LIST (\Noselect) "." #news. | |||
| S: A102 OK LIST Completed | S: A102 OK LIST Completed | |||
| C: A103 LIST /usr/staff/jones "" | C: A103 LIST /usr/staff/jones "" | |||
| S: * LIST (\Noselect) "/" / | S: * LIST (\Noselect) "/" / | |||
| S: A103 OK LIST Completed | S: A103 OK LIST Completed | |||
| C: A202 LIST ~/Mail/ % | C: A202 LIST ~/Mail/ % | |||
| S: * LIST (\Noselect) "/" ~/Mail/foo | S: * LIST (\Noselect) "/" ~/Mail/foo | |||
| S: * LIST () "/" ~/Mail/meetings | S: * LIST () "/" ~/Mail/meetings | |||
| S: A202 OK LIST completed | S: A202 OK LIST completed | |||
| Extended examples: | ||||
| 1: The first example shows the complete local hierarchy that will | ||||
| be used for the other examples. | ||||
| C: A01 LIST "" "*" | ||||
| S: * LIST (\Marked \NoInferiors) "/" "inbox" | ||||
| S: * LIST () "/" "Fruit" | ||||
| S: * LIST () "/" "Fruit/Apple" | ||||
| S: * LIST () "/" "Fruit/Banana" | ||||
| S: * LIST () "/" "Tofu" | ||||
| S: * LIST () "/" "Vegetable" | ||||
| S: * LIST () "/" "Vegetable/Broccoli" | ||||
| S: * LIST () "/" "Vegetable/Corn" | ||||
| S: A01 OK done | ||||
| 2: In the next example, we will see the subscribed mailboxes. This | ||||
| is similar to, but not equivalent with, <LSUB "" "*">. Note | ||||
| that the mailbox called "Fruit/Peach" is subscribed to, but does | ||||
| not actually exist (perhaps it was deleted while still | ||||
| subscribed). The "Fruit" mailbox is not subscribed to, but it | ||||
| has two subscribed children. The "Vegetable" mailbox is | ||||
| subscribed and has two children; one of them is subscribed as | ||||
| well. | ||||
| C: A02 LIST (SUBSCRIBED) "" "*" | ||||
| S: * LIST (\Marked \NoInferiors \Subscribed) "/" "inbox" | ||||
| S: * LIST (\Subscribed) "/" "Fruit/Banana" | ||||
| S: * LIST (\Subscribed \NonExistent) "/" "Fruit/Peach" | ||||
| S: * LIST (\Subscribed) "/" "Vegetable" | ||||
| S: * LIST (\Subscribed) "/" "Vegetable/Broccoli" | ||||
| S: A02 OK done | ||||
| 3: The next example shows the use of the CHILDREN option. The | ||||
| client, without having to list the second level of hierarchy, | ||||
| now knows which of the top-level mailboxes have submailboxes | ||||
| (children) and which do not. Note that it's not necessary for | ||||
| the server to return the \HasNoChildren attribute for the inbox, | ||||
| because the \NoInferiors attribute already implies that, and has | ||||
| a stronger meaning. | ||||
| C: A03 LIST () "" "%" RETURN (CHILDREN) | ||||
| S: * LIST (\Marked \NoInferiors) "/" "inbox" | ||||
| S: * LIST (\HasChildren) "/" "Fruit" | ||||
| S: * LIST (\HasNoChildren) "/" "Tofu" | ||||
| S: * LIST (\HasChildren) "/" "Vegetable" | ||||
| S: A03 OK done | ||||
| 4: In this example, we see more mailboxes that reside on another | ||||
| server. This is similar to the command <RLIST "" "%">. | ||||
| C: A04 LIST (REMOTE) "" "%" RETURN (CHILDREN) | ||||
| S: * LIST (\Marked \NoInferiors) "/" "inbox" | ||||
| S: * LIST (\HasChildren) "/" "Fruit" | ||||
| S: * LIST (\HasNoChildren) "/" "Tofu" | ||||
| S: * LIST (\HasChildren) "/" "Vegetable" | ||||
| S: * LIST (\Remote) "/" "Bread" | ||||
| S: * LIST (\HasChildren \Remote) "/" "Meat" | ||||
| S: A04 OK done | ||||
| 5: The following example also requests the server to include | ||||
| mailboxes that reside on another server. The server returns | ||||
| information about all mailboxes that are subscribed. This is | ||||
| similar to the command <RLSUB "" "*">. We also see the use of | ||||
| two selection options. | ||||
| C: A05 LIST (REMOTE SUBSCRIBED) "" "*" | ||||
| S: * LIST (\Marked \NoInferiors \Subscribed) "/" "inbox" | ||||
| S: * LIST (\Subscribed) "/" "Fruit/Banana" | ||||
| S: * LIST (\Subscribed \NonExistent) "/" "Fruit/Peach" | ||||
| S: * LIST (\Subscribed) "/" "Vegetable" | ||||
| S: * LIST (\Subscribed) "/" "Vegetable/Broccoli" | ||||
| S: * LIST (\Remote \Subscribed) "/" "Bread" | ||||
| S: A05 OK done | ||||
| 6: The following example requests the server to include mailboxes | ||||
| that reside on another server. The server is asked to return | ||||
| subscription information for all returned mailboxes. This is | ||||
| different from the example above. | ||||
| Note that the output of this command is not a superset of the | ||||
| output in the previous example, as it doesn't include LIST | ||||
| response for the non-existent "Fruit/Peach". | ||||
| C: A06 LIST (REMOTE) "" "*" RETURN (SUBSCRIBED) | ||||
| S: * LIST (\Marked \NoInferiors \Subscribed) "/" "inbox" | ||||
| S: * LIST () "/" "Fruit" | ||||
| S: * LIST () "/" "Fruit/Apple" | ||||
| S: * LIST (\Subscribed) "/" "Fruit/Banana" | ||||
| S: * LIST () "/" "Tofu" | ||||
| S: * LIST (\Subscribed) "/" "Vegetable" | ||||
| S: * LIST (\Subscribed) "/" "Vegetable/Broccoli" | ||||
| S: * LIST () "/" "Vegetable/Corn" | ||||
| S: * LIST (\Remote \Subscribed) "/" "Bread" | ||||
| S: * LIST (\Remote) "/" "Meat" | ||||
| S: A06 OK done | ||||
| 7: In the following example, the client has specified multiple | ||||
| mailbox patterns. Note that this example does not use the | ||||
| mailbox hierarchy used in the previous examples. | ||||
| C: BBB LIST "" ("INBOX" "Drafts" "Sent/%") | ||||
| S: * LIST () "/" "INBOX" | ||||
| S: * LIST (\NoInferiors) "/" "Drafts" | ||||
| S: * LIST () "/" "Sent/March2004" | ||||
| S: * LIST (\Marked) "/" "Sent/December2003" | ||||
| S: * LIST () "/" "Sent/August2004" | ||||
| S: BBB OK done | ||||
| 8: The following example demonstrates the difference between the | ||||
| \HasChildren attribute and the CHILDINFO extended data item. | ||||
| Let's assume there is the following hierarchy: | ||||
| C: C01 LIST "" "*" | ||||
| S: * LIST (\Marked \NoInferiors) "/" "inbox" | ||||
| S: * LIST () "/" "Foo" | ||||
| S: * LIST () "/" "Foo/Bar" | ||||
| S: * LIST () "/" "Foo/Baz" | ||||
| S: * LIST () "/" "Moo" | ||||
| S: C01 OK done | ||||
| If the client asks RETURN (CHILDREN), it will get this: | ||||
| C: CA3 LIST "" "%" RETURN (CHILDREN) | ||||
| S: * LIST (\Marked \NoInferiors) "/" "inbox" | ||||
| S: * LIST (\HasChildren) "/" "Foo" | ||||
| S: * LIST (\HasNoChildren) "/" "Moo" | ||||
| S: CA3 OK done | ||||
| A) Let's also assume that the mailbox "Foo/Baz" is the only | ||||
| subscribed mailbox. Then we get this result: | ||||
| C: C02 LIST (SUBSCRIBED) "" "*" | ||||
| S: * LIST (\Subscribed) "/" "Foo/Baz" | ||||
| S: C02 OK done | ||||
| Now, if the client issues <LIST (SUBSCRIBED) "" "%">, the server | ||||
| will return no mailboxes (as the mailboxes "Moo", "Foo", and | ||||
| "Inbox" are NOT subscribed). However, if the client issues | ||||
| this: | ||||
| C: C04 LIST (SUBSCRIBED RECURSIVEMATCH) "" "%" | ||||
| S: * LIST () "/" "Foo" ("CHILDINFO" ("SUBSCRIBED")) | ||||
| S: C04 OK done | ||||
| (i.e., the mailbox "Foo" is not subscribed, but it has a child | ||||
| that is.) | ||||
| A1) If the mailbox "Foo" had also been subscribed, the last | ||||
| command would return this: | ||||
| C: C04 LIST (SUBSCRIBED RECURSIVEMATCH) "" "%" | ||||
| S: * LIST (\Subscribed) "/" "Foo" ("CHILDINFO" ("SUBSCRIBED")) | ||||
| S: C04 OK done | ||||
| or even this: | ||||
| C: C04 LIST (SUBSCRIBED RECURSIVEMATCH) "" "%" | ||||
| S: * LIST (\Subscribed \HasChildren) "/" "Foo" ("CHILDINFO" | ||||
| ("SUBSCRIBED")) | ||||
| S: C04 OK done | ||||
| A2) If we assume instead that the mailbox "Foo" is not part of | ||||
| the original hierarchy and is not subscribed, the last command | ||||
| will give this result: | ||||
| C: C04 LIST (SUBSCRIBED RECURSIVEMATCH) "" "%" | ||||
| S: * LIST (\NonExistent) "/" "Foo" ("CHILDINFO" ("SUBSCRIBED")) | ||||
| S: C04 OK done | ||||
| B) Now, let's assume that no mailbox is subscribed. In this | ||||
| case, the command <LIST (SUBSCRIBED RECURSIVEMATCH) "" "%"> will | ||||
| return no responses, as there are no subscribed children (even | ||||
| though "Foo" has children). | ||||
| C) And finally, suppose that only the mailboxes "Foo" and "Moo" | ||||
| are subscribed. In that case, we see this result: | ||||
| C: C04 LIST (SUBSCRIBED RECURSIVEMATCH) "" "%" RETURN (CHILDREN) | ||||
| S: * LIST (\HasChildren \Subscribed) "/" "Foo" | ||||
| S: * LIST (\HasNoChildren \Subscribed) "/" "Moo" | ||||
| S: C04 OK done | ||||
| (which means that the mailbox "Foo" has children, but none of | ||||
| them is subscribed). | ||||
| 9: The following example demonstrates that the CHILDINFO extended | ||||
| data item is returned whether or not children mailboxes match | ||||
| the canonical LIST pattern. | ||||
| Let's assume there is the following hierarchy: | ||||
| C: D01 LIST "" "*" | ||||
| S: * LIST (\Marked \NoInferiors) "/" "inbox" | ||||
| S: * LIST () "/" "foo2" | ||||
| S: * LIST () "/" "foo2/bar1" | ||||
| S: * LIST () "/" "foo2/bar2" | ||||
| S: * LIST () "/" "baz2" | ||||
| S: * LIST () "/" "baz2/bar2" | ||||
| S: * LIST () "/" "baz2/bar22" | ||||
| S: * LIST () "/" "baz2/bar222" | ||||
| S: * LIST () "/" "eps2" | ||||
| S: * LIST () "/" "eps2/mamba" | ||||
| S: * LIST () "/" "qux2/bar2" | ||||
| S: D01 OK done | ||||
| And that the following mailboxes are subscribed: | ||||
| C: D02 LIST (SUBSCRIBED) "" "*" | ||||
| S: * LIST (\Subscribed) "/" "foo2/bar1" | ||||
| S: * LIST (\Subscribed) "/" "foo2/bar2" | ||||
| S: * LIST (\Subscribed) "/" "baz2/bar2" | ||||
| S: * LIST (\Subscribed) "/" "baz2/bar22" | ||||
| S: * LIST (\Subscribed) "/" "baz2/bar222" | ||||
| S: * LIST (\Subscribed) "/" "eps2" | ||||
| S: * LIST (\Subscribed) "/" "eps2/mamba" | ||||
| S: * LIST (\Subscribed) "/" "qux2/bar2" | ||||
| S: D02 OK done | ||||
| The client issues the following command first: | ||||
| C: D03 LIST (RECURSIVEMATCH SUBSCRIBED) "" "*2" | ||||
| S: * LIST () "/" "foo2" ("CHILDINFO" ("SUBSCRIBED")) | ||||
| S: * LIST (\Subscribed) "/" "foo2/bar2" | ||||
| S: * LIST (\Subscribed) "/" "baz2/bar2" | ||||
| S: * LIST (\Subscribed) "/" "baz2/bar22" | ||||
| S: * LIST (\Subscribed) "/" "baz2/bar222" | ||||
| S: * LIST (\Subscribed) "/" "eps2" ("CHILDINFO" ("SUBSCRIBED")) | ||||
| S: * LIST (\Subscribed) "/" "qux2/bar2" | ||||
| S: D03 OK done | ||||
| and the server may also include (but this would violate a SHOULD | ||||
| NOT in Section 3.5, because CHILDINFO is redundant) | ||||
| S: * LIST () "/" "baz2" ("CHILDINFO" ("SUBSCRIBED")) | ||||
| S: * LIST (\NonExistent) "/" "qux2" ("CHILDINFO" ("SUBSCRIBED")) | ||||
| The CHILDINFO extended data item is returned for mailboxes | ||||
| "foo2", "baz2", and "eps2", because all of them have subscribed | ||||
| children, even though for the mailbox "foo2" only one of the two | ||||
| subscribed children matches the pattern, for the mailbox "baz2" | ||||
| all the subscribed children match the pattern, and for the | ||||
| mailbox "eps2" none of the subscribed children matches the | ||||
| pattern. | ||||
| Note that if the client issues | ||||
| C: D03 LIST (RECURSIVEMATCH SUBSCRIBED) "" "*" | ||||
| S: * LIST () "/" "foo2" ("CHILDINFO" ("SUBSCRIBED")) | ||||
| S: * LIST (\Subscribed) "/" "foo2/bar1" | ||||
| S: * LIST (\Subscribed) "/" "foo2/bar2" | ||||
| S: * LIST () "/" "baz2" ("CHILDINFO" ("SUBSCRIBED")) | ||||
| S: * LIST (\Subscribed) "/" "baz2/bar2" | ||||
| S: * LIST (\Subscribed) "/" "baz2/bar22" | ||||
| S: * LIST (\Subscribed) "/" "baz2/bar222" | ||||
| S: * LIST (\Subscribed) "/" "eps2" ("CHILDINFO" ("SUBSCRIBED")) | ||||
| S: * LIST (\Subscribed) "/" "eps2/mamba" | ||||
| S: * LIST (\Subscribed) "/" "qux2/bar2" | ||||
| S: D03 OK done | ||||
| The LIST responses for mailboxes "foo2", "baz2", and "eps2" | ||||
| still have the CHILDINFO extended data item, even though this | ||||
| information is redundant and the client can determine it by | ||||
| itself. | ||||
| 10: The following example shows usage of multiple mailbox patterns. | ||||
| It also demonstrates that the presence of the CHILDINFO extended | ||||
| data item doesn't necessarily imply \HasChildren. | ||||
| C: a1 LIST "" ("foo" "foo/*") | ||||
| S: * LIST () "/" foo | ||||
| S: a1 OK done | ||||
| C: a2 LIST (SUBSCRIBED) "" "foo/*" | ||||
| S: * LIST (\Subscribed \NonExistent) "/" foo/bar | ||||
| S: a2 OK done | ||||
| C: a3 LIST (SUBSCRIBED RECURSIVEMATCH) "" foo RETURN (CHILDREN) | ||||
| S: * LIST (\HasNoChildren) "/" foo ("CHILDINFO" ("SUBSCRIBED")) | ||||
| S: a3 OK done | ||||
| 11: The following example shows how a server that supports missing | ||||
| mailbox hierarchy elements can signal to a client that didn't | ||||
| specify the RECURSIVEMATCH selection option that there is a | ||||
| child mailbox that matches the selection criteria. | ||||
| C: a1 LIST (REMOTE) "" * | ||||
| S: * LIST () "/" music/rock | ||||
| S: * LIST (\Remote) "/" also/jazz | ||||
| S: a1 OK done | ||||
| C: a2 LIST () "" % | ||||
| S: * LIST (\NonExistent \HasChildren) "/" music | ||||
| S: a2 OK done | ||||
| C: a3 LIST (REMOTE) "" % | ||||
| S: * LIST (\NonExistent \HasChildren) "/" music | ||||
| S: * LIST (\NonExistent \HasChildren) "/" also | ||||
| S: a3 OK done | ||||
| C: a3.1 LIST "" (% music/rock) | ||||
| S: * LIST () "/" music/rock | ||||
| S: a3.1 OK done | ||||
| Because "music/rock" is the only mailbox under "music", there's | ||||
| no need for the server to also return "music". However clients | ||||
| must handle both cases. | ||||
| 6.3.10. LSUB Command | 6.3.10. LSUB Command | |||
| Arguments: reference name | Arguments: reference name | |||
| mailbox name with possible wildcards | mailbox name with possible wildcards | |||
| Responses: untagged responses: LSUB | Responses: untagged responses: LSUB | |||
| Result: OK - lsub completed | Result: OK - lsub completed | |||
| NO - lsub failure: can't list that reference or name | NO - lsub failure: can't list that reference or name | |||
| BAD - command unknown or arguments invalid | BAD - command unknown or arguments invalid | |||
| skipping to change at page 117, line 29 ¶ | skipping to change at page 131, line 29 ¶ | |||
| [DISPOSITION] | [DISPOSITION] | |||
| Troost, R., Dorner, S., and K. Moore, Ed., "Communicating | Troost, R., Dorner, S., and K. Moore, Ed., "Communicating | |||
| Presentation Information in Internet Messages: The | Presentation Information in Internet Messages: The | |||
| Content-Disposition Header Field", RFC 2183, August 1997, | Content-Disposition Header Field", RFC 2183, August 1997, | |||
| <http://www.rfc-editor.org/info/rfc2183>. | <http://www.rfc-editor.org/info/rfc2183>. | |||
| [PLAIN] Zeilenga, K., Ed., "The PLAIN Simple Authentication and | [PLAIN] Zeilenga, K., Ed., "The PLAIN Simple Authentication and | |||
| Security Layer (SASL) Mechanism", RFC 4616, August 2006, | Security Layer (SASL) Mechanism", RFC 4616, August 2006, | |||
| <http://www.rfc-editor.org/info/rfc4616>. | <http://www.rfc-editor.org/info/rfc4616>. | |||
| [KEYWORDS] | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Bradner, S., "Key words for use in RFCs to Indicate | Requirement Levels", BCP 14, RFC 2119, | |||
| Requirement Levels", BCP 14, RFC 2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <http://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | ||||
| 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | ||||
| May 2017, <https://www.rfc-editor.org/info/rfc8174>. | ||||
| [LANGUAGE-TAGS] | [LANGUAGE-TAGS] | |||
| Alvestrand, H., "Content Language Headers", RFC 3282, May | Alvestrand, H., "Content Language Headers", RFC 3282, May | |||
| 2002, <http://www.rfc-editor.org/info/rfc3282>. | 2002, <http://www.rfc-editor.org/info/rfc3282>. | |||
| [LOCATION] | [LOCATION] | |||
| Palme, J., Hopmann, A., and N. Shelness, "MIME | Palme, J., Hopmann, A., and N. Shelness, "MIME | |||
| Encapsulation of Aggregate Documents, such as HTML | Encapsulation of Aggregate Documents, such as HTML | |||
| (MHTML)", RFC 2557, March 1999, | (MHTML)", RFC 2557, March 1999, | |||
| <http://www.rfc-editor.org/info/rfc2557>. | <http://www.rfc-editor.org/info/rfc2557>. | |||
| skipping to change at page 119, line 40 ¶ | skipping to change at page 133, line 45 ¶ | |||
| RFC 7888, DOI 10.17487/RFC7888, May 2016, | RFC 7888, DOI 10.17487/RFC7888, May 2016, | |||
| <https://www.rfc-editor.org/info/rfc7888>. | <https://www.rfc-editor.org/info/rfc7888>. | |||
| [RFC8314] Moore, K. and C. Newman, "Cleartext Considered Obsolete: | [RFC8314] Moore, K. and C. Newman, "Cleartext Considered Obsolete: | |||
| Use of Transport Layer Security (TLS) for Email Submission | Use of Transport Layer Security (TLS) for Email Submission | |||
| and Access", RFC 8314, DOI 10.17487/RFC8314, January 2018, | and Access", RFC 8314, DOI 10.17487/RFC8314, January 2018, | |||
| <https://www.rfc-editor.org/info/rfc8314>. | <https://www.rfc-editor.org/info/rfc8314>. | |||
| 13.2. Informative References (related protocols) | 13.2. Informative References (related protocols) | |||
| [RFC5258] Leiba, B. and A. Melnikov, "Internet Message Access | ||||
| Protocol version 4 - LIST Command Extensions", RFC 5258, | ||||
| DOI 10.17487/RFC5258, June 2008, | ||||
| <https://www.rfc-editor.org/info/rfc5258>. | ||||
| [RFC2193] Gahrns, M., "IMAP4 Mailbox Referrals", RFC 2193, | ||||
| DOI 10.17487/RFC2193, September 1997, | ||||
| <https://www.rfc-editor.org/info/rfc2193>. | ||||
| [RFC3348] Gahrns, M. and R. Cheng, "The Internet Message Action | ||||
| Protocol (IMAP4) Child Mailbox Extension", RFC 3348, | ||||
| DOI 10.17487/RFC3348, July 2002, | ||||
| <https://www.rfc-editor.org/info/rfc3348>. | ||||
| [IMAP-DISC] | [IMAP-DISC] | |||
| Melnikov, A., Ed., "Synchronization Operations for | Melnikov, A., Ed., "Synchronization Operations for | |||
| Disconnected IMAP4 Clients", RFC 4549, June 2006, | Disconnected IMAP4 Clients", RFC 4549, June 2006, | |||
| <http://www.rfc-editor.org/info/rfc4549>. | <http://www.rfc-editor.org/info/rfc4549>. | |||
| [IMAP-I18N] | [IMAP-I18N] | |||
| Newman, C., Gulbrandsen, A., and A. Melnikov, "Internet | Newman, C., Gulbrandsen, A., and A. Melnikov, "Internet | |||
| Message Access Protocol Internationalization", RFC 5255, | Message Access Protocol Internationalization", RFC 5255, | |||
| DOI 10.17487/RFC5255, June 2008, | DOI 10.17487/RFC5255, June 2008, | |||
| <http://www.rfc-editor.org/info/rfc5255>. | <http://www.rfc-editor.org/info/rfc5255>. | |||
| skipping to change at page 125, line 38 ¶ | skipping to change at page 140, line 12 ¶ | |||
| 5161, RFC 6154 so work done by authors/editors of these documents is | 5161, RFC 6154 so work done by authors/editors of these documents is | |||
| appreciated. | appreciated. | |||
| Index | Index | |||
| $ | $ | |||
| $Forwarded (predefined flag) 12 | $Forwarded (predefined flag) 12 | |||
| $MDNSent (predefined flag) 12 | $MDNSent (predefined flag) 12 | |||
| + | + | |||
| +FLAGS <flag list> 68 | +FLAGS <flag list> 82 | |||
| +FLAGS.SILENT <flag list> 68 | +FLAGS.SILENT <flag list> 82 | |||
| - | - | |||
| -FLAGS <flag list> 68 | -FLAGS <flag list> 82 | |||
| -FLAGS.SILENT <flag list> 68 | -FLAGS.SILENT <flag list> 82 | |||
| A | A | |||
| ALERT (response code) 75 | ALERT (response code) 89 | |||
| ALL (fetch item) 63 | ALL (fetch item) 77 | |||
| ALL (search key) 60 | ALL (search key) 74 | |||
| ALL (search result option) 59 | ALL (search result option) 73 | |||
| ALREADYEXISTS (response code) 75 | ALREADYEXISTS (response code) 89 | |||
| ANSWERED (search key) 60 | ANSWERED (search key) 74 | |||
| APPEND (command) 51 | APPEND (command) 65 | |||
| APPENDUID (response code) 75 | APPENDUID (response code) 89 | |||
| AUTHENTICATE (command) 27 | AUTHENTICATE (command) 27 | |||
| AUTHENTICATIONFAILED (response code) 76 | AUTHENTICATIONFAILED (response code) 90 | |||
| AUTHORIZATIONFAILED (response code) 76 | AUTHORIZATIONFAILED (response code) 90 | |||
| B | B | |||
| BAD (response) 83 | BAD (response) 97 | |||
| BADCHARSET (response code) 76 | BADCHARSET (response code) 90 | |||
| BCC <string> (search key) 60 | BCC <string> (search key) 74 | |||
| BEFORE <date> (search key) 60 | BEFORE <date> (search key) 74 | |||
| BINARY.PEEK[<section-binary>]<<partial>> (fetch item) 64 | BINARY.PEEK[<section-binary>]<<partial>> (fetch item) 78 | |||
| BINARY.SIZE[<section-binary>] (fetch item) 64 | BINARY.SIZE[<section-binary>] (fetch item) 78 | |||
| BINARY.SIZE[<section-binary>] (fetch result) 92 | BINARY.SIZE[<section-binary>] (fetch result) 106 | |||
| BINARY[<section-binary>]<<number>> (fetch result) 92 | BINARY[<section-binary>]<<number>> (fetch result) 106 | |||
| BINARY[<section-binary>]<<partial>> (fetch item) 64 | BINARY[<section-binary>]<<partial>> (fetch item) 78 | |||
| BODY (fetch item) 64 | BODY (fetch item) 78 | |||
| BODY (fetch result) 92 | BODY (fetch result) 106 | |||
| BODY <string> (search key) 60 | BODY <string> (search key) 74 | |||
| BODY.PEEK[<section>]<<partial>> (fetch item) 66 | BODY.PEEK[<section>]<<partial>> (fetch item) 80 | |||
| BODYSTRUCTURE (fetch item) 67 | BODYSTRUCTURE (fetch item) 81 | |||
| BODYSTRUCTURE (fetch result) 93 | BODYSTRUCTURE (fetch result) 107 | |||
| BODY[<section>]<<origin octet>> (fetch result) 92 | BODY[<section>]<<origin octet>> (fetch result) 106 | |||
| BODY[<section>]<<partial>> (fetch item) 64 | BODY[<section>]<<partial>> (fetch item) 78 | |||
| BYE (response) 83 | BYE (response) 97 | |||
| Body Structure (message attribute) 13 | Body Structure (message attribute) 13 | |||
| C | C | |||
| CANNOT (response code) 77 | CANNOT (response code) 91 | |||
| CAPABILITY (command) 24 | CAPABILITY (command) 24 | |||
| CAPABILITY (response code) 77 | CAPABILITY (response code) 91 | |||
| CAPABILITY (response) 84 | CAPABILITY (response) 98 | |||
| CC <string> (search key) 60 | CC <string> (search key) 74 | |||
| CHECK (command) 56 | CHECK (command) 70 | |||
| CLIENTBUG (response code) 77 | CLIENTBUG (response code) 91 | |||
| CLOSE (command) 56 | CLOSE (command) 70 | |||
| CLOSED (response code) 77 | CLOSED (response code) 91 | |||
| CONTACTADMIN (response code) 78 | CONTACTADMIN (response code) 92 | |||
| COPY (command) 68 | COPY (command) 82 | |||
| COPYUID (response code) 78 | COPYUID (response code) 92 | |||
| CORRUPTION (response code) 78 | CORRUPTION (response code) 92 | |||
| COUNT (search result option) 59 | COUNT (search result option) 73 | |||
| CREATE (command) 35 | CREATE (command) 35 | |||
| D | D | |||
| DELETE (command) 36 | DELETE (command) 36 | |||
| DELETED (search key) 60 | DELETED (search key) 74 | |||
| DRAFT (search key) 60 | DRAFT (search key) 74 | |||
| E | E | |||
| ENABLE (command) 31 | ENABLE (command) 31 | |||
| ENVELOPE (fetch item) 67 | ENVELOPE (fetch item) 81 | |||
| ENVELOPE (fetch result) 96 | ENVELOPE (fetch result) 110 | |||
| ESEARCH (response) 89 | ESEARCH (response) 103 | |||
| EXAMINE (command) 35 | EXAMINE (command) 35 | |||
| EXPIRED (response code) 78 | EXPIRED (response code) 92 | |||
| EXPUNGE (command) 57 | EXPUNGE (command) 71 | |||
| EXPUNGE (response) 91 | EXPUNGE (response) 105 | |||
| EXPUNGEISSUED (response code) 79 | EXPUNGEISSUED (response code) 93 | |||
| Envelope Structure (message attribute) 13 | Envelope Structure (message attribute) 13 | |||
| F | F | |||
| FAST (fetch item) 63 | FAST (fetch item) 77 | |||
| FETCH (command) 63 | FETCH (command) 77 | |||
| FETCH (response) 91 | FETCH (response) 105 | |||
| FLAGGED (search key) 60 | FLAGGED (search key) 74 | |||
| FLAGS (fetch item) 67 | FLAGS (fetch item) 81 | |||
| FLAGS (fetch result) 97 | FLAGS (fetch result) 111 | |||
| FLAGS (response) 90 | FLAGS (response) 104 | |||
| FLAGS <flag list> (store command data item) 68 | FLAGS <flag list> (store command data item) 82 | |||
| FLAGS.SILENT <flag list> (store command data item) 68 | FLAGS.SILENT <flag list> (store command data item) 82 | |||
| FROM <string> (search key) 60 | FROM <string> (search key) 74 | |||
| FULL (fetch item) 64 | FULL (fetch item) 78 | |||
| Flags (message attribute) 11 | Flags (message attribute) 11 | |||
| H | H | |||
| HEADER (part specifier) 65 | HEADER (part specifier) 79 | |||
| HEADER <field-name> <string> (search key) 60 | HEADER <field-name> <string> (search key) 74 | |||
| HEADER.FIELDS (part specifier) 65 | HEADER.FIELDS (part specifier) 79 | |||
| HEADER.FIELDS.NOT (part specifier) 65 | HEADER.FIELDS.NOT (part specifier) 79 | |||
| I | I | |||
| IDLE (command) 53 | IDLE (command) 67 | |||
| INTERNALDATE (fetch item) 67 | INTERNALDATE (fetch item) 81 | |||
| INTERNALDATE (fetch result) 97 | INTERNALDATE (fetch result) 111 | |||
| INUSE (response code) 79 | INUSE (response code) 93 | |||
| Internal Date (message attribute) 12 | Internal Date (message attribute) 12 | |||
| K | K | |||
| KEYWORD <flag> (search key) 61 | KEYWORD <flag> (search key) 75 | |||
| Keyword (type of flag) 12 | Keyword (type of flag) 12 | |||
| L | L | |||
| LARGER <n> (search key) 61 | LARGER <n> (search key) 75 | |||
| LIMIT (response code) 79 | LIMIT (response code) 93 | |||
| LIST (command) 41 | LIST (command) 41 | |||
| LIST (response) 85 | LIST (response) 99 | |||
| LOGOUT (command) 25 | LOGOUT (command) 25 | |||
| LSUB (command) 44 | LSUB (command) 58 | |||
| LSUB (response) 88 | LSUB (response) 102 | |||
| M | M | |||
| MAX (search result option) 58 | MAX (search result option) 72 | |||
| MAY (specification requirement term) 5 | MAY (specification requirement term) 5 | |||
| MESSAGES (status item) 50 | MESSAGES (status item) 64 | |||
| MIME (part specifier) 65 | MIME (part specifier) 79 | |||
| MIN (search result option) 58 | MIN (search result option) 72 | |||
| MOVE (command) 69 | MOVE (command) 83 | |||
| 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) 45 | NAMESPACE (command) 59 | |||
| NAMESPACE (response) 89 | NAMESPACE (response) 103 | |||
| NEW (search key) 61 | NEW (search key) 75 | |||
| NO (response) 82 | NO (response) 96 | |||
| NONEXISTENT (response code) 79 | NONEXISTENT (response code) 93 | |||
| NOOP (command) 25 | NOOP (command) 25 | |||
| NOPERM (response code) 79 | NOPERM (response code) 93 | |||
| NOT <search-key> (search key) 61 | NOT <search-key> (search key) 75 | |||
| NOT RECOMMENDED (specification requirement term) 5 | ||||
| O | O | |||
| OK (response) 82 | OK (response) 96 | |||
| ON <date> (search key) 61 | ON <date> (search key) 75 | |||
| OPTIONAL (specification requirement term) 5 | OPTIONAL (specification requirement term) 5 | |||
| OR <search-key1> <search-key2> (search key) 61 | OR <search-key1> <search-key2> (search key) 75 | |||
| OVERQUOTA (response code) 80 | OVERQUOTA (response code) 94 | |||
| P | P | |||
| PARSE (response code) 80 | PARSE (response code) 94 | |||
| PERMANENTFLAGS (response code) 80 | PERMANENTFLAGS (response code) 94 | |||
| PREAUTH (response) 83 | PREAUTH (response) 97 | |||
| PRIVACYREQUIRED (response code) 80 | PRIVACYREQUIRED (response code) 94 | |||
| Permanent Flag (class of flag) 12 | Permanent Flag (class of flag) 12 | |||
| Predefined keywords 12 | Predefined keywords 12 | |||
| R | R | |||
| READ-ONLY (response code) 81 | READ-ONLY (response code) 95 | |||
| READ-WRITE (response code) 81 | READ-WRITE (response code) 95 | |||
| RECOMMENDED (specification requirement term) 5 | RECOMMENDED (specification requirement term) 5 | |||
| RENAME (command) 38 | RENAME (command) 38 | |||
| REQUIRED (specification requirement term) 5 | REQUIRED (specification requirement term) 5 | |||
| RFC822 (fetch item) 67 | RFC822 (fetch item) 81 | |||
| RFC822 (fetch result) 97 | RFC822 (fetch result) 111 | |||
| RFC822.HEADER (fetch item) 67 | RFC822.HEADER (fetch item) 81 | |||
| RFC822.HEADER (fetch result) 97 | RFC822.HEADER (fetch result) 111 | |||
| RFC822.SIZE (fetch item) 67 | RFC822.SIZE (fetch item) 81 | |||
| RFC822.SIZE (fetch result) 97 | RFC822.SIZE (fetch result) 111 | |||
| RFC822.TEXT (fetch item) 67 | RFC822.TEXT (fetch item) 81 | |||
| RFC822.TEXT (fetch result) 97 | RFC822.TEXT (fetch result) 111 | |||
| S | S | |||
| SEARCH (command) 58 | SEARCH (command) 72 | |||
| SEEN (search key) 61 | SEEN (search key) 75 | |||
| SELECT (command) 33 | SELECT (command) 33 | |||
| SENTBEFORE <date> (search key) 61 | SENTBEFORE <date> (search key) 75 | |||
| SENTON <date> (search key) 61 | SENTON <date> (search key) 75 | |||
| SENTSINCE <date> (search key) 61 | SENTSINCE <date> (search key) 75 | |||
| SERVERBUG (response code) 81 | SERVERBUG (response code) 95 | |||
| 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) 61 | SINCE <date> (search key) 75 | |||
| SIZE (status item) 51 | SIZE (status item) 65 | |||
| SMALLER <n> (search key) 61 | SMALLER <n> (search key) 75 | |||
| STARTTLS (command) 26 | STARTTLS (command) 26 | |||
| STATUS (command) 49 | STATUS (command) 63 | |||
| STATUS (response) 89 | STATUS (response) 103 | |||
| STORE (command) 67 | STORE (command) 81 | |||
| SUBJECT <string> (search key) 61 | SUBJECT <string> (search key) 75 | |||
| SUBSCRIBE (command) 40 | SUBSCRIBE (command) 40 | |||
| 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) 65 | TEXT (part specifier) 79 | |||
| TEXT <string> (search key) 61 | TEXT <string> (search key) 75 | |||
| TO <string> (search key) 61 | TO <string> (search key) 75 | |||
| TRYCREATE (response code) 81 | TRYCREATE (response code) 95 | |||
| U | U | |||
| UID (command) 71 | UID (command) 85 | |||
| UID (fetch item) 67 | UID (fetch item) 81 | |||
| UID (fetch result) 97 | UID (fetch result) 111 | |||
| UID <sequence set> (search key) 62 | UID <sequence set> (search key) 76 | |||
| UIDNEXT (response code) 81 | UIDNEXT (response code) 95 | |||
| UIDNEXT (status item) 50 | UIDNEXT (status item) 64 | |||
| UIDNOTSTICKY (response code) 81 | UIDNOTSTICKY (response code) 95 | |||
| UIDVALIDITY (response code) 81 | UIDVALIDITY (response code) 95 | |||
| UIDVALIDITY (status item) 50 | UIDVALIDITY (status item) 64 | |||
| UNANSWERED (search key) 62 | UNANSWERED (search key) 76 | |||
| UNAVAILABLE (response code) 81 | UNAVAILABLE (response code) 95 | |||
| UNDELETED (search key) 62 | UNDELETED (search key) 76 | |||
| UNDRAFT (search key) 62 | UNDRAFT (search key) 76 | |||
| UNFLAGGED (search key) 62 | UNFLAGGED (search key) 76 | |||
| UNKEYWORD <flag> (search key) 62 | UNKEYWORD <flag> (search key) 76 | |||
| UNKNOWN-CTE (response code) 82 | UNKNOWN-CTE (response code) 96 | |||
| UNSEEN (search key) 62 | UNSEEN (search key) 76 | |||
| UNSEEN (status item) 50 | UNSEEN (status item) 64 | |||
| UNSELECT (command) 57 | UNSELECT (command) 71 | |||
| UNSUBSCRIBE (command) 41 | UNSUBSCRIBE (command) 41 | |||
| Unique Identifier (UID) (message attribute) 9 | Unique Identifier (UID) (message attribute) 9 | |||
| X | X | |||
| X<atom> (command) 73 | X<atom> (command) 87 | |||
| [ | [ | |||
| [RFC-5322] Size (message attribute) 13 | [RFC-5322] Size (message attribute) 13 | |||
| \ | \ | |||
| \All (mailbox name attribute) 87 | \All (mailbox name attribute) 101 | |||
| \Answered (system flag) 11 | \Answered (system flag) 11 | |||
| \Archive (mailbox name attribute) 87 | \Archive (mailbox name attribute) 101 | |||
| \Deleted (system flag) 11 | \Deleted (system flag) 11 | |||
| \Draft (system flag) 12 | \Draft (system flag) 12 | |||
| \Drafts (mailbox name attribute) 87 | \Drafts (mailbox name attribute) 101 | |||
| \Flagged (mailbox name attribute) 87 | \Flagged (mailbox name attribute) 101 | |||
| \Flagged (system flag) 11 | \Flagged (system flag) 11 | |||
| \HasChildren (mailbox name attribute) 86 | \HasChildren (mailbox name attribute) 100 | |||
| \HasNoChildren (mailbox name attribute) 86 | \HasNoChildren (mailbox name attribute) 100 | |||
| \Junk (mailbox name attribute) 87 | \Junk (mailbox name attribute) 101 | |||
| \Marked (mailbox name attribute) 86 | \Marked (mailbox name attribute) 100 | |||
| \Noinferiors (mailbox name attribute) 86 | \Noinferiors (mailbox name attribute) 100 | |||
| \Noselect (mailbox name attribute) 86 | \Noselect (mailbox name attribute) 100 | |||
| \Recent (system flag) 12 | \Recent (system flag) 12 | |||
| \Seen (system flag) 11 | \Seen (system flag) 11 | |||
| \Sent (mailbox name attribute) 87 | \Sent (mailbox name attribute) 101 | |||
| \Trash (mailbox name attribute) 87 | \Trash (mailbox name attribute) 101 | |||
| \Unmarked (mailbox name attribute) 86 | \Unmarked (mailbox name attribute) 100 | |||
| 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. 55 change blocks. | ||||
| 242 lines changed or deleted | 904 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/ | ||||