RFC 2421
Voice Profile for Internet Mail - version 2
RFC 2421: Voice Profile for Internet Mail - version 2 ๐
Who wrote it: G. Vaudreuil (Lucent Technologies) and G. Parsons (Northern Telecom) ๐ฏโโ๏ธ Category: Standards Track ๐ฆ Date: September 1998 ๐ Obsoletes: RFC 1911 ๐, the version 1 of this same profile Updates: nothing listed here ๐ธ
Status of This Memo โจ
okay so this doc is an Internet standards track protocol for the Internet community, and it's basically asking everyone for discussion and suggestions for improvements ๐ซถ. For where it sits in the standardization state and status, 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 (1998). All Rights Reserved. ๐
Overview ๐
this document profiles Internet mail for voice messaging ๐โจ. It obsoletes RFC 1911, which describes version 1 of the profile, and the changes from that doc are listed in Appendix F ๐. Appendix A also summarizes the protocol profiles of this version of VPIM ๐ .
Send comments on this document to the EMA VPIM Work Group mailing list: <vpim-l@ema.org> ๐
Working Group Summary ๐
this profile is not the product of an IETF working group, though several have reviewed it ๐. It's actually the product of the VPIM Work Group of the Electronic Messaging Association (EMA) ๐. That work group has representatives from most major voice mail vendors and several email vendors, has held several interoperability demonstrations between voice messaging vendors, and is currently promoting VPIM trials and deployment ๐๐ฅ.
Table of Contents ๐บ๏ธ
1. ABSTRACT .........................................................3
2. SCOPE ............................................................3
2.1 Voice Messaging System Limitations ............................3
2.2 Design Goals ..................................................4
3. PROTOCOL RESTRICTIONS ............................................5
4. VOICE MESSAGE INTERCHANGE FORMAT .................................6
4.1 Message Addressing Formats ....................................6
4.2 Message Header Fields .........................................9
4.3 Voice Message Content Types ..................................15
4.4 Other Message Content Types ..................................21
4.5 Forwarded Messages ...........................................23
4.6 Reply Messages ...............................................23
4.7 Notification Messages ........................................24
5. MESSAGE TRANSPORT PROTOCOL ......................................24
5.1 ESMTP Commands ...............................................25
5.2 ESMTP Keywords ...............................................27
5.3 ESMTP Parameters - MAIL FROM .................................28
5.4 ESMTP Parameters - RCPT TO ...................................29
5.5 ESMTP - SMTP Downgrading .....................................29
6. DIRECTORY ADDRESS RESOLUTION ....................................30
7. IMAP ............................................................30
8. MANAGEMENT PROTOCOLS ............................................30
8.1 Network Management ...........................................31
9. CONFORMANCE REQUIREMENTS ........................................31
10. SECURITY CONSIDERATIONS ........................................32
10.1 General Directive ...........................................32
10.2 Threats and Problems ........................................32
10.3 Security Techniques .........................................33
11. REFERENCES .....................................................33
12. ACKNOWLEDGMENTS ................................................36
13. AUTHORS' ADDRESSES .............................................36
14. APPENDIX A - VPIM REQUIREMENTS SUMMARY .........................37
15. APPENDIX B - EXAMPLE VOICE MESSAGES ............................45
16. APPENDIX C - EXAMPLE ERROR VOICE PROCESSING ERROR CODES ........50
17. APPENDIX D - EXAMPLE VOICE PROCESSING DISPOSITION TYPES ........51
18. APPENDIX E - IANA REGISTRATIONS ................................52
18.1 vCard EMAIL Type Definition for VPIM ........................52
18.2 Voice Content-Disposition Parameter Definition ..............52
19. APPENDIX F - CHANGE HISTORY: RFC 1911 TO THIS DOCUMENT .........54
20. FULL COPYRIGHT NOTICE ..........................................56
1. Abstract ๐
okay so a class of special-purpose computers has evolved to handle voice messaging ๐๐ . These machines usually plug into a telephone switch and do call answering and voice messaging ๐๏ธ. Traditionally, messages going to a non-local machine get shipped over analog networking protocols based on DTMF signaling, with analog voice playback ๐ผ. But as demand for networking grows, there's a real need for a standard high-quality digital protocol to connect these machines ๐ฅ. This document profiles the Internet standard MIME and ESMTP protocols so they can be a digital voice messaging networking protocol ๐ฆ. In this doc, that profile is called VPIM (Voice Profile for Internet Mail) ๐.
This profile builds on earlier work from the Audio Message Interchange Specification (AMIS) group, which defined a voice messaging protocol based on X.400 technology ๐ง. The goal is to meet the user requirements from that earlier work using the industry standard ESMTP/MIME mail protocol infrastructure that corporate intranets already use ๐ขโจ. This second version of VPIM is based on implementation experience, and it obsoletes RFC 1911, which describes version 1 of the profile ๐.
2. Scope ๐
MIME is the Internet multipurpose, multimedia messaging standard ๐. This document explicitly recognizes its capabilities and provides a mechanism for exchanging various messaging technologies, mainly voice and facsimile ๐ ๐ถ.
This document specifies a restricted profile of the Internet multimedia messaging protocols for use between voice processing server platforms ๐ฅ๏ธ. Those platforms have historically been special-purpose computers, and they often don't have the facilities a normal Internet Email-capable computer would have ๐ญ. So VPIM also specifies extra functionality as it's needed ๐ . The whole point is to specify the minimum common set of features so compliant systems can interwork ๐ซถ.
2.1. Voice Messaging System Limitations ๐
these are the typical limitations of voice messaging platforms that were considered when creating this baseline profile ๐:
- Text messages are not normally received and often cannot be easily displayed or viewed. They can often be processed only via text-to-speech or text-to-fax features, which many of these machines don't currently have ๐.
- Voice mail machines usually act as an integrated Message Transfer Agent, Message Store and User Agent all in one ๐งฉ. There is no relaying of messages, and RFC 822 header fields may have limited use given the limited messaging features currently deployed ๐ฌ.
- Voice mail message stores generally can't preserve the full semantics of an Internet message ๐. So using a voice mail machine for gatewaying is not supported ๐ซ. In particular, storage of recipient lists, "Received" lines, and "Message-ID" may be limited ๐.
- Internet-style distribution/exploder mailing lists are not typically 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 are not generally available ๐ โโ๏ธ.
- Error reports must be machine-parsable so that helpful responses can be voiced to users whose only access mechanism is a telephone ๐๐.
- The voice mail systems generally limit address entry to 16 or fewer numeric characters, and they normally 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 ๐ฉ.
2.2. Design Goals ๐ธ
it's a goal of this profile to make as few restrictions and additions to the existing Internet mail protocols as possible ๐งผโจ, while still meeting interoperability requirements with current generation voice messaging systems ๐ค. The motivation is to increase accessibility 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 ๐. It's possible to use the SMTP protocol suite over other transport protocols too, but the necessary protocol parameters for that are outside the scope of this document ๐คทโโ๏ธ.
This profile is meant to be robust enough for an environment like the global Internet, with installed-base gateways that don't understand MIME ๐๐ฆ. Typical use is expected to be within corporate intranets though ๐ข. Full functionality, such as reliable error messages and binary transport, will require careful selection of gateways (for example, via MX records) to act as VPIM forwarding agents ๐งโโ๏ธ. Nothing in this document precludes using general purpose MIME email packages to read and compose VPIM messages ๐. Receiving VPIM compliant messages needs no special configuration, but originating compliant structures may need some ๐.
It's expected that a VPIM messaging system will be managed by a system administrator who can do TCP/IP network configuration ๐งโ๐ป. 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 reduce sending undeliverable messages due to lack of feature support ๐. Configuration, implementation and management of these directory listing capabilities are local matters ๐ .
3. Protocol Restrictions โจ
okay so this protocol doesn't limit how many recipients a message can have ๐ where possible, server implementations should not restrict the number of recipients in a single message. it's recognized that no implementation supports unlimited recipients, and the number of supported recipients may be quite low ๐
this protocol also doesn't limit the maximum message length ๐ implementers should understand that some machines will be unable to accept excessively long messages. a mechanism is defined in the RFC 1425 SMTP service extensions to declare the maximum message size supported โจ
the message size in the ESMTP SIZE parameter is in bytes, not minutes or seconds ๐ the number of bytes varies by voice encoding format and includes the MIME wrapper overhead. if the length must be known before sending, you can do an approximate translation into minutes or seconds if the voice encoding is known ๐ฆ
the following sections describe the restrictions and additions to Internet mail protocols that are required to be compliant with this VPIM v2 profile. though various SMTP, ESMTP and MIME features are described here, the implementer is referred to the relevant RFCs for complete details. it's also advisable to check for IETF drafts of various Internet Mail specifications that are later than the most recent RFCs, since, for example, MIME has yet to be published as a full IETF Standard. the table in Appendix A summarizes the protocol details of this profile ๐
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].
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 referred to as a VPIM Message in this document. so this document assumes you already understand the Internet Mail specifications ๐ค specifically, VPIM references components from the message format standard for Internet messages [RFC822], the Multipurpose Internet Message Extensions [MIME], the X.400 gateway specification [X.400], delivery status and message disposition notifications [REPORT][DSN][DRPT][STATUS][MDN], and the electronic business card [MIMEDIR][VCARD] ๐
4.1 Message Addressing Formats
RFC 822 addresses are 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 uniquely identifying a mailbox on a destination system. for voice messaging, the local part is a printable string containing the mailbox ID of the originator or recipient. alpha characters and long mailbox identifiers are permitted, BUT most voice mail networks rely on numeric mailbox identifiers to stay compatible with the limited 10 digit telephone keypad ๐ so some voice messaging systems may only be able to handle a numeric local part. the reception of alphanumeric local parts on these systems may result in the address being mapped to some locally unique (but confusing to the recipient) number or, in the worst case, the address could be deleted, making the message un-replyable ๐ญ it may also be hard to create messages on these systems with an alphanumeric local part without complex key sequences or some form of directory lookup (see 6).
the use of the domain naming 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 enters (see 6) ๐ช
in the absence of a global directory, specification of the local part is expected to conform to international or private telephone numbering plans. private numbering plans will likely prevail, and these are left for local definition. however, it is RECOMMENDED that public telephone numbers be noted according to the international numbering plan described in [E.164]. the indication that the local part is a public telephone number is given by a preceding +. (the + would not be entered from a telephone keypad, it's added by the system as a flag ๐ฉ) since the primary information in the numeric scheme is contained by the digits, other character separators (e.g. -) may be ignored (i.e. to allow parsing of the numeric local mailbox), or may 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 described 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
- for use as a private numbering plan with extensions, any number of digits, use of
- +international number
- for international telephone numbers conforming to E.164, maximum of 15 digits
- e.g.
+16137637582@vm.nortel.ca
- 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
- e.g.
note that this address format is designed to be compatible with current usage within the voice messaging industry. it is not compatible with the addressing formats of RFCs 2303-2304. it's expected that as telephony services become more widespread on the Internet, these addressing formats will converge ๐
4.1.2 Special Addresses
special addresses are provided for compatibility with the conventions of Internet mail. these addresses don't use numeric local addresses, both to conform to current Internet practice and to avoid conflict 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 should be checked regularly by the system manager. this mailbox is particularly likely to receive text messages, which isn't normal on a voice processing platform ๐คทโโ๏ธ the specific handling of these messages is an individual implementation choice.
non-mail-user@domain
if a reply to a message is not possible, such as a telephone answering message, then the special address "non-mail-user" must be used as the originator's address. any text name such as "Telephone Answering", or the telephone number if it's available, is permitted. this special address is used as a token to indicate an unreachable originator. for compatibility with the installed base of mail user agents, implementations that generate this special address MUST send a negative delivery status notification (DSN) for reply messages sent to the undeliverable address. the status code for such NDN's is 5.1.1 "Mailbox does not exist".
Example:
From: Telephone Answering <non-mail-user@mycompany.com>
4.1.3 Distribution Lists
there are many ways to handle distribution list (DL) expansions and none are 'standard' ๐ simple alias is the behavior closest to what most voice mail systems do today, and it's what is to be used with VPIM messages. that is:
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 and the Return-Path:
RFC 822 field)
some proprietary voice messaging protocols include only the recipient of the particular copy in the envelope, and include no "header fields" except date and per-message features. most voice messaging systems don't provide for "Header Information" in their messaging queues, and only include delivery information. as a result, recipient information MAY be in either the To or CC header fields. if all recipients cannot be presented (e.g. unknown DL expansion), then the recipient header fields MUST be omitted to indicate that an accurate list of recipients (e.g. for use with a reply-all capability) is not known. ๐ซ
4.2 Message Header Fields
Internet messages contain a header information block. this header block holds the information needed to identify the sender, the list of recipients, the message send time, and other information intended for user presentation. except for specialized gateway and mailing list cases, header fields do not indicate delivery options for the transport of 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 are not defined here ๐งน
the following header lines are permitted for use with VPIM voice messages ๐
4.2.1 From
the originator's fully-qualified domain address (a mailbox address followed by the fully-qualified domain name). the user listed in this field should be presented in the voice message envelope as the originator of the message ๐โโ๏ธ
systems compliant 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>
the From address SHOULD be used for replies (see 4.6). however, if the From address contains <non-mail-user@domain>, the user SHOULD NOT be offered the option to reply, nor should notifications be sent to this address. no reply button for the ghost address, bestie ๐ป
voice mail machines may not be able to support separate attributes for the FROM, REPLY-TO, and SENDER header fields and the SMTP MAIL FROM command. VPIM conforming systems SHOULD set these values to the same address. using addresses different from those in the From header field address may result in unanticipated behavior ๐ซฃ
4.2.2 To
the To header contains the recipient's fully-qualified domain address. there may be one or more To: fields in any message ๐ซถ
Example:
To: +12145551213@mycompany.com
systems compliant to this profile SHOULD provide a list of recipients only if all recipients are provided. the To header MUST NOT be included in the message if the sending message transport agent (MTA) cannot resolve all the addresses in it, e.g. if an address is a DL alias for which the expansion is unknown (see 4.1.3). if present, the addresses in the To header MAY be used for a reply message to all recipients ๐
systems compliant to this profile MAY also discard the To addresses of incoming messages because of the inability to store the information. this would, of course, make a reply-to-all capability impossible ๐ฅบ
4.2.3 Cc ๐
okay so the cc header is where the extra recipients' fully-qualified domain addresses live ๐ lowkey, 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 hand back a full recipient list ๐ญ
Systems compliant to this profile SHOULD provide a list of recipients only if all disclosed recipients can be provided. the list of disclosed recipients does not include anyone sent a blind copy ๐ and if the full list can't be shown, systems SHOULD omit the To and Cc header fields to signal that the full list of recipients is unknown ๐ง
Example:
Cc: +12145551213@mycompany.com
bestie, systems compliant to this profile MAY discard the Cc addresses of incoming messages as necessary ๐ and if a list of Cc or To addresses is present, those addresses MAY be used for a reply message to all recipients โจ
4.2.4 Date ๐ฐ๏ธ
the Date header holds the date, time, and time zone the originator sent the message ๐ the time zone SHOULD be written as a four-digit offset, like -0500 for North American Eastern Standard Time ๐บ๐ธ and you can add a time zone name in parentheses on top of that, like -0900 (PDT) ๐ธ compliant implementations SHOULD be able to convert RFC 822 date and time stamps into local time ๐ฆ
Example:
Date: Wed, 28 Jul 96 10:08:49 -0800 (PST)
so the sending system MUST report the time the message was sent โญ and if a VPIM sender is relaying a message from a system that doesn't give a time stamp, the time of arrival at the VPIM system SHOULD be used as the date ๐ซถ From [RFC822]
4.2.5 Sender ๐ง
the Sender header field holds the actual address of the originator when an agent sends the message on behalf of the author listed in the From: field ๐ this header field MAY be sent by a VPIM conforming system ๐ and if it shows up in a VPIM message, the receiving VPIM implementation may ignore it and just show the From header field ๐
4.2.6 Return Path ๐ฌ
the Return-path header gets added by the final delivering SMTP server ๐
if it's there, it has the address from the MAIL FROM parameter of the ESMTP exchange (see 5.1.2) ๐ฅ any error messages from a delivery failure MUST be sent to that address (see [DRPT] for additional details) ๐
note that if the Return-path is null (<>), like no path, loop prevention, or confidential, a notification MUST NOT be sent ๐
โโ๏ธ and if the Return path address isn't available (from this header or the MAIL FROM parameter), the From address may be used to deliver notifications ๐
4.2.7 Message-id ๐ชช
the Message-id header is a unique per-message identifier, basically its own little ID card ๐ชช a unique message-id MUST be generated for each message sent from a compliant implementation โจ
the receiving system doesn't have to store the message-id ๐ซถ but this identifier MAY be used for tracking, auditing, and sending back receipt notification reports ๐ฆ From [RFC822]
Example:
Message-id: <12345678@mycompany.com>
4.2.8 Reply-To ๐ฌ
if it's present, the reply-to header gives a preferred address where replies should go (see 4.6) ๐ท honestly, voice mail systems can usually only handle one originator per message, so this field is unlikely to be supported ๐ญ a compliant system SHOULD NOT send a Reply-To header ๐ but if a reply-to header is present, a reply-to sender message MAY be sent to the address specified (so it overwrites From) ๐ From [RFC822] and that preferred address must also show up in the originator's vCard EMAIL attribute, if there is one (see 4.3.3) ๐
4.2.9 Received ๐ก
the Received header is trace info that MTAs tack onto the beginning of an RFC 822 message ๐ค๏ธ it's the only header an MTA is allowed to add ๐ and it's super handy for debugging when you're using a US-ASCII message reader or a header parsing tool ๐
a compliant system MUST add Received header fields when it's acting as a gateway ๐ช and it MUST NOT remove any Received fields when relaying messages to other MTAs or gateways ๐ซ those header fields MAY be ignored or deleted once the message reaches its final destination ๐งน From [RFC822]
4.2.10 MIME Version ๐
the MIME-Version header says the message follows the MIME message format spec ๐ systems compliant with this specification SHOULD include a comment with the words (Voice 2.0) โจ RFC 1911 defined an earlier version of this profile and used the token (Voice 1.0) ๐ฐ๏ธ From [MIME1][VPIM1]
Example:
MIME-Version: 1.0 (Voice 2.0)
this identifier is just for information ๐โโ๏ธ so it SHOULD NOT be used to semantically identify the message as a VPIM message ๐ โโ๏ธ if you actually need to identify it, the presence of the content defined in [V-MSG] SHOULD be used instead ๐
4.2.11 Content-Type ๐
the Content-Type header declares what kind of content is wrapped up in the message ๐ the typical top-level content in a VPIM Message SHOULD be multipart/voice-message ๐ which is basically a way to bundle several components into one identifiable voice message ๐ซง the allowable contents are detailed in section 4.3 of this document ๐ From [MIME2]
4.2.12 Content-Transfer-Encoding ๐ค
okay so Internet mail was originally only built to carry 7-bit US-ASCII text ๐ญ which means voice and fax data sometimes needs to be encoded into something that fits in that environment ๐ซง the content-transfer-encoding header describes that transformation, if it's needed ๐ช compliant implementations MUST recognize and decode the standard encodings: "Binary", "7bit", "8bit", "Base64", and "Quoted-Printable" ๐ the allowable content-transfer-encodings are specified in section 4.3 ๐ From [MIME1]
4.2.13 Sensitivity ๐
the Sensitivity header, if present, shows the requested privacy level ๐คซ the case-insensitive values "Personal" and "Private" are specified ๐ if no privacy is requested, this field is omitted โจ
if a Sensitivity header is in the message, a compliant system MUST prohibit the recipient from forwarding the message to any other user ๐ซ a compliant system can still let the responder reply to a sensitive message, and it SHOULD allow that ๐ฌ but it SHOULD NOT include the original message content in the reply ๐ the responder MAY set the sensitivity of the reply message ๐
โ ๏ธ if the receiving system doesn't support privacy and the sensitivity is "Personal" or "Private", a negative delivery status notification must be sent to the originator, with the right status code showing that privacy couldn't be assured ๐ฑ the message contents SHOULD be returned to the sender so the notification still has voice context ๐ซถ and a non-delivery notification for a private message SHOULD NOT be tagged private, since it's going to the originator anyway ๐ From: [X.400]
4.2.14 Importance โญ
this header shows the importance the receiving system should give the message ๐ the case-insensitive values "low", "normal", and "high" are specified ๐ if no special importance is requested, this header may be omitted and the value is assumed to be "normal" ๐ฆ compliant implementations MAY use this header to indicate a message's importance, and they may order messages in a recipient's mailbox ๐๏ธ From: [X.400]
4.2.15 Subject ๐ท๏ธ
email systems often give you a subject field, but voice mail platforms don't really support it ๐ญ so for compatibility with text-based mailbox interfaces, a text subject field SHOULD be generated by a compliant implementation ๐ but a receiving system MAY discard it if it's there ๐ซ From [RFC822]
it's recommended that voice messaging systems with no text user interface (like, access only by telephone) insert a generic subject header of VPIM Message ๐ that's for the benefit of text-enabled recipients ๐งก
4.2.16 Disposition-Notification-To ๐ฉ
this header MAY be present to show that the sender wants a receipt notification from the receiving user agent ๐โโ๏ธ this message disposition notification (MDN) is typically sent by the user agent after the user has listened to the message and agreed to an MDN being sent ๐ง
Example:
Disposition-notification-to: +12145551213@mycompany.com
so the presence of a Disposition-notification-to header is basically just a request for an MDN, described in 4.4.5 ๐ฅน the recipients' user agents are always free to silently ignore it ๐ซง which means this header doesn't burden any system that doesn't support it ๐ From [MDN].
4.2.17 Disposition-Notification-Options ๐งฉ
this header MAY be present to define future extension parameters for an MDN that was requested by the Disposition-notification-to header in the previous section ๐ฎ right now, no parameters are defined by this document or by [MDN] ๐คทโโ๏ธ however, this header MUST be parsed if it's present, if MDNs are supported ๐ and if it has an extension parameter that's required for proper MDN generation (marked with =required), then an MDN MUST NOT be sent when the parameter isn't understood ๐ซ see [MDN] for complete details ๐
Example:
Disposition-notification-options:
whizzbang=required,foo
4.3 Voice Message Content Types ๐
okay so MIME, introduced in [MIME1], is a general-purpose message body format that can be extended to carry a wide range of body parts ๐ it lets you encode binary data so it can travel over the 7-bit, text-oriented SMTP protocol ๐จ this transport encoding (shown by the Content-Transfer-Encoding header field) is on top of the audio encoding you need to generate a binary object ๐ง
MIME defines two transport encoding mechanisms that turn binary data into a 7-bit representation ๐ช one is for text-like data (Quoted-Printable) and the other is for arbitrary binary data (Base64) ๐ซง Base64 is way more efficient for audio data, but either one works ๐ and where binary transport is available, no transport encoding is needed, so the data can be labeled Binary ๐
an implementation in compliance with this profile SHOULD send audio and/or facsimile data in binary form when binary message transport is available ๐ก when binary transport isn't available, implementations MUST encode the audio and/or facsimile data as Base64 ๐ the detection and decoding of "Quoted-Printable", "7bit", and "8bit" MUST be supported ๐ง this keeps everything MIME-compliant and interoperable with the widest range of devices ๐ but if content arrives in a transfer encoding that can't be rendered to the user, an appropriate negative delivery status notification MUST be sent ๐จ
the content types described in this section are identified for use within the multipart/voice-message content โจ this content is the fundamental part of a VPIM message, and in this document it's called a VPIM voice message ๐
only the contents profiled from here on can be sent within a VPIM voice message construct (that is, the multipart/voice-message content type) ๐ they can form a simple or more complex structure, and several examples are given in Appendix B ๐ having other contents inside a VPIM voice message is an error condition and SHOULD result in a negative delivery status notification ๐ and when multiple contents are present within the multipart/voice-message, they SHOULD be presented to the user in the order they appear in the message ๐ซถ
4.3.1 Multipart/Voice-Message โจ
okay so this MIME multipart structure is the bestie that packs a whole voice message into ONE container and tags it as VPIM v2 compliant ๐ฆ๐ its semantic is identical to multipart/mixed (defined in [V-MSG]) and systems that don't recognize this content-type can literally just treat it as multipart/mixed ๐ซถ
The multipart/Voice-Message content-type MUST only contain the profiled media and content types from this section (so audio/*, image/*, message/rfc822 and text/directory) ๐
the most common stuff is spoken name, spoken subject, the message itself, an attached fax and directory info. forwarded messages are made by simply using the message/rfc822 construct ๐ฆ
conformant implementations MUST send the multipart/voice-message in a VPIM message ๐ most of the time this Multipart/Voice-Message content is the top level (aka it sits in the Content-Type header). conformant implementations MUST recognize it (whether it's top level or below a multipart/mixed) and be able to separate the contents, like the spoken name or spoken subject ๐ง
4.3.2 Message/RFC822 ๐ธ
MIME requires support for the Message/RFC822 message encapsulation body part ๐ this one lives inside a multipart/voice-message and is used to forward complete messages (see 4.5) or to reply with original content (see 4.6). From [MIME2]
4.3.3 Text/Directory ๐
okay this is the one that lets you include a Versit vCard [VCARD] electronic business card inside a VPIM message ๐ชช it's a suitable interchange format between apps or systems and it's defined independent of how it gets transported. it's giving useful info about the originator that the receiving VPIM system (see 6) or other local apps can use
each vCard MUST be contained within a Text/Directory content type [MIMEDIR] inside a VPIM message ๐ [MIMEDIR] requires that the character set MUST be defined as a parameter value (typically us-ascii for VPIM) and that the profile SHOULD be defined (the value MUST be vCard within VPIM messages).
each VPIM message SHOULD be created with a Text/Directory (vCard profile) content type that MUST contain the preferred email address, telephone number, and text name of the message originator, plus the vCard version ๐
the vCard SHOULD contain the spoken name and role of the originator, as well as the revision date. any other vCard attribute MAY also be present. the whole point is that the vCard is the source of info to contact the originator (e.g., reply, call). If the text/directory content-type is included in a VPIM message, the vCard profile [VCARD] MUST be used and MUST specify at least these attributes:
TEL - Public switched telephone number in international (E.164)
format (various types, typically VOICE)
EMAIL - email address (various types, typically INTERNET; the
type VPIM is optionally used to denote an address that
supports VPIM messages(see 18.1))
VERSION - Indicates the version of the vCard profile. Version 3.0
[VCARD] MUST be used.
the following attributes SHOULD be specified:
N - Family Name, Given Name, Additional Names, Honorific
Prefixes, and Suffixes. Because it is expected that
recipients using a telephone user interface will use the
information in the vCard to identify the originator, and
the GUI will see the information presented in the FROM
line, all present components in the text name of the FROM
header field MUST match the values provided by the Vcard.
ROLE - The role of the person identified in `N' or `FN', but may
also be used to distinguish when the sender is a corporate
or positional mailbox
SOUND - spoken name sound data (various types, typically 32KADPCM)
REV - Revision of vCard in ISO 8601 date format
the vCard MAY use other attributes as defined in [VCARD] or extension attributes not yet defined (e.g. capabilities) โจ
if it's present, the spoken name attribute MUST be denoted by a content ID pointing to an audio/* content elsewhere in the VPIM message ๐ง
a typical VPIM message (aka no forwarded parts) MUST only contain ONE vCard. more than one is an error condition ๐ a VPIM message that contains forwarded messages, though, may contain multiple vCards. however, these vCards MUST be associated with the originator(s) of the forwarded message(s) and the originator of the forwarding message. so all forwarded vCards end up inside message/rfc822 contents, and only the vCard of the forwarding originator sits at the top level ๐ฆ
Example:
Content-Type: text/directory; charset=us-ascii; profile=vCard
Content-Transfer-Encoding: 7bit
BEGIN:VCARD
N:Parsons;Glenn
ORG:Northern Telecom
TEL;TYPE=VOICE;MSG;WORK:+1-613-763-7582
EMAIL;TYPE=INTERNET;glenn.parsons@nortel.ca
EMAIL;TYPE=INTERNET;VPIM:6137637582@vm.nortel.ca
SOUND;TYPE=32KADPCM;ENCODING=URI: CID:<part1@VM2-4321>
REV:19960831T103310Z
VERSION: 3.0
END:VCARD
4.3.4 Audio/32KADPCM ๐ถ
an implementation compliant to this profile MUST send Audio/32KADPCM by default for voice [ADPCM] ๐ฃ๏ธ receivers MUST be able to accept and decode Audio/32KADPCM. typically this body holds several minutes of message content, but if it's used for spoken name or subject it should be considerably shorter (i.e. about 10 and 20 seconds respectively) โฑ๏ธ
if an implementation can only handle one voice body, then multiple voice bodies (if present) SHOULD be concatenated, and SHOULD NOT be discarded ๐ โโ๏ธ it is RECOMMENDED that this be done in the same order they were sent. note that if an Originator Spoken Name audio body and a vCard are both present in a VPIM message, the vCard SOUND attribute MUST point to this audio body (see 4.3.3) ๐ซถ
while any valid MIME body header MAY be used, several header fields have these semantics when included with this body part:
4.3.4.1 Content-Description: ๐
this field MAY be present to help identify these body parts as text in simple email readers. any values may be used, though it may be useful to use values similar to those for Content-Disposition.
Example:
Content-Description: Big Telco Voice Message
4.3.4.2 Content-Disposition: ๐
this field MUST be present so these body parts can be parsably identified ๐ this is especially useful when (as is typical) more than one Audio/32KADPCM body shows up in a single level (e.g. multipart/voice-message). since a VPIM voice message is meant to be automatically played when displayed, in the order the audio contents occur, the audio contents must always be of type inline ๐ it's still useful to include a filename value though, so this should be present if the info is available. From [DISP]
to tell the different audio contents apart in a VPIM voice message, there's a new disposition parameter "voice" with the values below, used as appropriate (see 18.2) ๐
Voice-Message- the primary voice messageVoice-Message-Notification- a spoken delivery notification or spoken disposition notificationOriginator-Spoken-Name- the spoken name of the originatorRecipient-Spoken-Name- the spoken name of the recipient if available to the originator and present if there is ONLY one recipientSpoken-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 voice message ๐ฆ
implementations that don't understand the "voice" parameter (or the Content-Disposition header) can safely ignore it, and they'll present the audio bodyparts in order (they just won't be able to tell them apart) ๐
Example:
Content-Disposition: inline; voice=spoken-subject;
filename="msg001.726"
4.3.4.3 Content-Duration: โณ
this field MAY be present to specify the length of the audio bodypart in seconds. how it's used on reception is a local implementation issue. From [DUR]
Example:
Content-Duration: 33
4.3.4.4 Content-Language: ๐
this field MAY be present to specify the spoken language of the audio bodypart. the encoding is defined in [LANG]. how this field is used on reception is a local implementation issue.
Example for UK English:
Content-Language: en-UK
4.3.5 Image/Tiff ๐
okay so a common image encoding for facsimile is TIFF-F, which 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 TIFF formats but only TIFF-F is profiled for a VPIM voice message. also, since TIFF-F is used in a store-and-forward mode with VPIM, the image MUST be encoded so there is only one image strip per facsimile page ๐
all VPIM implementations that support facsimile SHOULD generate TIFF-F compatible facsimile contents in the image/tiff; application=faxbw sub-type encoding by default. an implementation MAY send this fax content in VPIM voice messages and MUST be able to recognize and display it in received messages. if a fax message is received that can't be rendered to the user (e.g. the receiving VPIM system doesn't support fax), then the system MUST return the message with a negative delivery status notification with a media not supported status code ๐ฅฒ
while any valid MIME body header MAY be used (e.g., Content-Disposition to indicate the filename), none are specified to have special semantics for VPIM and they MAY be ignored. note that the content type parameter application=faxbw MUST be included in outbound messages. however, inbound messages with or without this parameter MUST be rendered to the user (if the rendering software runs into an error in the file format, some form of negative delivery status notification MUST be sent to the originator) โจ
4.3.6 Proprietary Voice or Fax Formats ๐งช
proprietary voice or fax encoding formats, or other standard formats, MAY be supported under this profile, provided a unique identifier is registered with the IANA prior to use (see [MIME4]). the voice encodings should be registered as sub-types of Audio and the fax encodings should be registered as sub-types of Image ๐
using any other encoding except audio/32kadpcm or image/tiff; application=faxbw reduces interoperability in the absence of explicit manual system configuration ๐ a compliant implementation MAY use any other encoding with explicit per-destination configuration ๐
4.4 Other Message Content Types ๐
Okay so an implementation that follows this profile MAY send extra contents in a VPIM message, but they ONLY go outside of the multipart/voice-message ๐ง. The content types in this section are the ones this profile identifies for use. Any content that isn't defined in this profile MUST NOT be used without prior explicit per-destination configuration ๐. If a VPIM message shows up with content types this profile doesn't specify, what happens next is a local implementation issue. The unknown stuff MAY be discarded if it can't be presented to the recipient ๐๏ธ.
It works the other way too. If an implementation gets a non-VPIM message (one without a mulitpart/voice-message content type) that has any of the contents from 4.3 & 4.4, it SHOULD deliver those contents. The rest of the message handling is a local issue, though, so the unknown contents or the entire message MAY be discarded. Implementations MUST issue negative delivery status notifications to the originator whenever any form of non-delivery to the recipient happens ๐.
The multipart contents defined below MAY be sent as the top level of a VPIM message, with other noted contents below them as required. The multipart/mixed content SHOULD be used as the top level of a VPIM message to form a more complex structure (for example, with additional content types) ๐. When there are multiple contents, they SHOULD be presented to the user in the order that they appear in the message. Several examples are given in Appendix B ๐.
4.4.1 Multipart/Mixed
MIME gives you the tools to pack several body parts into a single message ๐. Multipart/Mixed SHOULD only be used for sending complex voice or multimedia messages. That means it's the top-level Content-Type when you're sending one of the following contents (on top of the VPIM voice message) in a VPIM message ๐ฌ. Compliant systems MUST accept multipart/mixed body parts. From [MIME2]
4.4.2 Text/Plain
MIME requires support of the basic Text/Plain content type. Honestly it has limited applicability in the voice messaging world ๐, but because VPIM is a MIME profile, MIME requirements should still be met. Compliant VPIM implementations SHOULD NOT send the Text/Plain content-type. Compliant implementations MUST accept Text/Plain messages, but the specific handling is left as an implementation decision ๐
. From [MIME2]
There are a few ways to support text (once it's accepted) on voice messaging systems, including text-to-speech and text-to-fax conversions ๐ฃ๏ธ. If no rendering of the text is possible (i.e., it is not possible for the recipient to determine if the text is a critical part of the message), the entire message MUST be returned to the sender with a negative delivery status notification and a media-unsupported status code ๐จ.
4.4.3 Multipart/Report
The Multipart/Report is used for enclosing human-readable and machine-parsable notification body parts (e.g. Message/delivery-status) and any returned message content ๐จ. The multipart/report content-type delivers both delivery status reports, which say whether transport succeeded or failed, and message disposition notifications, which flag post-delivery events like receipt notification โ
. Compliant implementations MUST use the Multipart/Report construct. They MUST also recognize and decode the Multipart/Report content type and its components so the report can be presented to the user ๐. From [REPORT]
Multipart/Report messages from VPIM implementations SHOULD include the human-readable description of the error as a spoken audio/* content. This speech SHOULD also be made available to the notification recipient ๐๏ธ. VPIM implementations MUST be able to handle Multipart/Report messages that encode the human-readable description of the error as text (and MAY generate them too) ๐. Note that per [DSN] the human-readable part MUST always be present ๐ฏ.
4.4.4 Message/Delivery-status
This MIME body part is used for sending machine-parsable delivery status notifications ๐ค. Compliant implementations MUST use the Message/delivery-status construct when returning messages or sending warnings. They MUST also recognize and decode the Message/delivery-status content type and present the reason for failure to the sender of the message ๐ฌ. From [DSN]
4.4.5 Message/Disposition-notification
This MIME body part is used for sending machine-parsable receipt notification message disposition notifications ๐ฌ. Conforming implementations SHOULD use the Message/Disposition-notification construct when sending post-delivery message status notifications. These MDNs, however, MUST only be sent in response to the presence of the Disposition-notification-to header in 4.2.16 ๐. Conforming implementations should recognize and decode the Message/Disposition-notification content type and present the notification to the user. From [MDN]
4.5 Forwarded Messages ๐ซ
VPIM version 2 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 multiple forwarded messages), so it is RECOMMENDED that this construct be used 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 as a separate audio/* or image/* body part ๐. If the RFC822 header fields aren't available for the forwarded content, simulated header fields built from the available information SHOULD be constructed. They indicate the original sending timestamp, and the original sender as shown in the "From" line ๐ฐ๏ธ. Still, at least one of "From", "Subject", or "Date" MUST be present. The message/rfc822 content MUST also include at least the "MIME-Version" and "Content-Type" header fields. From [MIME2]
If forwarding information gets lost when the original message and the forwarding annotation are concatenated, like it must be in a gateway between VPIM and the AMIS voice messaging protocol, the entire audio content MAY be sent as a single Audio/* segment. It can go without any forwarding semantics ๐ซถ.
4.6 Reply Messages ๐
Replies to VPIM messages (and Internet mail messages) are addressed to the address noted in the reply-to header (see 4.2.8) if it's present. Otherwise the From address (see 4.2.1) gets used ๐ฎ. The vCard EMAIL attribute, if present, SHOULD be the same as the reply-to address and MAY be the same as the From address. The vCard is the senders preferred address, but it SHOULD NOT be used to generate a reply. Also, the Return-path address should not be used for replies ๐
.
Support for multiple originator header fields is often not possible on voice messaging systems. So it may be necessary to choose only one when gatewaying a VPIM message to another voice message system. Implementers should note that this may make it impossible to send error messages and replies to their proper destinations ๐ต.
Sometimes a reply message isn't possible, like with a message created by telephone answering (i.e. classic voice mail) ๐. In that case, the From field MUST contain the special address non-mail-user@domain (see 4.1.2). A null ESMTP MAIL FROM address SHOULD also be used in this case (see 5.1.2). A receiving VPIM system SHOULD NOT offer the user the option to reply to this kind of message ๐ซ.
4.7 Notification Messages ๐
VPIM delivery status notification messages (4.4.4) MUST be sent to the originator of the message whenever any form of non-delivery of the subject message or its components occurs. These error messages must be sent to the return path (4.2.6) if it's present. Otherwise, the From (4.2.1) address may be used ๐ค.
VPIM Receipt Notification messages (4.4.5) should be sent to the sender named in the Disposition-Notification-To header field (4.2.16). That only happens after the message has been presented to the recipient, or if the message has somehow been disposed of without being presented to them (e.g. if it were deleted before playing it) ๐๏ธ.
VPIM Notification messages may be positive or negative, and they can indicate delivery at the server or receipt by the client. The notification MUST be contained in a multipart/report container (4.4.3), and it SHOULD contain a spoken error message ๐ง.
If a VPIM system receives a message with contents it doesn't understand (see 4.3 & 4.4), how it's handled is a local matter. A delivery status notification SHOULD be generated if the message couldn't be delivered because of unknown contents (e.g., on traditional voice processing systems) โ ๏ธ. In some cases, the message may be delivered to a mailbox before the determination of rendering can be made. When that happens, a positive DSN gets sent ๐ฆ.
5. Message Transport Protocol ๐
Messages are transported between voice mail machines using the Internet Extended Simple Mail Transfer Protocol (ESMTP). All information required for proper delivery of the message is included in the ESMTP dialog. This information, 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 the exchange of US-ASCII 7-bit text messages. Binary and 8-bit text messages have traditionally been transported by encoding them into a 7-bit text-like form. [ESMTP] formalized an extension mechanism for SMTP, and later RFCs have 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 ESMTP Commands ๐ธ
5.1.1 HELO
Base SMTP greeting and identification of sender ๐. This command is not to be sent by compliant systems unless the more-capable EHLO command is not accepted. It's included for compatibility with general SMTP implementations. Compliant servers MUST implement the HELO command for backward compatibility, but clients SHOULD NOT send it unless EHLO is not supported. From [SMTP]
5.1.2. MAIL FROM (REQUIRED) ๐ฎ
Okay bestie, this is the originating mailbox, and it's where errors get sent back to ๐. VPIM implementations SHOULD use the same address in the MAIL FROM command as the one in the From header field ๐ซถ. This address is not necessarily the same as the message Sender listed in the header fields if the message came through a gateway or got sent to an Internet-style mailing list. From [SMTP, ESMTP]
The MAIL FROM address SHOULD be stored in the local message store so the system can make a delivery status notification for the originator ๐งพ. The address from the MAIL FROM command SHOULD also be passed as a local system parameter or placed in a Return-Path: line at the very beginning of a VPIM message ๐ค๏ธ. From [HOSTREQ]
Since delivery status notifications MUST be sent to the MAIL FROM address, the null address ("<>") is often used to prevent messages from looping ๐. This null address MAY be used to note that a particular message has no return path (e.g. a telephone answer message) ๐. From [SMTP]
5.1.3. RCPT TO ๐ฌ
Recipient's mailbox! This parameter holds only the address the message gets delivered to for this one transaction ๐ฏ. The set of addresses across one or more RCPT TO commands is what gets used for mail routing ๐บ๏ธ. From [SMTP, ESMTP]
Note: In the event that multiple transport connections to multiple destination machines are required for the same message, the set of addresses in a given transport connection may not match the list of recipients in the message header fields. ๐
5.1.4. DATA ๐ธ
This one initiates the transfer of message data ๐ฆ. Support for this command is required. Compliant implementations MUST implement the SMTP DATA command for backwards compatibility ๐ฐ๏ธ. From [SMTP]
5.1.5. TURN ๐
TURN requests a change-of-roles: the client that opened the connection offers to become the server for any mail the remote machine might want to send ๐. Because SMTP is not an authenticated protocol, TURN opens a door to improperly fetching mail queued for another destination ๐ช๐. Compliant implementations SHOULD NOT implement the TURN command. From [SMTP]
5.1.6. QUIT ๐
QUIT requests that the connection be closed. If it's accepted, the remote machine resets and closes the connection ๐. Compliant implementations MUST implement the QUIT command. From [SMTP]
5.1.7. RSET ๐งน
RSET resets the connection back to its initial state โจ. Compliant implementations MUST implement the RSET command. From [SMTP]
5.1.8. VRFY ๐
VRFY requests verification that this node can reach the listed recipient ๐ต๏ธโโ๏ธ. While that's also included in the RCPT TO command, VRFY lets you ask without starting a mail transfer transaction ๐
. This command is useful for debugging and tracing problems ๐. Compliant implementations MAY implement the VRFY command. From [SMTP] (Note that the implementation of VRFY may simplify the guessing of a recipient's mailbox or automated sweeps for valid mailbox addresses, resulting in a possible reduction in privacy. Various implementation techniques may be used to reduce the threat, such as limiting the number of queries per session.) From [SMTP]
5.1.9. EHLO ๐
EHLO is the enhanced mail greeting that lets a server announce support for extended messaging options ๐ฃ. The extended messaging modes get covered in later sections of this document ๐. Compliant implementations MUST implement the ESMTP command and return the capabilities indicated later in this memo. From [ESMTP]
5.1.10. BDAT ๐
The BDAT command is a higher-efficiency alternative to the older DATA command, especially for voice ๐๏ธ. It provides native binary transport of messages, which is a whole vibe ๐คฉ. Compliant implementations SHOULD support binary transport using the BDAT command [BINARY].
5.2. ESMTP Keywords ๐ท๏ธ
The following ESMTP keywords indicate extended features that are useful for voice messaging ๐ง.
5.2.1. PIPELINING ๐งต
The "PIPELINING" keyword means the receiving server can accept new commands before it sends a response to the previous one โก. Pipelining commands dramatically improves performance by cutting down on round-trip packet exchanges, and it makes it possible to validate all recipient addresses in one operation ๐. Compliant implementations SHOULD support the command pipelining indicated by this keyword. From [PIPE]
5.2.2. SIZE ๐
The "SIZE" keyword is how the SMTP server tells you the maximum message size it supports ๐ง. Compliant servers MUST provide size extension to indicate the maximum message size that can be accepted. Clients SHOULD NOT send messages larger than the size the server indicated ๐
โโ๏ธ. Clients SHOULD advertise SIZE= when sending messages to servers that indicate support for the SIZE extension. From [SIZE]
5.2.3. CHUNKING ๐งฉ
The "CHUNKING" keyword means the receiver supports the high-performance binary transport mode ๐๏ธ. CHUNKING can be used with any message format and does not imply support for binary encoded messages, so don't mix those up ๐ซ . Compliant implementations MAY support binary transport indicated by this capability. From [BINARY]
5.2.4. BINARYMIME ๐พ
The "BINARYMIME" keyword means the SMTP server can accept binary encoded MIME messages ๐ผ๏ธ. Compliant implementations MAY support binary transport indicated by this capability. Note that support for this feature requires support of CHUNKING. From [BINARY]
5.2.5. DSN ๐จ
The "DSN" keyword means the SMTP server will accept explicit delivery status notification requests ๐โโ๏ธ. Compliant implementations MUST support the delivery notification extensions in [DRPT].
5.2.6. ENHANCEDSTATUSCODES ๐ข
The "ENHANCEDSTATUSCODES" keyword means an SMTP server adds enhanced mail system status codes [CODES] to its responses ๐ง . Those codes give more informative explanations of error conditions, especially in the context of the delivery status notifications format defined in [DSN] ๐ก. Compliant implementations SHOULD support this capability. From [STATUS]
5.3. ESMTP Parameters - MAIL FROM ๐งพ
5.3.1. BINARYMIME ๐ฟ
The current message is a binary encoded MIME messages. Compliant implementations SHOULD support binary transport indicated by this parameter. From [BINARY]
5.3.2. RET ๐
The RET parameter indicates whether the content of the message should be returned ๐ค. Compliant systems SHOULD honor a request for returned content. From [DRPT]
5.3.3. ENVID ๐ชช
The ENVID keyword of the SMTP MAIL command is used to specify an "envelope identifier" ๐ท๏ธ. It gets transmitted along with the message and included in any DSNs issued for any of the recipients named in this SMTP transaction ๐ฌ. The whole point is to let the sender identify the transaction a DSN was issued for ๐ต๏ธโโ๏ธ. Compliant implementations MAY use this parameter. From [DRPT]
5.4. ESMTP Parameters - RCPT TO ๐
5.4.1. NOTIFY ๐
The NOTIFY parameter indicates the conditions under which a delivery report should be sent ๐ฃ. Compliant implementations MUST honor this request. From [DRPT]
5.4.2. ORCPT ๐ฏ
The ORCPT keyword of the RCPT command specifies an "original" recipient address that matches the actual recipient the message is going to be delivered to ๐ซ. If the ORCPT esmtp-keyword is used, it MUST have an associated esmtp-value, which consists of the original recipient address, encoded according to the rules below ๐. Compliant implementations MAY use this parameter. From [DRPT]
5.5. ESMTP - SMTP Downgrading โฌ๏ธ
The ESMTP extensions suggested or required for VPIM conformance fall into two categories ๐๏ธ. The first category is features that make the transport system more efficient, like SIZE, BINARYMIME, and PIPELINING โก. If there's a downgrade to a less functional transport system, these features can be dropped with no functional change to the sender or recipient ๐คทโโ๏ธ.
The second category is transport extensions that support new functions ๐. DSN and EnhancedStatusCodes provide essential improvements to how delivery status notifications are handled, bringing email up to the level of reliability expected of Voice Mail ๐โจ. To keep a consistent level of service across an intranet or the global Internet, it is essential that VPIM compliant ESMTP support the ESMTP DSN extension at all hops between a VPIM originating system and the recipient system ๐ฐ๏ธ. When a "downgrade" is unavoidable, a relay hop may be forced (by the next hop) to forward a VPIM message without the ESMTP request for positive delivery status notification ๐ค. It is RECOMMENDED that the downgrading system should continue to attempt to deliver the message, but MUST send an appropriate delivery notification to the originator, e.g. the message left an ESMTP host and was sent (unreliably) via SMTP ๐ฌ๐.
6. Directory Address Resolution ๐
It is the responsibility of a VPIM system to provide the fully-qualified domain name (FQDN) of the recipient, based on the address entered by the user (if the entered address is not already an FQDN) ๐งญ. This is typically an issue on systems that only offered a telephone user interface ๐ฑ. Mapping the dialed target number to a routeable FQDN, so delivery can reach the destination system, can be done through implementation-specific means ๐ ๏ธ.
To set up a local dial-by-name cache, an implementation might want to fill local directories with first and last names, plus the address information pulled from received messages ๐๏ธ. It is mandated that only address information from vCard attachments to VPIM messages be used to populate such a directory when the vCard is available ๐. Addresses or names parsed from the header fields of VPIM messages SHOULD NOT be used to populate directories, since they only provide partial data ๐ โโ๏ธ. Alternatively, bilateral agreements could be made to allow the bulk transfer of vCards between systems ๐ค.
7. IMAP ๐
Using client/server desktop mailbox protocols like IMAP or POP to retrieve VPIM messages from an IMAP or POP message store is possible without any special modifications to this VPIM specification ๐ฅณ. Email clients (and web browsers) typically have a table that maps MIME types to displaying applications ๐บ๏ธ. The audio/*, image/tiff and text/directory contents can be configured so they invoke the correct player or recorder for rendering ๐ถ. With IMAP clients, the first multipart/mixed content (if present) won't appear, since it's a generic part ๐. Instead, the user is shown a message with (for example) audio and image contents ๐ผ๏ธ.
8. Management Protocols ๐๏ธ
The Internet protocols provide a mechanism for managing messaging systems, from managing the physical network all the way through managing the message queues ๐ธ๏ธ. SNMP should be supported on a compliant message machine ๐.
8.1. Network Management ๐
The digital interface to the VM and the TCP/IP protocols MAY be managed ๐๏ธ. MIB II MAY be implemented to provide basic statistics and reporting of TCP and IP protocol performance [MIB II] ๐โจ.
9. Conformance Requirements โจ
okay so VPIM is a messaging app that has to work in SO many environments ๐ญ like traditional voice processing systems, desktop voice messaging, store and forward relays, and protocol translation gateways. and it has to run on totally different devices too ๐ฑ
so to cover all of them, this doc sets up two conformance areas: transport and content ๐
Transport conformant systems pass VPIM messages along in a store and forward way ๐ฌ with assured delivery notifications, and without losing any info ๐ฆ it's expected that most store and forward Internet mail based messaging systems will be VPIM transport compliant. slay โจ
Content conformant systems generate and interpret VPIM messages ๐ซถ generating them means honoring the restrictions of this profile. only contents from this profile, or extensions agreed to by bilateral agreement, may be sent. interpreting them means being able to receive all VPIM content types and constructs, decoding and presenting all mandatory VPIM content types to the recipient in an appropriate way, and sending the appropriate notification if any contents can't be rendered ๐
a summary of the compliance requirements lives in Appendix A ๐
VPIM end systems are expected to be both transport and content conformant. they generate conforming content, reliably send it to the next hop system, receive a message, decode it, and present it to the user ๐ voice messaging systems and protocol conversion gateways count as end systems ๐
relay systems are expected to be transport compliant so they can receive and send conforming messages. but 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 ๐ they use various protocols and APIs to exchange messages with the local message store and the message transport system. these clients may benefit from VPIM transport capabilities, but specific client-server requirements are out of scope for this document ๐ธ
10. Security Considerations
10.1 General Directive
this doc 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. no side quests ๐ โโ๏ธ
10.2 Threats and Problems
both Internet mail and voice messaging come with their own threats and countermeasures ๐ต๏ธโโ๏ธ so this spec 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 pop up when you combine the two services ๐ค
10.2.1 Spoofed sender
the actual sender of a voice message might not match what's in the Sender or From header fields of the message content headers, or the MAIL FROM address from the SMTP envelope ๐ in a tightly constrained environment, sufficient physical and software controls may be able to prevent this. also, recognizing the sender's voice may give confidence in their identity no matter what Sender or From says ๐๏ธ it should be recognized that SMTP implementations don't provide inherent authentication of senders, and sites aren't obligated to provide it either. ๐
10.2.2 Unsolicited voice mail
giving a voice mailbox an Internet mail address opens the door to unsolicited messages, whether text or voice ๐ฉ traditionally, voice mail systems ran in closed environments and weren't open to unknown senders. voice mail users expect a higher level of mailbox privacy, and they may see these messages as a security breach ๐จ lots of Internet mail systems are now blocking all messages from unknown sources to curb this problem ๐ก๏ธ
10.2.3 Message disclosure
voice messaging users expect a higher level of message privacy than Internet mail gives without security enhancements ๐ this privacy expectation SHOULD be preserved as much as possible. protect that vibe, bestie ๐ซถ
10.3 Security Techniques
physical and software controls 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. security is a whole lifestyle, honestly โจ
11. REFERENCES
[8BIT] Klensin, J., Freed, N., Rose, M., Stefferud, E., and D.
Crocker, "SMTP Service Extension for 8bit-MIMEtransport", RFC
1426, February 1993.
[ADPCM] Vaudreuil, G., and G. Parsons, "Toll Quality Voice - 32
kbit/s ADPCM: MIME Sub-type Registration", RFC 2422,
September 1998.
[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 1830, October 1995.
[CODES] Vaudreuil, G., "Enhanced Mail System Status Codes", RFC 1893,
January 1996.
[MIMEDIR] Howes, T., Smith, M., and F. Dawson, "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", STD 13, RFC 1035, November 1987.
[DNS2] Mockapetris, P., "Domain names - concepts and facilities", STD
13, RFC 1034, November 1987.
[DRPT] Moore, K., "SMTP Service Extensions for Delivery Status
Notifications", RFC 1891, January 1996.
[DSN] Moore, K., and G. Vaudreuil, "An Extensible Message Format for
Delivery Status Notifications", RFC 1894, January 1996.
[DUR] Vaudreuil, G., and G. Parsons, "Content Duration MIME Header
Definition", RFC 2424, September 1998.
[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., Freed, N., Rose, M., Stefferud, E., and D.
Crocker, "SMTP Service Extensions", RFC 1869, November 1995.
[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",
RFC 1766, March 1995.
[MDN] Fajman, R., "An Extensible Message Format for Message
Disposition Notifications", RFC 2298, March 1998.
[MIB II] Rose, M., "Management Information Base for Network
Management of TCP/IP-based internets: MIB-II", RFC 1158, May
1990.
[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", RFC 1854, October 1995.
[REPORT] Vaudreuil, G., "The Multipart/Report Content Type for the
Reporting of Mail System Administrative Messages", RFC 1892,
January 1996.
[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", RFC 1870, November 1995.
[SMTP] Postel, J., "Simple Mail Transfer Protocol", STD 10, RFC 821,
August 1982.
[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 registraion", 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.
[X.400] Hardcastle-Kille, S., "Mapping between X.400(1988) / ISO
10021 and RFC 822", RFC 1327, May 1992.
12. Acknowledgments
big thanks to the Electronic Messaging Association (EMA) ๐ especially the Voice Messaging Committee and the VPIM Work Group. they backed the VPIM spec and worked really hard to make sure it succeeded ๐
the EMA hosts the VPIM web page at http://www.ema.org/vpim ๐
13. Authors' Addresses
Glenn W. Parsons
Northern Telecom
P.O. Box 3511, Station C
Ottawa, ON K1Y 4H7
Canada
Phone: +1-613-763-7582
Fax: +1-613-763-4461
EMail: Glenn.Parsons@Nortel.ca
Gregory M. Vaudreuil
Lucent Technologies,
Octel Messaging Division
17080 Dallas Parkway
Dallas, TX 75248-1905
United States
Phone/Fax: +1-972-733-2722
EMail: GregV@Lucent.Com
14. Appendix A - VPIM Requirements Summary
this table is the summary of the VPIM version 2 profile detailed in this document ๐ฐ in lots of cases it isn't possible to simplify the qualifications for each feature, so this appendix is informative. the reader is recommended to read the full explanation of each feature in the referenced section. if any item in the table is ambiguous, the text in the previous sections shall be deemed authoritative. the main text is the source of truth, bestie ๐
the conformance table has these columns:
Feature- the name of a protocol feature. the indenting shows a hierarchy of conformance, so a lower feature only matters if you conform to the higher feature above it ๐ชSection- the reference section in the main text of this document ๐
Okay so now we're getting to the actual checklist, bestie ๐ This table is the whole VPIM v2 conformance vibe in one place, so let's see what's what ๐
Area tells you which conformance area each feature applies to:
C- contentT- transport
Status tells you whether a feature is mandatory, optional, or prohibited. The key words in this table are to be interpreted as described in [REQ], but here's the quick glow-up version of each degree ๐ง
- MUST - mandatory ๐
- SHOULD - required unless there's a compelling need to leave it out โจ
- MAY - optional ๐ฆ
- SHOULD NOT - prohibited unless there's a compelling need ๐
- MUST NOT - prohibited ๐ซ
Footnote is a special comment about conformance for one particular feature ๐
VPIM version 2 Conformance
| | | | |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| | | |
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: | | | | | | | |
Encoding outbound messages | | | | | | | |
From |4.2.1 |C|x| | | | |
Addition of text name |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.2.16 |C| | |x| | |
Disposition-notification-options |4.2.17 |C| | |x| | |
Other Headers |4.2 |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
-------------------------------------------|----------|-|-|-|-|-|-|-
Detection & Decoding 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| | | | |
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.2.16 |C| | |x| | |
Disposition-notification-options |4.2.17 |C| | |x| | |
Other Headers |4.2 |C|x| | | | |3
| | | | | | | |
Message Content Encoding: | | | | | | | |
Encoding outbound audio/fax contents | | | | | | | |
7BIT |4.3 |C| | | | |x|
8BIT |4.3 |C| | | | |x|
Quoted Printable |4.3 |C| | | | |x|
Base64 |4.3 |C|x| | | | |4
Binary |4.3 |C| |x| | | |5
Detection & decoding inbound messages | | | | | | | |
7BIT |4.3 |C|x| | | | |
8BIT |4.3 |C|x| | | | |
Quoted Printable |4.3 |C|x| | | | |
Base64 |4.3 |C|x| | | | |
Binary |4.3 |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: | | | | | | | |
Inclusion in outbound messages | | | | | | | |
Multipart/Voice-Message |4.3.1 |C|x| | | | |
Message/RFC822 |4.3.2 |C| | |x| | |
Text/Directory |4.3.3 |C| |x| | | |
include TEL, EMAIL, VERSION |4.3.3 |C|x| | | | |
include ROLE, SOUND, N, REV |4.3.3 |C| |x| | | |
only one voice type per level |4.3.3 |C|x| | | | |
Audio/32KADPCM |4.3.4 |C|x| | | | |
Content-Description |4.3.4.1 |C| | |x| | |
Content-Disposition |4.3.4.2 |C|x| | | | |
Content-Duration |4.3.4.3 |C| | |x| | |
Content-Langauge |4.3.4.4 |C| | |x| | |
Image/tiff; application=faxbw |4.3.5 |C| | |x| | |
Audio/* or Image/* (other encodings) |4.3.6 |C| | |x| | |
Multipart/Mixed |4.4.1 |C| | |x| | |
Text/plain |4.4.2 |C| | | |x| |
Multipart/Report |4.4.3 |C|x| | | | |
human-readable part is voice |4.4.3 |C| |x| | | |
human-readable part is text |4.4.3 |C| | |x| | |
Message/delivery-status |4.4.4 |C|x| | | | |
Message/disposition-notification |4.4.5 |C| |x| | | |
Other contents |4.4 |C| | | |x| |6
| | | | | | | |
Detection & decoding in inbound messages | | | | | | | |
Multipart/Voice-Message |4.3.1 |C|x| | | | |
Message/RFC822 |4.3.2 |C|x| | | | |
Text/Directory |4.3.3 |C| |x| | | |
recognize TEL, EMAIL, VERSION |4.3.3 |C|x| | | | |
recognize ROLE, SOUND, N, REV |4.3.3 |C| |x| | | |
Audio/32KADPCM |4.3.4 |C|x| | | | |
Content-Description |4.3.4.1 |C| | |x| | |
Content-Disposition |4.3.4.2 |C| |x| | | |
Content-Duration |4.3.4.3 |C| | |x| | |
Content-Langauge |4.3.4.4 |C| | |x| | |
Image/tiff; application=faxbw |4.3.5 |C| |x| | | |
send NDN if unable to render |4.3.5 |C|x| | | | |7
Audio/* or Image/* (other encodings) |4.3.6 |C| | |x| | |
Multipart/Mixed |4.4.1 |C|x| | | | |
Text/plain |4.4.2 |C|x| | | | |
send NDN if unable to render |4.4.2 |C|x| | | | |
okay the feature matrix is back, and it's giving spreadsheet energy ๐ง๐
| | | | | |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
------------------------------------------|-----------|-|-|-|-|-|-|-
| | | | | | | |
Multipart/Report |4.4.3 |C|x| | | | |
human-readable part is voice |4.4.3 |C| |x| | | |
human-readable part is text |4.4.3 |C|x| | | | |
Message/delivery-status |4.4.4 |C|x| | | | |
Message/disposition-notification |4.4.5 |C| |x| | | |
Other contents |4.4 |C| | | |x| |6
send NDN if unable to render |4.4 |C| |x| | | |
| | | | | | | |
Forwarded Messages | | | | | | | |
use Message/RFC822 construct |4.5 |C| |x| | | |
simulate headers if none available |4.5 |C| |x| | | |
| | | | | | | |
Reply Messages | | | | | | | |
send to Reply-to, else From address |4.6 |C|x| | | | |
do not send to non-mail-user |4.6 |C|x| | | | |
| | | | | | | |
Notifications | | | | | | | |
use multipart/report format |4.7 |C|x| | | | |
always send error on non-delivery |4.7 |C| |x| | | |
| | | | | | | |
Message Transport Protocol: | | | | | | | |
ESMTP Commands | | | | | | | |
HELO |5.1.1 |T|x| | | | |
MAIL FROM |5.1.2 |T|x| | | | |
support null address |5.1.2 |T|x| | | | |
RCPT TO |5.1.3 |T|x| | | | |
DATA |5.1.4 |T|x| | | | |
TURN |5.1.5 |T| | | | |x|
QUIT |5.1.6 |T|x| | | | |
RSET |5.1.7 |T|x| | | | |
VRFY |5.1.8 |T| | |x| | |
EHLO |5.1.9 |T|x| | | | |
BDAT |5.1.10 |T| | |x| | |5
the next bit is the same table with the headers repeated, and it's where the ESMTP keywords and parameters live ๐ฆ
| | | | |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 | | | | | | | |
PIPELINING |5.2.1 |T| |x| | | |
SIZE |5.2.2 |T|x| | | | |
CHUNKING |5.2.3 |T| | |x| | |
BINARYMIME |5.2.4,5.3.1|T| | |x| | |
DSN |5.2.5 |T|x| | | | |
ENHANCEDSTATUSCODES |5.2.6 |T| |x| | | |
RET |5.3.2 |T| |x| | | |
ENVID |5.3.3 |T| | |x| | |
NOTIFY |5.4.1 |T|x| | | | |
ORCPT |5.4.2 |T| | |x| | |
| | | | | | | |
ESMTP-SMTP Downgrading | | | | | | | |
send delivery report upon downgrade |
| | | | | | | |
Directory Address Resolution | | | | | | | |
provide facility to resolve addresses |6 |C| |x| | | |
use vCards to populate local directory |6 |C| |x| | | |8
use headers to populate local directory |6 |C| | | |x| |
| | | | | | | |
Management Protocols: | | | | | | | |
Network management |8.1 |T| ||x| | |
-------------------------------------------|----------|-|-|-|-|-|-|-
Footnotes:
- MUST NOT include if all recipients are not known or resolvable.
- If a sensitive message is received by a system that does not support sensitivity, then it MUST be returned to the originator with an appropriate error notification. Also, a received sensitive message MUST NOT be forwarded to anyone.
- If the additional header fields are not understood they MAY be ignored.
- When binary transport is not available.
- When binary transport is available.
- Other un-profiled contents must only be sent by bilateral agreement.
- If the content cannot be presented in some form, the entire message MUST be returned with a negative delivery status notification.
- When the vCard is present in a message.
15. Appendix B - Example Voice Messages ๐
okay so this is the glow-up section ๐ Appendix B is basically a pile of example voice messages so you can see exactly what the thing looks like on the wire. the first one is the full-featured version: two recipients, the sender's spoken name, and a short speech segment. it's marked Private and High importance ๐ฅ
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-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
Content-type: text/directory; charset=us-ascii; profile=vCard
Content-Transfer-Encoding: 7bit
BEGIN:VCARD
N:Parsons;Glenn;;Mr.;
EMAIL;TYPE=INTERNET:+12145551234@VM2.mycompany.com
TEL:+1-217-555-1234
SOUND;TYPE=32KADPCM;ENCODING=URI: CID:<part1@VM2-4321>
REV:19951031T222710Z
VERSION: 3.0
END:VCARD
--MessageBoundary_
next up is a forwarded single-segment voice ๐ฆ the forwarded message AND the forwarding message both have VCARDs with spoken names, so it's giving double the names, double the vibes โจ
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
Content-type: text/directory; charset=us-ascii
Content-Transfer-Encoding: 7bit
BEGIN:VCARD
N:Parsons;Glenn;W;Mr.;
EMAIL;TYPE=INTERNET:+16135551234@VM2.mycompany.com
TEL:+1-613-555-1234
SOUND;TYPE=32KADPCM;ENCODING=URI: CID:<part6@VM2-4321>
REV:19951031T222710Z
END:VCARD
--MessageBoundary2--
--MessageBoundary
Content-type: text/directory; charset=us-ascii
Content-Transfer-Encoding: 7bit
BEGIN:VCARD
N:Vaudreuil;Greg;;Mr.;
SOUND;TYPE=32KADPCM;ENCODING=URI: CID:<part3@VM2-4321>
EMAIL;TYPE=INTERNET,VPIM:+19725552345@VM2.mycompany.com
TEL:+1-972-555-2345
REV:19951031T222710Z
VERSION: 3.0
END:VCARD
--MessageBoundary--
the next one is a bounce ๐ it's a message returned to the sender by a VPIM gateway at VM1.company.com because the mailbox doesn't exist. rip to that mailbox ๐
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 (Voice 2.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 last but not least, a receipt notification for a message that's been played ๐ง this one was received by a corporate gateway and relayed to a unified mailbox, so it's a whole journey, no cap โจ
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 (Voice 2.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--
16. Appendix C - Example Error Voice Processing Error Codes ๐จ
okay, this one's the error cheat sheet ๐ it lists some common voice processing errors and the status codes that go with them. the text after each error code is just there to describe it for you. the big tip is that implementations should put their own implementation-specific informative comments after the error code, not just copy the text below ๐
Error condition RFC 1893 Error codes
----------------------------- --------------------------------
Analog delivery failed 4.4.0 Persistent connection error
because remote system is busy - other
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
17. Appendix D - Example Voice Processing Disposition Types ๐ฆ
this one maps common voice processing disposition conditions to their MDN Disposition, which is the disposition mode, type and modifier (when there's one). these are examples, not the full list. if you want the whole format of message disposition notifications, go check [MDN] because it has all the details ๐ค
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
18. Appendix E - IANA Registrations โจ
this heading is the start of Appendix E, and the IANA registrations are where things pick up next, so stay tuned ๐ง๐
18.1 vCard EMAIL Type Definition for VPIM ๐
okay so this is the registration form for the EMAIL property in vCard, and it is giving very official ๐
here's the header first:
To: ietf-mime-directory@imc.org
Subject: Registration of new parameter for text/directory MIME type
EMAIL
The type name is EMAIL ๐ and the encoding is 8bit โจ. The type value is a single text value.
The type purpose is to specify the electronic mail address for communicating with the object the vCard represents (defined in [VCARD]) ๐ฌ
Now the special notes, which are lowkey the juicy part ๐ซถ The type can include the TYPE parameter to specify the format or preference of the address. The TYPE values already defined are:
internet, for an Internet addressing typex400, for an X.400 addressing typepref, for a preferred-use email address when more than one is specifiedvpim, which means the address supports VPIM messages ๐
Other IANA registered address types can show up too. The default email type is internet, and a non-standard value is allowed as well ๐
Here's the example, iykyk:
EMAIL;TYPE=internet,vpim:jqpublic@xyz.dom1.com
18.2 Voice Content-Disposition Parameter Definition ๐ง
This one is for the IANA folks, so the header goes like this:
To: IANA@IANA.ORG
Subject: Registration of new Content-Disposition parameter
The parameter name is voice ๐ฆ and these are the allowable values:
Voice-Message: the primary voice messageVoice-Message-Notification: a spoken delivery notification or spoken disposition notificationOriginator-Spoken-Name: the spoken name of the originatorRecipient-Spoken-Name: the spoken name of the recipient, if it's available to the originator and there is ONLY one recipientSpoken-Subject: the spoken subject of the message, typically spoken by the originator ๐
The point of all this is to tell apart the different kinds of audio in a VPIM voice message. So the voice disposition parameter gets these values, used as appropriate โจ There SHOULD only be one instance of each type of audio content per message level. Extra instances of a given type (meaning the same parameter value) can show up inside an attached forwarded voice message ๐
19. Appendix F - Change History: RFC 1911 to this Document ๐งพ
this version is built on what we learned from a proof of concept demo of VPIM at EMA'96 in April 1996, plus a follow-up product demo at EMA'97 in April 1997. honestly it's a super different profile from the one in [VPIM1] ๐ฅ The changes are sorted into four buckets: general, content, transport, and compliance. Here's the tea:
- General
- All definitions now live in separate documents that this profile references. The new ones are:
- a refined multipart/voice-message definition
- a refined audio/32KADPCM definition, with nibble order added
- the definitions of TIFF-F and image/tiff for fax images
- the Content-Duration definition
- Changed the Voice version to 2.0
- Added a Table of Contents and more examples
- Various editorial updates to make it more readable
- Added more security considerations
- All definitions now live in separate documents that this profile references. The new ones are:
- Content
- Modified the multipart/voice-message content type. It dropped the positional dependence of its contents and now restricts them to voice-message-specific content types
- Explicitly listed the other contents that may be present in a multipart/mixed content type
- Explicitly defined the forwarding model using message/RFC822
- Explained how reply-to and from header fields are used for addressing replies
- Deprecated the special "loopback" address because of security concerns, and it's only for testing now
- Defined the non-mail-user reserved address, for when replies to the originator aren't possible
- Eliminated text names in the "To" and "CC" header fields, and deprecated text name ordering in the "From" header
- Added facsimile support using TIFF-F in an image/tiff; application=faxbw content type
- Profiled vCard in the text/directory body part, for transporting directory info about the originator
- Loosened the text restriction
- Added more details on delivery and receipt notifications
- Added support for message disposition notifications, also known as receipt notifications
- Added suggested addressing formats
- Described how private messages are handled
- Described how non-profiled contents in VPIM messages are handled
- Described using Content-Disposition to semantically identify audio contents
- Transport
- Moved binary support to optional
- Added optional ESMTP keywords for return of content, enhanced status codes, original recipient, and envelope ID
- Described the use of a null MAIL FROM address
- Compliance
- Added an explicit conformance section that specifies conformance to content or transport
- Improved the conformance table in Appendix A ๐
20. Full Copyright Statement ๐
Copyright (C) The Internet Society (1998). All Rights Reserved.
This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English.
The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns.
This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. ๐ธ
๐ฆ where this page comes from
- ietf: rfc2421 1998-09
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms