[Search] [txt|pdf|bibtex] [Tracker] [WG] [Email] [Diff1] [Diff2] [Nits]

Versions: 00 01 02 03 04 05 rfc4469                                     
LEMONADE                                                      P. Resnick
Internet-Draft                                     QUALCOMM Incorporated
Expires: March 2, 2005                                    September 2004

       Internet Message Access Protocol (IMAP) CATENATE Extension

Status of this Memo

   This document is an Internet-Draft and is subject to all provisions
   of section 3 of RFC 3667.  By submitting this Internet-Draft, each
   author represents that any applicable patent or other IPR claims of
   which he or she is aware have been or will be disclosed, and any of
   which he or she become aware will be disclosed, in accordance with
   RFC 3668.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups.  Note that
   other groups may also distribute working documents as

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   The list of current Internet-Drafts can be accessed at

   The list of Internet-Draft Shadow Directories can be accessed at

   This Internet-Draft will expire on March 2, 2005.

Copyright Notice

   Copyright (C) The Internet Society (2004).


   The CATENATE extension to the Internet Message Access Protocol (IMAP)
   allows clients to create messages on the IMAP server which may
   contain a combination of new data along with parts of (or entire)
   messages already on the server.  Using this extension, the client can
   catenate parts of an already existing message on to a new message
   without having to first download the data and then upload it back to
   the server.

Resnick                  Expires March 2, 2005                  [Page 1]

Internet-Draft          IMAP CATENATE Extension           September 2004

1.  Introduction

   The CATENATE extension to the Internet Message Access Protocol (IMAP)
   [1] allows the client to create a message on the server which can
   include the text of messages (or parts of messages) that already
   exist on the server without having to FETCH them and APPEND them back
   to the server.  The CATENATE command works much like the APPEND
   command except that, instead of a single message literal, the command
   can take as arguments any combination of message literals (as
   described in IMAP [1]) and message URLs (as described in the IMAP URL
   Scheme [2] specification).  The server takes all of the pieces and
   catenates them into the output message.

   There are some obvious uses for the CATENATE command.  The motivating
   use case for this command was to provide a way for a
   resource-constrained client to compose a message for future delivery
   which contains data that already exists in that client's IMAP store.
   Because the client does not have to download and re-upload
   potentially large message parts, bandwidth and processing limitations
   do not have as much impact.  (Mechanisms for sending the message are
   outside of the scope of this document.)

   CATENATE can also be used to copy parts of a message to another
   mailbox for archival purposes while getting rid of undesired parts.
   In environments where server storage is limited, a client could get
   rid of large message parts by copying over only the necessary parts
   and then deleting the original message.  CATENATE could also be used
   to add data to a message such as prepending message header fields or
   including other data by making a copy of the original and catenating
   the new data.

2.  The CATENATE Capability

   A server which supports this extension returns "CATENATE" as one of
   the responses to the CAPABILITY command.

3.  The CATENATE command

   Arguments:     mailbox name
                  OPTIONAL flag parenthesized list
                  OPTIONAL date/time string
                  one or more message parts to catenate, specified as:
                                 message literal
                                 message (or message part) URL

Resnick                  Expires March 2, 2005                  [Page 2]

Internet-Draft          IMAP CATENATE Extension           September 2004

   Responses:     no specific responses for this command
                  OK -  catenate completed
                  NO -  catenate error: can't append to that mailbox,
                        error in flags or date/time or message text, or
                        can't fetch that data
                  BAD - command unknown or arguments invalid

   The CATENATE command concatenates all of the message parts and
   appends them as a new message to the end of the specified mailbox.
   The optional flag parenthesized list and date/time string are used
   just as they are in the APPEND command, setting the flags and the
   internal date, respectively.  The subsequent parameters specify the
   message parts that are appended sequentially to the output message.

   If a message literal is specified (indicated by the octet count
   enclosed in braces), the octets following the count are appended just
   as they would be with the APPEND command.  If a message URL is
   specified, the octets of that body part are appended, as if the
   literal returned in a FETCH BODY response were put in place of the
   message part specifier.  The CATENATE command does not cause the
   \Seen flag to be set for any catenated body part.

      Note: This document only describes the behavior of the CATENATE
      command using a message URL (as defined by [2]) which refers to a
      specific message or message part in the currently selected mailbox
      on the current IMAP server.  (Because of that, the CATENATE
      command is valid in the selected state for purposes of this
      specification.) Use of a URL that refers to anything other than a
      message or message part from the currently selected mailbox on the
      current IMAP server is outside of the scope of this document,
      would require an extension to this specification, and a server
      implementing only this specification would return NO to such a

   The client is responsible for making sure that the catenated message
   is in the format of an RFC 2822 [3] message.  This includes inserting
   appropriate MIME [4] boundaries between body parts if necessary.

   Responses behave just as the APPEND command.  If the server
   implements the IMAP UIDPLUS extension [5], it will also return an
   APPENDUID response code in the tagged OK response.  Two response
   codes are provided in section 4 which can be used in the tagged NO
   response if the CATENATE command fails.

4.  Response Codes

   When a CATENATE command fails it may return a response code that

Resnick                  Expires March 2, 2005                  [Page 3]

Internet-Draft          IMAP CATENATE Extension           September 2004

   describes a reason for the failure.

4.1  BADURL Response

   The BADURL response code is returned if the CATENATE fails to process
   one of the specified URLs.  Possible reasons for this are bad url
   syntax, unrecognized URL schema, invalid message UID, invalid body
   part.  The BADURL response code contains the first URL specified as a
   parameter to the CATENATE command that has caused the operation to

4.2  TOOBIG Response

   The TOOBIG response code is returned if the resulting message will
   exceed the 4Gb IMAP message limit.  This might happen, for example,
   if the client specifies 3 URLs for 2Gb messages.  Note, that even if
   the server doesn't return TOOBIG, it still has to be defensive
   against misbehaving or malicious clients that try to construct a
   message over 4Gb limit.  The server may also wish to return the
   TOOBIG response code if the resulting message exceeds the server
   specific message size limit.

5.  Formal Syntax

   The following syntax specification uses the Augmented Backus-Naur
   Form (ABNF) [6] notation.  Undefined elements are defined in the
   formal syntax of the ABNF [6], IMAP [1], and IMAP URL [2]

   catenate = "CATENATE" SP mailbox [SP flag-list] [SP date-time]
                       1*(SP (literal / imapurl))

   badurl_response_code = "BADURL" SP imapurl

   toobig_response_code = "TOOBIG"

6.  Security Considerations

   The CATENATE extension does not raise any security considerations
   that are not present for the base protocol or in the use of IMAP
   URLs, and these issues are discussed in the IMAP [1] and IMAP URL [2]

7  Normative References

        RFC 3501, March 2003.

Resnick                  Expires March 2, 2005                  [Page 4]

Internet-Draft          IMAP CATENATE Extension           September 2004

   [2]  Newman, C., "IMAP URL Scheme", RFC 2192, September 1997.

   [3]  Resnick, P., "Internet Message Format", RFC 2822, April 2001.

   [4]  Freed, N. and N. Borenstein, "Multipurpose Internet Mail
        Extensions (MIME) Part One: Format of Internet Message Bodies",
        RFC 2045, November 1996.

   [5]  Myers, J., "IMAP4 UIDPLUS extension", RFC 2359, June 1998.

   [6]  Crocker, D. and P. Overell, "Augmented BNF for Syntax
        Specifications: ABNF", RFC 2234, November 1997.

Author's Address

   Peter W. Resnick
   QUALCOMM Incorporated
   5775 Morehouse Drive
   San Diego, CA  92121-1714

   Phone: +1 858 651 4478
   EMail: presnick@qualcomm.com
   URI:   http://www.qualcomm.com/~presnick/

Resnick                  Expires March 2, 2005                  [Page 5]

Internet-Draft          IMAP CATENATE Extension           September 2004

Intellectual Property Statement

   The IETF takes no position regarding the validity or scope of any
   Intellectual Property Rights or other rights that might be claimed to
   pertain to the implementation or use of the technology described in
   this document or the extent to which any license under such rights
   might or might not be available; nor does it represent that it has
   made any independent effort to identify any such rights.  Information
   on the procedures with respect to rights in RFC documents can be
   found in BCP 78 and BCP 79.

   Copies of IPR disclosures made to the IETF Secretariat and any
   assurances of licenses to be made available, or the result of an
   attempt made to obtain a general license or permission for the use of
   such proprietary rights by implementers or users of this
   specification can be obtained from the IETF on-line IPR repository at

   The IETF invites any interested party to bring to its attention any
   copyrights, patents or patent applications, or other proprietary
   rights that may cover technology that may be required to implement
   this standard.  Please address the information to the IETF at

Disclaimer of Validity

   This document and the information contained herein are provided on an

Copyright Statement

   Copyright (C) The Internet Society (2004).  This document is subject
   to the rights, licenses and restrictions contained in BCP 78, and
   except as set forth therein, the authors retain all their rights.


   Funding for the RFC Editor function is currently provided by the
   Internet Society.

Resnick                  Expires March 2, 2005                  [Page 6]