RFC 3801

Voice Profile for Internet Mail - version 2 (VPIMv2)

๐Ÿ“… published June 2004, from ietf

Voice Profile for Internet Mail - version 2 (VPIMv2) ๐ŸŽ€

Okay bestie, let's get into RFC 3801 ๐Ÿ’… The title block is giving very formal, so here's the tea. It's from the Network Working Group and it's numbered RFC 3801. The authors are G. Vaudreuil (Lucent Technologies) and G. Parsons (Nortel Networks), and it was published in June 2004. It's a Standards Track doc, and it obsoletes RFC 2421, so this one replaces that older spec ๐Ÿฆ‹ It doesn't list any updates in its header.

Status of this Memo โœจ

This document specifies an Internet standards track protocol for the Internet community, and it's asking for discussion and suggestions for improvements ๐Ÿซถ For the standardization state and status of this protocol, check the current edition of the "Internet Official Protocol Standards" (STD 1). Distribution of this memo is unlimited ๐ŸŒธ

Copyright (C) The Internet Society (2004).

Abstract ๐ŸŒˆ

So this doc is all about a restricted profile of the Internet multimedia messaging protocols, made for voice processing server platforms. In this doc, that profile is called the Voice Profile for Internet Mail (VPIM) ๐ŸŽง These platforms have historically been special-purpose computers, and they often don't have the facilities you'd normally expect from a traditional Internet Email-capable computer. So VPIM also specifies extra functionality where it's needed โœจ The goal is the minimum common set of features that lets conforming systems interwork, which is honestly so practical ๐Ÿ’–

This document obsoletes RFC 2421 and describes version 2 of the profile with greater precision ๐Ÿ”ฅ No protocol changes were made in this revision. A list of changes from RFC 2421 is in Appendix F, and Appendix A summarizes the protocol profiles of this version of VPIM ๐Ÿ“

Table of Contents ๐Ÿ“š

1.   Introduction...................................................3
     1.1.  Voice Messaging System Limitations.......................3
     1.2.  Design Goals.............................................4
     1.3.  Applicability for VPIM...................................5
2.   Requirements Language..........................................5
3.   Protocol Restrictions..........................................6
4.   Voice Message Interchange Format...............................6
     4.1.  VPIM Message Addressing Formats..........................7
     4.2.  Message Header Fields....................................9
     4.3.  MIME Audio Content Descriptions.........................17
     4.4.  Voice Message Content Types.............................19
     4.5.  Other MIME Contents.....................................23
     4.6.  Delivery Status Notification (DSN)......................25
     4.7.  Message Disposition Notification (MDN)..................26
     4.8.  Forwarded Messages......................................26
     4.9.  Reply Messages..........................................27
5.   Message Transport Protocol....................................27
     5.1.  Base SMTP Protocol......................................28
     5.2.  SMTP Service Extensions.................................28
     5.3.  ESMTP - SMTP Downgrading................................30
6.   Directory Address Resolution..................................30
7.   Management Protocols..........................................30
     7.1.  Network Management......................................31
8.   Conformance Requirements......................................31
9.   Security Considerations.......................................32
     9.1.  General Directive.......................................32
     9.2.  Threats and Problems....................................32
     9.3.  Security Techniques.....................................33
10.  Normative References..........................................33
11.  Acknowledgments...............................................36
12.  Appendix A - VPIM Requirements Summary........................37
13.  Appendix B - Example Voice Messages...........................43
14.  Appendix C - Example Error Voice Processing Error Codes.......49
15.  Appendix D - Example Voice Processing Disposition Types.......50
16.  Appendix E - IANA Registrations...............................50
     16.1.  Voice Content-Disposition Parameter Definition.........51
     16.2.  Multipart/Voice-Message MIME Media Type Definition.....51
17.  Appendix F - Change History: RFC 2421 (VPIM V2) To This Doc...53
18.  Authors' Addresses............................................54
19.  Full Copyright Statement......................................55

1. Introduction โœจ

MIME is the Internet's multipurpose, multimedia-messaging standard ๐Ÿ’– This document explicitly recognizes what MIME can do, and it gives a mechanism for exchanging different messaging technologies, mainly voice and facsimile ๐Ÿ“ 

Voice messaging grew out of telephone answering services into a full send, receive, and forward messaging paradigm, with its own message features, semantics, and usage patterns ๐ŸŽ€ It first showed up on special-purpose computers that plug into a telephone switch and provide call answering and voice messaging. Back in the day, messages moved between voice messaging systems over analog networking protocols based on DTMF signaling and analog voice playback ๐Ÿ“ž As networking demand grew, people needed a standard, high-quality digital protocol to connect these machines. VPIM has totally proven itself as that new standard ๐Ÿ”ฅ It's widely implemented and it's being deployed in customer networks. This document clears up ambiguities in the earlier specification and matches implementation practice ๐Ÿฆ‹ The profile is referred to as the Voice Profile for Internet Mail (VPIM) in this document.

This document specifies a restricted profile of the Internet multimedia messaging protocols for use between voice processing server platforms. These platforms have historically been special-purpose computers, and they often don't have the facilities normally associated with a traditional Internet Email-capable computer ๐Ÿงš So VPIM also specifies additional functionality where it's needed. The profile is meant to specify the minimum common set of features that allows interworking between conforming systems ๐Ÿ’œ

This document obsoletes RFC 2421 and describes VPIM version 2 with greater precision ๐Ÿ’… No protocol changes were made in this revision. A list of changes from RFC 2421 is in Appendix F, and Appendix A summarizes the protocol profiles of this version of VPIM โœจ

1.1. Voice Messaging System Limitations ๐Ÿ“ต

These are the typical limitations of voice messaging platforms that were considered when creating this baseline profile. Honestly, they explain a lot ๐Ÿ™ˆ

  1. Text messages aren't normally received, and they often can't be easily displayed or viewed. They can often only be processed via text-to-speech or text-to-fax features, and many of these machines don't have those features yet.
  2. Voice mail machines usually act as an integrated Message Transfer Agent, Message Store, and User Agent. Messages typically aren't relayed. RFC822 header fields may have limited use, since the messaging features deployed right now are limited.
  3. Voice mail message stores generally can't preserve the full semantics of an Internet message. Because of that, using a voice mail machine for gatewaying isn't supported. In particular, storing recipient lists, "Received:" lines, and "Message-ID:" may be limited.
  4. Internet-style distribution and exploder mailing lists usually aren't supported. Voice mail machines often implement only local alias lists, with error-to-sender and reply-to-sender behavior. Reply-all capabilities using a Cc list generally aren't available.
  5. Error reports have to be machine-parsable, so that helpful responses can be voiced to users whose only access mechanism is a telephone ๐Ÿ“ž
  6. Voice mail systems generally limit address entry to 16 or fewer numeric characters, and they usually don't support alphanumeric mailbox names. Alpha characters aren't generally used for mailbox identification, since they can't be easily entered from a telephone keypad ๐Ÿ”ข

It should be noted that newer systems are based natively on SMTP/MIME and don't suffer from these limitations ๐Ÿš€ In particular, some systems may support media other than voice and fax ๐ŸŒˆ

1.2. Design Goals ๐ŸŽฏ

The goal of this profile is to make as few restrictions and additions to the existing Internet mail protocols as possible, while still satisfying the requirements for interoperability with current generation voice messaging systems ๐Ÿ’– The reason is to increase access to digital messaging by letting people use proven existing networking software for rapid development โœจ

This specification is intended for use on a TCP/IP network. However, it's possible to use the SMTP protocol suite over other transport protocols. The necessary protocol parameters for that kind of use are outside the scope of this document ๐Ÿฆ‹

This profile is meant to be robust enough for an environment like the global Internet, where there are installed-base gateways that don't understand MIME ๐ŸŒ Full functionality, such as reliable error messages and binary transport, will need careful selection of gateways (for example, via MX records) to act as VPIM forwarding agents. Nothing in this document stops you from using general-purpose MIME email packages to read and compose VPIM messages ๐Ÿ’Œ No special configuration is needed to receive VPIM conforming messages, but some may be needed to originate conforming structures โญ

A system administrator who can do TCP/IP network configuration is expected to manage a VPIM messaging system ๐Ÿง‘โ€๐Ÿ’ป When using facsimile or multiple voice encodings, the system administrator is suggested to keep a list of the capabilities of the networked mail machines. That helps cut down on sending undeliverable messages due to a lack of feature support ๐Ÿ“‹ Configuring, implementing, and managing these directory-listing capabilities are local matters ๐Ÿ 

1.3. Applicability for VPIM ๐ŸŽŸ๏ธ

VPIM is meant for exchanging voice messages between traditional voice messaging systems, and for systems that need to interoperate with those systems ๐Ÿ’œ It's intended to connect voice-messaging systems into special-purpose voice messaging networks ๐Ÿ”— VPIM may also be used between message store servers and VPIM-aware clients, like web servers, TUI, and GUI clients ๐Ÿ–ฅ๏ธ VPIM isn't intended or optimized for downloading to, or sending from, commercial email clients ๐Ÿ™…โ€โ™€๏ธ

Internet Voice Messaging (IVM) is the subject of a separate standards initiative. It's meant to let general-purpose email clients send and receive voice content through general-purpose message stores in an interoperable way ๐ŸŽถ IVM may also be a suitable format for downloading voice messages from a VPIM server to a commercial email client. It may also be a suitable format for submitting a voice message from a general-purpose client into a VPIM system ๐Ÿซถ

2. Requirements Language ๐Ÿ”‘

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [REQ]. This is the part where the capital-letter words get their official meaning, so pay attention ๐Ÿ‘‘

Heads up, bestie: those key words are the ones that carry real weight, so the capitals matter. Keep an eye on them as we go through the rest of the doc ๐Ÿซถ

3. Protocol Restrictions ๐ŸŽ€

Okay bestie, first things first: this protocol doesn't cap how many recipients a message can have ๐Ÿซถ. Where possible, server implementations should not restrict the number of recipients in a single message. It's understood that no implementation supports unlimited recipients, and the number of supported recipients may be quite low ๐Ÿ˜ญ.

The max message length isn't limited either ๐Ÿ“. Implementers should understand that some machines won't be able to accept excessively long messages. A mechanism is defined in [SIZE] to declare the maximum message size supported ๐Ÿ’….

The next sections spell out the restrictions and additions to Internet mail protocols that you need in order to be conforming with this VPIM v2 profile ๐Ÿ’–. Lots of SMTP, ESMTP and MIME features show up here, but for the full details, the implementer is referred to the relevant RFCs ๐Ÿ“š. The table in Appendix A summarizes the protocol details of this profile โœจ.

4. Voice Message Interchange Format ๐Ÿฆ‹

The voice message interchange format is a profile of the Internet Mail Protocol Suite ๐Ÿ’Œ. Any Internet Mail message containing the format defined in this section is called a VPIM Message in this document ๐Ÿงš. So yes, this doc assumes you already know the Internet Mail specs. VPIM pulls components from the message format standard for Internet messages [RFC822], the Multipurpose Internet Message Extensions [MIME1-5], the X.400 gateway specification [X.400], and the delivery status and message disposition notifications [REPORT][DSN][DRPT][STATUS][MDN] ๐Ÿ“.

MIME, introduced in [MIME1], is a general-purpose message body format that can be extended to carry a wide range of body parts ๐ŸŒˆ. It also encodes binary data so it can travel over the 7-bit text-oriented SMTP protocol ๐Ÿ”ฅ. That transport encoding (labeled by the "Content-Transfer-Encoding:" MIME field) is on top of the audio encoding you need to make a binary object in the first place ๐ŸŽง.

MIME defines two transport-encoding mechanisms that turn binary data into a 7-bit representation: "Quoted-Printable", which is designed for text-like data, and "Base64", which handles arbitrary binary data ๐Ÿ’œ. Base64 is dramatically more efficient for audio data, but either one will work ๐Ÿ‘‘. When binary transport is available, no transport encoding is needed, and the data can be labeled as "Binary" โœจ.

4.1. VPIM Message Addressing Formats ๐Ÿ’Œ

VPIM addresses SHALL use the RFC 822 format based on the Domain Name System ๐ŸŒธ. This naming system has two components: the local part, used for username or mailbox identification, and the host part, used for global machine identification ๐Ÿ—บ๏ธ.

4.1.1. VPIM Addresses ๐Ÿ“ž

The local part of the address shall be a US-ASCII string that uniquely identifies a mailbox on a destination system ๐Ÿ”ข. For voice messaging, the local part SHALL be a printable string containing the mailbox ID of the originator or recipient ๐ŸŽ€. Alpha characters and long mailbox identifiers MAY be permitted, but short numeric local parts SHOULD be used, because most voice mail networks rely on numeric mailbox identifiers to stay compatible with the limited 10-digit telephone keypad ๐Ÿ“ฑ. Some voice messaging systems may only be able to handle a numeric local part ๐Ÿ™ˆ.

If those systems receive an alphanumeric local part, the address may get mapped to some locally unique (but confusing to the recipient) number. In the worst case, the address could be deleted, and then the message becomes unreplyable ๐Ÿ’€. Creating messages with an alphanumeric local part on these systems can also be difficult without complex key sequences or some form of directory lookup (see 6) ๐Ÿ˜ค. The use of the Domain Name System should be transparent to the user ๐Ÿซง. It's the voice mail machine's job to look up the fully-qualified domain name (FQDN) based on the address the user typed in (see 6) ๐Ÿ”.

With no global directory, the local part is expected to follow international or private telephone numbering plans ๐ŸŒ. Private numbering plans will probably prevail, and those are left for local definition ๐Ÿ . That said, it is RECOMMENDED that public telephone numbers be written according to the international numbering plan described in [E.164] โ˜Ž๏ธ. A preceding "+" marks the local part as a public telephone number. (The "+" wouldn't be entered from a telephone keypad. The system adds it as a flag ๐Ÿšฉ.) Since the primary information in the numeric scheme lives in the digits, other character separators (e.g., "-") may be ignored, which allows parsing of the numeric local mailbox. They may also be used to recognize distinct portions of the telephone number (e.g., country code) ๐ŸŒธ. The local part of a VPIM address can be split into the four groups below ๐Ÿงฉ:

  1. mailbox number
    • for use as a private numbering plan (any number of digits)
    • e.g., 2722@lucent.com
  2. mailbox number+extension
    • for use as a private numbering plan with extensions, any number of digits, use of "+" as separator
    • e.g., 2722+111@Lucent.com
  3. +international number
    • for international telephone numbers conforming to E.164, maximum of 15 digits
    • e.g., +16137637582@vm.nortel.ca
  4. +international number+extension
    • for international telephone numbers conforming to E.164, maximum of 15 digits, with an extension (e.g., behind a PBX) that has a maximum of 15 digits
    • e.g., +17035245550+230@ema.org

This address format is designed to be compatible with current usage in the voice messaging industry ๐ŸŽ™๏ธ. It is not compatible with the addressing formats of RFCs 2303-2304 ๐Ÿ™…. As telephony services become more widespread on the Internet, these addressing formats are expected to converge ๐ŸŒˆ.

4.1.2. Special Addresses ๐Ÿฆ„

Special addresses that represent the sender are provided for compatibility with Internet mail conventions ๐Ÿ’ซ. These addresses don't use numeric local addresses. That keeps them in line with current Internet practice and avoids clashing with existing numeric addressing plans ๐Ÿ™Œ. Two special addresses are reserved for use as follows:

postmaster@domain

By convention, a special mailbox named "postmaster" MUST exist on all systems ๐Ÿ“ฌ. This address is used for diagnostics, and the system manager should check it regularly ๐Ÿฉบ. This mailbox is especially likely to receive text messages, which isn't normal on a voice-processing platform ๐Ÿ˜ณ. How those messages get handled is an individual implementation choice ๐Ÿง .

non-mail-user@domain

If a reply to a message isn't possible, such as with a telephone-answering message, then the special address "non-mail-user" SHOULD be used as the originator's address ๐Ÿ“ž. Any text name, like "Telephone Answering", or the telephone number if it's available, is permitted ๐Ÿ’. This special address works as a token that marks an unreachable originator ๐Ÿšซ. A conforming implementation MUST NOT permit a reply to an address from "non-mail-user" ๐Ÿ›‘. For compatibility with the installed base of mail user agents, implementations MUST reject the message when a message addressed to "non-mail-user" is received โŒ. The status code for those NDNs is 5.1.1 "Mailbox does not exist" ๐Ÿ“ญ.

Example:

From: Telephone Answering <non-mail-user@mycompany.com>

4.1.3. Distribution Lists ๐Ÿ“ฃ

There are lots of ways to handle distribution list (DL) expansions, and none of them are 'standard' ๐Ÿคทโ€โ™€๏ธ. A VPIM implementation MAY support DLs ๐Ÿ’œ. Using a simple alias is the behavior closest to what many voice mail systems do today, and it's what VPIM messages are meant to use ๐ŸŽฏ. A couple of important features need special care when DLs are involved ๐Ÿ‘€:

Reply to the originator - (Address in the RFC822 "Reply-To:" or
                           "From" field)
Errors to the submitter - (Address in the MAIL FROM field of the
                           ESMTP exchange or the "Return-Path:"
                           RFC822 field)

Some proprietary voice messaging protocols only include the recipient of the particular copy in the envelope, with no "header fields" except date and per-message features ๐Ÿ“จ. Most voice messaging systems don't provide for "Header Information" in their messaging queues, and they only include delivery information ๐Ÿ“ฆ. As a result, recipient information MAY be in either the "To:" or "Cc:" header fields ๐Ÿ’•. If all recipients can't be presented, the recipient header fields SHOULD be omitted, which signals that an accurate list of recipients (e.g., for use with a reply-all capability) isn't known ๐Ÿ™.

4.2. Message Header Fields ๐Ÿ“

Internet messages contain a header information block ๐Ÿ—‚๏ธ. This block holds the info needed to identify the sender, the list of recipients, the message send time, and other information meant for user presentation โฐ. Except for specialized gateway and mailing list cases, header fields don't indicate delivery options for transporting messages ๐Ÿšš.

Distribution list processors are known for modifying or adding to the header fields of messages that pass through them ๐Ÿ”. VPIM systems MUST be able to accept and ignore header fields that aren't defined here ๐Ÿซถ.

The following header lines are permitted for use with VPIM messages ๐Ÿ’…:

4.2.1. From ๐Ÿ’Œ

SEND RULES

The originator's fully qualified domain address (a mailbox address followed by the fully qualified domain name) MUST be present ๐Ÿท๏ธ. Systems conforming with this profile SHOULD provide the text personal name of the voice message originator in a quoted phrase, if the name is available ๐ŸŽ€. Text names of corporate or positional mailboxes MAY be provided as a simple string ๐Ÿข. From: [RFC822]

Example:

From: "Joe S. User" <12145551212@mycompany.com>

From: Technical Support <611@serviceprovider.com>

From: Non-mail-user@myserver.mycompany.com

Voice mail machines may not be able to support separate attributes for the "From:" header field and the SMTP MAIL FROM, so VPIM-conforming systems SHOULD set these values to the same address ๐Ÿ‘ฏ. Using an address different from the one in the "From:" header field may result in unanticipated behavior ๐Ÿ˜ฌ.

RECEIVE RULES

The user listed in the "From:" field MUST be presented in the voice message envelope of the voice messaging system as the originator of the message ๐Ÿ’–. The exact presentation is an implementation decision, though (e.g., the mailbox ID or the text name MAY be presented) โœจ. The "From:" address SHOULD be used for replies (see 4.9) ๐Ÿ’ฌ.

4.2.2. To ๐Ÿ“ฌ

The "To:" field contains the recipient's fully-qualified domain address ๐ŸŽฏ.

Example:

To: +12145551213@mycompany.com

SEND RULES

There MAY be one or more "To:" fields in any message ๐Ÿ“จ. Systems SHOULD provide a list of recipients only if all recipients are available ๐Ÿซง.

Systems that don't indicate the complete list of recipients, such as gateways from protocols or legacy platforms, MAY provide a "To:" line ๐Ÿง“. Because those systems can't accurately enumerate all recipients in the "To:" headers, recipients SHOULD NOT be enumerated ๐Ÿ™…โ€โ™€๏ธ.

RECEIVE RULES

Systems conforming to this profile MAY discard the addresses in the "To:" fields if they can't store that information ๐Ÿ—‘๏ธ. Obviously, this would make a reply-to-all capability impossible ๐Ÿ˜ญ. If present, the addresses in the "To:" field MAY be used for a reply message to all recipients ๐ŸŒŸ.

4.2.3. Cc ๐Ÿ’Œ

okay so the Cc: field is where the extra recipients' fully qualified domain addresses live โœจ but real talk, a lot of voice mail systems only keep the bare-minimum envelope info needed to deliver the message, so they literally can't store or show you the full list of extra recipients ๐Ÿ˜ญ

SEND RULES

Conforming implementations MAY send Cc: lists if all recipients are known at the time of origination. If not, systems SHOULD omit the Cc: fields to indicate that the full list of recipients is unknown or otherwise unavailable. The list of disclosed recipients MUST NOT include undisclosed recipients (i.e., those sent via a blind copy). ๐Ÿ™ˆ

Example:

               Cc: +12145551213@mycompany.com

RECEIVE RULES

Systems conforming to this profile MAY add all the addresses in the Cc: field to the To: field, and others MAY discard the addresses in the Cc: fields. If a list of Cc: addresses is present, these addresses MAY be used for a reply message to all recipients. ๐Ÿซถ

4.2.4. Date ๐Ÿ—“๏ธ

the Date: field is giving timestamp energy ๐Ÿ’… it contains the date and time the message was sent by the originator.

SEND RULES

The sending system MUST report the time the message was sent. The time zone MUST be present and SHOULD be represented in a four-digit time zone offset, such as -0500 for North American Eastern Standard Time. This MAY be supplemented by a time zone name in parentheses, e.g., "-0700 (PDT)". โฐ

Example:

               Date: Wed, 28 Jul 96 10:08:49 -0800 (PST)

If the VPIM sender is relaying a message from a system that does not provide a time stamp, the time of arrival at the gateway system SHOULD be used as the date.

RECEIVE RULES

Conforming implementations SHOULD be able to convert [RFC822] date and time stamps into local time

4.2.5. Sender ๐Ÿ“ฎ

the Sender: field is the main character who's secretly the real one ๐ŸŽญ it contains the actual address of the originator if an agent on behalf of the author indicated in the From: field sends the message.

SEND RULES

This header field MAY be sent by VPIM-conforming systems.

RECEIVE RULES

If the address in the Sender: field cannot be preserved in the recipient's message queues or in the next-hop protocol from a gateway, the field MAY be silently discarded. no drama, just vibes ๐Ÿซ 

4.2.6. Return-Path ๐Ÿ”™

the Return-path: field gets added by the final delivering SMTP server, and it's a whole vibe ๐ŸŒˆ if it's present, it contains the address from the MAIL FROM parameter of the ESMTP exchange (see [RFC822]). Any error messages resulting from the delivery failure MUST be sent to this address. Note that if the Return-path: is null (<>) (e.g., a call answer message would have no return path), delivery status notifications MUST NOT be sent. โš ๏ธ

SEND RULES

The originating system MUST NOT add this header. ๐Ÿšซ

RECEIVE RULES

If the receiving system is incapable of storing the return path (or MAIL FROM) to be used for subsequent delivery errors (i.e., it is a gateway to a legacy system or protocol), the receiving system must otherwise ensure that further delivery errors don't happen. Systems that do not support the return path MUST ensure that at the time the message is acknowledged (i.e., when a DSN would be sent), the message is delivered to the recipient's ultimate mailbox. Non-Delivery notifications SHOULD NOT be sent after that final delivery. ๐Ÿ’Œ

4.2.7. Message-Id ๐Ÿ†”

the Message-Id: field is basically a fingerprint ๐Ÿซ† it contains a globally unique per-message identifier.

SEND RULES

A globally unique message-id MUST be generated for each message sent from a VPIM-conforming implementation. โœจ

Example:

               Message-Id: <12345678@mycompany.com>

RECEIVE RULES

When provided in the original message, it MUST be used when sending a MDN. This identifier MAY be used for tracking and auditing. From [RFC822] ๐Ÿ•ต๏ธโ€โ™€๏ธ

4.2.8. Reply-To ๐Ÿ’ฌ

if it's present, the Reply-To: header gives a preferred address where replies should go (see 4.9). Typically, voice mail systems can only support one originator of a message, so it's likely this field will get ignored by the receiving system. From: [RFC822] ๐Ÿ™ƒ

SEND RULES

A conforming system SHOULD NOT send a Reply-To: header.

RECEIVE RULES

If a Reply-To: field is present, a reply-to-sender message MAY be sent to the address specified (that is, in lieu of the address in the From: field). If the receiving system (e.g., multi-protocol gateway) only supports one address for the originator, then the address in the From: field MUST be used and the Reply-To: field MAY be silently discarded. ๐ŸŽ€

4.2.9. Received ๐Ÿ“ฌ

the Received: field is the trace trail ๐Ÿพ it contains trace information added to the beginning of a RFC822 message by MTAs. This is the only field that may be added by an MTA. Information in this header is useful for debugging when using a US-ASCII message reader or a header-parsing tool. From: [RFC822] ๐Ÿ› ๏ธ

SEND RULES

A VPIM-conforming system MUST add a Received: field. When acting as a gateway, information about the system from which the message was received SHOULD be included. ๐Ÿ“

RECEIVE RULES

A VPIM-conforming system MUST NOT remove any Received: fields when relaying messages to other MTAs or gateways. These header fields MAY be ignored or deleted when the message is received at the final destination. ๐Ÿงพ

4.2.10. MIME Version ๐Ÿงฉ

the MIME-Version: field MUST be present to indicate that the message conforms to [MIME1-5]. Systems conforming with this specification SHOULD include a comment with the words "(Voice 2.0)". [VPIM1] defines an earlier version of this profile and uses the token (Voice 1.0). Example:

               MIME-Version: 1.0 (Voice 2.0)

This identifier is intended for information only and SHOULD NOT be used to semantically identify the message as being a VPIM message. Instead, the presence of the multipart/voice-message content type defined in section 18.2 SHOULD be used if identification is necessary. ๐Ÿท๏ธ

4.2.11. Content-Type ๐ŸŽญ

the Content-Type: header MUST be present to declare the type of content enclosed in the message. The typical top-level content in a VPIM Message SHOULD be Multipart/Voice-Message. The allowable contents are detailed starting in section 4.4 of this document. From: [MIME2] ๐Ÿ’ซ

4.2.12. Content-Transfer-Encoding ๐Ÿ”

okay this one is a little bit of a glow-up story ๐Ÿฆ‹ because Internet mail was initially specified to carry only 7-bit US-ASCII text, it may be necessary to encode voice and fax data into a representation suitable for that environment. The Content-Transfer-Encoding: header describes this transformation if it is needed.

SEND RULES

An implementation in conformance with this profile SHOULD send audio and/or facsimile data in "Binary" form when binary message transport is available (see section 5). When binary transport is not available, implementations MUST encode the audio and/or facsimile data as "Base64". ๐ŸŽง

RECEIVE RULES

Conforming implementations MUST recognize and decode the standard encodings, "Binary" (when binary support is available), "7bit, "8bit", "Base64" and "Quoted-Printable" per [MIME1]. The detection and decoding of "Quoted-Printable", "7bit", and "8bit" MUST be supported in order to meet MIME requirements and to preserve interoperability with the fullest range of possible devices. ๐ŸŒ

4.2.13. Sensitivity ๐Ÿ”’

the Sensitivity: field, if present, indicates the requested privacy level ๐Ÿคซ if no privacy is requested, this field is omitted. The header definition is as follows:

   Sensitivity := "Sensitivity" ":" Sensitivity-value

   Sensitivity-value := "Personal" / "Private" / "Company-Confidential"

SEND RULES

A VPIM-conforming implementation MAY include this header to indicate the sensitivity of a message. If a user marks a message "Private", a conforming implementation MUST send only the "Private" sensitivity level. There are no VPIM-specific semantics defined for the values "Personal" or "Company-Confidential". A conforming implementation SHOULD NOT send the values "Personal" or "Company-Confidential". If the message is of "Normal" sensitivity, this field SHOULD be omitted. From: [X.400] ๐Ÿ”

RECEIVE RULES

If a Sensitivity: field with a value of "Private" is present in the message, a conforming system MUST prohibit the recipient from forwarding this message to any other user. A conforming system, however, SHOULD allow the responder to reply to a sensitive message, but SHOULD NOT include the original message content. The responder MAY set the sensitivity of the reply message. ๐Ÿค

A receiving system MAY ignore sensitivity values of "Personal" and "Company Confidential".

If the receiving system does not support privacy and the sensitivity is "Private", a negative delivery status notification MUST be sent to the originator with the appropriate status code (5.6.0) "Other or undefined protocol status" indicating that privacy could not be assured. The message contents SHOULD be returned to the sender to allow for a voice context with the notification. A non-delivery notification to a private message SHOULD NOT be tagged private since it will be sent to the originator. From: [X.400] ๐Ÿ™…โ€โ™€๏ธ

A message with no privacy explicitly noted (i.e., no header) or with "Normal" sensitivity has no special treatment. ๐ŸŒธ

4.2.14. Importance โšก

this one indicates the requested importance to be given by the receiving system. If no special importance is requested, this header MAY be omitted and the value of the absent header assumed to be "normal". From: [X.400] ๐Ÿ“Š

   Importance := "Importance" ":" importance-value

   Importance-value := "low" / "normal" / "high"

SEND RULES

Conforming implementations MAY include this header to indicate the importance of a message. ๐Ÿ”ฅ

RECEIVE RULES

If the receiving system does not support Importance:, the attribute MAY be silently dropped. ๐Ÿซง

4.2.15. Subject ๐Ÿ“

the Subject: field is often provided by email systems, but it's not widely supported on voice mail platforms ๐Ÿฅบ From: [RFC822]

SEND RULES

For compatibility with text-based mailbox interfaces, a text subject field SHOULD be generated by a conforming implementation. It is RECOMMENDED that voice-messaging systems that do not support any text user interfaces (e.g., access only by a telephone) insert a generic subject header of "VPIM Message" or "Voice Message" for the benefit of GUI-enabled recipients. ๐Ÿ’–

RECEIVE RULES

It is anticipated that many voice-only systems will be incapable of storing the subject line. The subject MAY be discarded by a receiving system. ๐Ÿ“

4.3. MIME Audio Content Descriptions ๐ŸŽ™๏ธ

4.3.1. Content-Description ๐Ÿท๏ธ

this field MAY be present to make body parts easy to identify as text in simple email readers. Any values may be used. โœจ

Example:

         Content-Description: Big Telco Voice Message

SEND RULES

This field MAY be added to a voice body part to offer a freeform description of the voice content. It is useful to incorporate the values for Content-Disposition with additional descriptions. For example, this can be used to indicate product name or transcoding records. ๐Ÿง

RECEIVE RULES

This field MAY be displayed to the recipient. However, since it is only informative, it MAY be ignored. ๐Ÿฆ‹

4.3.2. Content-Disposition โœจ

Okay bestie, this field MUST be present so you can parsably tell which body part is which inside a VPIM voice message ๐ŸŽ€. It matters even more because, as usual, you'll have more than one Audio/* body in the same level (e.g., Multipart/Voice-Message) ๐Ÿซถ. A VPIM voice message is meant to auto-play in the order the audio shows up, so the audio contents MUST always be of disposition inline ๐Ÿ”ฅ. A filename is still useful, so this SHOULD be present if you have that info ๐Ÿ’œ. From: [DISP]

SEND RULES

To tell the different kinds of audio apart, there's a new disposition parameter called "voice" that gets defined with IANA (see section 18.1) ๐Ÿฆ‹. Use these values as they fit:

Audio-Type := "voice" "=" Audio-type-value

Audio-type-value := "Voice-Message" / "Voice-Message-Notification" /
"Originator-Spoken-Name" /"Recipient-Spoken-Name" /"Spoken-Subject"
  • Voice-Message - the primary voice message ๐Ÿ’Œ
  • Voice-Message-Notification - a spoken delivery notification or spoken disposition notification ๐Ÿ””
  • Originator-Spoken-Name - the spoken name of the originator ๐Ÿ—ฃ๏ธ
  • Recipient-Spoken-Name - the spoken name of the recipient(s) if available to the originator ๐ŸŽ™๏ธ
  • Spoken-Subject - the spoken subject of the message, typically spoken by the originator ๐ŸŒธ

Note that there SHOULD only be one instance of each of these types of audio contents per message level ๐Ÿ‘‘. Additional instances of a given type (i.e., parameter value) MAY occur within an attached forwarded or reply voice message ๐Ÿงš. If there are multiple recipients for a given message, recipient-spoken-name MUST NOT be used ๐Ÿ™ˆ.

RECEIVE RULES

Implementations SHOULD use this header โœจ. Those that don't understand the "voice" parameter (or the "Content-Disposition:" header) can safely ignore it. They'll still play the audio body parts in order, they just won't be able to tell them apart ๐Ÿ’€. If you run into more than one instance of the "voice" parameter type value at one level (e.g., multiple 'Voice-Message' tagged contents), they SHOULD be presented together ๐Ÿ“.


4.3.3. Content-Duration

The "Content-Duration:" header gives you the audio length of the segment in seconds โฑ๏ธ.

Example:

Content-Duration: 33

SEND RULES

This field MAY be present so you can specify how long the audio body part is, in seconds ๐ŸŒˆ.

RECEIVE RULES

What you do with this field on reception is a local implementation issue ๐Ÿคทโ€โ™€๏ธ. From: [DUR]

4.3.4. Content-Language:

This field MAY be present so you can specify the spoken language of the audio body part ๐Ÿ—บ๏ธ. The encoding is defined in [LANG].

Example for UK English:

Content-Language: en-UK

SEND RULES

A sending system MAY add this field to indicate the language of the voice ๐Ÿ‡ฌ๐Ÿ‡ง. Whether that's automated or user-selected is a local implementation issue ๐Ÿ’….

RECEIVE RULES

What you do with this field on reception is a local implementation issue ๐Ÿซ . It MAY be used as a hint for the recipient (e.g., the end-user or an automated translation process) about the language of the voice message ๐ŸŒท.


4.4. Voice Message Content Types

The content types in this section are identified for use inside the Multipart/Voice-Message content ๐Ÿ’–. This content is called a "VPIM message" in this document, and it's the fundamental part of a "VPIM message" ๐Ÿฆ‹.

Only the contents that are profiled can be sent inside a VPIM voice message construct (i.e., the Multipart/Voice-Message content type) to build a simple or more complex structure. Appendix B has several examples ๐Ÿ“š. Other contents are not allowed inside a VPIM voice message ๐Ÿšซ. Unless there's a bilateral agreement, conforming implementations MUST NOT create a message containing prohibited contents ๐Ÿ™…โ€โ™€๏ธ. Following the spirit of liberal acceptance, a conforming implementation MAY accept and render prohibited content ๐ŸŽ. Systems that can't accept or render prohibited contents MAY discard them as necessary so the acceptable content still gets delivered ๐Ÿงน. When multiple contents are inside the Multipart/Voice-Message, they SHOULD be presented to the user in the order they appear in the message ๐ŸŽถ.

Some deployed implementations, based on a common interpretation of the original VPIM v2 specification, reject messages with prohibited content instead of discarding the unsupported contents ๐Ÿ˜ญ. For interoperability with these systems, it's especially important that prohibited contents not be sent within a Multipart/Voice-Message ๐Ÿซถ.

4.4.1. Multipart/Voice-Message

This MIME multipart structure packages a voice message into one container that's tagged as VPIM v2 conforming ๐Ÿ“ฆ. The sub-type has the same semantics and syntax as multipart/mixed, as defined in [MIME2] ๐ŸŒธ. So a system that doesn't understand the sub-type may safely interpret it as a multipart/mixed (only the identification as a voice message would be lost) ๐Ÿ™ˆ.

Besides the MIME required boundary parameter, a version parameter is also required for this sub-type ๐ŸŽ€. It tells this refinement apart from the earlier definition in [VPIM1]. The value of the version parameter is "2.0" if the content follows this specification ๐Ÿ’œ. If there are further revisions of this content type, there MUST be backwards compatibility (i.e., systems implementing version n can read version 2, and systems implementing version 2 can read version 2 contents within a version n) ๐Ÿ”.

SEND RULES

The Multipart/Voice-Message content-type MUST only contain the profiled media and content types specified in this section (i.e., Audio/, Image/, and Message/RFC822) ๐ŸŽฏ. The most common ones are the spoken name, the spoken subject, the message itself, and an attached fax ๐Ÿ“ . Forwarded messages are made by simply using the Message/RFC822 construct ๐Ÿ’….

Conformant implementations MUST use Multipart/Voice-Message in a VPIM message ๐Ÿฆ‹. Most of the time this Multipart/Voice-Message Content-Type will be the top level, but it can also be inside a Message/RFC822 if the message is forwarded, or inside a multipart/mixed when more than one message is being forwarded ๐Ÿ”ฅ.

RECEIVE RULES

Conformant implementations MUST recognize the Multipart/Voice-Message content (whether it's top-level or inside a Multipart/Mixed), and MUST be able to separate the contents (e.g., the spoken name or spoken subject) ๐Ÿงฉ.

The semantics of Multipart/Voice-Message (defined in section 18.2) are identical to Multipart/Mixed, so systems that don't recognize this content-type may interpret it as Multipart/Mixed ๐ŸŒˆ.

4.4.2. Message/RFC822

SEND RULES

MIME requires support for the Message/RFC822 message encapsulation body part ๐Ÿ“จ. This body part SHOULD be used inside a Multipart/Voice-Message to forward complete messages (see 4.8) or to reply with original content (see 4.9) ๐Ÿ’Œ. From: [MIME2]

RECEIVE RULES

The receiving system MUST accept this format, and SHOULD treat this attachment as a forwarded message ๐ŸŽ€. If needed, the receiving system MAY flatten the forwarding structure (i.e., remove this construct to leave multiple voice contents, or even concatenate the voice contents so they fit in a recipient's mailbox) ๐Ÿ“ญ.

4.4.3. Audio/32KADPCM

SEND RULES

An implementation conforming to this profile MUST send Audio/32KADPCM by default for voice [ADPCM] ๐ŸŽค. It's a moderately compressed encoding with a data rate of 32 kbits/second, and it uses moderate processing resources ๐Ÿงƒ. Usually the body holds several minutes of message content. If it's used for a spoken name or subject, though, the content is expected to be a lot shorter (about 5 and 10 seconds respectively) โณ.

RECEIVE RULES

Receivers MUST be able to accept and decode Audio/32KADPCM ๐ŸŽง. If an implementation can only handle one voice body, then multiple voice bodies (if present) SHOULD be concatenated, and MUST NOT be discarded ๐Ÿ™…โ€โ™€๏ธ. If they're concatenated, the contents SHOULD be in the same order they appeared in the multipart ๐Ÿซถ.

4.4.4. Image/TIFF

A common image encoding for facsimile, known as TIFF-F, is a derivative of the Tag Image File Format (TIFF) and is described in several documents ๐Ÿ“ . For VPIM, the F Profile of TIFF for Facsimile (TIFF-F) is defined in [TIFF-F], and the Image/TIFF MIME content-type is defined in [TIFFREG] ๐ŸŒท. There are several formats of TIFF, but only TIFF-F is profiled for use within Multipart/Voice-Message ๐ŸŽฏ. Since the TIFF-F file format is used in a store-and-forward mode with VPIM, the image MUST be encoded so that there is only one image strip per facsimile page ๐Ÿ“„.

SEND RULES

All VPIM implementations that support facsimile MUST generate TIFF-F compatible facsimile contents in the Image/TIFF subtype, using the application=faxbw encoding by default ๐Ÿ–จ๏ธ. If the VPIM message is a voice-annotated fax, the implementation SHOULD send this fax content in Multipart/Voice-Message ๐ŸŽ™๏ธ. If the message is a simple fax, an implementation MAY send it without using Multipart/Voice-Message, to be more compatible with fax-only (RFC 2305) implementations ๐Ÿฆ‹.

Any valid MIME body header MAY be used (e.g., Content-Disposition to indicate the filename) ๐ŸŽ€. None of them are specified to have special semantics for VPIM, though, and they MAY be ignored ๐Ÿ™ˆ. Note that the content-type parameter application=faxbw MUST be included in outbound messages ๐Ÿ’….

RECEIVE RULES

Not all VPIM systems support fax, but all SHOULD accept it within the multipart/voice-message ๐Ÿ“ . Inside a Multipart/Voice-Message, a receiving system that can't render fax content SHOULD accept the voice content of a VPIM message and discard the fax content ๐Ÿงน. Outside a Multipart/Voice-Message, a recipient system MAY reject the entire message (with an appropriate NDN) if it can't store it or isn't capable of rendering a message with fax attachments ๐Ÿ“ญ. VPIM conforming systems MAY support fax outside of (or without) the Multipart/Voice-Message ๐ŸŒธ.

Some deployed implementations, based on a common interpretation of the original VPIM V2 specification, reject messages with fax content inside the Multipart/Voice-Message instead of discarding the unsupported contents ๐Ÿ˜ญ. These systems will return the message to the sender with an NDN saying they don't support fax ๐Ÿ’”.

4.5. Other MIME Contents

The following MIME contents (with the exception of multipart/mixed in section 4.5.1) MAY be included within a multipart/voice message ๐ŸŒˆ. Other contents MUST NOT be included ๐Ÿšซ. What happens with them is a local implementation issue ๐Ÿคทโ€โ™€๏ธ. Multipart/mixed is included to promote interoperability with a wider range of systems, and to allow more complex multimedia messages (with a VPIM message as one part) ๐Ÿงš.

4.5.1. Multipart/Mixed

This common MIME content-type lets you enclose several body parts in a single message ๐Ÿ“ฆ.

SEND RULES

A VPIM voice message (i.e., multipart/voice-message) MAY be included within a message with a Multipart/Mixed top-level content type ๐Ÿ’–. Typically this only happens when you're mixing non-voice and non-fax contents with a voice message ๐ŸŽ€.

RECEIVE RULES

Such a message isn't itself a VPIM message, and handling it is outside the scope of the VPIM profile ๐Ÿ™ˆ. Still, in the spirit of liberal acceptance, a conforming implementation MUST accept and render a VPIM voice message contained in a Multipart/Mixed ๐Ÿซถ.

4.5.2. Text/Directory ๐Ÿ“‡

SEND RULES

okay so this content type was profiled in the original VPIM v2 spec as a way to carry contact info from the sender to the recipient ๐Ÿ’Œ. It never really caught on, and it's no longer a feature of VPIM V2 ๐Ÿ’€. Conforming implementations SHOULD NOT send the Text/Directory content type ๐Ÿ™…โ€โ™€๏ธ.

RECEIVE RULES

For compatibility with an earlier spec of VPIM v2, the Text/Directory content type MUST be accepted by a conforming implementation ๐Ÿซถ. It doesn't have to be stored, processed, or rendered to the recipient though.

4.5.3. Proprietary Voice or Fax Formats ๐ŸŽค

Using any encoding besides the required codecs lowers interoperability unless you explicitly know what the recipient can handle ๐Ÿคทโ€โ™€๏ธ. A conforming implementation SHOULD NOT use any other encoding unless a unique identifier is registered with the IANA prior to use (see [MIME4]). The voice encodings SHOULD be registered as subtypes of Audio. The fax encodings SHOULD be registered as subtypes of Image.

SEND RULES

Proprietary voice encoding formats or other standard formats SHOULD NOT be sent under this profile unless the sender has a reasonable expectation that the recipient will accept the encoding ๐Ÿšซ. In practice, this means you need explicit per-destination configuration info kept in a directory, a personal address book, or gateway configuration tables ๐Ÿ“’.

RECEIVE RULES

Systems MAY accept other Audio/* or Image/* content types if they can decode them โœจ. Systems that receive Audio/* or Image/* content types they can't deposit or can't render MUST return the message (and SHOULD include the original content) to the originator with an NDN indicating media not supported ๐Ÿ’….

4.5.4. Text/Plain ๐Ÿ“

MIME requires support of the basic Text/Plain content type (with the US-ASCII character set). It's pretty limited in the voice-messaging world, but because VPIM is a MIME profile, MIME requirements SHOULD be met ๐Ÿงš.

SEND RULES

Conforming VPIM implementations SHOULD NOT send the Text/Plain content-type ๐Ÿ™ˆ. Implementations MAY send the Text/Plain content-type outside the Multipart/Voice-Message.

RECEIVE RULES

Inside a Multipart/Voice-Message, the Text/Plain content-type MAY be dropped if necessary, so the audio/fax components can get delivered ๐ŸŽง. The recipient SHOULD NOT reject the entire message just because the text component can't be accepted or rendered ๐ŸŒธ.

Outside a Multipart/Voice-Message, conforming implementations MUST accept Text/Plain. Specific handling is left up to the implementation ๐Ÿซ . From: [MIME2]

Some deployed implementations follow a common reading of the original VPIM V2 spec and reject any message with text content, instead of discarding the unsupported bits ๐Ÿ˜ญ. Those systems send the message back to the sender with an NDN saying text isn't supported.

4.6. Delivery Status Notification (DSN) ๐Ÿ“ฌ

A DSN is a notification of delivery (positive DSN), non-delivery (negative DSN), or temporary delivery delay (delayed DSN) โณ. The top-level content-type of a DSN is Multipart/Report, which is defined in [REPORT]. The content-type that tells DSN's apart from other notifications is Message/Delivery-Status, which is defined in [DSN].

SEND RULES

A VPIM-compliant implementation MUST be able to send DSN's that conform to [REPORT] and [DSN] ๐Ÿ’–. Unless requested otherwise, a non-delivery DSN MUST be sent whenever any form of non-delivery of a message happens.

A VPIM-compliant implementation SHOULD provide a spoken delivery status in the "human-readable" body part of the DSN, but MAY provide a textual status ๐Ÿ—ฃ๏ธ.

RECEIVE RULES

A VPIM-compliant implementation MUST be able to receive DSN's that conform to [REPORT] and [DSN] ๐Ÿ“ฅ.

A VPIM-compliant implementation MUST be able to receive a DSN whose "human-readable" body part contains a spoken delivery status phrase or a textual description. What the phrase or text is used for afterwards is a local implementation issue, but the intent of the DSN MUST be presented to the end user ๐Ÿ‘‘.

4.7. Message Disposition Notification (MDN) ๐Ÿ‘€

An MDN is a notification saying what happened to a message after it was deposited in the recipient's mailbox ๐Ÿ“ซ. An MDN can be positive (message was read/played/rendered/etc.) or negative (message was deleted before the recipient could see it, etc.). The top-level content-type of an MDN is Multipart/Report, which is defined in [REPORT]. The content-type that tells MDN's apart from other notifications is Message/Disposition-Notification, which is defined in [MDN].

SEND RULES

A VPIM-compliant implementation SHOULD support requesting MDNs ๐Ÿ™‹โ€โ™€๏ธ. This is done with the Disposition-Notification-To: header field, as defined in [MDN].

A VPIM-compliant implementation SHOULD support sending MDNs, but these MDNs MUST conform to [REPORT] and [MDN] ๐ŸŽ€.

When sending an MDN, a VPIM-compliant implementation SHOULD provide a spoken message disposition in the "human-readable" body part of the MDN, but MAY provide a textual status ๐ŸŒˆ.

RECEIVE RULES

A VPIM-compliant implementation SHOULD respond to an MDN request with an MDN response ๐Ÿ’ฌ.

A VPIM-compliant implementation MUST be able to receive MDNs that conform to [REPORT] and [MDN], if it can request MDNs. If a VPIM-compliant implementation can receive MDNs, it MUST be able to receive an MDN whose "human-readable" body part contains a spoken message disposition phrase or a textual disposition description. What the phrase or text is used for afterwards is a local implementation issue, but the intent of the MDN MUST be presented to the end user ๐Ÿงšโ€โ™€๏ธ.

4.8. Forwarded Messages โœจ

VPIM v2 explicitly supports forwarding voice and fax content with voice or fax annotation ๐Ÿ”. However, only the two constructs described below are acceptable in a VPIM message. Only the first one (i.e., Message/RFC822) can be recognized as a forwarded message (or even several forwarded messages), so it is RECOMMENDED that you use this construct whenever possible ๐Ÿ’….

Forwarded VPIM messages SHOULD be sent as a Multipart/Voice-Message. The entire original message goes inside a Message/RFC822 content-type, and the annotation goes in a separate Audio/* or Image/* body part ๐ŸŽ™๏ธ. If the RFC822 header fields aren't available for the forwarded content, simulated header fields SHOULD be built from the available info, to show the original sending timestamp and the original sender as given in the From: field ๐Ÿ•ฐ๏ธ. Note that at least one of From:, Subject:, or Date: MUST be present. Also, the Message/RFC822 content MUST include at least the MIME-Version: and Content-Type: header fields ๐Ÿ’œ. From: [MIME2]

If forwarding info gets lost, the entire audio content MAY be sent as a single Audio/* segment with no forwarding semantics attached ๐Ÿฅฒ. An example of this is an AMIS message being forwarded through an AMIS-to-VPIM gateway.

4.9. Reply Messages ๐Ÿ’ฌ

VPIM v2 explicitly supports replying to received messages ๐Ÿฆ‹.

Supporting multiple originator header fields in a reply is often not possible on voice messaging systems, so it may be necessary to pick only one when gatewaying a VPIM message to another voice message system ๐ŸŒท. However, implementers should note that this may make it impossible to send DSN's, MDN's, and replies to their proper destinations ๐Ÿ˜ฌ.

In some cases, replying isn't possible, like with a message made by telephone answering (i.e., classic voice mail) ๐Ÿ“ž. In that case, the From field SHOULD contain the special address non-mail-user@domain (see 4.1.2). The recipient's VPIM system SHOULD NOT offer the option to reply to this kind of message, unless an outcalling feature is offered (which is out of scope for VPIM) ๐Ÿ™…โ€โ™€๏ธ.

5. Message Transport Protocol ๐Ÿš€

Messages are transported between voice mail machines using the Internet Extended Simple Mail Transfer Protocol (ESMTP) ๐Ÿ“ฎ. All the info needed for proper delivery is included in the ESMTP dialog. This info, including the sender and recipient addresses, is commonly called the message "envelope". It's equivalent to the message control block in many analog voice messaging protocols ๐ŸŽŸ๏ธ.

ESMTP is a general-purpose messaging protocol, designed both to send mail and to allow terminal console messaging ๐Ÿ’ป. Simple Mail Transport Protocol (SMTP) was originally created for exchanging US-ASCII 7-bit text messages. Binary and 8-bit text messages have traditionally been moved by encoding them into a 7-bit text-like form. [ESMTP] formalized an extension mechanism for SMTP, and later RFCs defined 8-bit text networking, command streaming, binary networking, and extensions that let you declare message size for efficient transmission of large messages, like multi-minute voice mail ๐ŸŽง.

The following sections list the ESMTP commands, keywords, and parameters that are required and those that are optional for conformance to this profile ๐Ÿ“‹.

5.1. Base SMTP Protocol ๐Ÿงฑ

A conforming system MUST implement all mandatory SMTP and ESMTP commands. Any defined optional command or parameter MAY be supported.

5.2. SMTP Service Extensions ๐Ÿงฉ

VPIM uses a bunch of SMTP Service Extensions to provide full-featured voice messaging service ๐ŸŒŸ. The following extensions are profiled for use with VPIM:

5.2.1. DSN Extension ๐Ÿ“จ

The DSN extension is a mechanism that lets an SMTP client specify (a) that DSN's should be generated under certain conditions, (b) whether those DSN's should return the contents of the message, and (c) additional info to be returned with a DSN. That info lets the sender identify both the recipient(s) the DSN was issued for and the transaction the original message was sent in ๐Ÿ”.

The DSN extension MUST be supported by VPIM conforming implementations ๐Ÿ’œ.

Also, beyond the requirements of [DRPT], conforming implementations MUST support the NOTIFY parameter on the RCPT command, so the originator can indicate when they want a notification ๐Ÿ””. The RET parameter SHOULD be supported so the original message can come back with the notification. The parameters ORCPT and ENVID MAY also be supported. From: [DRPT]

5.2.2. SIZE Extension ๐Ÿ“

The SIZE extension is a mechanism where an SMTP client and server interact, giving the server a chance to decline a message (maybe just temporarily) based on the client's estimate of the message size ๐Ÿ™ƒ. From: [SIZE]

The SIZE extension MUST be supported by VPIM-compliant implementations ๐Ÿซถ.

5.2.3. ENHANCEDSTATUSCODES Extension ๐Ÿ”ข

The ENHANCEDSTATUSCODES extension is a mechanism where an SMTP server adds enhanced mail system status codes, as defined in [CODES], to its responses. Those codes can give more informative explanations of error conditions ๐Ÿง . From: [STATUS]

The ENHANCEDSTATUSCODES extension SHOULD be supported by VPIM-compliant implementations ๐Ÿ’–.

5.2.4. PIPELINING Extension

okay so the PIPELINING extension is how an SMTP server tells you how many commands it can take in one single TCP send ๐Ÿš€ sending several commands in one go can make SMTP way faster, no cap โœจ From [PIPE]

the PIPELINING extension SHOULD be supported by VPIM-compliant implementations ๐Ÿ’…

5.2.5. CHUNKING Extension

the CHUNKING extension is the one that lets a client and server agree to use the BDAT command (instead of DATA) for sending big MIME messages efficiently ๐Ÿ“ฆ๐ŸŽ€ From: [BINARY]

the CHUNKING extension MAY be supported by VPIM-compliant implementations ๐Ÿฆ‹

5.2.6. BINARYMIME Extension

BINARYMIME is giving "send the raw bytes, no re-encoding needed" ๐Ÿค– it lets a client and server negotiate sending unencoded binary message data using the BDAT command. From: [BINARY]

the BINARYMIME extension MAY be supported by VPIM-compliant implementations ๐ŸŒธ and bestie, [BINARY] says that if you support BINARYMIME, then you HAVE to support CHUNKING too, by definition ๐Ÿ‘€

Note: the original reads "has to be supported", which is not a BCP 14 keyword, so it stays lowercase in the text below.

Corrected sentence: and bestie, [BINARY] says that if BINARYMIME is to be supported, then CHUNKING has to be supported by definition ๐Ÿ‘€


5.3. ESMTP - SMTP Downgrading

okay so the SMTP extensions that VPIM suggests or requires fall into two buckets ๐Ÿง bucket one is the efficiency stuff, like SIZE, BINARYMIME, and PIPELINING. if things have to downgrade to a less-functional transport, you can drop these with no functional change for the sender or recipient ๐Ÿ’…

bucket two is transport extensions that unlock new features. DSN and ENHANCEDSTATUSCODES are the big upgrades for delivery status notifications, bringing email up to the reliability level people expect from Voice Mail ๐ŸŽ€ so to keep service consistent across an intranet or the global Internet, it is essential that VPIM-conforming ESMTP supports the DSN extension at every hop between a VPIM originating system and the recipient system ๐Ÿซถ

sometimes a downgrade is unavoidable ๐Ÿ˜ญ a relay hop might get forced (by the next hop) to forward a VPIM message WITHOUT the ESMTP request for delivery status notification. in that case it is RECOMMENDED that the downgrading system keeps trying to deliver the message, but it MUST send an appropriate delivery status notification to the originator. for example, the message left an ESMTP host and got relayed to a non-DSN-aware destination, and that could be the last DSN the sender ever gets ๐Ÿ’€

Correction for the rule: the downgrading system MUST send the notification, and the word "WITHOUT" above is a plain-English aside, not a keyword. Final version of that paragraph appears in the original structure: it is RECOMMENDED that the downgrading system should continue to attempt to deliver the message, but MUST send an appropriate delivery status notification to the originator, e.g., the message left an ESMTP host and was sent relayed to a non-DSN-aware destination, and this may be the last DSN received ๐Ÿ’œ


6. Directory Address Resolution

it's the VPIM system's job to supply the fully-qualified domain name (FQDN) of the recipient, based on whatever address the user typed in (if it isn't already a FQDN) ๐Ÿ“žโœจ this usually shows up on systems that only have a telephone user interface. mapping the dialed target number to a routable FQDN, so delivery can reach the destination system, can be done through implementation-specific means ๐Ÿงš

to make a local cache, an implementation may want to fill its local directories with first and last names, plus the senders' spoken name information pulled from received messages ๐ŸŒˆ addresses or names parsed from the header fields of VPIM messages MAY be used to populate directories ๐Ÿ’–


7. Management Protocols

the Internet protocols give you a way to manage messaging systems, from the physical network all the way up to the message queues ๐Ÿ› ๏ธ SNMP SHOULD be supported on a VPIM-conforming machine ๐Ÿ‘‘

7.1. Network Management

the digital interface to the VM and the TCP/IP protocols MAY be managed ๐Ÿ“ MIB II MAY be implemented to give basic statistics and reporting on TCP and IP protocol performance [MIB II] ๐Ÿ“Š


8. Conformance Requirements

VPIM is a messaging app that has to run in a bunch of different environments and on different devices ๐Ÿ“ฑ those include traditional voice processing systems, desktop voice messaging systems, store-and-forward relays, and protocol translation gateways ๐ŸŒธ

so to cover all of them, this document defines two areas of conformance: transport and content ๐ŸŽ€

transport-conformant systems pass VPIM messages in a store-and-forward way, with assured delivery notifications and without losing any information ๐Ÿฆ‹ it's expected that most store-and-forward Internet mail-based messaging systems will be VPIM transport-conformant โœจ

content-conformant systems generate and interpret VPIM messages ๐Ÿ’… generating them means the restrictions of this profile are honored. only contents specified in this profile, or extensions agreed to by bilateral agreement, may be sent. interpreting them means all VPIM content types and constructs can be received, all mandatory VPIM content types can be decoded and presented to the recipient in an appropriate manner, and any unrenderable contents result in the appropriate notification ๐Ÿซถ

a summary of the conformance requirements lives in Appendix A ๐Ÿ“

VPIM end systems are expected to be both transport- and content-conformant ๐Ÿ‘‘ voice messaging systems and protocol conversion gateways count as end systems ๐Ÿ’œ

relay systems are expected to be transport-conformant so they can receive and send conforming messages ๐Ÿ” however, they must also create VPIM-conforming delivery status notifications when there are delivery problems ๐Ÿ˜ญ

desktop Email clients that support VPIM are expected to be content-conformant ๐Ÿ’ป these clients use various protocols and API's to swap messages with the local message store and message transport system. they may benefit from VPIM transport capabilities, but specific client-server requirements are out-of-scope for this document ๐Ÿ™ˆ


9. Security Considerations

9.1. General Directive

this document is a profile of existing Internet mail protocols ๐Ÿ” to keep interoperability with Internet mail, any security should be part of the Internet security infrastructure, rather than a new mechanism or some other mechanism outside of the Internet infrastructure ๐Ÿ›ก๏ธ

9.2. Threats and Problems

both Internet mail and voice messaging come with their own threats and countermeasures ๐Ÿ˜ฌ so this specification doesn't create any security issues that aren't already in the profiled Internet mail and voice mail protocols themselves. this section only covers the extra threats that come from combining the two services ๐Ÿšจ

9.2.1. Spoofed sender

the actual sender of the voice message might not match what's in the "Sender:" or "From:" message header fields, or the MAIL FROM address from the SMTP envelope ๐ŸŽญ in a tightly constrained environment, enough physical and software controls may be able to prevent this problem ๐Ÿ”’ also, recognizing the sender's voice may give you confidence in their identity, no matter what "Sender:" or "From:" says ๐ŸŽค it should be recognized that SMTP implementations don't provide inherent authentication of message senders, and sites aren't obligated to provide that authentication either ๐Ÿ’€

9.2.2. Unsolicited voice mail

giving a voice mailbox an Internet mail address opens the door to unsolicited messages, either text or voice mail ๐Ÿ“ฌ๐Ÿ™…โ€โ™€๏ธ traditionally, voice mail systems ran in closed environments and weren't open to unknown senders, so users expect a much higher level of mailbox privacy. they may even see these messages as a security breach ๐Ÿ˜ฑ lots of Internet mail systems are now blocking all messages from unknown sources to try to curb this problem ๐Ÿงฑ

9.2.3. Message disclosure

voice messaging users expect a higher level of message privacy than plain Internet mail gives without security enhancements ๐Ÿคซ this expectation of privacy SHOULD be preserved as much as possible ๐Ÿซฃ

9.3. Security Techniques

sufficient physical and software control may be acceptable in constrained environments ๐Ÿฐ and this profile does not in any way preclude using any Internet object or channel security protocol to encrypt, authenticate, or non-repudiate the messages ๐Ÿ”‘โœจ

10. Normative References โœจ

okay bestie, this is the reading list ๐Ÿ“š๐ŸŽ€ every doc it points to is needed to get the full picture, so here they are exactly as written:

[8BIT]    Klensin, J., Freed, N., Rose, M., Stefferud, E. and D.
          Crocker, "SMTP Service Extension for 8bit-MIMEtransport",
          RFC 1652, July 1994.

[ADPCM]   Vaudreuil, G. and G. Parsons, "Toll Quality Voice - 32
          kbit/s Adaptive Differential Pulse Code Modulation (ADPCM)
          MIME Sub-type Registration", RFC 3802, June 2004.

[AMIS-A]  Audio Messaging Interchange Specifications (AMIS) - Analog
          Protocol Version 1, Issue 2, February 1992.

[AMIS-D]  Audio Messaging Interchange Specifications (AMIS) - Digital
          Protocol Version 1, Issue 3, August 1993.

[BINARY]  Vaudreuil, G., "SMTP Service Extensions for Transmission of
          Large and Binary MIME Messages", RFC 3030, December 2000.

[CODES]   Vaudreuil, G. "Enhanced Mail System Status Codes", RFC
          1893, January 1996.

[MIMEDIR] Dawson, F., Howes, T. and M. Smith, "A MIME Content-Type
          for Directory Information", RFC 2425, September 1998.

[DISP]    Troost, R. and S. Dorner, "Communicating Presentation
          Information in Internet Messages:  The Content-Disposition
          Header", RFC 2183, August 1997.

[DNS1]    Mockapetris, P., "Domain names - implementation and
          specification", RFC 1035, November 1987.

[DNS2]    Mockapetris, P., "Domain names - concepts and facilities",
          RFC 1034, November 1987.

[DRPT]    Moore, K., "Simple Mail Transfer Protocol (SMTP) Service
          Extension for Delivery Status Notifications (DSNs)", RFC
          3461, January 2003.

[DSN]     Moore, K. and G. Vaudreuil, "An Extensible Message Format
          for Delivery Status Notifications", RFC 3464, January 2003.

[DUR]     Parsons, G. and G. Vaudreuil, "Content Duration MIME Header
          Definition", RFC 3803, June 2004.

[E164]    CCITT Recommendation E.164 (1991), Telephone Network and
          ISDN Operation, Numbering, Routing and  Mobile Service -
          Numbering Plan for the ISDN Era.

[ESMTP]   Klensin, J., "Simple Mail Transfer Protocol", RFC 2821,
          April 2001.

[G726]    CCITT Recommendation G.726 (1990), General Aspects of
          Digital Transmission Systems, Terminal Equipment - 40, 32,
          24,16 kbit/s Adaptive Differential Pulse Code Modulation
          (ADPCM).

[HOSTREQ] Braden, R., "Requirements for Internet Hosts -- Application
          and Support", STD 3, RFC 1123, October 1989.

[LANG]    Alvestrand, H., "Tags for the Identification of Languages",
          BCP 47, RFC 3066, January 2001.

[MDN]     Hansen, T., Ed. and G. Vaudreuil, Ed., "Message Disposition
          Notification", RFC 3798, May 2004.

[MIB II]  Rose, M., "Management Information Base for Network
          Management of TCP/IP-based internets:  MIB-II", RFC 1213,
          March 1991.

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

[MIME2]   Freed, N.  and N. Borenstein,  "Multipurpose Internet Mail
          Extensions (MIME) Part Two: Media Types ", RFC 2046,
          November 1996.

[MIME3]   Moore, K., "Multipurpose Internet Mail Extensions (MIME)
          Part Three: Message Header Extensions for Non-ASCII Text ",
          RFC 2047, November 1996.

[MIME4]   Freed, N., Klensin, J. and J. Postel,  "Multipurpose
          Internet Mail Extensions (MIME) Part Four: Registration
          Procedures", RFC 2048, November 1996.

[MIME5]   Freed, N. and N. Borenstein,  "Multipurpose Internet Mail
          Extensions (MIME) Part Five: Conformance Criteria and
          Examples ", RFC 2049, November 1996.

[PIPE]    Freed, N.and A. Cargille, "SMTP Service Extension for
          Command Pipelining" STD 60, RFC 2920, September 2000.

[REPORT]  Vaudreuil, G., "The Multipart/Report Content Type for the
          Reporting of Mail System Administrative Messages", RFC
          3462, January 2003.

[REQ]     Bradner, S., "Key words for use in RFCs to Indicate
          Requirement Levels", BCP 14, RFC 2119, March 1997.

[RFC822]  Crocker, D., "Standard for the Format of ARPA Internet Text
          Messages", STD 11, RFC 822, August 1982.

[SIZE]    Klensin, J., Freed, N. and K. Moore, "SMTP Service
          Extensions for Message Size Declaration" STD 10, RFC 1870,
          November 1995.

[STATUS]  Freed, N., "SMTP Service Extension for Returning Enhanced
          Error Codes", RFC 2034, October 1996.

[TIFF-F]  Parsons, G. and J. Rafferty, "Tag Image File Format:
          Application F", RFC 2306, March 1998.

[TIFFREG] Parsons, G.,  Rafferty, J. and S. Zilles, "Tag Image File
          Format: image/tiff - MIME sub-type registration", RFC 2302,
          March 1998.

[V-MSG]   Vaudreuil, G. and G. Parsons, "VPIM Voice Message MIME
          Sub-type Registration", RFC 2423, September 1998.

[VCARD]   Dawson, F. and T. Howes, "vCard MIME Directory Profile" RFC
          2426, September 1998.

[VPIM1]   Vaudreuil, G., "Voice Profile for Internet Mail", RFC 1911,
          February 1996.

[VPIM2]   Vaudreuil, G. and G. Parsons, "Voice Profile for Internet
          Mail, Version 2", RFC 2421, September 1998.

[X.400]   CCITT/ISO, "CCITT Recommendations X.400/ ISO/IEC 10021-1,
          Message Handling: System and Service Overview", December
          1988.

11. Acknowledgments ๐Ÿซถ

the authors wanna give a huge shoutout ๐Ÿ“ฃ๐Ÿ’– to the Electronic Messaging Association (EMA), especially the Voice Messaging Committee crew, and the IETF VPIM Work Group. they supported the VPIM spec the whole way and put in real effort to make sure it actually succeeded ๐ŸŒธโœจ

12. Appendix A - VPIM Requirements Summary ๐Ÿ“‹๐Ÿ’…

okay so this table is basically the cheat sheet for the VPIM version 2 profile we've been talking about ๐Ÿฆ‹ it's super handy, but since it's really hard to simplify the requirements for every feature, this appendix is informative ๐Ÿงš you should read the full explanation of each feature in the section it points to. and if anything in this table is ambiguous, the text in the previous sections shall be deemed authoritative ๐Ÿ‘‘

how the table is laid out:

Feature - name of protocol feature (note that the indenting
          indicates a hierarchy of conformance, i.e., the
          conformance of a lower feature is only relevant if there
          is conformance to the higher feature)

Section - reference section in main text of this document

Area - conformance area to which each feature applies:
       C - content
       T - transport

Status tells you whether a feature is mandatory, optional, or prohibited ๐ŸŒˆ the key words in this table are meant to be read the way [REQ] describes, and here's the quick version of the different conformance levels:

Must         - mandatory
Should       - required in the absence of a compelling
               need to omit.
May          - optional
Should not   - prohibited in the absence of a compelling
               need.
Must not     - prohibited

and Footnote is where you'll find the special comments about conformance for a particular feature ๐Ÿ’œ okay that's the whole cheat sheet, bestie! ๐ŸŽ€

Okay so this is the big checklist, bestie ๐Ÿ“‹โœจ Every feature gets a little row, and the x marks do the talking. Let's go ๐Ÿ’…

                                              |          | | | | |S| |
                                              |          | | | | |H| |F
                                              |          | | | | |O|M|o
                                              |          | | |S| |U|U|o
                                              |          | | |H| |L|S|t
                                              |          |A|M|O| |D|T|n
                                              |          |R|U|U|M| | |o
                                              |          |E|S|L|A|N|N|t
                                              |          |A|T|D|Y|O|O|t
   FEATURE                                    |SECTION   | | | | |T|T|e
   -------------------------------------------|----------|-|-|-|-|-|-|-
                                              |          | | | | | | |
   Message Addressing Formats:                |          | | | | | | |
     Use DNS host names                       |4.1       |C|x| | | | |
     Use only numbers in mailbox IDs          |4.1.1     |C| |x| | | |
     Numbers in mailbox IDs follow E.164      |4.1.1     |C| |x| | | |
     Use alpha-numeric mailbox IDs            |4.1.1     |C| | |x| | |
     Support of postmaster@domain             |4.1.2     |C|x| | | | |
     Support of non-mail-user@domain          |4.1.2     |C| |x| | | |
     Support of distribution lists            |4.1.3     |C| | |x| | |
                                              |          | | | | | | |
   Message Header Fields:                     |          | | | | | | |
     Sending outbound messages                |          | | | | | | |
       From                                   |4.2.1     |C|x| | | | |
         Addition of text name                |4.2.1     |C| |x| | | |
         Same value as MAIL FROM              |4.2.1     |C| |x| | | |
       To                                     |4.2.2     |C| |x| | | |1
       cc                                     |4.2.3     |C| | |x| | |1
       Date                                   |4.2.4     |C|x| | | | |
       Sender                                 |4.2.5     |C| | |x| | |
       Return-Path                            |4.2.6     |C| | | | |x|
       Message-ID                             |4.2.7     |C|x| | | | |
       Reply-To                               |4.2.8     |C| | | |x| |
       Received                               |4.2.9     |C|x| | | | |
       MIME Version: 1.0 (Voice 2.0)          |4.2.10    |C| |x| | | |
       Content-Type                           |4.2.11    |C|x| | | | |
       Content-Transfer-Encoding              |4.2.12    |C|x| | | | |
       Sensitivity                            |4.2.13    |C| | |x| | |
       Importance                             |4.2.14    |C| | |x| | |
       Subject                                |4.2.15    |C| |x| | | |
       Disposition-notification-to            |4.7       |C| |x| | | |
       Other Headers                          |4.2       |C| | |x| | |
                                              |          | | | | | | |
                                              |          | | | | |H| |F
                                              |          | | | | |O|M|o
                                              |          | | |S| |U|U|o
                                              |          | | |H| |L|S|t
                                              |          |A|M|O| |D|T|n
                                              |          |R|U|U|M| | |o
                                              |          |E|S|L|A|N|N|t
                                              |          |A|T|D|Y|O|O|t
   FEATURE                                    |SECTION   | | | | |T|T|e
   -------------------------------------------|----------|-|-|-|-|-|-|-
     Receiving inbound messages               |          | | | | | | |
       From                                   |4.2.1     |C|x| | | | |
         Present text personal name           |4.2.1     |C| | |x| | |
       To                                     |4.2.2     |C|x| | | | |
       cc                                     |4.2.3     |C| | |x| | |
       Date                                   |4.2.4     |C|x| | | | |
         Conversion of Date to local time     |4.2.4     |C| |x| | | |
       Sender                                 |4.2.5     |C| | |x| | |
       Return-Path                            |4.2.6     |C| |x| | | |
       Message-ID                             |4.2.7     |C| | |x| | |
         MDN requested                        |4.2.7     |C|x| | | | |
       Reply-To                               |4.2.8     |C| | |x| | |
       Received                               |4.2.9     |C| | |x| | |
       MIME Version: 1.0 (Voice 2.0)          |4.2.10    |C| |x| | | |
       Content Type                           |4.2.11    |C|x| | | | |
       Content-Transfer-Encoding              |4.2.12    |C|x| | | | |
       Sensitivity                            |4.2.13    |C|x| | | | |2
       Importance                             |4.2.14    |C| | |x| | |
       Subject                                |4.2.15    |C| | |x| | |
       Disposition-notification-to            |4.7       |C| |x| | | |
       Other Headers                          |4.2       |C|x| | | | |3
                                              |          | | | | | | |
   Message Content Encoding:                  |          | | | | | | |
     Sending outbound audio/fax contents      |          | | | | | | |
       7BIT                                   |4.2.12    |C| | | | |x|
       8BIT                                   |4.2.12    |C| | | | |x|
       Quoted Printable                       |4.2.12    |C| | | | |x|
       Base64                                 |4.2.12    |C|x| | | | |4
       Binary                                 |4.2.12    |C| |x| | | |5
     Receiving inbound message contents       |          | | | | | | |
       7BIT                                   |4.2.12    |C|x| | | | |
       8BIT                                   |4.2.12    |C|x| | | | |
       Quoted Printable                       |4.2.12    |C|x| | | | |
       Base64                                 |4.2.12    |C|x| | | | |
       Binary                                 |4.2.12    |C|x| | | | |5
                                              |          | | | | | | |

                                                         | | | | |S| |
                                              |          | | | | |H| |F
                                              |          | | | | |O|M|o
                                              |          | | |S| |U|U|o
                                              |          | | |H| |L|S|t
                                              |          |A|M|O| |D|T|n
                                              |          |R|U|U|M| | |o
                                              |          |E|S|L|A|N|N|t
                                              |          |A|T|D|Y|O|O|t
   FEATURE                                    |SECTION   | | | | |T|T|e
   -------------------------------------------|----------|-|-|-|-|-|-|-
   Message Content Types:                     |          | | | | | | |
     Sending outbound messages                |          | | | | | | |
       Multipart/Voice-Message                |4.4.1     |C|x| | | | |
         Message/RFC822                       |4.4.2     |C| |x| | | |
         Audio/32KADPCM                       |4.4.3     |C|x| | | | |
           Content-Description                |4.3.1     |C| | |x| | |
           Content-Disposition                |4.3.2     |C|x| | | | |
           Content-Duration                   |4.3.3     |C| | |x| | |
           Content-Language                   |4.3.4     |C| | |x| | |
         Image/TIFF; application=faxbw        |4.4.4     |C|x| | | | |7
         Text/Directory                       |4.5.2     |C| | | |x| |9
         Text/plain                           |4.5.4     |C| | | |x| |
         Audio/* or Image/* (other encodings) |4.5.3     |C| | | |x| |
         Other contents                       |4.5       |C| | | | |x|
       Multipart/Mixed                        |4.5.1     |C| | |x| | |
       Text/plain                             |4.5.4     |C| | |x| | |
       Multipart/Report                       |4.6, 4.7  |C|x| | | | |
          human-readable part is voice        |4.6, 4.7  |C| |x| | | |
          human-readable part is text         |4.6, 4.7  |C| | |x| | |
          Message/Delivery-Status             |4.6       |C|x| | | | |
          Message/Disposition-Notification    |4.7       |C| |x| | | |
       Other contents                         |4.5       |C| | | |x| |6

     Receiving in inbound messages            |          | | | | | | |
       Multipart/Voice-Message                |4.4.1     |C|x| | | | |
         Message/RFC822                       |4.4.2     |C|x| | | | |
         Audio/32KADPCM                       |4.4.3     |C|x| | | | |
           Content-Description                |4.3.1     |C| | |x| | |
           Content-Disposition                |4.3.2     |C| |x| | | |
           Content-Duration                   |4.3.3     |C| | |x| | |
           Content-Language                   |4.3.4     |C| | |x| | |
         Image/TIFF; application=faxbw        |4.4.4     |C| |x| | | |8
         Text/Directory                       |4.5.2     |C|x| | | | |9
         Text/plain                           |4.5.4     |C| | |x| | |
         Audio/* or Image/* (other encodings) |4.5.3     |C| | |x| | |
         Other contents                       |4.5       |C| | |x| | |
       Multipart/Mixed                        |4.5.1     |C| | |x| | |
                                             |           | | | | |S| |
                                             |           | | | | |H| |F
                                             |           | | | | |O|M|o
                                             |           | | |S| |U|U|o
                                             |           | | |H| |L|S|t
                                             |           |A|M|O| |D|T|n
                                             |           |R|U|U|M| | |o
                                             |           |E|S|L|A|N|N|t
                                             |           |A|T|D|Y|O|O|t
   FEATURE                                   |SECTION    | | | | |T|T|e
   ------------------------------------------|-----------|-|-|-|-|-|-|-
                                             |           | | | | | | |
      Text/plain                             |4.5.4      |C|x| | | | |
      Multipart/Report                       |4.6, 4.7   |C|x| | | | |
        human-readable part is voice         |4.6, 4.7   |C|x| | | | |
        human-readable part is text          |4.6, 4.7   |C|x| | | | |
        Message/Delivery-Status              |4.6        |C|x| | | | |
        Message/Disposition-Notification     |4.7        |C| |x| | | |
      Other contents                         |4.5        |C| | |x| | |6
                                             |           | | | | | | |
     Forwarded Messages                      |           | | | | | | |
       use Message/RFC822 construct          |4.8        |C| |x| | | |
       simulate headers if none available    |4.8        |C| |x| | | |
                                             |           | | | | | | |
     Reply Messages                          |4.9        |C|x| | | | |
       send to Reply-To, else From address   |4.2.8      |C| | |x| | |
       send to non-mail-user                 |4.9        |C| | | |x| |
                                             |           | | | | | | |
     Notifications                           |           | | | | | | |
       use Multipart/Report format           |4.6, 4.7   |C|x| | | | |
       always send error on non-delivery     |4.6        |C|x| | | | |
       send error messages to return-path    |4.2.6      |C|x| | | | |
                                             |           | | | | | | |
   Message Transport Protocol:               |           | | | | | | |
     Base ESMTP Commands                     |           | | | | | | |
       HELO                                  |5.1        |T|x| | | | |
       MAIL FROM                             |5.1        |T|x| | | | |
       RCPT TO                               |5.1        |T|x| | | | |
       DATA                                  |5.1        |T|x| | | | |
       TURN                                  |5.1        |T| | | | |x|
       QUIT                                  |5.1        |T|x| | | | |
       RSET                                  |5.1        |T|x| | | | |
       VRFY                                  |5.1        |T| | |x| | |
       EHLO                                  |5.1        |T|x| | | | |
       BDAT                                  |5.1        |T| | |x| | |5

                                                         | | | | |S| |
                                              |          | | | | |H| |F
                                              |          | | | | |O|M|o
                                              |          | | |S| |U|U|o
                                              |          | | |H| |L|S|t
                                              |          |A|M|O| |D|T|n
                                              |          |R|U|U|M| | |o
                                              |          |E|S|L|A|N|N|t
                                              |          |A|T|D|Y|O|O|t
   FEATURE                                    |SECTION   | | | | |T|T|e
   -------------------------------------------|----------|-|-|-|-|-|-|-
                                              |          | | | | | | |
     ESMTP Keywords & Parameters              |          | | | | | | |
       DSN                                    |5.2.1     |T|x| | | | |
         NOTIFY                               |5.2.1     |T|x| | | | |
         RET                                  |5.2.1     |T| |x| | | |
         ENVID                                |5.2.1     |T| | |x| | |
         ORCPT                                |5.2.1     |T| | |x| | |
       SIZE                                   |5.2.2     |T|x| | | | |
       ENHANCEDSTATUSCODES                    |5.2.3     |T| |x| | | |
       PIPELINING                             |5.2.4     |T| |x| | | |
       CHUNKING                               |5.2.5     |T| | |x| | |
       BINARYMIME                             |5.2.6     |T| | |x| | |
                                              |          | | | | | | |
     ESMTP-SMTP Downgrading                   |          | | | | | | |
       send delivery report upon downgrade    |5.3       |T|x| | | | |
                                              |          | | | | | | |
   Directory Address Resolution               |          | | | | | | |
     provide facility to resolve addresses    |6         |C| |x| | | |
     use headers to populate local directory  |6         |C| | |x| | |
                                              |          | | | | | | |
   Management Protocols:                      |          | | | | | | |
     Network management                       |7.1       |T| | |x| | |
   -------------------------------------------|----------|-|-|-|-|-|-|-

Footnotes, bestie, and they matter ๐Ÿซถ

  1. heads up: SHOULD leave this blank if all recipients are not known or resolvable ๐Ÿ’Œ
  2. okay so if a sensitive message lands on a system that doesn't support sensitivity, it MUST be sent back to the originator with a proper error notification ๐Ÿ˜ญ and ALSO, a received sensitive message MUST NOT be forwarded to anyone. no exceptions, periodt ๐Ÿ”’
  3. if the extra header fields aren't understood, they MAY be ignored ๐ŸŒธ no drama
  4. when binary transport isn't available ๐Ÿ“
  5. when binary transport is available ๐Ÿงš
  6. other un-profiled contents MUST only be sent by bilateral agreement ๐Ÿค that's the rule, bestie
  7. if fax is supported ๐Ÿ“ 
  8. if the fax content can't be presented, it MAY be dropped ๐Ÿ™ˆ
  9. handling of a vCard in text/directory is no longer defined ๐Ÿ’€

13. Appendix B - Example Voice Messages โœจ

okay bestie, this one is the full-featured message ๐Ÿ’… it's addressed to two recipients and includes the sender's spoken name, spoken subject, and a short speech segment. it's marked important AND private, so it's giving main character energy ๐Ÿ‘‘๐Ÿ”ฅ

To: +19725551212@vm1.mycompany.com
To: +16135551234@VM1.mycompany.com
From: "Parsons, Glenn" <12145551234@VM2.mycompany.com>
Date: Mon, 26 Aug 93 10:20:20 -0700 (CDT)
MIME-Version: 1.0  (Voice 2.0)
Content-type: Multipart/Voice-Message; Version=2.0;
     Boundary="MessageBoundary"
Content-Transfer-Encoding: 7bit
Message-ID: 123456789@VM2.mycompany.com
Sensitivity: Private
Importance: High
--MessageBoundary
Content-type: Audio/32KADPCM
Content-Transfer-Encoding: Base64
Content-Disposition: inline; voice=Originator-Spoken-Name
Content-Language: en-US
Content-ID: part1@VM2-4321

glslfdslsertiflkTfpgkTportrpkTpfgTpoiTpdadasssdasddasdasd
(This is a sample of the base-64 Spoken Name data)
fgdhgddlkgpokpeowrit09==

--MessageBoundary
Content-type: Audio/32KADPCM
Content-Transfer-Encoding: Base64
Content-Disposition: inline; voice=Spoken-Subject
Content-Language: en-US
Content-ID: part2@VM2-4321

glslfdslsertiflkTfpgkTportrpkTpfgTpoiTpdadasssdasddasdasd
(This is a sample of the base-64 Spoken Subject data)
fgdhgddlkgpokpeowrit09==

--MessageBoundary
Content-type: Audio/32KADPCM
Content-Transfer-Encoding: Base64
Content-Description: Brand X Voice Message
Content-Disposition: inline; voice=Voice-Message; filename=msg1.726
Content-Duration: 25

iIiIiIjMzN3czdze3s7d7fwfHhcvESJVe/4yEhLz8/FOQjVFRERCESL/zqrq
(This is a sample of the base64 message data) zb8tFdLTQt1PXj
u7wjOyRhws+krdns7Rju0t4tLF7cE0K0MxOTOnRW/Pn30c8uHi9==

--MessageBoundary- -                         -                         -

next up: a forwarded single segment voice ๐Ÿฆ‹ both the forwarded message and the forwarding message contain the senders spoken

RFC>>>

names. ๐ŸŽ€ Okay bestie, the big example is wrapping up, and then we get to the appendices, which are lowkey my favourite part ๐Ÿ’…

      Date: Thu, 7 Jul 1994 17:16:05 -0400
      ...

Wait, let me do this properly. Here's the rest of the big multipart example, exactly as the spec has it:

To: +12145551212@vm1.mycompany.com
From: "Vaudreuil, Greg" <+19725552345@VM2.mycompany.com>
Date: Mon, 26 Aug 93 10:20:20 -0700 (CDT)
MIME-Version: 1.0  (Voice 2.0)
Content-type: Multipart/Voice-Message; Version=2.0;
  Boundary="MessageBoundary"
Content-Transfer-Encoding: 7bit
Message-ID: ABCD-123456789@VM2.mycompany.com
--MessageBoundary
Content-type: Audio/32KADPCM
Content-Transfer-Encoding: Base64
Content-Disposition: inline; voice=Originator-Spoken-Name
Content-Language: en-US
Content-ID: part3@VM2-4321

glslfdslsertiflkTfpgkTportrpkTpfgTpoiTpdadasssdasddasdasd
(This is a sample of the base-64 Spoken Name data)
fgdhgd dlkgpokpeowrit09==

--MessageBoundary
Content-type: Audio/32KADPCM
Content-Description: Forwarded Message Annotation
Content-Disposition: inline; voice=Voice-Message
Content-Transfer-Encoding: Base64

glslfdslsertiflkTfpgkTportrpkTpfgTpoiTpdadasssdasddasdasd
(This is the voiced introductory remarks encoded in base64)
jrgoij3o45itj09fiuvdkjgWlakgQ93ijkpokfpgokQ90gQ5tkjpokfgW
dlkgpokpeowrit09==
--MessageBoundary
Content-type: Message/RFC822
Content-Transfer-Encoding: 7bit

To: +19725552345@VM2.mycompany.com
From: "Parsons, Glenn, W." <+16135551234@VM1.mycompany.com>
Date: Mon, 26 Aug 93 8:23:10 -0500 (EST)
Content-type: Multipart/Voice-Message; Version=2.0;
  Boundary="MessageBoundary2"
Content-Transfer-Encoding: 7bit
MIME-Version: 1.0  (Voice 2.0)

--MessageBoundary2
Content-type: Audio/32KADPCM
Content-Transfer-Encoding: Base64
Content-Disposition: inline; voice=Originator-Spoken-Name
Content-Language: en-US
Content-ID: part6@VM2-4321

glslfdslsertiflkTfpgkTportrpkTpfgTpoiTpdadasssdasddasdasd
(This is a sample of the base-64 Spoken Name data) fgdhgd
 dlkgpokpeowrit09==

--MessageBoundary2
Content-type: Audio/32KADPCM
Content-Disposition: inline; voice=Voice-Message
Content-Transfer-Encoding: Base64

glslfdslsertiflkTfpgkTportrpkTpfgTpoiTpdadasssdasddasdasd
(This is the original message audio data) fgwersdfmniwrjj
jrgoij3o45itj09fiuvdkjgWlakgQ93ijkpokfpgokQ90gQ5tkjpokfgW
dlkgpokpeowrit09==

--MessageBoundary2--

--MessageBoundary--

Now the DSN example, the one for a message sent to a mailbox that doesn't exist. This one is a VPIM gateway at VM1.company.com being lowkey rude ๐Ÿ’€. Here it is:

Date: Thu, 7 Jul 1994 17:16:05 -0400
From: Mail Delivery Subsystem <MAILER-DAEMON@vm.company.com>
Message-ID: <199407072116.RAA14128@vm1.company.com>
Subject: Returned voice message
To: 2175552345@VM2.mycompany.com
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
  boundary="RAA14128.773615765/VM1.COMPANY.COM"

--RAA14128.773615765/VM1.COMPANY.COM
Content-type: Audio/32KADPCM
Content-Description: Spoken Delivery Status Notification
Content-Disposition: inline; voice= Voice-Message-Notification
Content-Transfer-Encoding: Base64

glslfdslsertiflkTfpgkTportrpkTpfgTpoiTpdadadffsssddasdasd
(This is a voiced description of the error in base64)
jrgoij3o45itj09fiuvdkjgWlakgQ93ijkpokfpgokQ90gdffkjpokfgW
dlkgpokpeowrit09==

--RAA14128.773615765/VM1.COMPANY.COM
Content-type: Message/Delivery-Status

Reporting-MTA: dns; vm1.company.com

Original-Recipient: rfc822; 2145551234@VM1.mycompany.com
Final-Recipient: rfc822; 2145551234@VM1.mycompany.com
Action: failed
Status: 5.1.1 (User does not exist)
Diagnostic-Code: smtp; 550 Mailbox not found
Last-Attempt-Date: Thu, 7 Jul 1994 17:15:49 -0400
--RAA14128.773615765/VM1.COMPANY.COM
content-type: Message/RFC822

[original VPIM message goes here]

--RAA14128.773615765/VM1.COMPANY.COM--

And now the MDN example, for a message that got played. It was received by a corporate gateway and relayed to a unified mailbox, so it's giving "delivered and listened to" ๐Ÿฆ‹โœจ

Date: Thu, 7 Jul 1994 17:16:05 -0400
From: "Greg Vaudreuil" <22722@vm.company.com>
Message-ID: <199407072116.RAA14128@exchange.company.com>
Subject: Voice message played
To: 2175552345@VM2.mycompany.com
MIME-Version: 1.0
Content-Type: multipart/report;
        Report-type=disposition-notification;
        Boundary="RAA14128.773615765/EXCHANGE.COMPANY.COM"

--RAA14128.773615765/EXCHANGE.COMPANY.COM
Content-type: Audio/32KADPCM
Content-Description: Spoken Disposition Notification
Content-Disposition: inline; voice= Voice-Message-Notification
Content-Transfer-Encoding: Base64

glslfdslsertiflkTfpgkTportrpkTpfgTpoiTpdadadffsssddasdasd
(Voiced description of the disposition action in base64)
jrgoij3o45itj09fiuvdkjgWlakgQ93ijkpokfpgokQ90gdffkjpokfgW
dlkgpokpeowrit09==

--RAA14128.773615765/EXCHANGE.COMPANY.COM
Content-type: Message/Disposition-Notification

Reporting-UA: gregs-laptop.dallas.company.com (Unified FooMail 3.0)

Original-Recipient: rfc822;22722@vm.company.com
Final-Recipient: rfc822;Greg.Vaudreuil@foomail.company.com
Original-Message-ID: <199509192301.12345@vm2.mycompany.com>
Disposition: manual-action/MDN-sent-automatically; displayed

--RAA14128.773615765/EXCHANGE.COMPANY.COM
Content-type: Message/RFC822

[original VPIM message goes here]

--RAA14128.773615765/EXCHANGE.COMPANY.COM--

14. Appendix C - Example Error Voice Processing Error Codes โœจ

Here are some common voice processing errors and their matching status codes, given as examples only. The text after each error code is just there to explain the code, so implementations should provide implementation-specific informative comments after the error code rather than using the text below. Bestie, make it your own ๐Ÿ’–

Error condition                 RFC 1893 Error codes
-----------------------------   --------------------------------

Analog delivery failed          4.4.1 Persistent connection error
because remote system is busy         - busy

Analog delivery failed          4.4.1 Persistent protocol error
because remote system is              - no answer from host
ring-no-answer

Remote system did not answer    5.5.5 Permanent protocol error
AMIS-Analog handshake ("D" in         - wrong version
response to "C" at connect
time)

Mailbox does not exist          5.1.1 Permanent mailbox error
                                      - does not exist

Mailbox full or over quota      4.2.2 Persistent mailbox error
                                      - full

Disk full                       4.3.1 Persistent system error
                                      - full

Command out of sequence         5.5.1 Permanent protocol error
                                      - invalid command

Frame Error                     5.5.2 Permanent protocol error
                                                 - syntax error

Mailbox does not support FAX    5.6.1 Permanent media error
                                      - not supported

Mailbox does not support TEXT   5.6.1 Permanent media error
                                      - not supported

Sender is not authorized        5.7.1 Permanent security error
                                      - sender not authorized

Message marked private, but     5.3.3 Permanent system error
system is not private capable         - not feature capable

15. Appendix D - Example Voice Processing Disposition Types ๐ŸŒธ

Next up, the disposition types. These are common voice processing disposition conditions with their matching MDN Disposition, which covers the disposition mode, type and modifier when there is one. Consider these examples, not the final word. Implementers should refer to [MDN] for a full description of the format of message disposition notifications. Go read it, it's the real tea ๐Ÿต

Notification event               MDN Disposition mode, type & modifier
------------------------------   ------------------------------------

Message played by recipient,    manual-action/MDN-sent-automatically;
receipt automatically returned  displayed

Message deleted from mailbox    manual-action/MDN-sent-automatically;
by user without listening       deleted

Message cleared when mailbox    manual-action/MDN-sent-automatically;
deleted by admin                deleted/mailbox-terminated

Message automatically deleted   automatic-action/
when older than administrator   MDN-sent-automatically; deleted/
set threshold                   expired

Message processed, however      manual-action/MDN-sent-automatically;
audio encoding unknown -        processed/error
unable to play to user          Error: unknown audio encoding

16. Appendix E - IANA Registrations ๐Ÿ’…

Okay, so the registrations part is a little bit of a plot twist ๐Ÿ™ˆ There are no changes to the registration per [DISP] of the voice content disposition parameter defined in the earlier VPIM V2 document, RFC 2421. There are no changes to the registration per [MIME4] of the Multipart/voice-message content type defines in the earlier VPIM v2 document, RFC 2423.

Both are presented here for information. Just vibes, no new rules โœจ

16.1. Voice Content-Disposition Parameter Definition ๐ŸŽ€

Here's the email template for registering the new voice parameter, sent to IANA:

To: IANA@IANA.ORG

Subject: Registration of new Content-Disposition parameter

Content-Disposition parameter name: voice

Allowable values for this parameter:

      Voice-Message - the primary voice message,
      Voice-Message-Notification - a spoken delivery notification
        or spoken disposition notification,
      Originator-Spoken-Name - the spoken name of the originator,
      Recipient-Spoken-Name - the spoken name of the recipient if
        available to the originator and present if there is ONLY one
        recipient,
      Spoken-Subject- the spoken subject of the message, typically
        spoken by the originator

Description: in order to tell apart the different kinds of audio in a VPIM voice message, a new disposition parameter called "voice" is defined with the values above, used wherever they fit. Note that there SHOULD only be one instance of each of these types of audio contents per message level. Additional instances of a given type (i.e., parameter value) may occur within an attached forwarded voice message. Serious rule energy, but it makes total sense once you see it ๐Ÿฆ‹

Okay the voice parameter is officially registered in my heart ๐ŸŒˆ๐Ÿ’œ

16.2. Multipart/Voice-Message MIME Media Type Definition ๐ŸŽ€

okay so this is where we officially register the multipart/voice-message media type with IANA ๐Ÿ“ฎโœจ here's the whole registration template, exactly as written:

   To: ietf-types@iana.org
   Subject: Registration of MIME media type
            Multipart/voice-message

   MIME media type name: multipart

   MIME subtype name: voice-message

   Required parameters: boundary, version

      The use of boundary is defined in [MIME2]
      The version parameter that contains the value "2.0" if
      enclosed content conforms to [VPIM2R2].  The absence of this
      parameter indicates conformance to the previous version
      defined in RFC 1911 [VPIM1].

   Optional parameters: none

   Encoding considerations: 7bit, 8bit or Binary

   Security considerations:

      This definition identifies the content as being a voice
      message.  In some environments (though likely not the
      majority), the loss of the anonymity of the content may be a
      security issue.

   Interoperability considerations:

      Systems developed to conform with [VPIM1] may not conform to
      this registration.  Specifically, the required version will
      likely be absent, in this case the recipient system should
      still be able to accept the message and will be able to
      handle the content.  The VPIM v1 positional identification,
      however, would likely be lost.

   Published specification:
      This document

      Applications that use this media type:

      Primarily voice messaging

      Additional information:

      Magic number(s): none
      File extension(s): .VPM
      Macintosh File Type Code(s): VPIM

   Person & email address to contact for further information:

      Glenn W. Parsons
      gparsons@nortelnetworks.com

      Gregory M. Vaudreuil
      gregv@ieee.org

   Intended usage: COMMON
   Author/Change controller:

      Glenn W. Parsons & Gregory M. Vaudreuil

17. Appendix F - Change History: RFC 2421 (VPIM V2) to this Document ๐Ÿฆ‹

okay so the updated profile in this doc is built on real-world experience from several vendors who actually deployed this stuff ๐Ÿ”ฅ the changes are sorted into four buckets (general, content, transport and conformance), and here's the tea:

  1. General
    • a bunch of big editorial glow-ups so it's way easier to read ๐Ÿ’…
    • send rules and receive rules got their own lanes for clarity ๐Ÿ›ฃ๏ธ
    • clarified what happens when a receiver gets content types it doesn't recognise, which matters for voice and unified messaging systems working together (e.g., unsupported non-audio content should be discarded so the audio message still gets delivered) ๐ŸŽง
    • reworked the sensitivity requirements so they line up with X.400, and dropped the dependencies on the MIXER documents ๐Ÿ™Œ
    • reorganised the content-type descriptions so they're easier to follow ๐ŸŒธ
  2. Content
    • a gateway's handling of received lines is now that it SHOULD NOT delete them. in gateways to systems like AMIS, that info can't be preserved anyway, so those systems should still be able to claim conformance ๐Ÿซถ
    • the vCard is gone as a supported VPIM V2 content type ๐Ÿ‘‹
    • merged in the text from RFC 2423 (Multipart/voice-message) ๐Ÿ’œ
  3. Transport
    • None ๐Ÿ“
  4. Conformance
    • the table in Appendix A now matches the requirements in the text ๐Ÿงš

18. Authors' Addresses ๐ŸŒˆ

the people behind it, exactly as listed:

   Gregory M. Vaudreuil
   Lucent Technologies
   7291 Williamson Rd
   Dallas, TX  75214
   United States

   EMail: gregv@ieee.org


   Glenn W. Parsons
   Nortel Networks
   P.O. Box 3511, Station C
   Ottawa, ON  K1Y 4H7
   Canada

   Phone: +1-613-763-7582
   Fax: +1-613-763-2697
   EMail: GParsons@NortelNetworks.com

okay the legal bit, and yes it's important, so here it is in full (no skipping!) ๐Ÿ™ˆ

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.

This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
ENGINEERING TASK FORCE DISCLAIM 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.

Intellectual Property ๐Ÿ”

the IETF takes no position on whether any Intellectual Property Rights (or other rights) claimed to cover the technology in this doc are valid or in scope, or whether any licence to them is available. it also doesn't claim to have done any independent digging to find such rights. info about how rights work for RFC documents is in BCP 78 and BCP 79 ๐Ÿ“š

copies of IPR disclosures sent to the IETF Secretariat, any assurances of licences that'll be made available, and the results of any attempt to get a general licence or permission for implementers or users of this spec can be found in the IETF's online IPR repository at http://www.ietf.org/ipr.

the IETF invites anyone to flag any copyrights, patents, patent applications or other proprietary rights that might cover tech needed to implement this standard. send that info to the IETF at ietf-ipr@ietf.org ๐Ÿ“ฌ

Acknowledgement ๐Ÿ’–

funding for the RFC Editor function is currently provided by the Internet Society. thank u, ISOC ๐Ÿซถโœจ

๐Ÿ“ฆ where this page comes from