IMAP REPLACE Extension
RFC 8508

Document Type RFC - Proposed Standard (January 2019; No errata)
Last updated 2019-01-04
Replaces draft-brandt-imap-replace
Stream IETF
Formats plain text pdf htmlized bibtex
Reviews
Stream WG state Submitted to IESG for Publication
Document shepherd Bron Gondwana
Shepherd write-up Show (last changed 2018-09-17)
IESG IESG state RFC 8508 (Proposed Standard)
Consensus Boilerplate Yes
Telechat date
Responsible AD Alexey Melnikov
Send notices to Bron Gondwana <brong@fastmailteam.com>
IANA IANA review state IANA OK - Actions Needed
IANA action state RFC-Ed-Ack
Internet Engineering Task Force (IETF)                         S. Brandt
Request for Comments: 8508                                       Verizon
Category: Standards Track                                   January 2019
ISSN: 2070-1721

                         IMAP REPLACE Extension

Abstract

   This document defines an IMAP extension that can be used to replace
   an existing message in a message store with a new message.  Message
   replacement is a common operation for clients that automatically save
   drafts or notes as a user composes them.

Status of This Memo

   This is an Internet Standards Track document.

   This document is a product of the Internet Engineering Task Force
   (IETF).  It represents the consensus of the IETF community.  It has
   received public review and has been approved for publication by the
   Internet Engineering Steering Group (IESG).  Further information on
   Internet Standards is available in Section 2 of RFC 7841.

   Information about the current status of this document, any errata,
   and how to provide feedback on it may be obtained at
   https://www.rfc-editor.org/info/rfc8508.

Copyright Notice

   Copyright (c) 2019 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (https://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Brandt                       Standards Track                    [Page 1]
RFC 8508                 IMAP REPLACE Extension             January 2019

Table of Contents

   1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . . . .   2
   2.  Conventions Used in This Document . . . . . . . . . . . . . .   3
   3.  REPLACE and UID REPLACE . . . . . . . . . . . . . . . . . . .   3
     3.1.  Advertising Support for REPLACE . . . . . . . . . . . . .   3
     3.2.  REPLACE Command . . . . . . . . . . . . . . . . . . . . .   3
     3.3.  UID REPLACE Command . . . . . . . . . . . . . . . . . . .   4
     3.4.  Semantics of REPLACE and UID REPLACE  . . . . . . . . . .   5
     3.5.  IMAP State Diagram Impacts  . . . . . . . . . . . . . . .   6
   4.  Interaction with Other Extensions . . . . . . . . . . . . . .   6
     4.1.  ACL . . . . . . . . . . . . . . . . . . . . . . . . . . .   6
     4.2.  CATENATE  . . . . . . . . . . . . . . . . . . . . . . . .   6
     4.3.  UIDPLUS . . . . . . . . . . . . . . . . . . . . . . . . .   8
     4.4.  IMAP Events in Sieve  . . . . . . . . . . . . . . . . . .   8
     4.5.  CONDSTORE/QRESYNC . . . . . . . . . . . . . . . . . . . .   8
     4.6.  OBJECTID  . . . . . . . . . . . . . . . . . . . . . . . .   8
     4.7.  MULTIAPPEND . . . . . . . . . . . . . . . . . . . . . . .   8
   5.  Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . .   9
   6.  Security Considerations . . . . . . . . . . . . . . . . . . .   9
   7.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   9
   8.  References  . . . . . . . . . . . . . . . . . . . . . . . . .   9
     8.1.  Normative References  . . . . . . . . . . . . . . . . . .   9
     8.2.  Informative References  . . . . . . . . . . . . . . . . .  10
   Acknowledgements  . . . . . . . . . . . . . . . . . . . . . . . .  11
   Author's Address  . . . . . . . . . . . . . . . . . . . . . . . .  11

1.  Overview

   This document defines an IMAP ([RFC3501]) extension to facilitate the
   replacement of an existing message with a new one.  This is
   accomplished by defining a new REPLACE command and extending the
   Unique Identifier (UID) command to allow UID REPLACE.

   Since there is no replace function in the base IMAP specification,
   clients have instead had to use a combination of three separate
   commands issued in serial fashion; APPEND, STORE, and EXPUNGE.
   Pipelining of these three commands is not recommended since failure
   of any individual command should prevent subsequent commands from
   being executed lest the original message version be lost.

   Because of the non-atomic nature of the existing sequence,
   interruptions can leave messages in intermediate states that can be
   seen and acted upon by other clients.  Such interruptions can also
   strand older revisions of messages, thereby forcing the user to
   manually clean up multiple revisions of the same message in order to
   avoid wasteful quota consumption.  Additionally, the existing
   sequence can fail on APPEND due to an over-quota condition even

Brandt                       Standards Track                    [Page 2]
Show full document text