<?xml version="1.0" encoding="US-ASCII"?>
<!-- New document created at Fri May 12 13:24:15 BST 2006 -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<rfc category="info" ipr="full3978" obsoletes="" updates="RFC 4240, RFC 4722"
     xml:lang="en">
  <front>
    <title abbrev="Lemonade Multimedia Streaming">Streaming Multimedia
    Messaging Attachments</title>

    <author fullname="Neil L Cook" initials="N.L." surname="Cook">
      <organization abbrev="Noware">Noware</organization>

      <address>
        <email>neil.cook@noware.co.uk</email>
      </address>
    </author>

    <date day="16" month="February" year="2007" />

    <area>Applications</area>

    <workgroup>Lemonade</workgroup>

    <abstract>
      <t>This document describes a method for streaming multimedia attachments
      received by a resource constrained and/or mobile device from an IMAP
      server. It allows such clients, which often have limits in storage space
      and bandwidth, to play video and audio e-mail content.</t>

      <t>The document describes a profile for making use of the IMAP URLAUTH
      extension (RFC 4467), the Network Announcement SIP Media Service (RFC
      4240), and the Media Server Control Markup Language (RFC 4722). The
      document also defines a new IMAP METADATA entry.</t>
    </abstract>

    <note title="Conventions Used in this Document">
      <t>The key words "MUST", "MUST NOT", "SHOULD", "SHOULD NOT", and "MAY"
      in this document are to be interpreted as defined in <xref
      target="KEYWORDS">RFC 2119</xref>.</t>

      <t>In examples, "C:" and "S:" indicate lines sent by the client and
      server respectively. If a single "C:" or "S:" label applies to multiple
      lines, then the line breaks between those lines are for editorial
      clarity only and are not part of the actual protocol exchange.</t>
    </note>
  </front>

  <middle>
    <section anchor="intro" title="Introduction" toc="default">
      <t>Email clients on resource and/or network constrained devices, such a
      mobile phones, may have difficulties in retrieving and/or storing large
      attachments received in a message. For example, on a poor network link,
      the latency required to download the entire attachment may not be
      acceptable to the user. Conversely, even on a high-speed network, the
      device may not have enough storage space to secure the attachment once
      retrieved.</t>

      <t>For certain media, such as audio and video, there is a solution: the
      media can be streamed to the device, using protocols such as <xref
      target="SIP">SIP</xref> and particularly the media server profile as
      specified in <xref target="NETANN">RFC 4240</xref> or <xref
      target="MSCML"> MSCML</xref>. Streaming the media to the device
      addresses both the latency issue, since the client can start playing the
      media immediately, and the storage issue, since the client does not need
      to store the media locally. A tradeoff is that the media cannot be
      viewed/played when the device is offline.</t>

      <t>Examples of the types of media that would benefit from the ability to
      stream such media to the device include: <list style="hanging">
          <t>+ Voice or Video mail messages received as an attachment</t>

          <t>+ Audio clips such as ring tones received as an attachment</t>

          <t>+ Video clips such as movie trailers received as an
          attachment</t>
        </list></t>

      <t>The client may wish to present the user with the ability to use
      simple "VCR"-style controls such as pause, fast-forward and rewind. In
      consideration of this, the document presents two alternatives for
      streaming media - a simple mechanism which makes use of the announcement
      service of RFC 4240, and a more complex mechanism which allows VCR
      controls, based on <xref target="MSCML">MSCML (RFC 4722)</xref>. The
      choice of which mechanism to use is up to the client. The choice may be
      based on limitations of the client or the configured media server. This
      document presents suggestions for determining which of these services
      are available.</t>
    </section>

    <section anchor="mechanism" title="Mechanism" toc="default">
      <section anchor="overview" title="Overview of Mechanism" toc="default">
        <t>The proposed mechanism for streaming media to messaging clients is
        a profile for making use of several existing mechanisms, namely: <list
            style="numbers">
            <t>IMAP URLAUTH Extension <xref target="URLAUTH">(RFC 4467)</xref>
            - Providing the ability to generate an <xref target="IMAPURL">IMAP
            URL</xref> that allows anonymous access from external systems to
            specific message parts; for example, an audio clip.</t>

            <t>Media Server Announcement Service <xref target="NETANN">(RFC
            4240)</xref> - Providing the ability for a media server to stream
            media using a reference provided by the media server client in a
            URL.</t>

            <t>Media Server Interactive Voice Response (IVR) Service <xref
            target="MSCML">(RFC 4722)</xref> - Providing the ability to stream
            media as above, but with VCR-style controls.</t>
          </list></t>

        <t>However, it should be noted that this document proposes an
        extension to the <xref target="SIPPARAM">SIP Parameter
        Registry</xref>, in order to accommodate the passing of a content
        transfer encoding parameter.</t>

        <t>This document also proposes a new attribute for the IMAP <xref
        target="METADATA">METADATA Extension</xref>, which is used to provide
        information about zero or more suitable media servers for use with the
        <xref target="IMAP">IMAP</xref> server.</t>

        <figure anchor="overview_mechanism" title="">
          <preamble>The approach is shown in the following figure:</preamble>

          <artwork align="left" alt="" height="" name="" type="" width=""
                   xml:space="preserve"><![CDATA[

+--------------+
|              |
| Email Client |^
|              | \
+--------------+  \
    |           \  \
    |            \  \ (5)
    | (1),        \  \
    | (2)          \  \
    |           (3),\  \
    |           (6)  \  \
    |                 \  \
    v                  v  v
+--------------+       +----------------+
|              |  (4)  |                |
| IMAP Server  |<------|  Media Server  |
|              |       |                |
+--------------+       +----------------+
            
          ]]></artwork>
        </figure>

        <t>The proposed mechanism has the following steps: <list
            style="numbers">
            <t>Client determines from headers of a particular message that a
            particular message part (attachment) should be streamed to the
            user. Note that no assumptions are made about how/when/if the
            client contacts the user of the client about this decision. User
            input MAY be required in order to initiate the proposed
            mechanism.</t>

            <t>Client constructs an IMAP URL referencing the message part, and
            uses the <xref target="URLAUTH">GENURLAUTH</xref> command to
            generate a URLAUTH authorized IMAP URL. Client may optionally use
            the IMAP server to discover a suitable media server for streaming
            the media.</t>

            <t>Client connects to a SIP Media Server using the Announcement
            Service as specified in <xref target="NETANN">RFC 4240</xref>, or
            the IVR Service as specified in <xref target="MSCML">RFC
            4722</xref>, and passes the URLAUTH authorized URL to the media
            server.</t>

            <t>Media Server connects to the IMAP Server specified in the
            referenced URL, and uses the IMAP <xref
            target="URLAUTH">URLFETCH</xref> command to retrieve the message
            part.</t>

            <t>Media server streams the retrieved message part to the client
            using <xref target="RTP">RTP</xref>.</t>

            <t>The media server or the client terminates the SIP session.</t>
          </list></t>

        <t>It should be noted that the proposed mechanism makes several
        assumptions about the mobile device, as well as the network services,
        namely: <list style="hanging">
            <t>+ Mobile device is provisioned with, or obtains from the IMAP
            server, the address or addresses of a media server which supports
            either <xref target="NETANN">RFC 4240</xref> or <xref
            target="MSCML">RFC 4722</xref>.</t>

            <t>+ Media Server(s) used by the mobile device support the <xref
            target="IMAPURL">IMAP URL</xref> scheme for the announcement
            and/or IVR services</t>

            <t>+ IMAP Server used by the mobile device supports generating
            anonymous IMAP URLs using the URLAUTH mechanism</t>
          </list></t>

        <t>This document assumes an Internet deployment where there are no
        network restrictions between the different components. Specifically,
        it does not address issues that can occur when network policies
        restrict the communication between different components, especially
        between the media server and the IMAP server.</t>
      </section>

      <section anchor="genurlauth" title="Client use of GENURLAUTH Command"
               toc="default">
        <t>The decision to make use of streaming services for a message part
        will usually be predicated on the content type of the message part.
        Using the capabilities of the IMAP FETCH command, clients determine
        the <xref target="MIME">MIME</xref> Content-Type of particular message
        parts and based on local policies or heuristics, decide that streaming
        for that message part will be attempted.</t>

        <t>Once the client has determined that a particular message part
        requires streaming, the client generates an IMAP URL that refers to
        the message part according to the method described in <xref
        target="IMAPURL">RFC 2192</xref>. The client then begins the process
        of generating an URLAUTH URL, by appending ";EXPIRE=&lt;datetime&gt;"
        and ";URLAUTH=&lt;access&gt;" to the initial URL.</t>

        <t>The ";EXPIRE=&lt;datetime&gt;" parameter is optional, however it
        SHOULD be used, since the use of anonymous URLAUTH authorized URLs is
        a security risk, and doing so ensures that at some point in the
        future, permission to access that URL will cease.</t>

        <t>The &lt;access&gt; portion of the URLAUTH parameter SHOULD be
        'authuser' if the media server discovery mechanism defined in <xref
        target="discovery"></xref> specifies that the media server is an
        authorised user of the IMAP server. Without specific prior knowledge
        of such a configuration (either through the discovery mechanism or by
        an out of band mechanism), the client MUST use the 'anonymous' access
        identifier.</t>

        <t>The client uses the URL generated as a parameter to the GENAUTHURL
        command, using the INTERNAL authorization mechanism. The URL returned
        by a successful response to this command will then be passed to the
        media server. If no successful response to the GENURLAUTH command is
        received, then no further action will be possible with respect to
        streaming media to the client.</t>

        <t>Examples:</t>

        <t>C: a122 UID FETCH 24356 BODY[1.2.MIME] <vspace blankLines="0" /> S:
        * 26 FETCH (BODY[1.2.MIME] {127} <vspace blankLines="0" /> S:
        Content-Transfer-Encoding: base64 <vspace blankLines="0" /> S:
        Content-Type: video/mpeg; <vspace blankLines="0" /> S: UID 24356 FLAGS
        (\Seen)) <vspace blankLines="0" /> S: a122 OK FETCH completed. <vspace
        blankLines="0" /> C: a123 GENURLAUTH
        "imap://joe@example.com/INBOX/;uid=24356/;\ <vspace />
        section=1.2;expire=2006-12-19T16:39:57-08:00;\ <vspace />
        urlauth=anonymous" INTERNAL <vspace blankLines="0" /> S: * GENURLAUTH
        "imap://joe@example.com/INBOX/;uid=24356/;\ <vspace />
        section=1.2;expire=2006-12-19T16:39:\57-08:00;\ <vspace />
        urlauth=anonymous:\ <vspace />
        internal:238234982398239898a9898998798b987s87920" <vspace
        blankLines="0" /> S: a123 OK GENURLAUTH completed <vspace
        blankLines="1" /></t>

        <t>C: a122 UID FETCH 24359 BODY[1.2.MIME] <vspace blankLines="0" /> S:
        * 26 FETCH (BODY[1.3.MIME] {127} <vspace blankLines="0" /> S:
        Content-Transfer-Encoding: base64 <vspace blankLines="0" /> S:
        Content-Type: audio/G729; <vspace blankLines="0" /> S: UID 24359 FLAGS
        (\Seen)) <vspace blankLines="0" /> S: a122 OK FETCH completed. <vspace
        blankLines="0" /> C: a123 GENURLAUTH
        "imap://joe@example.com/INBOX/;uid=24359/;\ <vspace />
        section=1.3;expire=2006-12-19T16:39:57-08:00;\ <vspace />
        urlauth=anonymous" INTERNAL <vspace blankLines="0" /> S: * GENURLAUTH
        "imap://joe@example.com/INBOX/;uid=24359/;\ <vspace />
        section=1.3;expire=2006-12-20T18:31:\45-08:00;\ <vspace />
        urlauth=authuser:\ <vspace />
        internal:098230923409284092384092840293480239482" <vspace
        blankLines="0" /> S: a123 OK GENURLAUTH completed</t>
      </section>

      <section anchor="discovery"
               title="Media Server Discovery using the METADATA Extension"
               toc="default">
        <t>There are two possibilities for clients with regard to determining
        the hostname and port number information of a suitable media server:
        <list style="numbers">
            <t>No discovery of media servers is required: clients are
            configured with suitable media server information in an
            out-of-band manner.</t>

            <t>Discovery of media servers is required: clients use the
            discovery mechanism described in this section to determine a
            suitable media server to use for streaming multimedia message
            parts.</t>
          </list></t>

        <t>There are several scenarios where media server discovery would be a
        requirement for streaming to be successful: <list style="symbols">
            <t>Client is not configured with the address of any media
            servers.</t>

            <t>Client is configured with the address of one or more media
            servers, but the IMAP server is configured to only accept URLFETCH
            requests from specific media servers (for security or site policy
            reasons), and thus streaming would fail due to the media server
            not being able to retrieve the media from the IMAP server.</t>
          </list></t>

        <t>There is also a scenario where media server location would improve
        the security of the streaming mechanism, by avoiding the use of
        anonymous or "pawn- ticket" URLs. For example, the client could
        discover a tuple of a media server address and an IMAP username, which
        allowed the client to generate a URL which was secure in that it could
        *only* be accessed by a specific (presumably trusted) media
        server.</t>

        <t>This document proposes using the IMAP <xref
        target="METADATA">METADATA</xref> extension, via the use of an entry
        that provides the contact information for suitable media servers for
        use with the IMAP server. Media Server discovery is optional: clients
        are free to use pre-configured information about media servers, or to
        fall back to pre-configured information if they encounter IMAP servers
        that do not support either the METADATA extension or the proposed
        entry, or that do not provide a value for the entry.</t>

        <t>The following gives the proposed IANA submission for the METADATA
        server entry to be used for media server discovery. <vspace
        blankLines="1" /> To: iana@iana.org <vspace blankLines="1" /> Subject:
        IMAP METADATA Registration <vspace blankLines="1" /> Please register
        the following IMAP METADATA item: <vspace blankLines="1" /> [X] Entry
        [] Attribute <vspace blankLines="1" /> [ ] Mailbox [X] Server <vspace
        blankLines="1" /> Name: /mediaServers <vspace blankLines="1" />
        Description: Defined in Streaming Multimedia Messaging Attachments
        <vspace blankLines="1" /> Content-type: text/plain;charset=utf-8
        <vspace blankLines="1" /> Contact person: Neil Cook <vspace
        blankLines="1" /> email: neil.cook@noware.co.uk</t>

        <t>The "value" attribute of the /mediaServers entry is formatted
        according to the formalSyntax specified in <xref
        target="formalsyntax"></xref>. This consists of a tuple of host, port
        and optional "authuser", where the host, port and authuser are
        separated using a colon ":", and tuples are separated using a ";".</t>

        <t>For example: <vspace blankLines="1" />
        "ms.example.net:5060:authuser;ms1.example.net:5060;ms2.example.net:5061"
        <vspace blankLines="1" />
        "10.20.30.40:5060;10.20.30.41:5060;10.20.30.42:5060:authuser"</t>

        <t>Clients SHOULD parse the value of mediaServers, (using either the
        value.priv or value.shared: whichever is available and/or
        appropriate), and contact a media server using one of the supplied
        values. No particular preference order is implied by the ordering, and
        it is left to the client implementor to decide the algorithm to use
        when selecting the media server(s) to contact, and the selection of
        alternates under failure conditions.</t>
      </section>

      <section anchor="clientdecision"
               title="Client Determination of Media Server Capabilities"
               toc="default">
        <t>Once an authorized IMAP URL has been generated, it is up to the
        client to pass that URL to a suitable media server that is capable of
        retrieving the URL via IMAP, and streaming the content to the client
        using the <xref target="RTP">RTP</xref> protocol.</t>

        <t>If the client supports the MSCML IVR service, then it MUST attempt
        to contact the media server using the MSCML protocol by sending a SIP
        INVITE which has the service indicator "ivr". Due to issues described
        in <xref target="security"></xref>, the client SHOULD use a suitable
        end-to-end encryption method, such as <xref
        target="SMIME">S/MIME</xref>.</t>

        <t>Assuming the media server responds to the INVITE without error, the
        client can carry on using the MSCML IVR service as specified in <xref
        target="mscmlinvite"></xref>. If the media server responds with an
        error indicating that the "ivr" service is not supported, then if the
        client supports it, the client SHOULD attempt to contact the media
        server using the Announcement Service, as described in <xref
        target="netanninvite"></xref>.</t>

        <t>The following example shows an example SIP INVITE using the "ivr"
        service indicator: <vspace blankLines="1" /> C: <vspace /> INVITE
        sip:ivr@ms2.example.net SIP/2.0 <vspace /> &lt; SIP Headers omitted
        for reasons of brevity &gt;</t>
      </section>

      <section anchor="netanninvite"
               title="Client Use of the Media Server Announcement Service"
               toc="default">
        <t>Assuming the client or media server does not support use of the
        MSCML protocol, the media server announcement service is used, as
        described in <xref target="NETANN">RFC 4240</xref>. This service
        allows the client to send a SIP INVITE to a special username ('annc')
        at the media server (the "announcement" user), supplying the URL
        obtained as per <xref target="genurlauth"></xref>.</t>

        <t>The SIP INVITE is constructed as shown in the examples below; note
        that as per RFC 4240, the play parameter is mandatory, and specifies
        the authorized IMAP URL to be played.</t>

        <t>The content-type parameter is optional in RFC 4240, however it MUST
        be supplied here, using the Content-Type header returned by the IMAP
        server for the message part. The reason for supplying the content-type
        parameter is that when the media server issues a URLFETCH command to
        retrieve the message part, the message part will be returned without
        any content type information. Since the media server is not likely to
        have authorized access to other sections in that message, for example
        the MIME section, then it may fail to stream the content if the
        content type is not supplied as a parameter to the SIP INVITE URI.</t>

        <t>Similarly, the message may well be encoded with a content transfer
        encoding such as base 64. However, RFC 4240 does not include a method
        for communicating content transfer encoding to the media server as
        part of the announcement service, nor does the URLFETCH command
        include a mechanism for retrieving message parts without encoding
        (c.f. the <xref target="BINARY">BINARY</xref> extension to IMAP).
        Therefore, an extension parameter is required, namely a
        'content-transfer-encoding' parameter, using the value of the
        Content-Transfer-Encoding MIME header returned by the IMAP server for
        the message part. The content-transfer-encoding parameter MUST be
        supplied if a Content-Transfer-Encoding header for the message part
        existed in the original message.</t>

        <t>Examples of valid SIP INVITE URIs sent to the media server
        announcement service:</t>

        <t>sip:annc@ms2.example.net; \ <vspace />
        play=imap://joe@example.com/INBOX/;uid=24356/;section=1.2;\ <vspace />
        expire=2006-12-19T16:39:\57-08:00;urlauth=anonymous:\ <vspace />
        internal:238234982398239898a9898998798b987s87920; \ <vspace />
        content-type=video/mpeg; \ <vspace /> content-transfer-encoding=base64
        <vspace blankLines="2" /> sip:annc@ms1.example.net; \ <vspace />
        play=imap://fred@example.com/INBOX/;uid=24359/;section=1.3;\
        <vspace /> expire=2006-12-20T18:31:\45-08:00;urlauth=authuser:\
        <vspace /> internal:098230923409284092384092840293480239482; \
        <vspace /> content-type=audio/G729; \<vspace />
        content-transfer-encoding=base64</t>

        <t>If the receives a 200 OK response, the media server has
        successfully retrieved the content from the IMAP server and the
        negotiated RTP stream will shortly begin after the ACK.</t>

        <t>An unsuccessful response code of 404 received from the media server
        indicates that the content could not be found or could not be
        retrieved for some reason. For example, the media server may not
        support the use of IMAP URLs. At this point, there are several options
        to the client, such as using alternate media servers, or giving up in
        attempting to stream the required message part.</t>
      </section>

      <section anchor="transcoding" title="Media Negotiation and Transcoding">
        <t>This document uses standards and protocols from two traditionally
        separate application areas: Mobile Email (primarily IMAP) and Internet
        Telephony/Streaming (e.g. SIP/RTP). Since the document primarily
        addresses enhancing the capabilities of mobile email, it is felt
        worthwhile to give some examples of simple SIP/SDP exchanges, and
        discussing capabilities such as media negotiation (using SDP) and
        media transcoding.</t>

        <t>In the below example, the client contacts the media server using
        the SIP INVITE command to contact the Announcement service (see <xref
        target="netanninvite"></xref>), advertising support for a range of
        audio and video codecs (using <xref target="SDP">SDP</xref>), and in
        response the media server advertises only a set of audio codecs. This
        process is identical for the IVR service, except that the IVR service
        does not use the SIP Request-URI to indicate the content to be played;
        instead this is carried in a subsequent SIP INFO request.</t>

        <t>The client and server now know from the SDP advertised by both
        client and server that communication must be using the subset of audio
        codecs supported by both client and server (in the example SDP, it is
        clear that the server does not support any video codecs). The media
        server may perform transcoding (i.e. converting between codecs) on the
        media received from the IMAP server in order to satisfy the codecs
        supported by the client: for example the media server may downgrade
        the video retrieved from the IMAP server to the audio component
        only.</t>

        <t>For clients using the Announcement service, the media server MUST
        return an error to the INVITE if it cannot find a common codec between
        the client, server and media, and it cannot transcode to a suitable
        codec. Similarly, for clients using the MSCML IVR service, the media
        server MUST return a suitable error response to the
        &lt;playcollect&gt; request.</t>

        <t>Example SIP INVITE and SDP Media Negotiation</t>

        <t>C: INVITE sip:annc@ms2.example.net; \ <vspace />
        play=imap://joe@example.com/INBOX/;uid=24356/;section=1.2;\ <vspace />
        expire=2006-12-19T16:39:\57-08:00;urlauth=anonymous:\ <vspace />
        internal:238234982398239898a9898998798b987s87920; \<vspace />
        content-type=video/mpeg; \<vspace /> content-transfer-encoding=base64
        SIP/2.0<vspace /> From: UserA &lt;sip:UAA@example.com&gt;<vspace />
        To: NetAnn &lt;sip:annc@ms2.example.com&gt;<vspace /> Call-ID:
        8204589102@example.com<vspace /> CSeq: 1 INVITE <vspace /> Contact:
        &lt;sip:UserA@10.20.30.40&gt; <vspace /> Content-Type: application/sdp
        <vspace /> Content-Length: 481 <vspace /> <vspace /> v=0 <vspace />
        o=UserA 2890844526 2890844526 IN IP4 10.20.30.40 <vspace /> s=Session
        SDP <vspace /> c=IN IP4 10.20.30.40 <vspace /> t=3034423619 0
        <vspace /> m=audio 9224 RTP/AVP 0 8 3 98 101 <vspace /> a=alt:1 1 :
        01BB7F04 6CBC7A28 10.20.30.40 9224 <vspace /> a=fmtp:101
        0-15<vspace /> a=rtpmap:98 ilbc/8000<vspace /> a=rtpmap:101
        telephone-event/8000<vspace /> a=sendrecv<vspace /> m=video 9226
        RTP/AVP 105 34 120<vspace /> a=alt:1 1 : 01BCADB3 95DFFD80 10.20.30.40
        9226<vspace /> a=fmtp:105 profile=3;level=20<vspace /> a=fmtp:34 CIF=2
        QCIF=2 MAXBR=5120<vspace /> a=rtpmap:105 h263-2000/90000<vspace />
        a=rtpmap:120 h263/90000<vspace /> a=sendrecv<vspace /> <vspace
        blankLines="1" /> S:<vspace /> SIP/2.0 200 OK<vspace /> From: UserA
        &lt;sip:UAA@example.com&gt;<vspace /> To: NetAnn
        &lt;sip:annc@ms2.example.com&gt;<vspace /> Call-ID:
        8204589102@example.com<vspace /> CSeq: 1 INVITE<vspace /> Contact:
        &lt;sip:netann@10.20.30.41&gt;<vspace /> Content-Type:
        application/sdp<vspace /> Content-Length: 317<vspace /> <vspace />
        v=0<vspace /> o=NetAnn 2890844527 2890844527 IN IP4
        10.20.30.41<vspace /> s=Session SDP<vspace /> c=IN IP4
        10.20.30.41<vspace /> t=3034423619 0<vspace /> m=audio 17684 RTP/AVP 0
        8 3 18 98 101<vspace /> a=rtpmap:0 PCMU/8000<vspace /> a=rtpmap:8
        PCMA/8000<vspace /> a=rtpmap:3 GSM/8000<vspace /> a=rtpmap:18
        G729/8000<vspace /> a=fmtp:18 annexb=no<vspace /> a=rtpmap:98
        iLBC/8000<vspace /> a=rtpmap:101 telephone-event/8000<vspace />
        a=fmtp:101 0-16<vspace /> <vspace blankLines="1" /> C:<vspace /> ACK
        sip:netann@10.20.30.41 SIP/2.0<vspace /> From: UserA
        &lt;sip:UAA@example.com&gt;<vspace /> To: NetAnn
        &lt;sip:annc@ms2.example.com&gt;<vspace /> Call-ID:
        8204589102@example.com<vspace /> CSeq: 1 ACK<vspace /> Content-Length:
        0<vspace /></t>
      </section>

      <section anchor="mscmlinvite"
               title="Client Use of the Media Server MSCML IVR Service"
               toc="default">
        <t>Once the client has determined that the media server supports the
        IVR service, it is up to the client to generate a suitable MSCML
        request to initiate streaming of the required media.</t>

        <t>When using the IVR service, the initial SIP invite is used only to
        establish that the media server supports the MSCML IVR service, and to
        negotiate suitable media codecs. Once the initial SIP INVITE and
        response to that INVITE have been completed successfully, the client
        must generate a SIP INFO request with MSCML in the body of the request
        to initiate streaming.</t>

        <t>The &lt;playcollect&gt; request is used, as this allows the use of
        DTMF digits to control playback of the media, such as fast-forward or
        rewind.</t>

        <t>Since the playcollect request is used purely for its VCR
        capabilities, there is no need for the media server to perform DTMF
        collection, therefore the playcollect attributes "firstdigittimer",
        "interdigittimer" and "extradigittimer" SHOULD all be set to "0ms",
        which will have the effect of causing digit collection to cease
        immediately the media has finished playing.</t>

        <t>The "ffkey" and "rwkey" attributes of &lt;playcollect&gt; are used
        to control fast forward and rewind behaviour, with the "skipinterval"
        attribute being used to control the 'speed' of these actions.</t>

        <t>The &lt;prompt&gt; tag is used to specify the media to be played,
        and SHOULD have a single &lt;audio&gt; tag that gives the URL of the
        media, as per the <xref target="genurlauth"></xref>. The
        audio-specific name of the tag is historical, as the tag can be used
        for video as well as audio content. The "stoponerror" attribute SHOULD
        be set to "yes", as then meaningful error messages will be returned by
        the media server in the event of problems such as retrieving the media
        from the IMAP server.</t>

        <t>The &lt;audio&gt; tag in RFC 4722 has no attributes that specify
        the content-type or content-transfer-encoding of the media to be
        played. Therefore this document proposes two new attributes for this
        purpose, namely a "contenttype" attribute, and a
        "contenttransferencoding" attribute. The syntax of these attributes is
        identical to the syntax of their counterparts in <xref
        target="MIME">MIME</xref>.</t>

        <t>An example SIP INFO request using the &lt;playcollect&gt; request
        is shown at the end of this section.</t>

        <t>It should be noted that under normal (i.e. non-error) conditions,
        the response to the &lt;playcollect&gt; request is a SIP "200 OK"
        response. The media server then streams the media, and only when the
        media has finished playing (naturally or due to a user request), does
        the media server send a &lt;playcollect&gt; response, which includes
        details of the media played, such as length, and any digits
        collected.</t>

        <t>The client may suspend playback of the media at any time by either
        sending the DTMF escape key (specified as an attribute to the
        &lt;playcollect&gt; request) or by sending a &lt;stop&gt; request to
        the media server in a SIP INFO message. Upon receipt of the request,
        the media server will acknowledge it, and then cease streaming of the
        media, followed by a SIP INFO message containing the
        &lt;playcollect&gt; response.</t>

        <t>If the media server cannot play the media for any reason, for
        example if it cannot retrieve the media from the IMAP server,
        streaming will not take place, and the &lt;playcollect&gt; response
        will be sent, usually with meaningful values in the &lt;error_info&gt;
        element.</t>

        <t>The following gives an example dialog between a client and media
        server, including a rewind request, and termination of the playback by
        use of the escape key. Some elements of the SIP dialog such as full
        SIP headers and SDP are omitted for reasons of brevity. (The protocol
        diagram in <xref target="mscml_protocol"></xref> shows the high-level
        message flow between all the components, including the IMAP
        server.)</t>

        <t>C: <vspace /> INVITE sip:ivr@ms.example.com SIP/2.0<vspace /> From:
        UserA &lt;sip:UAA@example.com&gt;<vspace /> To: IVR
        &lt;sip:ivr@ms.example.com&gt;<vspace /> Call-ID:
        3298420296@example.com<vspace /> CSeq: 1 INVITE <vspace /> Contact:
        &lt;sip:UserA@10.20.30.40&gt; <vspace /> Content-Type: application/sdp
        <vspace /> Content-Length: XXX <vspace /> <vspace /> &lt;SDP
        Here&gt;<vspace blankLines="1" /> S: <vspace /> SIP/2.0 200
        OK<vspace /> From: UserA &lt;sip:UAA@example.com&gt;<vspace /> To: IVR
        &lt;sip:ivr@ms.example.com&gt;<vspace /> Call-ID:
        3298420296@example.com<vspace /> CSeq: 1 INVITE<vspace /> Contact:
        &lt;sip:ivr@10.20.30.41&gt;<vspace /> Content-Type:
        application/sdp<vspace /> Content-Length: XXX<vspace /> <vspace />
        &lt;SDP Here&gt;<vspace blankLines="1" /> C:<vspace /> ACK
        sip:ivr@ms.example.com SIP/2.0<vspace /> From: UserA
        &lt;sip:UAA@example.com&gt;<vspace /> To: IVR
        &lt;sip:ivr@ms2.example.com&gt;<vspace /> Call-ID:
        3298420296@example.com<vspace /> CSeq: 1 ACK<vspace /> Content-Length:
        0<vspace blankLines="1" /> C: <vspace /> INFO sip:ivr@10.20.30.41
        SIP/2.0<vspace /> From: UserA &lt;sip:UAA@example.com&gt;<vspace />
        To: IVR &lt;sip:ivr@ms.example.com&gt;<vspace /> Call-ID:
        3298420296@example.com<vspace /> CSeq: 2 INFO<vspace /> Content-Type:
        application/mediaservercontrol+xml<vspace /> Content-Length: 423
        <vspace /> <vspace /> &lt;?xml version="1.0"?&gt;<vspace />
        &lt;MediaServerControl version="1.0"&gt;<vspace />
        &lt;request&gt;<vspace /> &lt;playcollect id="332985001"<vspace
        blankLines="0" /> firstdigittimer="0ms" interdigittimer="0ms"
        extradigittimer="0ms"<vspace blankLines="0" /> skipinterval="6s"
        ffkey="6" rwkey="4" escape="*"&gt;<vspace /> &lt;prompt
        stoponerror="yes" <vspace /> locale="en_US" offset="0" gain="0"
        rate="0"<vspace /> delay="0" duration="infinite"
        repeat="0"&gt;<vspace /> &lt;audio
        url="imap://joe@example.com/INBOX/;uid=24356/;section=1.2;\ <vspace />
        expire=2006-12-19T16:39:\57-08:00;urlauth=anonymous:\ <vspace />
        internal:238234982398239898a9898998798b987s87920;" <vspace />
        contenttype="video/mpeg" <vspace />
        contenttransferencoding="base64"&gt;<vspace />
        &lt;/prompt&gt;<vspace /> &lt;/playcollect&gt;<vspace />
        &lt;/request&gt;<vspace /> &lt;/MediaServerControl&gt;<vspace
        blankLines="1" /> S: <vspace /> SIP/2.0 200 OK<vspace /> From: UserA
        &lt;sip:UAA@example.com&gt;<vspace /> To: IVR
        &lt;sip:ivr@ms.example.com&gt;<vspace /> Call-ID:
        3298420296@example.com<vspace /> CSeq: 2 INFO<vspace /> Contact:
        &lt;sip:ivr@10.20.30.41&gt;<vspace /> Content-Length: 0<vspace
        blankLines="1" /> &lt;Media Server retrieves media from IMAP Server
        and streams to client&gt; <vspace blankLines="1" /> C: <vspace />
        &lt;Client streams 6 key&gt;<vspace blankLines="1" /> S: <vspace />
        &lt;Media Server fast forwards media by 6 seconds&gt; <vspace
        blankLines="1" /> C: <vspace /> &lt;Client streams * key&gt;<vspace
        blankLines="1" /> S: <vspace /> &lt;Media Server stops streaming&gt;
        <vspace blankLines="1" /> S: <vspace /> INFO sip:UAA@10.20.30.40
        SIP/2.0<vspace /> From: IVR &lt;sip:ivr@ms.example.com&gt;<vspace />
        To: UserA &lt;sip:UAA@example.com&gt;<vspace /> Call-ID:
        3298420296@example.com<vspace /> CSeq: 5 INFO<vspace /> Contact:
        &lt;sip:ivr@10.20.30.41&gt;<vspace /> Content-Type:
        application/mediaservercontrol+xml<vspace /> Content-Length:
        XXX<vspace /> <vspace /> &lt;?xml version="1.0"?&gt;<vspace />
        &lt;MediaServerControl version="1.0"&gt;<vspace /> &lt;response
        id="332985001" request="playcollect"<vspace /> code="200"
        reason="escapekey" playduration="34s"<vspace /> playoffset="34s"
        digits="" /&gt; <vspace /> &lt;/MediaServerControl&gt;<vspace
        blankLines="1" /> C: <vspace /> SIP/2.0 200 OK <vspace /> From: IVR
        &lt;sip:ivr@ms.example.com&gt;<vspace /> To: UserA
        &lt;sip:UAA@example.com&gt;<vspace /> Call-ID:
        3298420296@example.com<vspace /> CSeq: 5 INFO<vspace />
        Content-Length: 0<vspace blankLines="1" /> C: <vspace /> BYE
        sip:ivr@10.20.30.41 SIP/2.0 <vspace /> From: UserA
        &lt;sip:UAA@example.com&gt;<vspace /> To: IVR
        &lt;sip:ivr@ms.example.com&gt;<vspace /> Call-ID:
        3298420296@example.com<vspace /> CSeq: 6 BYE<vspace /> Content-Length:
        0<vspace blankLines="1" /> S: <vspace /> SIP/2.0 200 OK<vspace />
        From: UserA &lt;sip:UAA@example.com&gt;<vspace /> To: IVR
        &lt;sip:ivr@ms.example.com&gt;<vspace /> Call-ID:
        3298420296@example.com<vspace /> CSeq: 6 BYE<vspace /> Contact:
        &lt;sip:ivr@10.20.30.41&gt;<vspace /> Content-Length: 0</t>
      </section>

      <section anchor="urlfetch" title="Media Server Use of IMAP Server">
        <t>This section describes how the media server converts the IMAP URL
        received via the announcement or IVR service into suitable IMAP
        commands for retrieving the content.</t>

        <t>The media server first connects to the IMAP server specified in the
        URL. Once connected, the media server SHOULD use <xref
        target="TLS">TLS</xref> to encrypt the communication path, unless the
        client and server policy both allow for insecure communications.</t>

        <t>If the media server is configured as an authorized user of the IMAP
        server, it SHOULD authenticate to the IMAP server using the
        credentials for that user. This document does not go into the details
        of IMAP authentication, but the authentication SHOULD NOT use the
        LOGIN command over a non-encrypted communication path, unless the
        client's and server's policy both allow for insecure
        communications.</t>

        <t>If the media server is not configured as an authorized user of the
        IMAP server, it MUST authenticate to the IMAP server using the LOGIN
        command, with the username of "anonymous". However, in this case, if
        the URL supplied in the 'play' parameter of the SIP INVITE specifies
        an authorization of 'authuser', then the media server SHOULD NOT
        attempt to contact the IMAP server, but SHOULD instead immediately
        return a response code of 404 to the client with a reason phrase of
        'Not authorized to access resource' reason.</t>

        <t>Once authenticated, the media server issues the URLFETCH command,
        using the URL supplied in the 'play' parameter of the SIP INVITE. A
        successful URLFETCH command will return the message part, which must
        be decoded by the media server, according to the
        content-transfer-encoding header provided by the client (if any). If
        the URLFETCH was unsuccessful, then the media server MUST return a
        response code of 404 to the client with an appropriate reason
        code.</t>

        <t>Assuming the content is retrieved and decoded successfully, the
        media server returns a 200 OK response code to the client. After an
        ACK is received, an RTP stream is delivered to the client using the
        parameters negotiated in the SDP.</t>

        <t>If appropriate, the media server MAY choose to implement connection
        caching, in which case connection and disconnection from the IMAP
        server are handled according to whatever algorithm the media server
        chooses. For example, the media server may know, a priori, that it
        will always access the same IMAP server using the same login
        credentials with an access pattern that would benefit from connection
        caching, without unduly impacting server resources.</t>

        <t>Examples:</t>

        <t>C: a001 LOGIN anonymous null <vspace /> S: a001 OK LOGIN completed.
        <vspace /> C: a002 URLFETCH
        "imap://joe@example.com/INBOX/;uid=24356/;section=1.2; \ <vspace />
        expire=2006-12-19T16:39:\57-08:00;urlauth=anonymous:\ <vspace />
        internal:238234982398239898a9898998798b987s87920" <vspace /> S: *
        URLFETCH "imap://joe@example.com/INBOX/;uid=24356/; \ <vspace />
        section=1.2;expire=2006-12-19T16:39:\57-08:00;urlauth=anonymous: \
        <vspace /> internal:238234982398239898a9898998798b987s87920" {36}
        <vspace /> S: U2kgdmlzIHBhY2VtLCBwYXJhIGJlbGx1bS4K <vspace /> S: a002
        OK URLFETCH completed. <vspace /> C: a003 LOGOUT <vspace /> S: a003 OK
        LOGOUT completed.</t>
      </section>

      <section title="Protocol Diagrams">
        <t>This section gives examples of using the mechanism described in the
        document to stream media from a media server to a client, fetching the
        content from an IMAP server. In all of the examples, the IMAP, SIP and
        RTP protocols use the line styles "-", "=", and "+", respectively. For
        simplicity, SIP session termination (BYE etc.) is not shown.</t>

        <section anchor="netann_protocol"
                 title="Announcement Service Protocol Diagram">
          <figure>
            <preamble>The following diagram shows a simplified view of the
            protocol interactions between the email client, the IMAP server
            and the media server when the client uses the Announcement
            Service.</preamble>

            <artwork><![CDATA[
Client                     IMAP Server                   Media Server
  |   FETCH BODY[MIME]          |                              | 
  |---------------------------->|                              | 
  |   GENURLAUTH                |                              | 
  |---------------------------->|                              |
  |                             |                              |
  |                          SIP INVITE                        | 
  |===========================================================>| 
  |                             |                              |
  |                             |          URLFETCH            |
  |                             |<-----------------------------|
  |                             |                              |
  |                          200 OK                            |
  |<===========================================================|
  |                          ACK                               |
  |===========================================================>|
  |                             |                              |
  |                    Stream Message Part (RTP)               |
  |<+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++|
  |                             |                              |
          
          ]]></artwork>
          </figure>
        </section>

        <section anchor="mscml_protocol" title="IVR Service Protocol Diagram">
          <figure>
            <preamble>The following diagram shows a simplified view of the
            protocol interactions between the email client, the IMAP server
            and the media server when the client uses the MSCML IVR
            Service.</preamble>

            <artwork><![CDATA[
Client                     IMAP Server                   Media Server
  |   FETCH BODY[MIME]          |                              | 
  |---------------------------->|                              | 
  |   GENURLAUTH                |                              | 
  |---------------------------->|                              |
  |                             |                              |
  |                          SIP INVITE                        | 
  |===========================================================>| 
  |                             |                              |
  |                          200 OK                            |
  |<===========================================================|
  |                          ACK                               |
  |===========================================================>|
  |                             |                              |
  |                          SIP INFO (playcollect)            |
  |===========================================================>|
  |                             |
  |                          200 OK                            |
  |<===========================================================|
  |                             |                              |
  |                             |          URLFETCH            |
  |                             |<-----------------------------|
  |                             |                              |
  |                    Stream Message Part (RTP)               |
  |<+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++|
  |                             |                              |
  |                          SIP INFO (e.g., DTMF ff)          |
  |===========================================================>|
  |                          200 OK                            |
  |<===========================================================|
  |                             |                              |
  |                (Streaming Ends or is terminated)           |
  |                             |                              |
  |                          SIP INFO (playcollect response)   |
  |<===========================================================|
          
          ]]></artwork>
          </figure>
        </section>
      </section>
    </section>

    <section anchor="security" title="Security Considerations" toc="default">
      <t>This document proposes the use of URLAUTH "pawn tickets" to grant
      access to message parts. The goal is for the media server to stream
      these parts. INote that f one uses an anonymous pawn ticket, that grants
      access to any client of the IMAP server without requiring any
      authentication credentials. Even if one grants an authorized pawn
      ticket, any client will have access granted that happens to be an
      authorized user of the IMAP server.</t>

      <t>Clearly, any third parties that gain access to the pawn tickets can
      potentially access private data. To minimise this, implementors should
      consider the following: <list style="symbols">
          <t>IMAP clients SHOULD use encryption such as <xref
          target="TLS">TLS</xref> to secure the communication path to the IMAP
          server</t>

          <t>The media server SHOULD use encryption such as TLS secure the
          communication path to the IMAP server</t>
        </list></t>

      <t>Note that the communication path between the client and the media
      server uses SIP. The announcement service (RFC 4240) passes the pawn
      ticket in the Request-URI. Thus, if the SIP communication channel is not
      secured with TLS or sips, untrusted third-parties may be able to
      intercept the pawn ticket.</t>

      <t>Using sips in this situation protects the pawn ticket from untrusted
      third-parties. However, it still allows proxies access to the pawn
      ticket. Thus, to fully protect the pawn ticket, the IVR service (RFC
      4722) is RECOMMENDED, using an end-to-end encryption of the MSCML
      payload, such as with S/MIME.</t>
    </section>

    <section anchor="drm" title="Digital Rights Management (DRM) Issues">
      <t>This document does not specify any Digital Rights Management (DRM)
      mechanisms for controlling access to and copying of the media to be
      streamed. This is intentional. A reference to a piece of media content
      is created using the URLAUTH command; it is expected that creation of a
      reference which is explicitly allowed by the URLAUTH command also
      implicitly gives the creator the right to pass that reference on to any
      third party it desires. It would be up to the implementation of URLAUTH
      to enforce any such DRM checks, and such a mechanism is outside the
      scope of this document, as it would affect any use of the URLAUTH
      command, such as the <xref target="BURL">BURL</xref> command for message
      submission.</t>

      <t>The document authors believe that encapsulating DRM issues within the
      URLAUTH command gives DRM semantics that are at least equal to those in
      existing IETF messaging standards. If DRM is a requirement for Internet
      messaging, then a suitable DRM mechanism should be created. How such a
      mechanism would work is outside the scope of this document.</t>
    </section>

    <section anchor="formalsyntax" title="Formal Syntax">
      <t>The following syntax specification for the mediaServer METADATA entry
      value uses the Augmented Backus-Naur Form (ABNF) notation as specified
      in <xref target="ABNF">RFC 2234</xref>.</t>

      <t>Except as noted otherwise, all alphabetic characters are case-
      insensitive. The use of upper or lower case characters to define token
      strings is for editorial clarity only. Implementations MUST accept these
      strings in a case-insensitive fashion.</t>

      <t>media-servers = ms-tuple *(";" ms-tuple) <vspace blankLines="1" />
      host = astring <vspace blankLines="1" /> port = nstring <vspace
      blankLines="1" /> ms-tuple = host ":" port (":" "authuser") <vspace
      blankLines="1" /></t>
    </section>

    <section anchor="contrib" title="Contributors" toc="default">
      <t>Eric Burger, BEA Systems, Inc., eburger@standardstrack.com</t>

      <t>Eric Burger provided the initial inspiration for this document, along
      with advice and support on aspects of the media server IVR and
      Announcement services, along with help with IANA registration and the
      IETF process.</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <reference anchor="NETANN">
        <front>
          <title>Basic Network Media Services with SIP</title>

          <author fullname="Eric Burger" initials="E." surname="Burger">
            <organization>Cantata</organization>
          </author>

          <date month="December" year="2005" />
        </front>

        <seriesInfo name="RFC" value="4240" />
      </reference>

      <reference anchor="URLAUTH">
        <front>
          <title>Internet Message Access Protocol (IMAP) - URLAUTH
          Extension</title>

          <author fullname="Mark Crispin" initials="M." surname="Crispin">
            <organization>University of Washington</organization>
          </author>

          <date month="May" year="2006" />
        </front>

        <seriesInfo name="RFC" value="4467" />
      </reference>

      <reference anchor="IMAP">
        <front>
          <title>Internet Message Access Protocol - Version 4rev1</title>

          <author fullname="Mark Crispin" initials="M." surname="Crispin">
            <organization>University of Washington</organization>
          </author>

          <date month="March" year="2003" />
        </front>

        <seriesInfo name="RFC" value="3501" />
      </reference>

      <reference anchor="IMAPURL">
        <front>
          <title>IMAP URL Scheme</title>

          <author initials="C." surname="Newman">
            <organization>University of Washington</organization>
          </author>

          <date month="September" year="1997" />
        </front>

        <seriesInfo name="RFC" value="2192" />
      </reference>

      <reference anchor="SIP">
        <front>
          <title>SIP: Session Initiation Protocol</title>

          <author initials="J." surname="Rosenberg">
            <organization></organization>
          </author>

          <author initials="H." surname="Schulzrinne">
            <organization></organization>
          </author>

          <author initials="G." surname="Camarillo">
            <organization></organization>
          </author>

          <author initials="A." surname="Johnston">
            <organization></organization>
          </author>

          <author initials="J." surname="Peterson">
            <organization></organization>
          </author>

          <author initials="R." surname="Sparks">
            <organization></organization>
          </author>

          <author initials="M." surname="Handley">
            <organization></organization>
          </author>

          <author initials="E." surname="Schooler">
            <organization></organization>
          </author>

          <date month="June" year="2002" />
        </front>

        <seriesInfo name="RFC" value="3261" />
      </reference>

      <reference anchor="SMIME">
        <front>
          <title>S/MIME Version 3 Message Specification"</title>

          <author fullname="Ramsdell" initials="B. et al.">
            <organization></organization>
          </author>

          <date month="June" year="1999" />
        </front>

        <seriesInfo name="RFC" value="2633" />

        <format type="???" />
      </reference>

      <reference anchor="RTP">
        <front>
          <title>RTP: A Transport Protocol for Real-Time Applications</title>

          <author initials="H." surname="Schulzrinne">
            <organization></organization>
          </author>

          <author initials="S." surname="Casner">
            <organization></organization>
          </author>

          <author initials="R." surname="Frederick">
            <organization></organization>
          </author>

          <author initials="V." surname="Jacobson">
            <organization></organization>
          </author>

          <date month="July" year="2003" />
        </front>

        <seriesInfo name="RFC" value="3550" />
      </reference>

      <reference anchor="KEYWORDS">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement
          Levels</title>

          <author initials="S." surname="Bradner">
            <organization></organization>
          </author>

          <date month="March" year="1997" />
        </front>

        <seriesInfo name="RFC" value="2119" />

        <seriesInfo name="BCP" value="14" />
      </reference>

      <reference anchor="SIPPARAM">
        <front>
          <title>The Internet Assigned Number Authority (IANA) Uniform
          Resource Identifier (URI) Parameter Registry for the Session
          Initiation Protocol (SIP)</title>

          <author initials="G." surname="Camarillo">
            <organization></organization>
          </author>

          <date month="December" year="2004" />
        </front>

        <seriesInfo name="RFC" value="3969" />

        <seriesInfo name="BCP" value="99" />
      </reference>

      <reference anchor="MIME">
        <front>
          <title>Multipurpose Internet Mail Extensions (MIME)</title>

          <author initials="N." surname="Freed">
            <organization></organization>
          </author>

          <author initials="N." surname="Borenstein">
            <organization></organization>
          </author>

          <author initials="K." surname="Moore">
            <organization></organization>
          </author>

          <author initials="J." surname="Klensin">
            <organization></organization>
          </author>

          <author initials="J." surname="Postel">
            <organization></organization>
          </author>

          <date month="November" year="1996" />
        </front>

        <seriesInfo name="RFC" value="2045" />

        <seriesInfo name="RFC" value="2046" />

        <seriesInfo name="RFC" value="2047" />

        <seriesInfo name="RFC" value="2048" />

        <seriesInfo name="RFC" value="2049" />
      </reference>

      <reference anchor="TLS">
        <front>
          <title>The TLS Protocol</title>

          <author initials="T." surname="Dierks">
            <organization></organization>
          </author>

          <author initials="C." surname="Allen">
            <organization></organization>
          </author>

          <date month="January" year="1999" />
        </front>

        <seriesInfo name="RFC" value="2246" />
      </reference>

      <reference anchor="SDP">
        <front>
          <title>SDP: Session Description Protocol</title>

          <author initials="M." surname="Handley">
            <organization></organization>
          </author>

          <author initials="V." surname="Jacobson">
            <organization></organization>
          </author>

          <date month="April" year="1998" />
        </front>

        <seriesInfo name="RFC" value="2327" />
      </reference>

      <reference anchor="BURL">
        <front>
          <title>Message Submission BURL Extension</title>

          <author initials="C." surname="Newman">
            <organization></organization>
          </author>

          <date month="May" year="2006" />
        </front>

        <seriesInfo name="RFC" value="4468" />
      </reference>

      <reference anchor="MSCML">
        <front>
          <title>Media Server Control Markup Language</title>

          <author initials="J." surname="Van Dyke">
            <organization></organization>
          </author>

          <author initials="E." surname="Burger">
            <organization></organization>
          </author>

          <author initials="A." surname="Spitzer">
            <organization></organization>
          </author>

          <date month="Dec" year="2006" />
        </front>

        <seriesInfo name="RFC" value="4722" />
      </reference>

      <reference anchor="METADATA">
        <front>
          <title>IMAP METADATA Extension</title>

          <author initials="C." surname="Daboo">
            <organization></organization>
          </author>

          <date month="Oct" year="2006" />
        </front>

        <seriesInfo name="draft-daboo-imap-annotatemore-10 (Work in progress)"
                    value="" />
      </reference>

      <reference anchor="ABNF">
        <front>
          <title>Augmented BNF for Syntax Specifications: ABNF</title>

          <author initials="D." surname="Crocker">
            <organization></organization>
          </author>

          <author initials="P." surname="Overell">
            <organization></organization>
          </author>

          <date month="Nov" year="1997" />
        </front>

        <seriesInfo name="RFC" value="2234" />
      </reference>

      <reference anchor="BINARY">
        <front>
          <title>IMAP4 Binary Content Extension</title>

          <author initials="L." surname="Nereberg">
            <organization></organization>
          </author>

          <date month="Apr" year="2003" />
        </front>

        <seriesInfo name="RFC" value="3516" />
      </reference>
    </references>
  </back>
</rfc>