| < draft-ietf-extra-imap4rev2-17.txt | draft-ietf-extra-imap4rev2-18.txt > | |||
|---|---|---|---|---|
| Network Working Group A. Melnikov, Ed. | Network Working Group A. Melnikov, Ed. | |||
| Internet-Draft Isode Ltd | Internet-Draft Isode Ltd | |||
| Obsoletes: 3501 (if approved) B. Leiba, Ed. | Obsoletes: 3501 (if approved) B. Leiba, Ed. | |||
| Intended status: Standards Track Futurewei Technologies | Intended status: Standards Track Futurewei Technologies | |||
| Expires: January 30, 2021 July 29, 2020 | Expires: March 19, 2021 September 15, 2020 | |||
| Internet Message Access Protocol (IMAP) - Version 4rev2 | Internet Message Access Protocol (IMAP) - Version 4rev2 | |||
| draft-ietf-extra-imap4rev2-17 | draft-ietf-extra-imap4rev2-18 | |||
| Abstract | Abstract | |||
| The Internet Message Access Protocol, Version 4rev2 (IMAP4rev2) | The Internet Message Access Protocol, Version 4rev2 (IMAP4rev2) | |||
| allows a client to access and manipulate electronic mail messages on | allows a client to access and manipulate electronic mail messages on | |||
| a server. IMAP4rev2 permits manipulation of mailboxes (remote | a server. IMAP4rev2 permits manipulation of mailboxes (remote | |||
| message folders) in a way that is functionally equivalent to local | message folders) in a way that is functionally equivalent to local | |||
| folders. IMAP4rev2 also provides the capability for an offline | folders. IMAP4rev2 also provides the capability for an offline | |||
| client to resynchronize with the server. | client to resynchronize with the server. | |||
| skipping to change at page 1, line 47 ¶ | skipping to change at page 1, line 47 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on January 30, 2021. | This Internet-Draft will expire on March 19, 2021. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2020 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| skipping to change at page 3, line 47 ¶ | skipping to change at page 3, line 47 ¶ | |||
| 6.3.5. DELETE Command . . . . . . . . . . . . . . . . . . . 39 | 6.3.5. DELETE Command . . . . . . . . . . . . . . . . . . . 39 | |||
| 6.3.6. RENAME Command . . . . . . . . . . . . . . . . . . . 41 | 6.3.6. RENAME Command . . . . . . . . . . . . . . . . . . . 41 | |||
| 6.3.7. SUBSCRIBE Command . . . . . . . . . . . . . . . . . . 43 | 6.3.7. SUBSCRIBE Command . . . . . . . . . . . . . . . . . . 43 | |||
| 6.3.8. UNSUBSCRIBE Command . . . . . . . . . . . . . . . . . 44 | 6.3.8. UNSUBSCRIBE Command . . . . . . . . . . . . . . . . . 44 | |||
| 6.3.9. LIST Command . . . . . . . . . . . . . . . . . . . . 44 | 6.3.9. LIST Command . . . . . . . . . . . . . . . . . . . . 44 | |||
| 6.3.10. NAMESPACE Command . . . . . . . . . . . . . . . . . . 62 | 6.3.10. NAMESPACE Command . . . . . . . . . . . . . . . . . . 62 | |||
| 6.3.11. STATUS Command . . . . . . . . . . . . . . . . . . . 67 | 6.3.11. STATUS Command . . . . . . . . . . . . . . . . . . . 67 | |||
| 6.3.12. APPEND Command . . . . . . . . . . . . . . . . . . . 68 | 6.3.12. APPEND Command . . . . . . . . . . . . . . . . . . . 68 | |||
| 6.3.13. IDLE Command . . . . . . . . . . . . . . . . . . . . 71 | 6.3.13. IDLE Command . . . . . . . . . . . . . . . . . . . . 71 | |||
| 6.4. Client Commands - Selected State . . . . . . . . . . . . 73 | 6.4. Client Commands - Selected State . . . . . . . . . . . . 73 | |||
| 6.4.1. CLOSE Command . . . . . . . . . . . . . . . . . . . . 73 | 6.4.1. CLOSE Command . . . . . . . . . . . . . . . . . . . . 74 | |||
| 6.4.2. UNSELECT Command . . . . . . . . . . . . . . . . . . 74 | 6.4.2. UNSELECT Command . . . . . . . . . . . . . . . . . . 74 | |||
| 6.4.3. EXPUNGE Command . . . . . . . . . . . . . . . . . . . 74 | 6.4.3. EXPUNGE Command . . . . . . . . . . . . . . . . . . . 75 | |||
| 6.4.4. SEARCH Command . . . . . . . . . . . . . . . . . . . 75 | 6.4.4. SEARCH Command . . . . . . . . . . . . . . . . . . . 75 | |||
| 6.4.5. FETCH Command . . . . . . . . . . . . . . . . . . . . 87 | 6.4.5. FETCH Command . . . . . . . . . . . . . . . . . . . . 87 | |||
| 6.4.6. STORE Command . . . . . . . . . . . . . . . . . . . . 91 | 6.4.6. STORE Command . . . . . . . . . . . . . . . . . . . . 92 | |||
| 6.4.7. COPY Command . . . . . . . . . . . . . . . . . . . . 93 | 6.4.7. COPY Command . . . . . . . . . . . . . . . . . . . . 93 | |||
| 6.4.8. MOVE Command . . . . . . . . . . . . . . . . . . . . 94 | 6.4.8. MOVE Command . . . . . . . . . . . . . . . . . . . . 94 | |||
| 6.4.9. UID Command . . . . . . . . . . . . . . . . . . . . . 95 | 6.4.9. UID Command . . . . . . . . . . . . . . . . . . . . . 96 | |||
| 6.5. Client Commands - Experimental/Expansion . . . . . . . . 97 | 6.5. Client Commands - Experimental/Expansion . . . . . . . . 97 | |||
| 6.5.1. X<atom> Command . . . . . . . . . . . . . . . . . . . 97 | 6.5.1. X<atom> Command . . . . . . . . . . . . . . . . . . . 97 | |||
| 7. Server Responses . . . . . . . . . . . . . . . . . . . . . . 98 | 7. Server Responses . . . . . . . . . . . . . . . . . . . . . . 98 | |||
| 7.1. Server Responses - Status Responses . . . . . . . . . . . 99 | 7.1. Server Responses - Status Responses . . . . . . . . . . . 99 | |||
| 7.1.1. OK Response . . . . . . . . . . . . . . . . . . . . . 107 | 7.1.1. OK Response . . . . . . . . . . . . . . . . . . . . . 107 | |||
| 7.1.2. NO Response . . . . . . . . . . . . . . . . . . . . . 107 | 7.1.2. NO Response . . . . . . . . . . . . . . . . . . . . . 108 | |||
| 7.1.3. BAD Response . . . . . . . . . . . . . . . . . . . . 108 | 7.1.3. BAD Response . . . . . . . . . . . . . . . . . . . . 108 | |||
| 7.1.4. PREAUTH Response . . . . . . . . . . . . . . . . . . 108 | 7.1.4. PREAUTH Response . . . . . . . . . . . . . . . . . . 108 | |||
| 7.1.5. BYE Response . . . . . . . . . . . . . . . . . . . . 108 | 7.1.5. BYE Response . . . . . . . . . . . . . . . . . . . . 109 | |||
| 7.2. Server Responses - Server and Mailbox Status . . . . . . 109 | 7.2. Server Responses - Server and Mailbox Status . . . . . . 109 | |||
| 7.2.1. The ENABLED Response . . . . . . . . . . . . . . . . 109 | 7.2.1. The ENABLED Response . . . . . . . . . . . . . . . . 110 | |||
| 7.2.2. CAPABILITY Response . . . . . . . . . . . . . . . . . 109 | 7.2.2. CAPABILITY Response . . . . . . . . . . . . . . . . . 110 | |||
| 7.2.3. LIST Response . . . . . . . . . . . . . . . . . . . . 110 | 7.2.3. LIST Response . . . . . . . . . . . . . . . . . . . . 111 | |||
| 7.2.4. NAMESPACE Response . . . . . . . . . . . . . . . . . 114 | 7.2.4. NAMESPACE Response . . . . . . . . . . . . . . . . . 115 | |||
| 7.2.5. STATUS Response . . . . . . . . . . . . . . . . . . . 115 | 7.2.5. STATUS Response . . . . . . . . . . . . . . . . . . . 115 | |||
| 7.2.6. ESEARCH Response . . . . . . . . . . . . . . . . . . 115 | 7.2.6. ESEARCH Response . . . . . . . . . . . . . . . . . . 115 | |||
| 7.2.7. FLAGS Response . . . . . . . . . . . . . . . . . . . 115 | 7.2.7. FLAGS Response . . . . . . . . . . . . . . . . . . . 116 | |||
| 7.3. Server Responses - Mailbox Size . . . . . . . . . . . . . 116 | 7.3. Server Responses - Mailbox Size . . . . . . . . . . . . . 116 | |||
| 7.3.1. EXISTS Response . . . . . . . . . . . . . . . . . . . 116 | 7.3.1. EXISTS Response . . . . . . . . . . . . . . . . . . . 116 | |||
| 7.4. Server Responses - Message Status . . . . . . . . . . . . 116 | 7.4. Server Responses - Message Status . . . . . . . . . . . . 117 | |||
| 7.4.1. EXPUNGE Response . . . . . . . . . . . . . . . . . . 116 | 7.4.1. EXPUNGE Response . . . . . . . . . . . . . . . . . . 117 | |||
| 7.4.2. FETCH Response . . . . . . . . . . . . . . . . . . . 117 | 7.4.2. FETCH Response . . . . . . . . . . . . . . . . . . . 118 | |||
| 7.5. Server Responses - Command Continuation Request . . . . . 123 | 7.5. Server Responses - Command Continuation Request . . . . . 124 | |||
| 8. Sample IMAP4rev2 connection . . . . . . . . . . . . . . . . . 124 | 8. Sample IMAP4rev2 connection . . . . . . . . . . . . . . . . . 124 | |||
| 9. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 125 | 9. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 125 | |||
| 10. Author's Note . . . . . . . . . . . . . . . . . . . . . . . . 142 | 10. Author's Note . . . . . . . . . . . . . . . . . . . . . . . . 143 | |||
| 11. Security Considerations . . . . . . . . . . . . . . . . . . . 142 | 11. Security Considerations . . . . . . . . . . . . . . . . . . . 143 | |||
| 11.1. STARTTLS Security Considerations . . . . . . . . . . . . 142 | 11.1. STARTTLS Security Considerations . . . . . . . . . . . . 143 | |||
| 11.2. COPYUID and APPENDUID response codes . . . . . . . . . . 143 | 11.2. COPYUID and APPENDUID response codes . . . . . . . . . . 144 | |||
| 11.3. LIST command and Other Users' namespace . . . . . . . . 143 | 11.3. LIST command and Other Users' namespace . . . . . . . . 144 | |||
| 11.4. Other Security Considerations . . . . . . . . . . . . . 143 | 11.4. Other Security Considerations . . . . . . . . . . . . . 144 | |||
| 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 144 | 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 145 | |||
| 12.1. Updates to IMAP4 Capabilities registry . . . . . . . . . 145 | 12.1. Updates to IMAP4 Capabilities registry . . . . . . . . . 145 | |||
| 12.2. GSSAPI/SASL service name . . . . . . . . . . . . . . . . 145 | 12.2. GSSAPI/SASL service name . . . . . . . . . . . . . . . . 146 | |||
| 12.3. LIST Selection Options, LIST Return Options, LIST | 12.3. LIST Selection Options, LIST Return Options, LIST | |||
| extended data items . . . . . . . . . . . . . . . . . . 145 | extended data items . . . . . . . . . . . . . . . . . . 146 | |||
| 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 145 | 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 146 | |||
| 13.1. Normative References . . . . . . . . . . . . . . . . . . 145 | 13.1. Normative References . . . . . . . . . . . . . . . . . . 146 | |||
| 13.2. Informative References (related protocols) . . . . . . . 149 | 13.2. Informative References (related protocols) . . . . . . . 149 | |||
| 13.3. Informative References (historical aspects of IMAP and | 13.3. Informative References (historical aspects of IMAP and | |||
| related protocols) . . . . . . . . . . . . . . . . . . . 150 | related protocols) . . . . . . . . . . . . . . . . . . . 151 | |||
| Appendix A. Backward compatibility with IMAP4rev1 . . . . . . . 151 | Appendix A. Backward compatibility with IMAP4rev1 . . . . . . . 152 | |||
| A.1. Mailbox International Naming Convention for compatibility | A.1. Mailbox International Naming Convention for compatibility | |||
| with IMAP4rev1 . . . . . . . . . . . . . . . . . . . . . 152 | with IMAP4rev1 . . . . . . . . . . . . . . . . . . . . . 152 | |||
| Appendix B. Backward compatibility with BINARY extension . . . . 153 | Appendix B. Backward compatibility with BINARY extension . . . . 154 | |||
| Appendix C. Backward compatibility with LIST-EXTENDED extension 153 | Appendix C. Backward compatibility with LIST-EXTENDED extension 154 | |||
| Appendix D. Changes from RFC 3501 / IMAP4rev1 . . . . . . . . . 154 | Appendix D. Changes from RFC 3501 / IMAP4rev1 . . . . . . . . . 154 | |||
| Appendix E. Acknowledgement . . . . . . . . . . . . . . . . . . 156 | Appendix E. Acknowledgement . . . . . . . . . . . . . . . . . . 157 | |||
| Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 | Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 162 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 162 | |||
| 1. How to Read This Document | 1. How to Read This Document | |||
| 1.1. Organization of This Document | 1.1. Organization of This Document | |||
| This document is written from the point of view of the implementor of | This document is written from the point of view of the implementor of | |||
| an IMAP4rev2 client or server. Beyond the protocol overview in | an IMAP4rev2 client or server. Beyond the protocol overview in | |||
| section 2, it is not optimized for someone trying to understand the | section 2, it is not optimized for someone trying to understand the | |||
| skipping to change at page 35, line 47 ¶ | skipping to change at page 35, line 47 ¶ | |||
| changes to deployed server responses (and thus benefit from ENABLE) | changes to deployed server responses (and thus benefit from ENABLE) | |||
| have a higher complexity cost than extensions that do not. | have a higher complexity cost than extensions that do not. | |||
| 6.3.2. SELECT Command | 6.3.2. SELECT Command | |||
| Arguments: mailbox name | Arguments: mailbox name | |||
| Responses: REQUIRED untagged responses: FLAGS, EXISTS | Responses: REQUIRED untagged responses: FLAGS, EXISTS | |||
| REQUIRED OK untagged responses: PERMANENTFLAGS, | REQUIRED OK untagged responses: PERMANENTFLAGS, | |||
| UIDNEXT, UIDVALIDITY | UIDNEXT, UIDVALIDITY | |||
| OPTIONAL untagged response: LIST | REQUIRED untagged response: LIST | |||
| Result: OK - select completed, now in selected state | Result: OK - select completed, now in selected state | |||
| NO - select failure, now in authenticated state: no | NO - select failure, now in authenticated state: no | |||
| such mailbox, can't access mailbox | such mailbox, can't access mailbox | |||
| BAD - command unknown or arguments invalid | BAD - command unknown or arguments invalid | |||
| The SELECT command selects a mailbox so that messages in the mailbox | The SELECT command selects a mailbox so that messages in the mailbox | |||
| can be accessed. Before returning an OK to the client, the server | can be accessed. Before returning an OK to the client, the server | |||
| MUST send the following untagged data to the client. (The order of | MUST send the following untagged data to the client. (The order of | |||
| individual responses is not important.) Note that earlier versions | individual responses is not important.) Note that earlier versions | |||
| of this protocol only required the FLAGS and EXISTS untagged data; | of this protocol (e.g. IMAP2bis) only required the FLAGS and EXISTS | |||
| consequently, client implementations SHOULD implement default | untagged data; consequently, client implementations SHOULD implement | |||
| behavior for missing data as discussed with the individual item. | default behavior for missing data as discussed with the individual | |||
| item. | ||||
| FLAGS Defined flags in the mailbox. See the description of the | FLAGS Defined flags in the mailbox. See the description of the | |||
| FLAGS response for more detail. | FLAGS response for more detail. | |||
| <n> EXISTS The number of messages in the mailbox. See the | <n> EXISTS The number of messages in the mailbox. See the | |||
| description of the EXISTS response for more detail. | description of the EXISTS response for more detail. | |||
| LIST If the server allows de-normalized UTF-8 mailbox names (see | LIST The server MUST return a LIST response with the mailbox name. | |||
| If the server allows de-normalized UTF-8 mailbox names (see | ||||
| Section 5.1) and the supplied mailbox name differs from the | Section 5.1) and the supplied mailbox name differs from the | |||
| normalized version, the server SHOULD return LIST with OLDNAME | normalized version, the server MUST return LIST with the OLDNAME | |||
| extended data item. See Section 6.3.9.7 for more details. | extended data item. See Section 6.3.9.7 for more details. | |||
| OK [PERMANENTFLAGS (<list of flags>)] A list of message flags that | OK [PERMANENTFLAGS (<list of flags>)] A list of message flags that | |||
| the client can change permanently. If this is missing, the client | the client can change permanently. If this is missing, the client | |||
| should assume that all flags can be changed permanently. | should assume that all flags can be changed permanently. | |||
| OK [UIDNEXT <n>] The next unique identifier value. Refer to | OK [UIDNEXT <n>] The next unique identifier value. Refer to | |||
| Section 2.3.1.1 for more information. If this is missing, the | Section 2.3.1.1 for more information. | |||
| client can not make any assumptions about the next unique | ||||
| identifier value. | ||||
| OK [UIDVALIDITY <n>] The unique identifier validity value. Refer to | OK [UIDVALIDITY <n>] The unique identifier validity value. Refer to | |||
| Section 2.3.1.1 for more information. If this is missing, the | Section 2.3.1.1 for more information. | |||
| server does not support unique identifiers. | ||||
| Only one mailbox can be selected at a time in a connection; | Only one mailbox can be selected at a time in a connection; | |||
| simultaneous access to multiple mailboxes requires multiple | simultaneous access to multiple mailboxes requires multiple | |||
| connections. The SELECT command automatically deselects any | connections. The SELECT command automatically deselects any | |||
| currently selected mailbox before attempting the new selection. | currently selected mailbox before attempting the new selection. | |||
| Consequently, if a mailbox is selected and a SELECT command that | Consequently, if a mailbox is selected and a SELECT command that | |||
| fails is attempted, no mailbox is selected. When deselecting a | fails is attempted, no mailbox is selected. When deselecting a | |||
| selected mailbox, the server MUST return an untagged OK response with | selected mailbox, the server MUST return an untagged OK response with | |||
| the "[CLOSED]" response code when the currently selected mailbox is | the "[CLOSED]" response code when the currently selected mailbox is | |||
| closed (see Paragraph 10). | closed (see Paragraph 10). | |||
| skipping to change at page 37, line 18 ¶ | skipping to change at page 37, line 17 ¶ | |||
| global) basis. Netnews messages marked in a server-based .newsrc | global) basis. Netnews messages marked in a server-based .newsrc | |||
| file are an example of such per-user permanent state that can be | file are an example of such per-user permanent state that can be | |||
| modified with read-only mailboxes. | modified with read-only mailboxes. | |||
| Example: C: A142 SELECT INBOX | Example: C: A142 SELECT INBOX | |||
| S: * 172 EXISTS | S: * 172 EXISTS | |||
| S: * OK [UIDVALIDITY 3857529045] UIDs valid | S: * OK [UIDVALIDITY 3857529045] UIDs valid | |||
| S: * OK [UIDNEXT 4392] Predicted next UID | S: * OK [UIDNEXT 4392] Predicted next UID | |||
| S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft) | S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft) | |||
| S: * OK [PERMANENTFLAGS (\Deleted \Seen \*)] Limited | S: * OK [PERMANENTFLAGS (\Deleted \Seen \*)] Limited | |||
| S: * LIST () "/" INBOX | ||||
| S: A142 OK [READ-WRITE] SELECT completed | S: A142 OK [READ-WRITE] SELECT completed | |||
| Example: C: A142 SELECT INBOX | Example: C: A142 SELECT INBOX | |||
| S: * 172 EXISTS | S: * 172 EXISTS | |||
| S: * OK [UIDVALIDITY 3857529045] UIDs valid | S: * OK [UIDVALIDITY 3857529045] UIDs valid | |||
| S: * OK [UIDNEXT 4392] Predicted next UID | S: * OK [UIDNEXT 4392] Predicted next UID | |||
| S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft) | S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft) | |||
| S: * OK [PERMANENTFLAGS (\Deleted \Seen \*)] Limited | S: * OK [PERMANENTFLAGS (\Deleted \Seen \*)] Limited | |||
| S: A142 OK [READ-WRITE] SELECT completed | S: A142 OK [READ-WRITE] SELECT completed | |||
| [...some time later...] | [...some time later...] | |||
| C: A143 SELECT Drafts | C: A143 SELECT Drafts | |||
| S: * OK [CLOSED] Previous mailbox is now closed | S: * OK [CLOSED] Previous mailbox is now closed | |||
| S: * 5 EXISTS | S: * 5 EXISTS | |||
| S: * OK [UIDVALIDITY 9877410381] UIDs valid | S: * OK [UIDVALIDITY 9877410381] UIDs valid | |||
| S: * OK [UIDNEXT 102] Predicted next UID | S: * OK [UIDNEXT 102] Predicted next UID | |||
| S: * LIST () "/" Drafts | ||||
| S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft) | S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft) | |||
| S: * OK [PERMANENTFLAGS (\Deleted \Seen \Answered | S: * OK [PERMANENTFLAGS (\Deleted \Seen \Answered | |||
| \Flagged \Draft \*)] System flags and keywords allowed | \Flagged \Draft \*)] System flags and keywords allowed | |||
| S: A143 OK [READ-WRITE] SELECT completed | S: A143 OK [READ-WRITE] SELECT completed | |||
| Note that IMAP4rev1 compliant servers can also send the untagged | Note that IMAP4rev1 compliant servers can also send the untagged | |||
| RECENT response which was deprecated in IMAP4rev2. E.g. "* 0 | RECENT response which was deprecated in IMAP4rev2. E.g. "* 0 | |||
| RECENT". Pure IMAP4rev2 clients are advised to ignore the untagged | RECENT". Pure IMAP4rev2 clients are advised to ignore the untagged | |||
| RECENT response. | RECENT response. | |||
| 6.3.3. EXAMINE Command | 6.3.3. EXAMINE Command | |||
| Arguments: mailbox name | Arguments: mailbox name | |||
| Responses: REQUIRED untagged responses: FLAGS, EXISTS | Responses: REQUIRED untagged responses: FLAGS, EXISTS | |||
| REQUIRED OK untagged responses: PERMANENTFLAGS, | REQUIRED OK untagged responses: PERMANENTFLAGS, | |||
| UIDNEXT, UIDVALIDITY | UIDNEXT, UIDVALIDITY | |||
| OPTIONAL untagged response: LIST | REQUIRED untagged response: LIST | |||
| Result: OK - examine completed, now in selected state | Result: OK - examine completed, now in selected state | |||
| NO - examine failure, now in authenticated state: no | NO - examine failure, now in authenticated state: no | |||
| such mailbox, can't access mailbox BAD - command unknown | such mailbox, can't access mailbox BAD - command unknown | |||
| or arguments invalid | or arguments invalid | |||
| The EXAMINE command is identical to SELECT and returns the same | The EXAMINE command is identical to SELECT and returns the same | |||
| output; however, the selected mailbox is identified as read-only. No | output; however, the selected mailbox is identified as read-only. No | |||
| changes to the permanent state of the mailbox, including per-user | changes to the permanent state of the mailbox, including per-user | |||
| state, are permitted. | state, are permitted. | |||
| The text of the tagged OK response to the EXAMINE command MUST begin | The text of the tagged OK response to the EXAMINE command MUST begin | |||
| with the "[READ-ONLY]" response code. | with the "[READ-ONLY]" response code. | |||
| Example: C: A932 EXAMINE blurdybloop | Example: C: A932 EXAMINE blurdybloop | |||
| S: * 17 EXISTS | S: * 17 EXISTS | |||
| S: * OK [UIDVALIDITY 3857529045] UIDs valid | S: * OK [UIDVALIDITY 3857529045] UIDs valid | |||
| S: * OK [UIDNEXT 4392] Predicted next UID | S: * OK [UIDNEXT 4392] Predicted next UID | |||
| S: * LIST () "/" blurdybloop | ||||
| S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft) | S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft) | |||
| S: * OK [PERMANENTFLAGS ()] No permanent flags permitted | S: * OK [PERMANENTFLAGS ()] No permanent flags permitted | |||
| S: A932 OK [READ-ONLY] EXAMINE completed | S: A932 OK [READ-ONLY] EXAMINE completed | |||
| 6.3.4. CREATE Command | 6.3.4. CREATE Command | |||
| Arguments: mailbox name | Arguments: mailbox name | |||
| Responses: OPTIONAL untagged response: LIST | Responses: OPTIONAL untagged response: LIST | |||
| skipping to change at page 40, line 38 ¶ | skipping to change at page 40, line 38 ¶ | |||
| If the server returns OK response, all messages in that mailbox are | If the server returns OK response, all messages in that mailbox are | |||
| removed by the DELETE command. | removed by the DELETE command. | |||
| The value of the highest-used unique identifier of the deleted | The value of the highest-used unique identifier of the deleted | |||
| mailbox MUST be preserved so that a new mailbox created with the same | mailbox MUST be preserved so that a new mailbox created with the same | |||
| name will not reuse the identifiers of the former incarnation, UNLESS | name will not reuse the identifiers of the former incarnation, UNLESS | |||
| the new incarnation has a different unique identifier validity value. | the new incarnation has a different unique identifier validity value. | |||
| See the description of the UID command for more detail. | See the description of the UID command for more detail. | |||
| If the server decides to convert (normalize) the mailbox name, it | ||||
| SHOULD return an untagged LIST with the "\NonExistent" attribute and | ||||
| OLDNAME extended data item, with the OLDNAME value being the supplied | ||||
| mailbox name and the name parameter being the normalized mailbox | ||||
| name. (See Section 6.3.9.7 for more details.) | ||||
| Mailboxes deleted in one IMAP session MAY be announced to other IMAP | Mailboxes deleted in one IMAP session MAY be announced to other IMAP | |||
| sessions using unsolicited LIST response, containing the | sessions using unsolicited LIST response, containing the | |||
| "\NonExistent" attribute. | "\NonExistent" attribute. | |||
| Examples: C: A682 LIST "" * | Examples: C: A682 LIST "" * | |||
| S: * LIST () "/" blurdybloop | S: * LIST () "/" blurdybloop | |||
| S: * LIST (\Noselect) "/" foo | S: * LIST (\Noselect) "/" foo | |||
| S: * LIST () "/" foo/bar | S: * LIST () "/" foo/bar | |||
| S: A682 OK LIST completed | S: A682 OK LIST completed | |||
| C: A683 DELETE blurdybloop | C: A683 DELETE blurdybloop | |||
| skipping to change at page 68, line 44 ¶ | skipping to change at page 68, line 44 ¶ | |||
| S: * STATUS blurdybloop (MESSAGES 231 UIDNEXT 44292) | S: * STATUS blurdybloop (MESSAGES 231 UIDNEXT 44292) | |||
| S: A042 OK STATUS completed | S: A042 OK STATUS completed | |||
| 6.3.12. APPEND Command | 6.3.12. APPEND Command | |||
| Arguments: mailbox name | Arguments: mailbox name | |||
| OPTIONAL flag parenthesized list | OPTIONAL flag parenthesized list | |||
| OPTIONAL date/time string | OPTIONAL date/time string | |||
| message literal | message literal | |||
| Responses: no specific responses for this command | Responses: OPTIONAL untagged response: LIST | |||
| Result: OK - append completed | Result: OK - append completed | |||
| NO - append error: can't append to that mailbox, error | NO - append error: can't append to that mailbox, error | |||
| in flags or date/time or message text | in flags or date/time or message text | |||
| BAD - command unknown or arguments invalid | BAD - command unknown or arguments invalid | |||
| The APPEND command appends the literal argument as a new message to | The APPEND command appends the literal argument as a new message to | |||
| the end of the specified destination mailbox. This argument SHOULD | the end of the specified destination mailbox. This argument SHOULD | |||
| be in the format of an [RFC-5322] or [I18N-HDRS] message. 8-bit | be in the format of an [RFC-5322] or [I18N-HDRS] message. 8-bit | |||
| characters are permitted in the message. A server implementation | characters are permitted in the message. A server implementation | |||
| skipping to change at page 69, line 37 ¶ | skipping to change at page 69, line 37 ¶ | |||
| If the destination mailbox does not exist, a server MUST return an | If the destination mailbox does not exist, a server MUST return an | |||
| error, and MUST NOT automatically create the mailbox. Unless it is | error, and MUST NOT automatically create the mailbox. Unless it is | |||
| certain that the destination mailbox can not be created, the server | certain that the destination mailbox can not be created, the server | |||
| MUST send the response code "[TRYCREATE]" as the prefix of the text | MUST send the response code "[TRYCREATE]" as the prefix of the text | |||
| of the tagged NO response. This gives a hint to the client that it | of the tagged NO response. This gives a hint to the client that it | |||
| can attempt a CREATE command and retry the APPEND if the CREATE is | can attempt a CREATE command and retry the APPEND if the CREATE is | |||
| successful. | successful. | |||
| On successful completion of an APPEND, the server SHOULD return an | On successful completion of an APPEND, the server SHOULD return an | |||
| APPENDUID response code. | APPENDUID response code (see Section 7.1). | |||
| In the case of a mailbox that has permissions set so that the client | In the case of a mailbox that has permissions set so that the client | |||
| can APPEND to the mailbox, but not SELECT or EXAMINE it, the server | can APPEND to the mailbox, but not SELECT or EXAMINE it, the server | |||
| SHOULD NOT send an APPENDUID response code as it would disclose | SHOULD NOT send an APPENDUID response code as it would disclose | |||
| information about the mailbox. | information about the mailbox. | |||
| In the case of a mailbox that has UIDNOTSTICKY status (see | In the case of a mailbox that has UIDNOTSTICKY status (see | |||
| UIDNOTSTICKY response code definition), the server MAY omit the | Section 7.1), the server MAY omit the APPENDUID response code as it | |||
| APPENDUID response code as it is not meaningful. | is not meaningful. | |||
| If the server does not return the APPENDUID response codes, the | If the server does not return the APPENDUID response codes, the | |||
| client can discover this information by selecting the destination | client can discover this information by selecting the destination | |||
| mailbox. The location of messages placed in the destination mailbox | mailbox. The location of messages placed in the destination mailbox | |||
| by APPEND can be determined by using FETCH and/or SEARCH commands | by APPEND can be determined by using FETCH and/or SEARCH commands | |||
| (e.g., for Message-ID or some unique marker placed in the message in | (e.g., for Message-ID or some unique marker placed in the message in | |||
| an APPEND). | an APPEND). | |||
| If the mailbox is currently selected, the normal new message actions | If the mailbox is currently selected, the normal new message actions | |||
| SHOULD occur. Specifically, the server SHOULD notify the client | SHOULD occur. Specifically, the server SHOULD notify the client | |||
| immediately via an untagged EXISTS response. If the server does not | immediately via an untagged EXISTS response. If the server does not | |||
| do so, the client MAY issue a NOOP command after one or more APPEND | do so, the client MAY issue a NOOP command after one or more APPEND | |||
| commands. | commands. | |||
| If the server decides to convert (normalize) the mailbox name, it | ||||
| SHOULD return an untagged LIST with OLDNAME extended data item, with | ||||
| the OLDNAME value being the supplied mailbox name and the name | ||||
| parameter being the normalized mailbox name. (See Section 6.3.9.7 | ||||
| for more details.) | ||||
| Example: C: A003 APPEND saved-messages (\Seen) {310} | Example: C: A003 APPEND saved-messages (\Seen) {310} | |||
| S: + Ready for literal data | S: + Ready for literal data | |||
| C: Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST) | C: Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST) | |||
| C: From: Fred Foobar <foobar@Blurdybloop.COM> | C: From: Fred Foobar <foobar@Blurdybloop.COM> | |||
| C: Subject: afternoon meeting | C: Subject: afternoon meeting | |||
| C: To: mooch@owatagu.siam.edu | C: To: mooch@owatagu.siam.edu | |||
| C: Message-Id: <B27397-0100000@Blurdybloop.COM> | C: Message-Id: <B27397-0100000@Blurdybloop.COM> | |||
| C: MIME-Version: 1.0 | C: MIME-Version: 1.0 | |||
| C: Content-Type: TEXT/PLAIN; CHARSET=US-ASCII | C: Content-Type: TEXT/PLAIN; CHARSET=US-ASCII | |||
| C: | C: | |||
| skipping to change at page 71, line 30 ¶ | skipping to change at page 71, line 30 ¶ | |||
| S: A005 OK No matching messages, so nothing copied | S: A005 OK No matching messages, so nothing copied | |||
| C: A006 COPY 2 funny | C: A006 COPY 2 funny | |||
| S: A006 OK Done | S: A006 OK Done | |||
| C: A007 SELECT funny | C: A007 SELECT funny | |||
| S: * 1 EXISTS | S: * 1 EXISTS | |||
| S: * OK [UIDVALIDITY 3857529045] Validity session-only | S: * OK [UIDVALIDITY 3857529045] Validity session-only | |||
| S: * OK [UIDNEXT 2] Predicted next UID | S: * OK [UIDNEXT 2] Predicted next UID | |||
| S: * NO [UIDNOTSTICKY] Non-persistent UIDs | S: * NO [UIDNOTSTICKY] Non-persistent UIDs | |||
| S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft) | S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft) | |||
| S: * OK [PERMANENTFLAGS (\Deleted \Seen)] Limited | S: * OK [PERMANENTFLAGS (\Deleted \Seen)] Limited | |||
| S: * LIST () "." funny | ||||
| S: A007 OK [READ-WRITE] SELECT completed | S: A007 OK [READ-WRITE] SELECT completed | |||
| In this example, A003 and A004 demonstrate successful appending and | In this example, A003 and A004 demonstrate successful appending and | |||
| copying to a mailbox that returns the UIDs assigned to the messages. | copying to a mailbox that returns the UIDs assigned to the messages. | |||
| A005 is an example in which no messages were copied; this is because | A005 is an example in which no messages were copied; this is because | |||
| in A003, we see that message 2 had UID 304, and message 3 had UID | in A003, we see that message 2 had UID 304, and message 3 had UID | |||
| 319; therefore, UIDs 305 through 310 do not exist (refer to | 319; therefore, UIDs 305 through 310 do not exist (refer to | |||
| Section 2.3.1.1 for further explanation). A006 is an example of a | Section 2.3.1.1 for further explanation). A006 is an example of a | |||
| message being copied that did not return a COPYUID; and, as expected, | message being copied that did not return a COPYUID; and, as expected, | |||
| A007 shows that the mail store containing that mailbox does not | A007 shows that the mail store containing that mailbox does not | |||
| skipping to change at page 73, line 10 ¶ | skipping to change at page 73, line 10 ¶ | |||
| of that, clients using IDLE are advised to terminate the IDLE and re- | of that, clients using IDLE are advised to terminate the IDLE and re- | |||
| issue it at least every 29 minutes to avoid being logged off. This | issue it at least every 29 minutes to avoid being logged off. This | |||
| still allows a client to receive immediate mailbox updates even | still allows a client to receive immediate mailbox updates even | |||
| though it need only "poll" at half hour intervals. | though it need only "poll" at half hour intervals. | |||
| Example: C: A001 SELECT INBOX | Example: C: A001 SELECT INBOX | |||
| S: * FLAGS (\Deleted \Seen \Flagged) | S: * FLAGS (\Deleted \Seen \Flagged) | |||
| S: * OK [PERMANENTFLAGS (\Deleted \Seen \Flagged)] Limited | S: * OK [PERMANENTFLAGS (\Deleted \Seen \Flagged)] Limited | |||
| S: * 3 EXISTS | S: * 3 EXISTS | |||
| S: * OK [UIDVALIDITY 1] | S: * OK [UIDVALIDITY 1] | |||
| S: * LIST () "/" INBOX | ||||
| S: A001 OK [READ-WRITE] SELECT completed | S: A001 OK [READ-WRITE] SELECT completed | |||
| C: A002 IDLE | C: A002 IDLE | |||
| S: + idling | S: + idling | |||
| ...time passes; new mail arrives... | ...time passes; new mail arrives... | |||
| S: * 4 EXISTS | S: * 4 EXISTS | |||
| C: DONE | C: DONE | |||
| S: A002 OK IDLE terminated | S: A002 OK IDLE terminated | |||
| ...another client expunges message 2 now... | ...another client expunges message 2 now... | |||
| C: A003 FETCH 4 ALL | C: A003 FETCH 4 ALL | |||
| S: * 4 FETCH (...) | S: * 4 FETCH (...) | |||
| skipping to change at page 77, line 19 ¶ | skipping to change at page 77, line 26 ¶ | |||
| how it is affected by other commands executed, and how SAVE | how it is affected by other commands executed, and how SAVE | |||
| return option interacts with other return options. | return option interacts with other return options. | |||
| In absence of any other SEARCH result option, the SAVE result | In absence of any other SEARCH result option, the SAVE result | |||
| option also suppresses any ESEARCH response that would have | option also suppresses any ESEARCH response that would have | |||
| been otherwise returned by the SEARCH command. | 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. These extensions will have to describe how results from | response if used by themselves or in a combination. This guaranty | |||
| simplifies processing in IMAP4rev2 clients. Future SEARCH extensions | ||||
| that relax this restriction will have to describe how results from | ||||
| multiple ESEARCH responses are to be amalgamated. | multiple ESEARCH responses are to be amalgamated. | |||
| Searching criteria consist of one or more search keys. | Searching criteria consist of one or more search keys. | |||
| When multiple keys are specified, the result is the intersection (AND | When multiple keys are specified, the result is the intersection (AND | |||
| function) of all the messages that match those keys. For example, | function) of all the messages that match those keys. For example, | |||
| the criteria DELETED FROM "SMITH" SINCE 1-Feb-1994 refers to all | the criteria DELETED FROM "SMITH" SINCE 1-Feb-1994 refers to all | |||
| deleted messages from Smith with INTERNALDATE greater than February | deleted messages from Smith with INTERNALDATE greater than February | |||
| 1, 1994. A search key can also be a parenthesized list of one or | 1, 1994. A search key can also be a parenthesized list of one or | |||
| more search keys (e.g., for use with the OR and NOT keys). | more search keys (e.g., for use with the OR and NOT keys). | |||
| skipping to change at page 88, line 30 ¶ | skipping to change at page 88, line 30 ¶ | |||
| items, and can be used instead of data items. A macro must be used | items, and can be used instead of data items. A macro must be used | |||
| by itself, and not in conjunction with other macros or data items. | by itself, and not in conjunction with other macros or data items. | |||
| ALL Macro equivalent to: (FLAGS INTERNALDATE RFC822.SIZE ENVELOPE) | ALL Macro equivalent to: (FLAGS INTERNALDATE RFC822.SIZE ENVELOPE) | |||
| FAST Macro equivalent to: (FLAGS INTERNALDATE RFC822.SIZE) | FAST Macro equivalent to: (FLAGS INTERNALDATE RFC822.SIZE) | |||
| FULL Macro equivalent to: (FLAGS INTERNALDATE RFC822.SIZE ENVELOPE | FULL Macro equivalent to: (FLAGS INTERNALDATE RFC822.SIZE ENVELOPE | |||
| BODY) | BODY) | |||
| Several data items reference "section" or "section-binary". See | ||||
| Section 6.4.5.1 for their detailed definition. | ||||
| The currently defined data items that can be fetched are: | The currently defined data items that can be fetched are: | |||
| BINARY[<section-binary>]<<partial>> | BINARY[<section-binary>]<<partial>> | |||
| Requests that the specified section be transmitted after | Requests that the specified section be transmitted after | |||
| performing Content-Transfer-Encoding-related decoding. | performing Content-Transfer-Encoding-related decoding. | |||
| The <partial> argument, if present, requests that a subset of | The <partial> argument, if present, requests that a subset of | |||
| the data be returned. The semantics of a partial FETCH BINARY | the data be returned. The semantics of a partial FETCH BINARY | |||
| command are the same as for a partial FETCH BODY command, with | command are the same as for a partial FETCH BODY command, with | |||
| skipping to change at page 89, line 4 ¶ | skipping to change at page 89, line 6 ¶ | |||
| Note that this data item can only be requested for leaf (i.e. | Note that this data item can only be requested for leaf (i.e. | |||
| non multipart/*, non message/rfc822 and non message/global) | non multipart/*, non message/rfc822 and non message/global) | |||
| body parts. | body parts. | |||
| BINARY.PEEK[<section-binary>]<<partial>> An alternate form of | BINARY.PEEK[<section-binary>]<<partial>> An alternate form of | |||
| BINARY[<section-binary>] that does not implicitly set the \Seen | BINARY[<section-binary>] that does not implicitly set the \Seen | |||
| flag. | flag. | |||
| BINARY.SIZE[<section-binary>] | BINARY.SIZE[<section-binary>] | |||
| Requests the decoded size of the section (i.e., the size to | Requests the decoded size of the section (i.e., the size to | |||
| expect in response to the corresponding FETCH BINARY request). | expect in response to the corresponding FETCH BINARY request). | |||
| Note: client authors are cautioned that this might be an | Note: client authors are cautioned that this might be an | |||
| expensive operation for some server implementations. | expensive operation for some server implementations. | |||
| Needlessly issuing this request could result in degraded | Needlessly issuing this request could result in degraded | |||
| performance due to servers having to calculate the value every | performance due to servers having to calculate the value every | |||
| time the request is issued. | time the request is issued. | |||
| Note that this data item can only be requested for leaf (i.e. | Note that this data item can only be requested for leaf (i.e. | |||
| non multipart/*, non message/rfc822 and non message/global) | non multipart/*, non message/rfc822 and non message/global) | |||
| body parts. | body parts. | |||
| BODY Non-extensible form of BODYSTRUCTURE. | BODY Non-extensible form of BODYSTRUCTURE. | |||
| BODY[<section>]<<partial>> | BODY[<section>]<<partial>> | |||
| The text of a particular body section. The section | The text of a particular body section. | |||
| specification is a set of zero or more part specifiers | ||||
| delimited by periods. A part specifier is either a part number | ||||
| or one of the following: HEADER, HEADER.FIELDS, | ||||
| HEADER.FIELDS.NOT, MIME, and TEXT. An empty section | ||||
| specification refers to the entire message, including the | ||||
| header. | ||||
| Every message has at least one part number. Non-[MIME-IMB] | ||||
| messages, and non-multipart [MIME-IMB] messages with no | ||||
| encapsulated message, only have a part 1. | ||||
| Multipart messages are assigned consecutive part numbers, as | ||||
| they occur in the message. If a particular part is of type | ||||
| message or multipart, its parts MUST be indicated by a period | ||||
| followed by the part number within that nested multipart part. | ||||
| A part of type MESSAGE/RFC822 or MESSAGE/GLOBAL also has nested | ||||
| part numbers, referring to parts of the MESSAGE part's body. | ||||
| The HEADER, HEADER.FIELDS, HEADER.FIELDS.NOT, and TEXT part | ||||
| specifiers can be the sole part specifier or can be prefixed by | ||||
| one or more numeric part specifiers, provided that the numeric | ||||
| part specifier refers to a part of type MESSAGE/RFC822 or | ||||
| MESSAGE/GLOBAL. The MIME part specifier MUST be prefixed by | ||||
| one or more numeric part specifiers. | ||||
| The HEADER, HEADER.FIELDS, and HEADER.FIELDS.NOT part | ||||
| specifiers refer to the [RFC-5322] header of the message or of | ||||
| an encapsulated [MIME-IMT] MESSAGE/RFC822 or MESSAGE/GLOBAL | ||||
| message. HEADER.FIELDS and HEADER.FIELDS.NOT are followed by a | ||||
| list of field-name (as defined in [RFC-5322]) names, and return | ||||
| a subset of the header. The subset returned by HEADER.FIELDS | ||||
| contains only those header fields with a field-name that | ||||
| matches one of the names in the list; similarly, the subset | ||||
| returned by HEADER.FIELDS.NOT contains only the header fields | ||||
| with a non-matching field-name. The field-matching is ASCII | ||||
| range case-insensitive but otherwise exact. Subsetting does | ||||
| not exclude the [RFC-5322] delimiting blank line between the | ||||
| header and the body; the blank line is included in all header | ||||
| fetches, except in the case of a message which has no body and | ||||
| no blank line. | ||||
| The MIME part specifier refers to the [MIME-IMB] header for | ||||
| this part. | ||||
| The TEXT part specifier refers to the text body of the message, | ||||
| omitting the [RFC-5322] header. | ||||
| Here is an example of a complex message with some of its | ||||
| part specifiers: | ||||
| HEADER ([RFC-5322] header of the message) | ||||
| TEXT ([RFC-5322] text body of the message) MULTIPART/MIXED | ||||
| 1 TEXT/PLAIN | ||||
| 2 APPLICATION/OCTET-STREAM | ||||
| 3 MESSAGE/RFC822 | ||||
| 3.HEADER ([RFC-5322] header of the message) | ||||
| 3.TEXT ([RFC-5322] text body of the message) MULTIPART/MIXED | ||||
| 3.1 TEXT/PLAIN | ||||
| 3.2 APPLICATION/OCTET-STREAM | ||||
| 4 MULTIPART/MIXED | ||||
| 4.1 IMAGE/GIF | ||||
| 4.1.MIME ([MIME-IMB] header for the IMAGE/GIF) | ||||
| 4.2 MESSAGE/RFC822 | ||||
| 4.2.HEADER ([RFC-5322] header of the message) | ||||
| 4.2.TEXT ([RFC-5322] text body of the message) MULTIPART/MIXED | ||||
| 4.2.1 TEXT/PLAIN | ||||
| 4.2.2 MULTIPART/ALTERNATIVE | ||||
| 4.2.2.1 TEXT/PLAIN | ||||
| 4.2.2.2 TEXT/RICHTEXT | ||||
| It is possible to fetch a substring of the designated text. | It is possible to fetch a substring of the designated text. | |||
| This is done by appending an open angle bracket ("<"), the | This is done by appending an open angle bracket ("<"), the | |||
| octet position of the first desired octet, a period, the | octet position of the first desired octet, a period, the | |||
| maximum number of octets desired, and a close angle bracket | maximum number of octets desired, and a close angle bracket | |||
| (">") to the part specifier. If the starting octet is beyond | (">") to the part specifier. If the starting octet is beyond | |||
| the end of the text, an empty string is returned. | the end of the text, an empty string is returned. | |||
| Any partial fetch that attempts to read beyond the end of the | Any partial fetch that attempts to read beyond the end of the | |||
| text is truncated as appropriate. A partial fetch that starts | text is truncated as appropriate. A partial fetch that starts | |||
| skipping to change at page 91, line 26 ¶ | skipping to change at page 90, line 7 ¶ | |||
| subsetting the header. | subsetting the header. | |||
| The \Seen flag is implicitly set; if this causes the flags to | The \Seen flag is implicitly set; if this causes the flags to | |||
| change, they SHOULD be included as part of the FETCH responses. | change, they SHOULD be included as part of the FETCH responses. | |||
| BODY.PEEK[<section>]<<partial>> An alternate form of BODY[<section>] | BODY.PEEK[<section>]<<partial>> An alternate form of BODY[<section>] | |||
| that does not implicitly set the \Seen flag. | that does not implicitly set the \Seen flag. | |||
| BODYSTRUCTURE The [MIME-IMB] body structure of the message. This is | BODYSTRUCTURE The [MIME-IMB] body structure of the message. This is | |||
| computed by the server by parsing the [MIME-IMB] header fields in | computed by the server by parsing the [MIME-IMB] header fields in | |||
| the [RFC-5322] header and [MIME-IMB] headers. | the [RFC-5322] header and [MIME-IMB] headers. See Section 7.4.2 | |||
| for more details. | ||||
| ENVELOPE The envelope structure of the message. This is computed by | ENVELOPE The envelope structure of the message. This is computed by | |||
| the server by parsing the [RFC-5322] header into the component | the server by parsing the [RFC-5322] header into the component | |||
| parts, defaulting various fields as necessary. | parts, defaulting various fields as necessary. See Section 7.4.2 | |||
| for more details. | ||||
| FLAGS The flags that are set for this message. | FLAGS The flags that are set for this message. | |||
| INTERNALDATE The internal date of the message. | INTERNALDATE The internal date of the message. | |||
| RFC822.SIZE The [RFC-5322] size of the message. | RFC822.SIZE The [RFC-5322] size of the message. | |||
| UID The unique identifier for the message. | UID The unique identifier for the message. | |||
| Example: C: A654 FETCH 2:4 (FLAGS BODY[HEADER.FIELDS (DATE FROM)]) | Example: C: A654 FETCH 2:4 (FLAGS BODY[HEADER.FIELDS (DATE FROM)]) | |||
| S: * 2 FETCH .... | S: * 2 FETCH .... | |||
| S: * 3 FETCH .... | S: * 3 FETCH .... | |||
| S: * 4 FETCH .... | S: * 4 FETCH .... | |||
| S: A654 OK FETCH completed | S: A654 OK FETCH completed | |||
| 6.4.5.1. FETCH section specification | ||||
| Several FETCH data items reference "section" or "section-binary". | ||||
| The section specification is a set of zero or more part specifiers | ||||
| delimited by periods. A part specifier is either a part number or | ||||
| one of the following: HEADER, HEADER.FIELDS, HEADER.FIELDS.NOT, MIME, | ||||
| and TEXT. (Non numeric part specifiers have to be the last specifier | ||||
| in a section specification.) An empty section specification refers | ||||
| to the entire message, including the header. | ||||
| Every message has at least one part number. Non-[MIME-IMB] messages, | ||||
| and non-multipart [MIME-IMB] messages with no encapsulated message, | ||||
| only have a part 1. | ||||
| Multipart messages are assigned consecutive part numbers, as they | ||||
| occur in the message. If a particular part is of type message or | ||||
| multipart, its parts MUST be indicated by a period followed by the | ||||
| part number within that nested multipart part. | ||||
| A part of type MESSAGE/RFC822 or MESSAGE/GLOBAL also has nested part | ||||
| numbers, referring to parts of the MESSAGE part's body. | ||||
| The HEADER, HEADER.FIELDS, HEADER.FIELDS.NOT, and TEXT part | ||||
| specifiers can be the sole part specifier or can be prefixed by one | ||||
| or more numeric part specifiers, provided that the numeric part | ||||
| specifier refers to a part of type MESSAGE/RFC822 or MESSAGE/GLOBAL. | ||||
| The MIME part specifier MUST be prefixed by one or more numeric part | ||||
| specifiers. | ||||
| The HEADER, HEADER.FIELDS, and HEADER.FIELDS.NOT part specifiers | ||||
| refer to the [RFC-5322] header of the message or of an encapsulated | ||||
| [MIME-IMT] MESSAGE/RFC822 or MESSAGE/GLOBAL message. HEADER.FIELDS | ||||
| and HEADER.FIELDS.NOT are followed by a list of field-name (as | ||||
| defined in [RFC-5322]) names, and return a subset of the header. The | ||||
| subset returned by HEADER.FIELDS contains only those header fields | ||||
| with a field-name that matches one of the names in the list; | ||||
| similarly, the subset returned by HEADER.FIELDS.NOT contains only the | ||||
| header fields with a non-matching field-name. The field-matching is | ||||
| ASCII range case-insensitive but otherwise exact. Subsetting does | ||||
| not exclude the [RFC-5322] delimiting blank line between the header | ||||
| and the body; the blank line is included in all header fetches, | ||||
| except in the case of a message which has no body and no blank line. | ||||
| The MIME part specifier refers to the [MIME-IMB] header for this | ||||
| part. | ||||
| The TEXT part specifier refers to the text body of the message, | ||||
| omitting the [RFC-5322] header. | ||||
| Here is an example of a complex message with some of its part | ||||
| specifiers: | ||||
| HEADER ([RFC-5322] header of the message) | ||||
| TEXT ([RFC-5322] text body of the message) MULTIPART/MIXED | ||||
| 1 TEXT/PLAIN | ||||
| 2 APPLICATION/OCTET-STREAM | ||||
| 3 MESSAGE/RFC822 | ||||
| 3.HEADER ([RFC-5322] header of the message) | ||||
| 3.TEXT ([RFC-5322] text body of the message) MULTIPART/MIXED | ||||
| 3.1 TEXT/PLAIN | ||||
| 3.2 APPLICATION/OCTET-STREAM | ||||
| 4 MULTIPART/MIXED | ||||
| 4.1 IMAGE/GIF | ||||
| 4.1.MIME ([MIME-IMB] header for the IMAGE/GIF) | ||||
| 4.2 MESSAGE/RFC822 | ||||
| 4.2.HEADER ([RFC-5322] header of the message) | ||||
| 4.2.TEXT ([RFC-5322] text body of the message) MULTIPART/MIXED | ||||
| 4.2.1 TEXT/PLAIN | ||||
| 4.2.2 MULTIPART/ALTERNATIVE | ||||
| 4.2.2.1 TEXT/PLAIN | ||||
| 4.2.2.2 TEXT/RICHTEXT | ||||
| 6.4.6. STORE Command | 6.4.6. STORE Command | |||
| Arguments: sequence set | Arguments: sequence set | |||
| message data item name | message data item name | |||
| value for message data item | value for message data item | |||
| Responses: untagged responses: FETCH | Responses: untagged responses: FETCH | |||
| Result: OK - store completed | Result: OK - store completed | |||
| NO - store error: can't store that data | NO - store error: can't store that data | |||
| BAD - command unknown or arguments invalid | BAD - command unknown or arguments invalid | |||
| The STORE command alters data associated with a message in the | The STORE command alters data associated with a message in the | |||
| mailbox. Normally, STORE will return the updated value of the data | mailbox. Normally, STORE will return the updated value of the data | |||
| with an untagged FETCH response. A suffix of ".SILENT" in the data | with an untagged FETCH response. A suffix of ".SILENT" in the data | |||
| item name prevents the untagged FETCH, and the server SHOULD assume | item name prevents the untagged FETCH, and the server SHOULD assume | |||
| that the client has determined the updated value itself or does not | that the client has determined the updated value itself or does not | |||
| care about the updated value. | care about the updated value. | |||
| skipping to change at page 93, line 34 ¶ | skipping to change at page 93, line 40 ¶ | |||
| MUST send the response code "[TRYCREATE]" as the prefix of the text | MUST send the response code "[TRYCREATE]" as the prefix of the text | |||
| of the tagged NO response. This gives a hint to the client that it | of the tagged NO response. This gives a hint to the client that it | |||
| can attempt a CREATE command and retry the COPY if the CREATE is | can attempt a CREATE command and retry the COPY if the CREATE is | |||
| successful. | successful. | |||
| If the COPY command is unsuccessful for any reason, server | If the COPY command is unsuccessful for any reason, server | |||
| implementations MUST restore the destination mailbox to its state | implementations MUST restore the destination mailbox to its state | |||
| before the COPY attempt. | before the COPY attempt. | |||
| On successful completion of a COPY, the server SHOULD return a | On successful completion of a COPY, the server SHOULD return a | |||
| COPYUID response code. | COPYUID response code (see Section 7.1). | |||
| In the case of a mailbox that has permissions set so that the client | In the case of a mailbox that has permissions set so that the client | |||
| can COPY to the mailbox, but not SELECT or EXAMINE it, the server | can COPY to the mailbox, but not SELECT or EXAMINE it, the server | |||
| SHOULD NOT send an COPYUID response code as it would disclose | SHOULD NOT send an COPYUID response code as it would disclose | |||
| information about the mailbox. | information about the mailbox. | |||
| In the case of a mailbox that has UIDNOTSTICKY status (see the | In the case of a mailbox that has UIDNOTSTICKY status (see | |||
| UIDNOTSTICKY response code), the server MAY omit the COPYUID response | Section 7.1), the server MAY omit the COPYUID response code as it is | |||
| code as it is not meaningful. | not meaningful. | |||
| If the server does not return the COPYUID response code, the client | If the server does not return the COPYUID response code, the client | |||
| can discover this information by selecting the destination mailbox. | can discover this information by selecting the destination mailbox. | |||
| The location of messages placed in the destination mailbox by COPY | The location of messages placed in the destination mailbox by COPY | |||
| can be determined by using FETCH and/or SEARCH commands (e.g., for | can be determined by using FETCH and/or SEARCH commands (e.g., for | |||
| Message-ID). | Message-ID). | |||
| Example: C: A003 COPY 2:4 MEETING | Example: C: A003 COPY 2:4 MEETING | |||
| S: A003 OK COPY completed | S: A003 OK COPY completed | |||
| 6.4.8. MOVE Command | 6.4.8. MOVE Command | |||
| Arguments: sequence set | Arguments: sequence set | |||
| skipping to change at page 112, line 22 ¶ | skipping to change at page 112, line 37 ¶ | |||
| \Unmarked The mailbox does not contain any additional messages since | \Unmarked The mailbox does not contain any additional messages since | |||
| the last time the mailbox was selected. | the last time the mailbox was selected. | |||
| \Subscribed The mailbox name was subscribed to using the SUBSCRIBE | \Subscribed The mailbox name was subscribed to using the SUBSCRIBE | |||
| command. | command. | |||
| \Remote The mailbox is a remote mailbox. | \Remote The mailbox is a remote mailbox. | |||
| It is an error for the server to return both a \HasChildren and a | It is an error for the server to return both a \HasChildren and a | |||
| \HasNoChildren attribute in the same LIST response. | \HasNoChildren attribute in the same LIST response. A client that | |||
| encounters a LIST response with both \HasChildren and \HasNoChildren | ||||
| attributes present should act as if both are absent in the LIST | ||||
| response. | ||||
| Note: the \HasNoChildren attribute should not be confused with the | Note: the \HasNoChildren attribute should not be confused with the | |||
| \NoInferiors attribute, which indicates that no child mailboxes | \NoInferiors attribute, which indicates that no child mailboxes | |||
| exist now and none can be created in the future. | exist now and none can be created in the future. | |||
| If it is not feasible for the server to determine whether or not the | If it is not feasible for the server to determine whether or not the | |||
| mailbox is "interesting", the server SHOULD NOT send either \Marked | mailbox is "interesting", the server SHOULD NOT send either \Marked | |||
| or \Unmarked. The server MUST NOT send more than one of \Marked, | or \Unmarked. The server MUST NOT send more than one of \Marked, | |||
| \Unmarked, and \Noselect for a single mailbox, and MAY send none of | \Unmarked, and \Noselect for a single mailbox, and MAY send none of | |||
| these. | these. | |||
| skipping to change at page 122, line 35 ¶ | skipping to change at page 123, line 10 ¶ | |||
| are absent in the [RFC-5322] header, the corresponding member | are absent in the [RFC-5322] header, the corresponding member | |||
| of the envelope is NIL; if these header lines are present but | of the envelope is NIL; if these header lines are present but | |||
| empty the corresponding member of the envelope is the empty | empty the corresponding member of the envelope is the empty | |||
| string. | string. | |||
| Note: some servers may return a NIL envelope member in the | Note: some servers may return a NIL envelope member in the | |||
| "present but empty" case. Clients SHOULD treat NIL and | "present but empty" case. Clients SHOULD treat NIL and | |||
| empty string as identical. | empty string as identical. | |||
| Note: [RFC-5322] requires that all messages have a valid | Note: [RFC-5322] requires that all messages have a valid | |||
| Date header. Therefore, the date member in the envelope can | Date header. Therefore, for a well-formed message the date | |||
| not be NIL or the empty string. | member in the envelope can not be NIL or the empty string. | |||
| However it can be NIL for a malformed or a draft message. | ||||
| Note: [RFC-5322] requires that the In-Reply-To and Message- | Note: [RFC-5322] requires that the In-Reply-To and Message- | |||
| ID headers, if present, have non-empty content. Therefore, | ID headers, if present, have non-empty content. Therefore, | |||
| the in-reply-to and message-id members in the envelope can | for a well-formed message the in-reply-to and message-id | |||
| not be the empty string. | members in the envelope can not be the empty string. | |||
| However they can still be the empty string for a malformed | ||||
| message. | ||||
| If the From, To, Cc, and Bcc header lines are absent in the | If the From, To, Cc, and Bcc header lines are absent in the | |||
| [RFC-5322] header, or are present but empty, the corresponding | [RFC-5322] header, or are present but empty, the corresponding | |||
| member of the envelope is NIL. | member of the envelope is NIL. | |||
| If the Sender or Reply-To lines are absent in the [RFC-5322] | If the Sender or Reply-To lines are absent in the [RFC-5322] | |||
| header, or are present but empty, the server sets the | header, or are present but empty, the server sets the | |||
| corresponding member of the envelope to be the same value as | corresponding member of the envelope to be the same value as | |||
| the from member (the client is not expected to know to do | the from member (the client is not expected to know to do | |||
| this). | this). | |||
| Note: [RFC-5322] requires that all messages have a valid | Note: [RFC-5322] requires that all messages have a valid | |||
| From header. Therefore, the from, sender, and reply-to | From header. Therefore, for a well-formed message the from, | |||
| members in the envelope can not be NIL. | sender, and reply-to members in the envelope can not be NIL. | |||
| However they can be NIL for a malformed or a draft message. | ||||
| FLAGS A parenthesized list of flags that are set for this message. | FLAGS A parenthesized list of flags that are set for this message. | |||
| INTERNALDATE A string representing the internal date of the message. | INTERNALDATE A string representing the internal date of the message. | |||
| RFC822.SIZE A number expressing the [RFC-5322] size of the message. | RFC822.SIZE A number expressing the [RFC-5322] size of the message. | |||
| UID A number expressing the unique identifier of the message. | UID A number expressing the unique identifier of the message. | |||
| If the server chooses to send unsolicited FETCH responses, they MUST | If the server chooses to send unsolicited FETCH responses, they MUST | |||
| skipping to change at page 124, line 17 ¶ | skipping to change at page 125, line 12 ¶ | |||
| The following is a transcript of an IMAP4rev2 connection. A long | The following is a transcript of an IMAP4rev2 connection. A long | |||
| line in this sample is broken for editorial clarity. | line in this sample is broken for editorial clarity. | |||
| S: * OK IMAP4rev2 Service Ready | S: * OK IMAP4rev2 Service Ready | |||
| C: a001 login mrc secret | C: a001 login mrc secret | |||
| S: a001 OK LOGIN completed | S: a001 OK LOGIN completed | |||
| C: a002 select inbox | C: a002 select inbox | |||
| S: * 18 EXISTS | S: * 18 EXISTS | |||
| S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft) | S: * FLAGS (\Answered \Flagged \Deleted \Seen \Draft) | |||
| S: * OK [UIDVALIDITY 3857529045] UIDs valid | S: * OK [UIDVALIDITY 3857529045] UIDs valid | |||
| S: * LIST () "/" INBOX ("OLDNAME" ("inbox")) | ||||
| S: a002 OK [READ-WRITE] SELECT completed | S: a002 OK [READ-WRITE] SELECT completed | |||
| C: a003 fetch 12 full | C: a003 fetch 12 full | |||
| S: * 12 FETCH (FLAGS (\Seen) INTERNALDATE "17-Jul-1996 02:44:25 -0700" | S: * 12 FETCH (FLAGS (\Seen) INTERNALDATE "17-Jul-1996 02:44:25 -0700" | |||
| RFC822.SIZE 4286 ENVELOPE ("Wed, 17 Jul 1996 02:23:25 -0700 (PDT)" | RFC822.SIZE 4286 ENVELOPE ("Wed, 17 Jul 1996 02:23:25 -0700 (PDT)" | |||
| "IMAP4rev2 WG mtg summary and minutes" | "IMAP4rev2 WG mtg summary and minutes" | |||
| (("Terry Gray" NIL "gray" "cac.washington.edu")) | (("Terry Gray" NIL "gray" "cac.washington.edu")) | |||
| (("Terry Gray" NIL "gray" "cac.washington.edu")) | (("Terry Gray" NIL "gray" "cac.washington.edu")) | |||
| (("Terry Gray" NIL "gray" "cac.washington.edu")) | (("Terry Gray" NIL "gray" "cac.washington.edu")) | |||
| ((NIL NIL "imap" "cac.washington.edu")) | ((NIL NIL "imap" "cac.washington.edu")) | |||
| ((NIL NIL "minutes" "CNRI.Reston.VA.US") | ((NIL NIL "minutes" "CNRI.Reston.VA.US") | |||
| skipping to change at page 145, line 11 ¶ | skipping to change at page 146, line 4 ¶ | |||
| in the registry. | in the registry. | |||
| Additional IANA actions are specified in subsection of this section. | Additional IANA actions are specified in subsection of this section. | |||
| 12.1. Updates to IMAP4 Capabilities registry | 12.1. Updates to IMAP4 Capabilities registry | |||
| IMAP4 capabilities are registered by publishing a standards track or | IMAP4 capabilities are registered by publishing a standards track or | |||
| IESG approved informational or experimental RFC. The registry is | IESG approved informational or experimental RFC. The registry is | |||
| currently located at: https://www.iana.org/assignments/ | currently located at: https://www.iana.org/assignments/ | |||
| imap4-capabilities | imap4-capabilities | |||
| As this specification revises the AUTH= prefix, STARTTLS and | As this specification revises the AUTH= prefix, STARTTLS and | |||
| LOGINDISABLED extensions previously defined in [IMAP-TLS], IANA is | LOGINDISABLED extensions, IANA is requested to update registry | |||
| requested to update registry entries for these 3 extensions to point | entries for these 3 extensions to point to this document. | |||
| to this document. | ||||
| 12.2. GSSAPI/SASL service name | 12.2. GSSAPI/SASL service name | |||
| GSSAPI/Kerberos/SASL service names are registered by publishing a | GSSAPI/Kerberos/SASL service names are registered by publishing a | |||
| standards track or IESG approved experimental RFC. The registry is | standards track or IESG approved experimental RFC. The registry is | |||
| currently located at: https://www.iana.org/assignments/gssapi- | currently located at: https://www.iana.org/assignments/gssapi- | |||
| service-names | service-names | |||
| IANA is requested to update the "imap" service name previously | IANA is requested to update the "imap" service name previously | |||
| registered in RFC 3501, to point to this document. | registered in RFC 3501, to point to this document. | |||
| skipping to change at page 155, line 19 ¶ | skipping to change at page 156, line 5 ¶ | |||
| 3. SEARCH command now requires to return ESEARCH response (SEARCH | 3. SEARCH command now requires to return ESEARCH response (SEARCH | |||
| response is now deprecated). | response is now deprecated). | |||
| 4. Clarified which SEARCH keys has to use substring match and which | 4. Clarified which SEARCH keys has to use substring match and which | |||
| don't. | don't. | |||
| 5. Added CLOSED response code from RFC 7162. SELECT/EXAMINE when a | 5. Added CLOSED response code from RFC 7162. SELECT/EXAMINE when a | |||
| mailbox is already selected now require for the CLOSED response | mailbox is already selected now require for the CLOSED response | |||
| code to be returned. | code to be returned. | |||
| 6. Updated to use modern TLS-related recommendations as per RFC | 6. SELECT/EXAMINE are now required to return untagged LIST | |||
| response. | ||||
| 7. Updated to use modern TLS-related recommendations as per RFC | ||||
| 8314, RFC 7817, RFC 7525. | 8314, RFC 7817, RFC 7525. | |||
| 7. For future extensibility extended ABNF for tagged-ext-simple to | 8. For future extensibility extended ABNF for tagged-ext-simple to | |||
| allow for bare number64. | allow for bare number64. | |||
| 8. Added SHOULD level requirement on IMAP servers to support | 9. Added SHOULD level requirement on IMAP servers to support | |||
| $MDNSent, $Forwarded, $Junk, $NonJunk and $Phishing keywords. | $MDNSent, $Forwarded, $Junk, $NonJunk and $Phishing keywords. | |||
| 9. Added STATUS SIZE (RFC 8438) and STATUS DELETED. | 10. Added STATUS SIZE (RFC 8438) and STATUS DELETED. | |||
| 10. Mailbox names and message headers now allow for UTF-8. Support | 11. Mailbox names and message headers now allow for UTF-8. Support | |||
| for Modified UTF-7 in mailbox names is not required, unless | for Modified UTF-7 in mailbox names is not required, unless | |||
| compatibility with IMAP4rev1 is desired. | compatibility with IMAP4rev1 is desired. | |||
| 11. UNSEEN response code on SELECT/EXAMINE is now deprecated. | 12. UNSEEN response code on SELECT/EXAMINE is now deprecated. | |||
| 12. RECENT response on SELECT/EXAMINE, \Recent flag, RECENT STATUS, | 13. RECENT response on SELECT/EXAMINE, \Recent flag, RECENT STATUS, | |||
| SEARCH NEW items are now deprecated. | SEARCH NEW items are now deprecated. | |||
| 13. Clarified that the server doesn't need to send a new | 14. Clarified that the server doesn't need to send a new | |||
| PERMANENTFLAGS response code when a new keyword was successfully | PERMANENTFLAGS response code when a new keyword was successfully | |||
| added and the server advertised \* earlier for the same mailbox. | added and the server advertised \* earlier for the same mailbox. | |||
| 14. Removed the CHECK command. Clients should use NOOP instead. | 15. Removed the CHECK command. Clients should use NOOP instead. | |||
| 15. RFC822, RFC822.HEADER and RFC822.TEXT FETCH data items were | 16. RFC822, RFC822.HEADER and RFC822.TEXT FETCH data items were | |||
| deprecated. Clients should use the corresponding BODY[] | deprecated. Clients should use the corresponding BODY[] | |||
| variants instead. | variants instead. | |||
| 16. Replaced DIGEST-MD5 SASL mechanism with SCRAM-SHA-256. DIGEST- | 17. Replaced DIGEST-MD5 SASL mechanism with SCRAM-SHA-256. DIGEST- | |||
| MD5 was deprecated. | MD5 was deprecated. | |||
| 17. LSUB command was deprecated. Clients should use LIST | 18. LSUB command was deprecated. Clients should use LIST | |||
| (SUBSCRIBED) instead. | (SUBSCRIBED) instead. | |||
| 18. resp-text ABNF non terminal was updated to allow for empty text. | 19. resp-text ABNF non terminal was updated to allow for empty text. | |||
| 19. IDLE command can now return updates not related to the currently | 20. IDLE command can now return updates not related to the currently | |||
| selected mailbox state. | selected mailbox state. | |||
| 20. All unsolicited FETCH updates are required to include UID. | 21. All unsolicited FETCH updates are required to include UID. | |||
| 21. Clarified that client implementations MUST ignore response codes | 22. Clarified that client implementations MUST ignore response codes | |||
| that they do not recognize. (Change from a SHOULD to a MUST.) | that they do not recognize. (Change from a SHOULD to a MUST.) | |||
| 22. After ENABLE IMAP4rev2 human readable response text can include | 23. After ENABLE IMAP4rev2 human readable response text can include | |||
| non ASCII encoded in UTF-8. | non ASCII encoded in UTF-8. | |||
| Appendix E. Acknowledgement | Appendix E. Acknowledgement | |||
| Earlier versions of this document were edited by Mark Crispin. | Earlier versions of this document were edited by Mark Crispin. | |||
| Sadly, he is no longer available to help with this work. Editors of | Sadly, he is no longer available to help with this work. Editors of | |||
| this revisions are hoping that Mark would have approved. | this revisions are hoping that Mark would have approved. | |||
| Chris Newman has contributed text on I18N and use of UTF-8 in | Chris Newman has contributed text on I18N and use of UTF-8 in | |||
| messages and mailbox names. | messages and mailbox names. | |||
| skipping to change at page 157, line 30 ¶ | skipping to change at page 158, line 10 ¶ | |||
| -FLAGS.SILENT <flag list> 92 | -FLAGS.SILENT <flag list> 92 | |||
| A | A | |||
| ALERT (response code) 99 | ALERT (response code) 99 | |||
| ALL (fetch item) 88 | ALL (fetch item) 88 | |||
| ALL (search key) 78 | ALL (search key) 78 | |||
| ALL (search result option) 76 | ALL (search result option) 76 | |||
| ALREADYEXISTS (response code) 99 | ALREADYEXISTS (response code) 99 | |||
| ANSWERED (search key) 78 | ANSWERED (search key) 78 | |||
| APPEND (command) 68 | APPEND (command) 68 | |||
| APPENDUID (response code) 99 | APPENDUID (response code) 100 | |||
| AUTHENTICATE (command) 29 | AUTHENTICATE (command) 29 | |||
| AUTHENTICATIONFAILED (response code) 100 | AUTHENTICATIONFAILED (response code) 100 | |||
| AUTHORIZATIONFAILED (response code) 100 | AUTHORIZATIONFAILED (response code) 101 | |||
| B | B | |||
| BAD (response) 108 | BAD (response) 108 | |||
| BADCHARSET (response code) 101 | BADCHARSET (response code) 101 | |||
| BCC <string> (search key) 78 | BCC <string> (search key) 78 | |||
| BEFORE <date> (search key) 78 | BEFORE <date> (search key) 78 | |||
| BINARY.PEEK[<section-binary>]<<partial>> (fetch item) 88 | BINARY.PEEK[<section-binary>]<<partial>> (fetch item) 88 | |||
| BINARY.SIZE[<section-binary>] (fetch item) 88 | BINARY.SIZE[<section-binary>] (fetch item) 89 | |||
| BINARY.SIZE[<section-binary>] (fetch result) 118 | BINARY.SIZE[<section-binary>] (fetch result) 118 | |||
| BINARY[<section-binary>]<<number>> (fetch result) 117 | BINARY[<section-binary>]<<number>> (fetch result) 118 | |||
| BINARY[<section-binary>]<<partial>> (fetch item) 88 | BINARY[<section-binary>]<<partial>> (fetch item) 88 | |||
| BODY (fetch item) 89 | BODY (fetch item) 89 | |||
| BODY (fetch result) 118 | BODY (fetch result) 119 | |||
| BODY <string> (search key) 78 | BODY <string> (search key) 78 | |||
| BODY.PEEK[<section>]<<partial>> (fetch item) 91 | BODY.PEEK[<section>]<<partial>> (fetch item) 89 | |||
| BODYSTRUCTURE (fetch item) 91 | BODYSTRUCTURE (fetch item) 90 | |||
| BODYSTRUCTURE (fetch result) 119 | BODYSTRUCTURE (fetch result) 119 | |||
| BODY[<section>]<<origin octet>> (fetch result) 118 | BODY[<section>]<<origin octet>> (fetch result) 119 | |||
| BODY[<section>]<<partial>> (fetch item) 89 | BODY[<section>]<<partial>> (fetch item) 89 | |||
| BYE (response) 108 | BYE (response) 109 | |||
| Body Structure (message attribute) 14 | Body Structure (message attribute) 14 | |||
| C | C | |||
| CANNOT (response code) 101 | CANNOT (response code) 101 | |||
| CAPABILITY (command) 25 | CAPABILITY (command) 25 | |||
| CAPABILITY (response code) 101 | CAPABILITY (response code) 101 | |||
| CAPABILITY (response) 109 | CAPABILITY (response) 110 | |||
| CC <string> (search key) 78 | CC <string> (search key) 78 | |||
| CLIENTBUG (response code) 101 | CLIENTBUG (response code) 101 | |||
| CLOSE (command) 73 | CLOSE (command) 74 | |||
| CLOSED (response code) 102 | CLOSED (response code) 102 | |||
| CONTACTADMIN (response code) 102 | CONTACTADMIN (response code) 102 | |||
| COPY (command) 93 | COPY (command) 93 | |||
| COPYUID (response code) 102 | COPYUID (response code) 102 | |||
| CORRUPTION (response code) 102 | CORRUPTION (response code) 103 | |||
| COUNT (search result option) 76 | COUNT (search result option) 76 | |||
| CREATE (command) 38 | CREATE (command) 38 | |||
| D | D | |||
| DELETE (command) 39 | DELETE (command) 39 | |||
| DELETED (search key) 78 | DELETED (search key) 78 | |||
| DELETED (status item) 68 | DELETED (status item) 68 | |||
| DRAFT (search key) 78 | DRAFT (search key) 78 | |||
| E | E | |||
| ENABLE (command) 33 | ENABLE (command) 33 | |||
| ENVELOPE (fetch item) 91 | ENVELOPE (fetch item) 90 | |||
| ENVELOPE (fetch result) 121 | ENVELOPE (fetch result) 122 | |||
| ESEARCH (response) 115 | ESEARCH (response) 115 | |||
| EXAMINE (command) 37 | EXAMINE (command) 37 | |||
| EXPIRED (response code) 103 | EXPIRED (response code) 103 | |||
| EXPUNGE (command) 74 | EXPUNGE (command) 75 | |||
| EXPUNGE (response) 116 | EXPUNGE (response) 117 | |||
| EXPUNGEISSUED (response code) 103 | EXPUNGEISSUED (response code) 103 | |||
| Envelope Structure (message attribute) 14 | Envelope Structure (message attribute) 14 | |||
| F | F | |||
| FAST (fetch item) 88 | FAST (fetch item) 88 | |||
| FETCH (command) 87 | FETCH (command) 87 | |||
| FETCH (response) 117 | FETCH (response) 118 | |||
| FLAGGED (search key) 78 | FLAGGED (search key) 78 | |||
| FLAGS (fetch item) 91 | FLAGS (fetch item) 90 | |||
| FLAGS (fetch result) 123 | FLAGS (fetch result) 123 | |||
| FLAGS (response) 115 | FLAGS (response) 116 | |||
| FLAGS <flag list> (store command data item) 92 | FLAGS <flag list> (store command data item) 92 | |||
| FLAGS.SILENT <flag list> (store command data item) 92 | FLAGS.SILENT <flag list> (store command data item) 92 | |||
| FROM <string> (search key) 78 | FROM <string> (search key) 79 | |||
| FULL (fetch item) 88 | FULL (fetch item) 88 | |||
| Flags (message attribute) 11 | Flags (message attribute) 11 | |||
| H | H | |||
| HASCHILDREN (response code) 103 | HASCHILDREN (response code) 103 | |||
| HEADER (part specifier) 89 | HEADER (part specifier) 90 | |||
| HEADER <field-name> <string> (search key) 78 | HEADER <field-name> <string> (search key) 79 | |||
| HEADER.FIELDS (part specifier) 89 | HEADER.FIELDS (part specifier) 90 | |||
| HEADER.FIELDS.NOT (part specifier) 89 | HEADER.FIELDS.NOT (part specifier) 90 | |||
| I | I | |||
| IDLE (command) 71 | IDLE (command) 71 | |||
| INTERNALDATE (fetch item) 91 | INTERNALDATE (fetch item) 90 | |||
| INTERNALDATE (fetch result) 123 | INTERNALDATE (fetch result) 123 | |||
| INUSE (response code) 103 | INUSE (response code) 104 | |||
| Internal Date (message attribute) 13 | Internal Date (message attribute) 13 | |||
| K | K | |||
| KEYWORD <flag> (search key) 79 | KEYWORD <flag> (search key) 79 | |||
| Keyword (type of flag) 12 | Keyword (type of flag) 12 | |||
| L | L | |||
| LARGER <n> (search key) 79 | LARGER <n> (search key) 79 | |||
| LIMIT (response code) 104 | LIMIT (response code) 104 | |||
| LIST (command) 44 | LIST (command) 44 | |||
| LIST (response) 110 | LIST (response) 111 | |||
| LOGOUT (command) 27 | LOGOUT (command) 27 | |||
| M | M | |||
| MAX (search result option) 76 | MAX (search result option) 76 | |||
| MAY (specification requirement term) 5 | MAY (specification requirement term) 5 | |||
| MESSAGES (status item) 68 | MESSAGES (status item) 68 | |||
| MIME (part specifier) 90 | MIME (part specifier) 91 | |||
| MIN (search result option) 76 | MIN (search result option) 76 | |||
| MOVE (command) 94 | MOVE (command) 94 | |||
| MUST (specification requirement term) 5 | MUST (specification requirement term) 5 | |||
| MUST NOT (specification requirement term) 5 | MUST NOT (specification requirement term) 5 | |||
| Message Sequence Number (message attribute) 11 | Message Sequence Number (message attribute) 11 | |||
| N | N | |||
| NAMESPACE (command) 62 | NAMESPACE (command) 62 | |||
| NAMESPACE (response) 114 | NAMESPACE (response) 115 | |||
| NO (response) 107 | NO (response) 108 | |||
| NONEXISTENT (response code) 104 | NONEXISTENT (response code) 104 | |||
| NOOP (command) 26 | NOOP (command) 26 | |||
| NOPERM (response code) 104 | NOPERM (response code) 104 | |||
| NOT <search-key> (search key) 79 | NOT <search-key> (search key) 79 | |||
| NOT RECOMMENDED (specification requirement term) 5 | NOT RECOMMENDED (specification requirement term) 5 | |||
| O | O | |||
| OK (response) 107 | OK (response) 107 | |||
| ON <date> (search key) 79 | ON <date> (search key) 79 | |||
| OPTIONAL (specification requirement term) 5 | OPTIONAL (specification requirement term) 5 | |||
| OR <search-key1> <search-key2> (search key) 79 | OR <search-key1> <search-key2> (search key) 79 | |||
| OVERQUOTA (response code) 104 | OVERQUOTA (response code) 104 | |||
| P | P | |||
| PARSE (response code) 104 | PARSE (response code) 105 | |||
| PERMANENTFLAGS (response code) 105 | PERMANENTFLAGS (response code) 105 | |||
| PREAUTH (response) 108 | PREAUTH (response) 108 | |||
| PRIVACYREQUIRED (response code) 105 | PRIVACYREQUIRED (response code) 105 | |||
| Permanent Flag (class of flag) 13 | Permanent Flag (class of flag) 13 | |||
| Predefined keywords 12 | Predefined keywords 12 | |||
| R | R | |||
| READ-ONLY (response code) 105 | READ-ONLY (response code) 106 | |||
| READ-WRITE (response code) 105 | READ-WRITE (response code) 106 | |||
| RECOMMENDED (specification requirement term) 5 | RECOMMENDED (specification requirement term) 5 | |||
| RENAME (command) 41 | RENAME (command) 41 | |||
| REQUIRED (specification requirement term) 5 | REQUIRED (specification requirement term) 5 | |||
| RFC822.SIZE (fetch item) 91 | RFC822.SIZE (fetch item) 90 | |||
| RFC822.SIZE (fetch result) 123 | RFC822.SIZE (fetch result) 123 | |||
| S | S | |||
| SAVE (search result option) 76 | SAVE (search result option) 76 | |||
| SEARCH (command) 75 | SEARCH (command) 75 | |||
| SEEN (search key) 79 | SEEN (search key) 79 | |||
| SELECT (command) 35 | SELECT (command) 35 | |||
| SENTBEFORE <date> (search key) 79 | SENTBEFORE <date> (search key) 79 | |||
| SENTON <date> (search key) 79 | SENTON <date> (search key) 79 | |||
| SENTSINCE <date> (search key) 79 | SENTSINCE <date> (search key) 79 | |||
| SERVERBUG (response code) 106 | SERVERBUG (response code) 106 | |||
| SHOULD (specification requirement term) 5 | SHOULD (specification requirement term) 5 | |||
| SHOULD NOT (specification requirement term) 5 | SHOULD NOT (specification requirement term) 5 | |||
| SINCE <date> (search key) 79 | SINCE <date> (search key) 79 | |||
| SIZE (status item) 68 | SIZE (status item) 68 | |||
| SMALLER <n> (search key) 79 | SMALLER <n> (search key) 79 | |||
| STARTTLS (command) 28 | STARTTLS (command) 28 | |||
| STATUS (command) 67 | STATUS (command) 67 | |||
| STATUS (response) 115 | STATUS (response) 115 | |||
| STORE (command) 91 | STORE (command) 92 | |||
| SUBJECT <string> (search key) 79 | SUBJECT <string> (search key) 80 | |||
| SUBSCRIBE (command) 43 | SUBSCRIBE (command) 43 | |||
| Session Flag (class of flag) 13 | Session Flag (class of flag) 13 | |||
| System Flag (type of flag) 11 | System Flag (type of flag) 11 | |||
| T | T | |||
| TEXT (part specifier) 89 | TEXT (part specifier) 90 | |||
| TEXT <string> (search key) 79 | TEXT <string> (search key) 80 | |||
| TO <string> (search key) 80 | TO <string> (search key) 80 | |||
| TRYCREATE (response code) 106 | TRYCREATE (response code) 106 | |||
| U | U | |||
| UID (command) 95 | UID (command) 96 | |||
| UID (fetch item) 91 | UID (fetch item) 90 | |||
| UID (fetch result) 123 | UID (fetch result) 123 | |||
| UID <sequence set> (search key) 80 | UID <sequence set> (search key) 80 | |||
| UIDNEXT (response code) 106 | UIDNEXT (response code) 106 | |||
| UIDNEXT (status item) 68 | UIDNEXT (status item) 68 | |||
| UIDNOTSTICKY (response code) 106 | UIDNOTSTICKY (response code) 106 | |||
| UIDVALIDITY (response code) 106 | UIDVALIDITY (response code) 107 | |||
| UIDVALIDITY (status item) 68 | UIDVALIDITY (status item) 68 | |||
| UNANSWERED (search key) 80 | UNANSWERED (search key) 80 | |||
| UNAVAILABLE (response code) 106 | UNAVAILABLE (response code) 107 | |||
| UNDELETED (search key) 80 | UNDELETED (search key) 80 | |||
| UNDRAFT (search key) 80 | UNDRAFT (search key) 80 | |||
| UNFLAGGED (search key) 80 | UNFLAGGED (search key) 80 | |||
| UNKEYWORD <flag> (search key) 80 | UNKEYWORD <flag> (search key) 80 | |||
| UNKNOWN-CTE (response code) 107 | UNKNOWN-CTE (response code) 107 | |||
| UNSEEN (search key) 80 | UNSEEN (search key) 80 | |||
| UNSEEN (status item) 68 | UNSEEN (status item) 68 | |||
| UNSELECT (command) 74 | UNSELECT (command) 74 | |||
| UNSUBSCRIBE (command) 44 | UNSUBSCRIBE (command) 44 | |||
| Unique Identifier (UID) (message attribute) 9 | Unique Identifier (UID) (message attribute) 9 | |||
| X | X | |||
| X<atom> (command) 97 | X<atom> (command) 97 | |||
| [ | [ | |||
| [RFC-5322] Size (message attribute) 14 | [RFC-5322] Size (message attribute) 14 | |||
| \ | \ | |||
| \All (mailbox name attribute) 112 | \All (mailbox name attribute) 113 | |||
| \Answered (system flag) 11 | \Answered (system flag) 11 | |||
| \Archive (mailbox name attribute) 112 | \Archive (mailbox name attribute) 113 | |||
| \Deleted (system flag) 12 | \Deleted (system flag) 12 | |||
| \Draft (system flag) 12 | \Draft (system flag) 12 | |||
| \Drafts (mailbox name attribute) 113 | \Drafts (mailbox name attribute) 113 | |||
| \Flagged (mailbox name attribute) 113 | \Flagged (mailbox name attribute) 113 | |||
| \Flagged (system flag) 11 | \Flagged (system flag) 11 | |||
| \HasChildren (mailbox name attribute) 111 | \HasChildren (mailbox name attribute) 112 | |||
| \HasNoChildren (mailbox name attribute) 112 | \HasNoChildren (mailbox name attribute) 112 | |||
| \Junk (mailbox name attribute) 113 | \Junk (mailbox name attribute) 113 | |||
| \Marked (mailbox name attribute) 112 | \Marked (mailbox name attribute) 112 | |||
| \Noinferiors (mailbox name attribute) 111 | \Noinferiors (mailbox name attribute) 111 | |||
| \NonExistent (mailbox name attribute) 111 | \NonExistent (mailbox name attribute) 111 | |||
| \Noselect (mailbox name attribute) 111 | \Noselect (mailbox name attribute) 111 | |||
| \Recent (system flag) 12 | \Recent (system flag) 12 | |||
| \Remote (mailbox name attribute) 112 | \Remote (mailbox name attribute) 112 | |||
| \Seen (system flag) 11 | \Seen (system flag) 11 | |||
| \Sent (mailbox name attribute) 113 | \Sent (mailbox name attribute) 113 | |||
| End of changes. 104 change blocks. | ||||
| 201 lines changed or deleted | 238 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/ | ||||