| < draft-nerenberg-imap-channel-00.txt | draft-nerenberg-imap-channel-01.txt > | |||
|---|---|---|---|---|
| Network Working Group S. Hole | Network Working Group S. Hole | |||
| Internet Draft: IMAP4 Channel Transport Mechanism L. Nerenberg | Internet Draft: IMAP4 Channel Transport Mechanism L. Nerenberg | |||
| Document: draft-nerenberg-imap-channel-00.txt ACI/Messagingdirect | Document: draft-nerenberg-imap-channel-01.txt ACI Worldwide | |||
| B. Leiba | B. Leiba | |||
| IBM Research | IBM Research | |||
| February 2001 | November 2001 | |||
| IMAP4 Channel Transport Mechanism | IMAP4 Channel Transport Mechanism | |||
| Status of this memo | Status of this memo | |||
| This document is an Internet Draft and is in full conformance with | This document is an Internet Draft and is in full conformance with | |||
| all provisions of Section 10 of RFC 2026. | all provisions of Section 10 of RFC 2026. | |||
| Internet Drafts are working documents of the Internet Engineering | Internet Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF), its areas, and its working groups. Note that | Task Force (IETF), its areas, and its working groups. Note that | |||
| other groups may also distribute working documents as Internet | other groups may also distribute working documents as Internet | |||
| Drafts. | Drafts. | |||
| Internet Drafts are draft documents valid for a maximum of six | Internet Drafts are draft documents valid for a maximum of six | |||
| months and may be updated, replaced, or obsoleted by other | months and may be updated, replaced, or obsoleted by other docu- | |||
| documents at any time. It is inappropriate to use Internet Drafts | ments at any time. It is inappropriate to use Internet Drafts as | |||
| as reference material or to cite them other than as "work in | reference material or to cite them other than as "work in | |||
| progress.rq | progress.rq | |||
| The list of current Internet Drafts can be accessed at | The list of current Internet Drafts can be accessed at | |||
| http://www.ietf.org/ietf/1id-abstracts.txt | http://www.ietf.org/ietf/1id-abstracts.txt | |||
| The list of Internet Draft Shadow Directories can be accessed at | The list of Internet Draft Shadow Directories can be accessed at | |||
| http://www.ietf.org/shadow.html. | http://www.ietf.org/shadow.html. | |||
| A revised version of this draft document will be submitted to the | A revised version of this draft document will be submitted to the | |||
| RFC editor as a Proposed Standard for the Internet Community. | RFC editor as a Proposed Standard for the Internet Community. Dis- | |||
| Discussion and suggestions for improvement are requested. | cussion and suggestions for improvement are requested. Distribu- | |||
| Distribution of this draft is unlimited. | tion of this draft is unlimited. | |||
| 0. Administrivia | 0. Administrivia | |||
| Lines prefixed with ">>>" are meta-comments. | Lines prefixed with ">>>" are meta-comments and will not appear in the | |||
| final document. | ||||
| Discussion concerning this draft should be directed to the | ||||
| <ietf-imap-voice@imc.org> mailing list. (To subscribe: echo subscribe | | ||||
| mail ietf-imap-voice-request@imc.org) | ||||
| 1. Abstract | 1. Abstract | |||
| IMAP4 is being used to serve rich media content in environments | IMAP4 is being used to serve rich media content in environments | |||
| that extend beyond traditional text-based e-mail. One example is a | that extend beyond traditional text-based e-mail. One example is a | |||
| cellular telephone that can retrieve and send MIME-encoded audio | cellular telephone that can retrieve and send MIME-encoded audio | |||
| data through IMAP4. While this type of content can be exchanged | data through IMAP4. While this type of content can be exchanged | |||
| natively using IMAP4, some applications will work better if the | natively using IMAP4, some applications will work better if the | |||
| message content can be manipulated using schemes external to the | message content can be manipulated using schemes external to the | |||
| IMAP4 connection. In our cellular telephone example, it might be | IMAP4 connection. In our cellular telephone example, it might be | |||
| preferable for the telephone client to retrieve the audio data | preferable for the telephone client to retrieve the audio data | |||
| using RTSP. This specifications defines a mechanism for an IMAP4 | using RTSP. This specifications defines a mechanism for an IMAP4 | |||
| client to request message content from a server through an external | client to request message content from a server through an external | |||
| scheme. | scheme. | |||
| 2. Conventions Used in this Document | 2. Conventions Used in this Document | |||
| The key words "MUST," "MUST NOT," "SHOULD," "SHOULD NOT," and "MAY" | The key words "MUST," "MUST NOT," "SHOULD," "SHOULD NOT," and "MAY" | |||
| in this document are to be interpreted as described in [KEYWORD]. | in this document are to be interpreted as described in [KEYWORD]. | |||
| In examples, "C:" and "S:" preface lines sent by the client and the | In examples, "C:" and "S:" preface lines sent by the client and the | |||
| server respectively. | server respectively. | |||
| 3. Overview | 3. Protocol Framework | |||
| 4. Protocol Framework | ||||
| This memo defines the following extensions to [IMAP4]. | This memo defines the following extensions to [IMAP4rev1]. | |||
| 4.1. CAPABILITY Identification | 3.1. CAPABILITY Identification | |||
| IMAP4 servers that support this extension MUST include a CHANNEL | IMAP4 servers that support this extension MUST include a CHANNEL | |||
| capability response in the response list to the CAPABILITY command. | capability response in the response list to the CAPABILITY command. | |||
| This entry indicates the server supports the extension, and lists | This entry indicates the server supports the extension, and lists | |||
| the external schemes available to the CHANNEL command. The capabil- | the schemes available to the CHANNEL command. The capability | |||
| ity response consists of the string "CHANNEL=" followed by a comma- | response consists of the string "CHANNEL=" followed by a | |||
| seperated list of CHANNEL services. | comma-seperated list of schemes supported by the CHANNEL extension. | |||
| >>> e.g. CHANNEL=rtsp,imap | ||||
| >>> | ||||
| >>> Is this comma-list syntax going to mess things up for | ||||
| >>> parsers? We prefer it because it's more compact than | ||||
| >>> CHANNEL=rtsp CHANNEL=imap (AUTH-style lists). | ||||
| 4.2. CHANNEL Command | 3.2. CHANNEL Command | |||
| The CHANNEL command requests that message data be retrieved through | The CHANNEL command requests that message data be retrieved through | |||
| an external scheme. The scheme is specified using a URI [URI]. | an external scheme. Clients may issue a partially-qualified URI, in | |||
| Clients may issue a partially-qualified URI, in which case the | which case the server will determine the final connection | |||
| server will determine the final connection end-point. What consti- | end-point. What constitutes a partially-qualified URI is implemen- | |||
| tutes a partially-qualified URI is implementation defined, however | tation defined, however every URI MUST contain at least a scheme. | |||
| every URI MUST contain at least a scheme. | ||||
| The syntax of the CHANNEL command is: | The syntax of the CHANNEL command is: | |||
| tag CHANNEL uri_list msg_set | tag CHANNEL uri-list channel-set | |||
| uri_list is a list of URIs specifying the locations where the | uri-list is a list of URIs specifying how the client is willing to | |||
| client is willing to retrieve the message data. If the list con- | retrieve the message data. If uri-list contains more than one ele- | |||
| tains more than one element the server must enumerate the list in | ment the server must enumerate the list in order and SHOULD return | |||
| order and SHOULD return the message data via the first URI it is | the message data via the first URI it is capable of using. | |||
| capable of using. | ||||
| >>> the intent is that the client can indicate a list of | >>> the intent is that the client can indicate a list of | |||
| >>> services in descending order of usefulness/quality. | >>> services in descending order of usefulness/quality. | |||
| >>> Also, there is no guarantee that a server can express a | ||||
| >>> Also, there is no guarantee that a server can express | >>> particular body section through all of its advertised | |||
| >>> a particular body section through all of its advertised | ||||
| >>> schemes, thus the list provides fallback for the server | >>> schemes, thus the list provides fallback for the server | |||
| >>> as well as the client. | >>> as well as the client. | |||
| msg_set is a list of messages and body sections to be retrieved | channel-set is a list of message body sections to be retrieved | |||
| through the specified URI. | through the specified URI. | |||
| >>> example syntax: | >>> example syntax: | |||
| >>> | >>> 0 CHANNEL (rtsp imap) (1 2)(3 1)(3 9.1) | |||
| >>> 0 CHANNEL ("rtsp:" "imap:") (1 (body[2])) (3 (body[1] body[9])) | >>> asks for section 2 of message 1 and sections 1 and 9.1 | |||
| >>> | >>> of message 3. The preferred method is RTSP, however if | |||
| >>> asks for section 2 of message 1 and section 1 of message | >>> RTSP isn't available/usable, try IMAP. In either case, | |||
| >>> 3 via RTSP. If RTSP isn't available/usable, try IMAP. In | >>> the server will fill in the connection end-point | |||
| >>> either case, the server will fill in the connection end-point | >>> information. You cannot ask for .HEADERS or .MIME data | |||
| >>> information. | >>> with CHANNEL. | |||
| 4.3. CHANNEL Response | 3.3. CHANNEL Response | |||
| The CHANNEL response returns connection status and location infor- | The CHANNEL response returns connection status and location infor- | |||
| mation to the client. One untagged response is returned for each | mation to the client. One untagged response is returned for each | |||
| body section requested. | body section requested. | |||
| >>> example response to above command: | >>> example response to above command: | |||
| >>> | >>> | |||
| >>> S: * 1 CHANNEL ((body[2]) "rtsp://example.com/1441243") | >>> S: * 1 CHANNEL 2 rtsp://frobozz.example.com/144124 | |||
| >>> S: * 3 CHANNEL ((body[1]) | >>> S: * 3 CHANNEL 1 | |||
| >>> S: "imap://user@imap.example.com:/inbox;uidvalidity=2/;uid=33") | >>> imap://user@example.com:/inbox;uidvalidity=2/;uid=33 | |||
| >>> S: * 3 CHANNEL ((body[9]) NIL) | >>> S: * 3 CHANNEL 9.1 NIL | |||
| >>> S: 0 OK done | >>> S: 0 OK done | |||
| >>> | >>> | |||
| >>> The NIL response to the body[9] indicates that the part could not | >>> The NIL response to the section 9.1 request indicates | |||
| >>> be retrieved via either of the requested schemes. This could | >>> that the part could not be retrieved via either of the | |||
| >>> be caused by the inability to convert or represent the content | >>> requested schemes. This could be caused by the inability | |||
| >>> through the schemes, or because some resource was unavailable. | >>> to convert or represent the content through the schemes, | |||
| >>> or because some resource was unavailable. | ||||
| 5. Formal Protocol Syntax | The server MUST NOT issue an untagged CHANNEL response containing a | |||
| URL until such time as that URL is valid and avaliable for the | ||||
| client to dereference. The lifetime of the URL is implementation | ||||
| defined. | ||||
| 4. Formal Protocol Syntax | ||||
| The following syntax specification uses the augmented Backus-Naur | The following syntax specification uses the augmented Backus-Naur | |||
| Form (BNF) notation as used in [IMAP4]. | Form (ABNF) notation as defined in [ABNF], and incorporates by ref- | |||
| erence the Core Rules from that document. This syntax extends the | ||||
| grammar specified in [IMAP4rev1]. | ||||
| Except as noted otherwise, all alphabetic characters are case- | The following tokens are incorporated from [URI]: scheme, URI-ref- | |||
| insensitive. The use of upper or lower case characters to define | erence. | |||
| token strings is for editorial clarity only. Implementations MUST | ||||
| accept these strings in a case-insensitive fashion. | ||||
| This syntax extends the grammar specified in [IMAP4]. | capability =/ "CHANNEL=" scheme *["," scheme] | |||
| >>> TO BE DONE | channel = "CHANNEL" SP uri-list SP channel-set | |||
| 6. References | channel-data = "CHANNEL" nz-number (URI-reference / nil) | |||
| [IMAP4] Crispin, M., "Internet Message Access Protocol Version | channel-set = 1*( "(" nz-number SP section-part ")" ) | |||
| 4rev1," RFC2060, University of Washington, December 1996 | command-select =/ channel | |||
| [URI] Berners-Lee, T., et al, "Uniform Resource Identifiers (URI): | response-data = "*" SP (resp-cond-state / resp-cond-bye / | |||
| Generic Syntax," RFC2396, August 1998 | mailbox-data / message-data / | |||
| capability-data / channel-data) CRLF | ||||
| ; adds <channel-data> to IMAP4rev1 | ||||
| ; <response-data> | ||||
| uri-list = "(" URI-reference *[SP URI-reference] ")" | ||||
| 5. References | ||||
| [ABNF] Crocker, D., P. Overell, "Augmented BNF for Syntax Specifi- | ||||
| cations: ABNF." RFC2234, November 1997 | ||||
| [IMAP4rev1] Crispin, M., "Internet Message Access Protocol - Ver- | ||||
| sion 4rev1," Work in Progress | ||||
| [KEYWORD] Bradner, S., "Key words for use in RFCs to Indicate | [KEYWORD] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels," BCP 9, RFC2119, March 1997 | Requirement Levels," BCP 9, RFC2119, March 1997 | |||
| 7. Security Considerations | [URI] Berners-Lee, T., et al, "Uniform Resource Identifiers (URI): | |||
| Generic Syntax," RFC2396, August 1998 | ||||
| 8. Authors' Addresses | 6. Security Considerations | |||
| Lyndon Nerenberg Steve Hole | 7. Authors' Addresses | |||
| ACI/MessagingDirect ACI/MessagingDirect | ||||
| Suite 900 Suite 900 | ||||
| 10117 - Jasper Avenue 10117 - Jasper Avenue | ||||
| Edmonton, Alberta Edmonton, Alberta | ||||
| Canada T5J 1W8 Canada T5J 1W8 | ||||
| <lyndon@messagingdirect.com> <steve.hole@messagingdirect.com> | Lyndon Nerenberg Steve Hole | |||
| ACI Worldwide ACI Worldwide | ||||
| Suite 900 Suite 900 | ||||
| 10117 - Jasper Avenue 10117 - Jasper Avenue | ||||
| Edmonton, Alberta Edmonton, Alberta | ||||
| Canada T5J 1W8 Canada T5J 1W8 | ||||
| <lyndon@atg.aciworldwide.com> <steve.hole@messagingdirect.com> | ||||
| Barry Leiba | Barry Leiba | |||
| IBM T.J. Watson Research Center | IBM T.J. Watson Research Center | |||
| 30 Saw Mill River Road | 30 Saw Mill River Road | |||
| Hawthorne, NY 10532 | Hawthorne, NY 10532 | |||
| <leiba@watson.ibm.com> | <leiba@watson.ibm.com> | |||
| Phone: +1 914 784 7941 | Phone: +1 914 784 7941 | |||
| End of changes. 34 change blocks. | ||||
| 85 lines changed or deleted | 101 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/ | ||||