RFC 3801
Voice Profile for Internet Mail - version 2 (VPIMv2)
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 Notice ๐
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 ๐
- 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.
- 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.
- 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.
- 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.
- Error reports have to be machine-parsable, so that helpful responses can be voiced to users whose only access mechanism is a telephone ๐
- 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 ๐งฉ:
- mailbox number
- for use as a private numbering plan (any number of digits)
- e.g.,
2722@lucent.com
- 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
- +international number
- for international telephone numbers conforming to E.164, maximum of 15 digits
- e.g.,
+16137637582@vm.nortel.ca
- +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 ๐ซถ
- heads up: SHOULD leave this blank if all recipients are not known or resolvable ๐
- 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 ๐
- if the extra header fields aren't understood, they MAY be ignored ๐ธ no drama
- when binary transport isn't available ๐
- when binary transport is available ๐ง
- other un-profiled contents MUST only be sent by bilateral agreement ๐ค that's the rule, bestie
- if fax is supported ๐
- if the fax content can't be presented, it MAY be dropped ๐
- 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:
- 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 ๐ธ
- 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) ๐
- Transport
- None ๐
- 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
19. Full Copyright Statement โ๏ธ
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
- ietf: rfc3801 2004-06
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms