| < draft-brandt-imap-replace-02.txt | draft-brandt-imap-replace-03.txt > | |||
|---|---|---|---|---|
| Network Working Group S. Brandt | Network Working Group S. Brandt | |||
| Internet-Draft AOL | Internet-Draft Verizon | |||
| Intended status: Standards Track January 19, 2016 | Intended status: Standards Track June 30, 2018 | |||
| Expires: July 22, 2016 | Expires: January 1, 2019 | |||
| IMAP REPLACE Extension | IMAP REPLACE Extension | |||
| draft-brandt-imap-replace-02 | draft-brandt-imap-replace-03 | |||
| Abstract | Abstract | |||
| This document defines an IMAP extension which can be used to replace | This document defines an IMAP extension which can be used to replace | |||
| an existing message in a message store with a new message. Message | an existing message in a message store with a new message. Message | |||
| replacement is a common operation for clients that automatically save | replacement is a common operation for clients that automatically save | |||
| drafts or notes as a user composes them. | drafts or notes as a user composes them. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| 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 http://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on July 22, 2016. | This Internet-Draft will expire on January 1, 2019. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2016 IETF Trust and the persons identified as the | Copyright (c) 2018 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 | |||
| (http://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 | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Conventions Used in This Document . . . . . . . . . . . . . . 2 | 1. Conventions Used in This Document . . . . . . . . . . . . . . 2 | |||
| skipping to change at page 4, line 18 ¶ | skipping to change at page 4, line 18 ¶ | |||
| C: Date: Thu, 1 Jan 2015 00:05:00 -0500 (EST) | C: Date: Thu, 1 Jan 2015 00:05:00 -0500 (EST) | |||
| C: From: Fritz Schmidt <fritz.ze@example.org> | C: From: Fritz Schmidt <fritz.ze@example.org> | |||
| C: Subject: happy new year !! | C: Subject: happy new year !! | |||
| C: To: miss.mitzy@example.org | C: To: miss.mitzy@example.org | |||
| C: Message-Id: <B238822388-0100000@example.org> | C: Message-Id: <B238822388-0100000@example.org> | |||
| 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: | |||
| C: Just saw the best fireworks show. Wish you were here. | C: Just saw the best fireworks show. Wish you were here. | |||
| C: | C: | |||
| S: * 5 EXISTS | ||||
| S: * 4 EXPUNGE | S: * 4 EXPUNGE | |||
| S: A003 OK [APPENDUID 1 2000] Replace completed | S: A003 OK [APPENDUID 1 2000] Replace completed | |||
| 3.3. UID REPLACE Command | 3.3. UID REPLACE Command | |||
| This extends the first form of the UID command (see [RFC3501] | This extends the first form of the UID command (see [RFC3501] | |||
| Section 6.4.8) to add the REPLACE command defined above as a valid | Section 6.4.8) to add the REPLACE command defined above as a valid | |||
| argument. This form of REPLACE uses a UID rather than sequence | argument. This form of REPLACE uses a UID rather than sequence | |||
| number as its first parameter. | number as its first parameter. | |||
| skipping to change at page 4, line 42 ¶ | skipping to change at page 4, line 43 ¶ | |||
| C: From: Fritz Schmidt <fritz.ze@example.org> | C: From: Fritz Schmidt <fritz.ze@example.org> | |||
| C: Subject: happy new year !! | C: Subject: happy new year !! | |||
| C: To: miss.mitzy@example.org | C: To: miss.mitzy@example.org | |||
| C: Message-Id: <B238822389-0100000@example.org> | C: Message-Id: <B238822389-0100000@example.org> | |||
| 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: | |||
| C: Just saw the best fireworks show. Wish you were here. | C: Just saw the best fireworks show. Wish you were here. | |||
| C: Hopefully next year you can join us. | C: Hopefully next year you can join us. | |||
| C: | C: | |||
| S: * 5 EXISTS | ||||
| S: * 4 EXPUNGE | S: * 4 EXPUNGE | |||
| S: A004 OK [APPENDUID 1 2001] Replace completed | S: A004 OK [APPENDUID 1 2001] Replace completed | |||
| 3.4. Semantics of REPLACE and UID REPLACE | 3.4. Semantics of REPLACE and UID REPLACE | |||
| The REPLACE and UID REPLACE commands take five arguments: a message | The REPLACE and UID REPLACE commands take five arguments: a message | |||
| identifier, a named mailbox, an optional parenthesized flag list, an | identifier, a named mailbox, an optional parenthesized flag list, an | |||
| optional message date/time string, and a message literal. The | optional message date/time string, and a message literal. The | |||
| message literal will be appended to the named mailbox, and the | message literal will be appended to the named mailbox, and the | |||
| message specified by the message identifier will be removed from the | message specified by the message identifier will be removed from the | |||
| skipping to change at page 5, line 20 ¶ | skipping to change at page 5, line 21 ¶ | |||
| In the cited sequence, the quota implications of the APPEND are | In the cited sequence, the quota implications of the APPEND are | |||
| evaluated within the context of the pending EXPUNGE so that only the | evaluated within the context of the pending EXPUNGE so that only the | |||
| net quota consumption is considered. Additionally, the EXPUNGE | net quota consumption is considered. Additionally, the EXPUNGE | |||
| portion of the sequence only applies to the specified message, not | portion of the sequence only applies to the specified message, not | |||
| all messages flagged as \Deleted. | all messages flagged as \Deleted. | |||
| Although the effect of REPLACE is identical to the steps above, the | Although the effect of REPLACE is identical to the steps above, the | |||
| semantics are not identical; similar to MOVE [RFC6851], the | semantics are not identical; similar to MOVE [RFC6851], the | |||
| intermediate states produced do not occur, and the response codes are | intermediate states produced do not occur, and the response codes are | |||
| different. In particular, the response codes for EXPUNGE and APPEND | different. In particular, the response codes for APPEND and EXPUNGE | |||
| will be returned while those for the STORE operation MUST NOT be | will be returned while those for the STORE operation MUST NOT be | |||
| generated. | generated. | |||
| When an error occurs while processing REPLACE or UID REPLACE, the | When an error occurs while processing REPLACE or UID REPLACE, the | |||
| server MUST NOT leave the selected mailbox in an inconsistent state; | server MUST NOT leave the selected mailbox in an inconsistent state; | |||
| any untagged EXPUNGE response MUST NOT be sent until all actions are | any untagged EXPUNGE response MUST NOT be sent until all actions are | |||
| successfully completed. | successfully completed. | |||
| While it may be common for the named mailbox argument to match the | While it may be common for the named mailbox argument to match the | |||
| selected mailbox for the common use case of replacing a draft, the | selected mailbox for the common use case of replacing a draft, the | |||
| REPLACE extension intentionally does not require the two to be the | REPLACE extension intentionally does not require the two to be the | |||
| same. As an example, it's possible to use the REPLACE command to | same. As an example, it's possible to use the REPLACE command to | |||
| replace a message in the \Drafts special-use mailbox with a message | replace a message in the \Drafts special-use mailbox with a message | |||
| in the \Sent special-use mailbox following message submission. | in the \Sent special-use mailbox following message submission. | |||
| Because of the similarity of REPLACE to APPEND, extensions that | Because of the similarity of REPLACE to APPEND, extensions that | |||
| affect APPEND affect REPLACE in the same way. Response codes such | affect APPEND affect REPLACE in the same way. Response codes such as | |||
| TRYCREATE (see [RFC3501] Section 6.3.11), as well as those defined by | TRYCREATE (see [RFC3501] Section 6.3.11), along with those defined by | |||
| extensions, are sent as appropriate. See Section 4 for more | extensions, are sent as appropriate. See Section 4 for more | |||
| information about how REPLACE interacts with other IMAP extensions. | information about how REPLACE interacts with other IMAP extensions. | |||
| 3.5. IMAP State Diagram Impacts | 3.5. IMAP State Diagram Impacts | |||
| Unlike the APPEND command which is valid in the authenticated state, | Unlike the APPEND command which is valid in the authenticated state, | |||
| the REPLACE and UID REPLACE commands MUST only be valid in the | the REPLACE and UID REPLACE commands MUST only be valid in the | |||
| selected state. This difference from APPEND is necessary since | selected state. This difference from APPEND is necessary since | |||
| REPLACE operates on message sequence numbers. | REPLACE operates on message sequence numbers. | |||
| skipping to change at page 9, line 18 ¶ | skipping to change at page 9, line 18 ¶ | |||
| that may already exist with the base IMAP specificaiton. | that may already exist with the base IMAP specificaiton. | |||
| 7. IANA Considerations | 7. IANA Considerations | |||
| The IANA is requested to add REPLACE to the "IMAP 4 Capabilities" | The IANA is requested to add REPLACE to the "IMAP 4 Capabilities" | |||
| registry, http://www.iana.org/assignments/imap4-capabilities. | registry, http://www.iana.org/assignments/imap4-capabilities. | |||
| 8. Acknowledgements | 8. Acknowledgements | |||
| The author would like to thank the participants of IMAPEXT with | The author would like to thank the participants of IMAPEXT with | |||
| particular thanks to Arnt Gulbrandsen, Alexey Melkinov, and Chris | particular thanks to Arnt Gulbrandsen, Alexey Melkinov, Chris Newman, | |||
| Newman for their specific contributions. | and Bron Gondwana for their specific contributions. | |||
| 9. References | 9. References | |||
| 9.1. Normative References | 9.1. Normative References | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <http://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC3501] Crispin, M., "INTERNET MESSAGE ACCESS PROTOCOL - VERSION | [RFC3501] Crispin, M., "INTERNET MESSAGE ACCESS PROTOCOL - VERSION | |||
| 4rev1", RFC 3501, DOI 10.17487/RFC3501, March 2003, | 4rev1", RFC 3501, DOI 10.17487/RFC3501, March 2003, | |||
| <http://www.rfc-editor.org/info/rfc3501>. | <https://www.rfc-editor.org/info/rfc3501>. | |||
| [RFC4314] Melnikov, A., "IMAP4 Access Control List (ACL) Extension", | [RFC4314] Melnikov, A., "IMAP4 Access Control List (ACL) Extension", | |||
| RFC 4314, DOI 10.17487/RFC4314, December 2005, | RFC 4314, DOI 10.17487/RFC4314, December 2005, | |||
| <http://www.rfc-editor.org/info/rfc4314>. | <https://www.rfc-editor.org/info/rfc4314>. | |||
| [RFC4315] Crispin, M., "Internet Message Access Protocol (IMAP) - | [RFC4315] Crispin, M., "Internet Message Access Protocol (IMAP) - | |||
| UIDPLUS extension", RFC 4315, DOI 10.17487/RFC4315, | UIDPLUS extension", RFC 4315, DOI 10.17487/RFC4315, | |||
| December 2005, <http://www.rfc-editor.org/info/rfc4315>. | December 2005, <https://www.rfc-editor.org/info/rfc4315>. | |||
| [RFC4466] Melnikov, A. and C. Daboo, "Collected Extensions to IMAP4 | [RFC4466] Melnikov, A. and C. Daboo, "Collected Extensions to IMAP4 | |||
| ABNF", RFC 4466, DOI 10.17487/RFC4466, April 2006, | ABNF", RFC 4466, DOI 10.17487/RFC4466, April 2006, | |||
| <http://www.rfc-editor.org/info/rfc4466>. | <https://www.rfc-editor.org/info/rfc4466>. | |||
| [RFC4469] Resnick, P., "Internet Message Access Protocol (IMAP) | [RFC4469] Resnick, P., "Internet Message Access Protocol (IMAP) | |||
| CATENATE Extension", RFC 4469, DOI 10.17487/RFC4469, April | CATENATE Extension", RFC 4469, DOI 10.17487/RFC4469, April | |||
| 2006, <http://www.rfc-editor.org/info/rfc4469>. | 2006, <https://www.rfc-editor.org/info/rfc4469>. | |||
| [RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax | [RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax | |||
| Specifications: ABNF", STD 68, RFC 5234, | Specifications: ABNF", STD 68, RFC 5234, | |||
| DOI 10.17487/RFC5234, January 2008, | DOI 10.17487/RFC5234, January 2008, | |||
| <http://www.rfc-editor.org/info/rfc5234>. | <https://www.rfc-editor.org/info/rfc5234>. | |||
| [RFC6785] Leiba, B., "Support for Internet Message Access Protocol | [RFC6785] Leiba, B., "Support for Internet Message Access Protocol | |||
| (IMAP) Events in Sieve", RFC 6785, DOI 10.17487/RFC6785, | (IMAP) Events in Sieve", RFC 6785, DOI 10.17487/RFC6785, | |||
| November 2012, <http://www.rfc-editor.org/info/rfc6785>. | November 2012, <https://www.rfc-editor.org/info/rfc6785>. | |||
| [RFC7162] Melnikov, A. and D. Cridland, "IMAP Extensions: Quick Flag | [RFC7162] Melnikov, A. and D. Cridland, "IMAP Extensions: Quick Flag | |||
| Changes Resynchronization (CONDSTORE) and Quick Mailbox | Changes Resynchronization (CONDSTORE) and Quick Mailbox | |||
| Resynchronization (QRESYNC)", RFC 7162, | Resynchronization (QRESYNC)", RFC 7162, | |||
| DOI 10.17487/RFC7162, May 2014, | DOI 10.17487/RFC7162, May 2014, | |||
| <http://www.rfc-editor.org/info/rfc7162>. | <https://www.rfc-editor.org/info/rfc7162>. | |||
| 9.2. Informative References | 9.2. Informative References | |||
| [RFC6851] Gulbrandsen, A. and N. Freed, Ed., "Internet Message | [RFC6851] Gulbrandsen, A. and N. Freed, Ed., "Internet Message | |||
| Access Protocol (IMAP) - MOVE Extension", RFC 6851, | Access Protocol (IMAP) - MOVE Extension", RFC 6851, | |||
| DOI 10.17487/RFC6851, January 2013, | DOI 10.17487/RFC6851, January 2013, | |||
| <http://www.rfc-editor.org/info/rfc6851>. | <https://www.rfc-editor.org/info/rfc6851>. | |||
| Author's Address | Author's Address | |||
| Stuart Brandt | Stuart Brandt | |||
| AOL | Verizon | |||
| 43623 Preddy Ct | 22001 Loudoun County Parkway | |||
| Ashburn, VA 20147 | Ashburn, VA 20147 | |||
| USA | USA | |||
| Email: stujenerin@aol.com | Email: stujenerin@aol.com | |||
| End of changes. 22 change blocks. | ||||
| 25 lines changed or deleted | 27 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/ | ||||