123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451 |
- Network Working Group L. Nerenberg
- Request for Comments: 3516 Orthanc Systems
- Category: Standards Track April 2003
- IMAP4 Binary Content Extension
- Status of this Memo
- This document specifies an Internet standards track protocol for the
- Internet community, and requests discussion and suggestions for
- improvements. Please refer to the current edition of the "Internet
- Official Protocol Standards" (STD 1) for the standardization state
- and status of this protocol. Distribution of this memo is unlimited.
- Copyright Notice
- Copyright (C) The Internet Society (2003). All Rights Reserved.
- Abstract
- This memo defines the Binary extension to the Internet Message Access
- Protocol (IMAP4). It provides a mechanism for IMAP4 clients and
- servers to exchange message body data without using a MIME content-
- transfer-encoding.
- 1. Conventions Used in this Document
- The key words "MUST", "MUST NOT", "SHOULD", "SHOULD NOT", and "MAY"
- in this document are to be interpreted as described in [KEYWORD].
- The abbreviation "CTE" means content-transfer-encoding.
- 2. Introduction
- The MIME extensions to Internet messaging allow for the transmission
- of non-textual (binary) message content [MIME-IMB]. Since the
- traditional transports for messaging are not always capable of
- passing binary data transparently, MIME provides encoding schemes
- that allow binary content to be transmitted over transports that are
- not otherwise able to do so.
- The overhead of MIME-encoding this content can be considerable in
- some contexts (e.g., slow radio links, streaming multimedia).
- Reducing the overhead associated with CTE schemes such as base64
- Nerenberg Standards Track [Page 1]
- RFC 3516 IMAP4 Binary Content Extension April 2003
- can give a noticeable reduction in resource consumption. The Binary
- extension lets the server perform CTE decoding prior to transmitting
- message data to the client.
- 3. Content-Transfer-Encoding Considerations
- Every IMAP4 body section has a MIME content-transfer-encoding.
- (Those without an explicit Content-Transfer-Encoding header are
- implicitly labeled as "7bit" content.) In the terminology of [MIME-
- IMB], the CTE specifies both a decoding algorithm and the domain of
- the decoded data. In this memo, "decoding" refers to the CTE
- decoding step described in [MIME-IMB].
- Certain CTEs use an identity encoding transformation. For these CTEs
- there is no decoding required, however the domain of the underlying
- data may not be expressible in the IMAP4 protocol (e.g., MIME
- "binary" content containing NUL octets). To accommodate these cases
- the Binary extension introduces a new type of literal protocol
- element that is fully eight bit transparent.
- Thus, server processing of the FETCH BINARY command involves two
- logical steps:
- 1) perform any CTE-related decoding
- 2) determine the domain of the decoded data
- Step 2 is necessary to determine which protocol element should be
- used to transmit the decoded data. (See FETCH Response Extensions
- for further details.)
- 4. Framework for the IMAP4 Binary Extension
- This memo defines the following extensions to [IMAP4rev1].
- 4.1. CAPABILITY Identification
- IMAP4 servers that support this extension MUST include "BINARY" in
- the response list to the CAPABILITY command.
- 4.2. FETCH Command Extensions
- This extension defines three new FETCH command data items.
- BINARY<section-binary>[<partial>]
- Requests that the specified section be transmitted after
- performing CTE-related decoding.
- Nerenberg Standards Track [Page 2]
- RFC 3516 IMAP4 Binary Content Extension April 2003
- The <partial> argument, if present, requests that a subset of
- the data be returned. The semantics of a partial FETCH BINARY
- command are the same as for a partial FETCH BODY command, with
- the exception that the <partial> arguments refer to the DECODED
- section data.
- BINARY.PEEK<section-binary>[<partial>]
- An alternate form of FETCH BINARY that does not implicitly set
- the \Seen flag.
- BINARY.SIZE<section-binary>
- Requests the decoded size of the section (i.e., the size to
- expect in response to the corresponding FETCH BINARY request).
- Note: client authors are cautioned that this might be an
- expensive operation for some server implementations.
- Needlessly issuing this request could result in degraded
- performance due to servers having to calculate the value every
- time the request is issued.
- 4.3. FETCH Response Extensions
- This extension defines two new FETCH response data items.
- BINARY<section-binary>[<<number>>]
- An <nstring> or <literal8> expressing the content of the
- specified section after removing any CTE-related encoding. If
- <number> is present it refers to the offset within the DECODED
- section data.
- If the domain of the decoded data is "8bit" and the data does
- not contain the NUL octet, the server SHOULD return the data in
- a <string> instead of a <literal8>; this allows the client to
- determine if the "8bit" data contains the NUL octet without
- having to explicitly scan the data stream for for NULs.
- If the server does not know how to decode the section's CTE, it
- MUST fail the request and issue a "NO" response that contains
- the "UNKNOWN-CTE" extended response code.
- Nerenberg Standards Track [Page 3]
- RFC 3516 IMAP4 Binary Content Extension April 2003
- BINARY.SIZE<section-binary>
- The size of the section after removing any CTE-related
- encoding. The value returned MUST match the size of the
- <nstring> or <literal8> that will be returned by the
- corresponding FETCH BINARY request.
- If the server does not know how to decode the section's CTE, it
- MUST fail the request and issue a "NO" response that contains
- the "UNKNOWN-CTE" extended response code.
- 4.4. APPEND Command Extensions
- The APPEND command is extended to allow the client to append data
- containing NULs by using the <literal8> syntax. The server MAY
- modify the CTE of the appended data, however any such transformation
- MUST NOT result in a loss of data.
- If the destination mailbox does not support the storage of binary
- content, the server MUST fail the request and issue a "NO" response
- that contains the "UNKNOWN-CTE" extended response code.
- 5. MIME Encoded Headers
- [MIME-MHE] defines an encoding that allows for non-US-ASCII text in
- message headers. This encoding is not the same as the content-
- transfer-encoding applied to message bodies, and the decoding
- transformations described in this memo do not apply to [MIME-MHE]
- encoded header text. A server MUST NOT perform any conversion of
- [MIME-MHE] encoded header text in response to any binary FETCH or
- APPEND request.
- 6. Implementation Considerations
- Messaging clients and servers have been notoriously lax in their
- adherence to the Internet CRLF convention for terminating lines of
- textual data in Internet protocols. When sending data using the
- Binary extension, servers MUST ensure that textual line-oriented
- sections are always transmitted using the IMAP4 CRLF line termination
- syntax, regardless of the underlying storage representation of the
- data on the server.
- A server may choose to store message body binary content in a non-
- encoded format. Regardless of the internal storage representation
- used, the server MUST issue BODYSTRUCTURE responses that describe the
- message as though the binary-encoded sections are encoded in a CTE
- Nerenberg Standards Track [Page 4]
- RFC 3516 IMAP4 Binary Content Extension April 2003
- acceptable to the IMAP4 base specification. Furthermore, the results
- of a FETCH BODY MUST return the message body content in the format
- described by the corresponding FETCH BODYSTRUCTURE response.
- While the server is allowed to modify the CTE of APPENDed <literal8>
- data, this should only be done when it is absolutely necessary.
- Gratuitous encoding changes will render useless most cryptographic
- operations that have been performed on the message.
- This extension provides an optimization that is useful in certain
- specific situations. It does not absolve clients from providing
- basic functionality (content transfer decoding) that should be
- available in all messaging clients. Clients supporting this
- extension SHOULD be prepared to perform their own CTE decoding
- operations.
- 7. Formal Protocol Syntax
- The following syntax specification uses the augmented Backus-Naur
- Form (ABNF) notation as used in [ABNF], and incorporates by reference
- the Core Rules defined in that document.
- This syntax augments the grammar specified in [IMAP4rev1].
- append =/ "APPEND" SP mailbox [SP flag-list]
- [SP date-time] SP literal8
- fetch-att =/ "BINARY" [".PEEK"] section-binary [partial]
- / "BINARY.SIZE" section-binary
- literal8 = "~{" number "}" CRLF *OCTET
- ; <number> represents the number of OCTETs
- ; in the response string.
- msg-att-static =/ "BINARY" section-binary SP (nstring / literal8)
- / "BINARY.SIZE" section-binary SP number
- partial = "<" number "." nz-number ">"
- resp-text-code =/ "UNKNOWN-CTE"
- section-binary = "[" [section-part] "]"
- Nerenberg Standards Track [Page 5]
- RFC 3516 IMAP4 Binary Content Extension April 2003
- 8. Normative References
- [ABNF] Crocker, D., Editor, and P. Overell, "Augmented BNF for
- Syntax Specifications: ABNF", RFC 2234, November 1997.
- [IMAP4rev1] Crispin, M., "Internet Message Access Protocol Version
- 4rev1", RFC 3501, March 2003.
- [KEYWORD] Bradner, S., "Key words for use in RFCs to Indicate
- Requirement Levels", BCP 14, RFC 2119, March 1997.
- [MIME-IMB] Freed, N. and N. Borenstein, "Multipurpose Internet Mail
- Extensions (MIME) Part One: Format of Internet Message
- Bodies", RFC 2045, November 1996.
- [MIME-MHE] Moore, K., "MIME (Multipurpose Internet Mail Extensions)
- Part Three: Message Header Extensions for Non-ASCII
- Text", RFC 2047, November 1996.
- 9. Security Considerations
- There are no known additional security issues with this extension
- beyond those described in the base protocol described in [IMAP4rev1].
- 10. Intellectual Property
- The IETF takes no position regarding the validity or scope of any
- intellectual property 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; neither does it represent that it
- has made any effort to identify any such rights. Information on the
- IETF's procedures with respect to rights in standards-track and
- standards-related documentation can be found in BCP-11. Copies of
- claims of rights made available for publication 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 implementors or users of this specification can
- be obtained from the IETF Secretariat.
- The IETF invites any interested party to bring to its attention any
- copyrights, patents or patent applications, or other proprietary
- rights which may cover technology that may be required to practice
- this standard. Please address the information to the IETF Executive
- Director.
- Nerenberg Standards Track [Page 6]
- RFC 3516 IMAP4 Binary Content Extension April 2003
- 11. Author's Address
- Lyndon Nerenberg
- Orthanc Systems
- 1606 - 10770 Winterburn Road
- Edmonton, Alberta
- Canada T5S 1T6
- EMail: lyndon@orthanc.ab.ca
- Nerenberg Standards Track [Page 7]
- RFC 3516 IMAP4 Binary Content Extension April 2003
- 12. Full Copyright Statement
- Copyright (C) The Internet Society (2003). All Rights Reserved.
- This document and translations of it may be copied and furnished to
- others, and derivative works that comment on or otherwise explain it
- or assist in its implementation may be prepared, copied, published
- and distributed, in whole or in part, without restriction of any
- kind, provided that the above copyright notice and this paragraph are
- included on all such copies and derivative works. However, this
- document itself may not be modified in any way, such as by removing
- the copyright notice or references to the Internet Society or other
- Internet organizations, except as needed for the purpose of
- developing Internet standards in which case the procedures for
- copyrights defined in the Internet Standards process must be
- followed, or as required to translate it into languages other than
- English.
- The limited permissions granted above are perpetual and will not be
- revoked by the Internet Society or its successors or assigns.
- This document and the information contained herein is provided on an
- "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
- TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
- BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
- HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
- MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- Acknowledgement
- Funding for the RFC Editor function is currently provided by the
- Internet Society.
- Nerenberg Standards Track [Page 8]
|