RFC 1911
Voice Profile for Internet Mail
RFC 1911: Voice Profile for Internet Mail ๐
- Network Working Group ๐ธ
- Author: G. Vaudreuil, Octel Network Services ๐
- Category: Experimental ๐งช
- Date: February 1996 ๐
- Obsoletes / Updates: this title block doesn't list anything it obsoletes or updates โจ
Status of this Memo โจ
okay bestie, first things first: this memo defines an Experimental Protocol for the Internet community ๐งช It does NOT specify an Internet standard of any kind, so don't treat it like one ๐ They're literally asking everyone for discussion and suggestions for improvement, and distribution of this memo is unlimited ๐
1. Abstract ๐ฆ
so there's this whole class of special-purpose computers that do voice messaging ๐ They usually plug into a telephone switch and handle call answering and voice messages. Traditionally, when a message had to go to a non-local machine, it got sent over analog networking protocols that run on DTMF signaling and analog voice playback ๐ผ But now that everyone wants networking, we need a standard high-quality digital protocol to connect these machines, and that's the whole point of this doc ๐
This profile is built on an earlier effort from the Audio Message Interchange Specification (AMIS) group, which tried to define a voice messaging protocol using X.400 technology ๐ง The goal here is to meet the user requirements from that earlier work while using the industry-standard ESMTP/MIME mail protocols that are already running inside corporate internets. The document calls this profile the voice profile ๐ซถ
2. Scope and Design Goals ๐ฏ
MIME is the Internet's multipurpose, multimedia messaging standard, and this document totally acknowledges what it can do ๐ It gives a way to exchange all kinds of messaging tech, including voice and facsimile ๐
This document is a profile of the TCP/IP multimedia messaging protocols for special-purpose voice processing platforms โ๏ธ These platforms have historically been special-purpose computers, and they often lack the stuff you'd normally expect on a regular Internet email-capable computer ๐ฅบ The profile is meant to pin down the minimum common set of features and functionality for conformant systems โจ
The voice profile doesn't put limits on extra media types or protocol options ๐ But conformant systems should not send messages with features beyond this profile unless someone has set up explicit per-destination configuration for those enhanced features ๐ โโ๏ธ That config info could live in a directory, though how you implement that is a local matter ๐๏ธ
Here are the typical limitations of voice messaging platforms that were considered when making this baseline profile ๐ง
- Text messages usually aren't received, and they often can't be displayed or viewed ๐ต They can usually only be handled through advanced text-to-speech or text-to-fax features, and those aren't really in these machines yet ๐ญ
- Voice mail machines usually act as both an integrated Message Transfer Agent and a User Agent ๐ The voice mail machine handles final delivery, and messages aren't relayed ๐ซ RFC 822 header fields may have limited use with the simple messaging features that are currently deployed ๐ซ
- VM message stores generally can't preserve the full semantics of an Internet message ๐ So using a voice mail machine for general message forwarding and gatewaying isn't supported ๐ Storing "Received" lines and
Message-IDmay be limited too ๐ญ - Nothing in this document stops a general purpose email gateway from providing these services ๐ท Still, you may see significant performance degradation if the email gateway doesn't support the ESMTP options this document recommends โก
- Internet-style mailing lists generally aren't supported ๐ญ Distribution lists are just local alias lists instead ๐
- There's usually no human operator ๐ค So error reports MUST be machine-parsable, which lets helpful responses reach users whose only access is a telephone ๐ (no cap, this part is kind of iconic)
- System user names are often limited to 16 or fewer numeric characters ๐ข Alpha characters aren't generally used for mailbox identification, since they're hard to enter from a telephone keypad ๐ฉ
The goal of this effort is to add as few restrictions and additions to the existing Internet mail protocols as possible, while still meeting the user requirements for interoperating with current voice messaging systems ๐ The motivation is to make digital messaging more accessible by letting people reuse proven networking software so development goes fast ๐
This spec is meant for use on a TCP/IP network, but it's possible to use the SMTP protocol suite over other transport protocols too ๐ 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, including installed base gateways that don't understand MIME ๐ A messaging system is expected to be managed by a system administrator who can do TCP/IP network configuration ๐งโ๐ป When you're using facsimile or multiple voice encodings, the system administrator is expected to keep a list of what each networked mail machine can do, so you don't send undeliverable messages because a feature isn't supported ๐ Configuring, implementing, and managing that capability listing is a local matter too ๐ง
This spec is a profile of the relevant TCP/IP Internet protocols ๐งฉ Those technologies, plus the specs for Internet mail protocols, are defined in the Request for Comment (RFC) document series ๐ That series documents the standards as well as the lore of the TCP/IP protocol suite ๐ฐ๏ธ You should read this document alongside these RFCs: RFC 821 (Simple Mail Transfer Protocol); RFC 822 (Standard for the format of ARPA Internet Messages); RFC 1521 and RFC 1522 (Multipurpose Internet Mail Extensions); RFC 1651, RFC 1652, and RFC 1653 (SMTP Service Extensions, ESMTP); and RFC 1034 and RFC 1035 (Domain Name System) ๐ซถ If extra functionality is needed, it'll be defined in this document or in an appendix โจ
3. Protocol Restrictions ๐ง
this protocol doesn't limit the number of recipients per message ๐ Where possible, implementations should not restrict the number of recipients in a single message ๐โโ๏ธ Real talk though, no implementation supports unlimited recipients, and the supported number may be pretty low ๐ฌ The catch is that ESMTP doesn't currently have a way to indicate how many recipients are supported ๐คทโโ๏ธ
This protocol doesn't limit the maximum message length either ๐ Implementors should understand that some machines won't be able to accept really long messages ๐ผ RFC 1425 ESMTP extensions define a mechanism for declaring the maximum message size a machine supports ๐
The message size given in the ESMTP SIZE command is in bytes, not minutes โฑ๏ธ The number of bytes depends on the voice encoding format, and it must include the MIME wrapper overhead ๐ If you need to know the length before sending, you can do an approximate translation into minutes, as long as you know the voice encoding ๐งฎ
4. Voice Message Interexchange Format ๐
the voice message interchange format is a profile of the Internet Email Protocol Suite ๐ง It needs components from the Internet message format standard [RFC822], the Multipurpose Internet Message Extensions [MIME], the X.400 gateway specification [X.400], and the delivery report specifications [DRPT][STATUS] ๐งฉ
4.1 Message Addressing Formats ๐ฌ
RFC 822 uses the domain name system ๐ This naming system has two parts: the local part, which is used for username or mailbox identification, and the host part, which is used for global machine identification ๐บ๏ธ
The local part of the address shall be an ASCII string that uniquely identifies a mailbox on a destination system ๐ For voice messaging, the local part is a printable string holding the mailbox ID of the originator or recipient ๐ Administration of this space is expected to follow national or corporate private telephone numbering plans ๐ข Alpha characters and long mailbox identifiers are allowed, but most voice mail networks rely on numeric mailbox identifiers so they stay compatible with the limited 10 digit telephone keypad ๐น
For example, a compliant message may contain the address 2145551212@mycompany.com ๐ The example mailbox address is based on the North American Numbering Plan, but any other corporate numbering plan can be used too ๐ 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 entered ๐ต๏ธโโ๏ธ How a dialed address maps to its final destination system is usually handled by implementation-specific means ๐ ๏ธ
Special addresses are provided for compatibility with Internet mail conventions and to make testing easier ๐งช These addresses don't use numeric local addresses, which keeps them in line with current Internet practice and avoids clashing with existing numeric addressing plans ๐ โโ๏ธ Here are the special addresses:
Postmaster@domain ๐ฎ
By convention, a special mailbox named "postmaster" MUST exist on all systems ๐ This address is used for diagnostics, and the system manager should check it regularly ๐ฉบ This mailbox is especially likely to receive text messages, which isn't normal on a voice processing platform ๐ณ How those messages get handled is an individual implementation choice ๐งฉ
Loopback@domain ๐
A special mailbox named "loopback" SHOULD be designated for loopback testing ๐งช If it's supported, every message sent to this mailbox MUST be returned back to the address listed in the From: address as a new message ๐จ The originating address of the returned message MUST be "postmaster" to prevent mail loops ๐
These two addresses are RESERVED, so they won't conflict with any internal addressing plan ๐จ
4.2. Message Header Fields โจ
okay bestie, every internet message comes with a header block ๐ฎ It's basically the info sheet: who sent it, who's getting it, when it went out, plus other stuff meant for the user to see ๐ Except for specialized gateway and mailing list cases, headers do not show delivery options for moving the message around ๐
These header lines are allowed for voice messages ๐
From
This is the originator's fully-qualified domain address, which is a mailbox address followed by the fully-qualified domain name ๐ The user listed here should show up in the voice message envelope as the originator ๐ฆ
Systems that follow this profile SHOULD give the sender's text personal name in a quoted phrase if they have it โจ To make it easy to store the text name in a local dial-by-name cache directory, the first and last name MUST be separable ๐๏ธ Text names in voice messages MUST be written in the form "last, first, mi." [822] ๐
Example:
From: "User, Joe S." <2145551212@mycompany.com>
To
The To header holds the recipient's fully-qualified domain address ๐ฌ There can be one or more To: fields in any message ๐
Systems that follow this profile SHOULD give the recipient's text personal name, if it's known, in a quoted phrase ๐ The name MUST be in the form "last, first, mi." [822] ๐ซถ
Example:
To: "User, Sam S." <2145551213@mycompany.com>
Cc
The CC header holds the fully-qualified domain addresses of additional recipients ๐ฏ Lowkey, a lot of voice mail systems can't store or report the full list of recipients to the receiver ๐ญ
Systems that follow this profile SHOULD give the recipient's text personal name, if it's known, in a quoted phrase ๐ The name MUST be in the form "last, first, mi." [822] โจ
Example:
To: "User, Sam S." <2145551213@mycompany.com>
Systems that follow this profile may discard the CC list of incoming messages when necessary ๐ Systems that follow this profile should give a complete list of recipients when possible ๐ธ
Date
The Date header holds the date, time, and time zone the originator sent the message ๐ฐ๏ธ Conforming implementations SHOULD be able to convert RFC 822 date and time stamps into local time ๐ง
Example:
Date: Wed, 28 Jul 93 10:08:49 PST
The sending system MUST report the time the message was sent [822] โฐ
Sender
The Sender header holds the actual address of the originator if an agent sends the message on behalf of the author listed in the From: field ๐ค Support for this field can't be assumed when talking to a voice system, so a conforming implementation SHOULD NOT generate it ๐ โโ๏ธ
Not me being the one who has to explain this, but it matters: some voice mail machines might not be able to save this info, and if you throw away this information or the ESMTP MAIL FROM address, it gets really hard to send an error message to the right place ๐ [822]
Message-id
The Message-id header is a unique per-message identifier ๐ A unique message-id MUST be generated for each message sent from a conforming implementation ๐ฆ
The receiving system is not required to store the message-id ๐ซง This identifier MAY be used for tracking, auditing, and returning read-receipt reports [822] ๐
Example:
Message-id: <12345678@mycompany.com>
Received
The Received header holds trace information that message transport agents (MTA) add to the beginning of an RFC 822 message ๐ค๏ธ It's the only header an MTA is allowed to add ๐ This info is useful for debugging when you're using an ASCII message reader or a header parsing tool ๐
A conforming system MUST add Received headers when it's acting as a gateway, and it must not remove them ๐ช These headers MAY be ignored or deleted when the message arrives at the final destination [822] ๐ท
MIME Version
The MIME-Version header says the message follows the MIME message format specification ๐ Systems that follow the voice messaging profile MUST include a comment with the words "(Voice 1.0)" [MIME] ๐ค
Example:
MIME-Version: 1.0 (Voice 1.0)
Content-Type
The Content-Type header declares what kind of content is inside the message ๐ One of the allowed contents is multipart, which is a way to bundle several message components into one message ๐งฉ The allowed contents are specified in the next section of this document [MIME] ๐
Content-Transfer-Encoding
Internet mail was originally specified to carry only 7-bit US-ASCII text, so voice and fax data sometimes has to be encoded into a form that works in that environment ๐ The content-transfer-encoding header describes that transformation if it's needed ๐ช Conformant implementations MUST recognize and decode the standard encodings, "Binary", "7bit, "8bit", "Base-64" and "Quoted-Printable" ๐ซถ The allowed content-transfer-encodings are specified in the next section of this document [MIME] โจ
Sensitivity
The sensitivity header, if it's there, shows the requested privacy level ๐ต๏ธโโ๏ธ The case-insensitive values "Personal" and "Private" are specified ๐ฆ If no privacy is requested, this field is left out ๐
If a sensitivity header is in the message, a conformant system MUST stop the recipient from forwarding the message to any other user ๐ซ If the receiving system doesn't support privacy and the sensitivity is "Personal" or "Private", the message MUST be sent back to the sender with an appropriate error code saying privacy couldn't be assured and the message wasn't delivered [X400] ๐ญ๐ฅ
Importance
This header shows the priority the receiving system should give the message ๐ The case-insensitive values "low", "normal" and "high" are specified ๐ If no special importance is requested, the header may be left out and the value is assumed to be "normal" ๐ผ
Conformant implementations MAY use this header to show a message's importance, and they may order messages in a recipient's mailbox [X400] ๐๏ธ
Subject
The subject field is often included by email systems, but it's not widely supported on voice mail platforms ๐ซ This field MAY be generated by a conforming implementation, and a receiving system may discard it if it's present [822] ๐
4.3 Message Content Types ๐
okay so MIME is basically the super flexible body format that can carry a whole bunch of different body parts ๐ the basic protocol lives in [MIME]. it also has a way to encode binary data so it can ride over the 7-bit, text-only SMTP protocol ๐ซถ and that transport encoding is totally separate from the audio encoding used to make the binary object in the first place, so don't mix them up bestie ๐
MIME defines two transport encodings that turn binary data into 7-bit stuff: Quoted-Printable (made for text-ish data) and Base-64 (for arbitrary binary). Base-64 is WAY more efficient for audio, ngl ๐ฅ but both work. when binary transport is available, you don't need any transport encoding at all, and the data can just be labeled Binary โจ
conformant implementations SHOULD send audio data in binary form whenever binary message transport is available ๐ฆ if binary transport isn't available, they MUST encode the message as Base-64 ๐ and detecting and decoding Quoted-Printable, 7bit, and 8bit MUST be supported too, so you meet MIME requirements and keep talking to the widest range of devices possible ๐
the following content types are identified for use with this profile ๐ each of these can be sent on its own in a message, or wrapped in a multipart message to send multi-segment messages.
Message/RFC822
MIME requires support of the Message/RFC822 message encapsulation body part ๐
the Internet uses this body part to forward complete messages inside a multipart/mixed message. processing it is trivial, it just decapsulates or encapsulates the message. conformant systems SHOULD NOT send this body part, but they MUST accept it if it's in conformance with basic MIME ๐ how it's handled depends on the platform, and interpreting this content-type is left as an implementation decision [MIME].
Text/Plain
MIME requires support of the basic Text/Plain content type ๐ but it has zero applicability in the voice messaging environment, so conformant implementations MUST NOT send the Text/Plain content-type. they MUST accept Text/Plain messages anyway, though specific handling is up to the implementation ๐ซถ one option is to return the message to the sender with a media-unsupported error code [MIME].
Multipart/Mixed
MIME gives us the tools to enclose several body parts in a single message โจ Multipart/Mixed MAY be used for sending multi-segment voice messages, which keeps the difference between an annotation and a forwarded message intact across the network ๐ฆ conformant systems MUST accept multipart/mixed body parts. systems MAY collapse such a multi-segment message into a single segment if multi-segment messages aren't supported on the receiving machine [MIME] ๐
Message/Notification
this MIME body part is used for sending machine-parsable delivery status notifications ๐ฅ conformant implementations must use the Message/Notification construct when returning messages or sending warnings. they must also recognize and decode the Message/Notification content type and present the reason for failure to the user [NOTIFY] ๐
Multipart/Report
the Multipart/Report is used for enclosing a Message/Notification body part and any returned message content ๐ it's basically the companion to Message/Notification. conformant implementations must use the Multipart/Report construct when returning messages or sending warnings, and they must recognize and decode the Multipart/Report content type [REPORT] ๐
Audio/32KADPCM
CCITT Recommendation G.721 [G721] describes the algorithm recommended for converting a 64 KB/s A-law or u-law PCM channel to and from a 32 KB/s channel ๐ง the conversion is applied to the PCM stream using an Adaptive Differential Pulse Code Modulation (ADPCM) transcoding technique. this algorithm will be registered with the IANA for MIME use under the name Audio/32KADPCM ๐
an implementation conformant to this profile MUST use Audio/32KADPCM by default ๐
โจ
Proprietary Voice Formats
proprietary voice encoding formats or other standard formats may be supported under this profile, as long as a unique identifier is registered with the IANA before use ๐ธ these encodings should be registered as sub-types of Audio.
using any other encoding except Audio/32KADPCM reduces interoperability unless there's explicit manual system configuration ๐ a conformant implementation MAY use any other encoding with explicit per-destination configuration ๐ฆ
Multipart/Voice-Message
this new MIME multipart structure is the one that packages the sender's spoken name, a spoken subject, and the message itself ๐ it has three segments: the spoken name, then the spoken subject, then the message ๐ซถ forwarded messages can be made by just nesting multipart content-types (this also works with Multipart/Mixed if there's no spoken name or spoken subject) โจ this type is defined in an appendix to this document.
conforming implementations MUST send the Multipart/Voice-Message if a spoken name or spoken subject is available ๐ conforming implementations SHOULD recognize the Multipart/Voice-Message and separate out the spoken name or spoken subject ๐
5. Message Transport Protocol ๐
messages get transported between voice mail machines using the Internet Extended Simple Mail Transfer Protocol (ESMTP) โจ all the info needed for proper delivery is included in the ESMTP dialog. this info, including the sender and recipient addresses, is commonly called the message "envelope" ๐ it's the equivalent of the message control block in lots of analog voice networking protocols ๐ง
ESMTP is a general-purpose messaging protocol, built both to send mail and to allow terminal console messaging ๐ Simple Mail Transport Protocol (SMTP) was originally made for exchanging US-ASCII 7-bit text messages. binary and 8-bit text messages have traditionally been moved by encoding them into a 7-bit text-like form ๐ [ESMTP] was recently published and formalized an extension mechanism for SMTP, and later RFCs defined 8-bit text networking, binary networking, and extensions that let you declare message size for efficient transmission of big messages, like multi-minute voice mail ๐ฅ
a command streaming extension for high performance message transmission has been defined [PIPE] ๐ฆ it cuts down on the number of round-trip packet exchanges and makes it possible to validate all recipient addresses in one operation ๐ซถ this extension is optional but recommended.
the following sections list the ESMTP commands, keywords, and parameters that are required and the ones that are optional ๐
5.1 ESMTP Commands
HELO
base SMTP greeting and identification of the sender ๐ this command is not supposed to be sent by conforming systems unless the more-capable EHLO command isn't accepted. it's only included for compatibility with general SMTP implementations ๐ธ conforming implementations MUST implement the HELO command for backward compatibility, but they SHOULD NOT send it unless EHLO isn't supported [SMTP] ๐
MAIL FROM (REQUIRED)
originating mailbox ๐ฌ this address contains the mailbox where errors should be sent. this address may not be the same as the message sender listed in the message header fields if the message came through a gateway or was sent to an Internet-style mailing list ๐ฅ conforming implementations MUST implement the extended MAIL FROM command [SMTP, ESMTP] ๐
RCPT TO
recipient's mailbox ๐ this field contains only the addresses the message should be delivered to for this transaction ๐ if multiple transport connections to multiple destination machines are needed for the same message, this list may not match the list of recipients in the message header ๐ง conforming implementations MUST implement the extended RCPT TO command [SMTP, ESMTP] โจ
DATA
initiates the transfer of message data ๐ซถ support for this command is required in the event that the remote system doesn't support the binary mode command BDAT ๐ conforming implementations MUST implement the SMTP DATA command for backwards compatibility [SMTP] ๐
TURN
requests a change of roles. the client that opened the connection offers to take on the role of server for any mail the remote machine may want to send ๐
โ ๏ธ because SMTP is not an authenticated protocol, the TURN command presents an opportunity to improperly fetch mail queued for another destination ๐ญ conforming implementations SHOULD NOT implement the TURN command [SMTP] ๐
QUIT
requests that the connection be closed ๐ฆ if it's accepted, the remote machine will reset and close the connection. conforming implementations MUST implement the QUIT command [SMTP] ๐
RSET
resets the connection to its initial state ๐ธ conforming implementations MUST implement the RSET command [SMTP] ๐
VRFY
requests verification that this node can reach the listed recipient ๐ even though RCPT TO includes this functionality too, VRFY lets you do the query without starting a mail transfer transaction ๐ง this command is useful for debugging and tracing problems ๐ conforming implementations MAY implement the VRFY command [SMTP] โจ
(ngl this part matters: implementing VRFY may make it easier to guess a recipient's mailbox or run automated sweeps for valid mailbox addresses, which could reduce privacy ๐ญ various implementation techniques can reduce the threat, such as limiting the number of queries per session [SMTP] ๐)
EHLO
the enhanced mail greeting that lets a server announce support for extended messaging options ๐ the extended messaging modes are discussed in a later section of this document ๐ conformant implementations MUST implement the ESMTP command and return the capabilities indicated later in this memo [ESMTP] ๐
BDAT
the BDAT command is a higher efficiency alternative to the earlier DATA command, especially for voice ๐ฆ it provides native binary transport ๐ซถ voice messages are large binary objects that would otherwise get BASE-64 encoded, so BDAT gives a substantial improvement in transmission efficiency over DATA ๐ฅ conformant implementations SHOULD support binary transport using the BDAT command [BINARY] ๐
5.2 ESMTP Capabilities โจ
okay so this bit is about the ESMTP keywords that unlock extra features for voice messaging ๐ think of them as the little perks a server flashes at you when you say hi ๐
PIPELINING
the "PIPELINING" keyword tells you the receiving SMTP can accept pipelined commands ๐ pipelining makes the protocol way faster over wide area networks, which is literally the whole point ๐ญ Conformant implementations SHOULD support the command pipelining indicated by this parameter [PIPE] ๐
SIZE
the "SIZE" keyword is how the receiving SMTP says "this is the biggest message I'll take" ๐ฆ Conformant implementations MUST provide the size capability and SHOULD honor any size limitations when sending [SIZE] ๐ซถ
CHUNKING
the "CHUNKING" keyword says the receiver will support the high-performance binary transport mode ๐ฅ bestie, note that CHUNKING works with ANY message format and does NOT mean the message itself is binary encoded ๐ Conformant implementations SHOULD support binary transport indicated by this capability [BINARY] ๐ธ
BINARYMIME
the "BINARYMIME" keyword means the receiver SMTP can accept binary encoded MIME messages ๐ฆ Conformant implementations should support binary transport indicated by this capability [BINARY] ๐ง
NOTIFY
the "NOTIFY" keyword means the receiver SMTP will accept explicit delivery status notification requests ๐ Conformant implementations MUST support the delivery notification extensions in [DSN] ๐
5.3 ESMTP Parameters - MAIL FROM โจ
BINARYMIME
the current message is a binary encoded MIME message ๐ Conformant implementations SHOULD support binary transport indicated by this parameter [BINARY] ๐
5.4 ESMTP Parameters - RCPT TO โจ
NOTIFY
the NOTIFY parameter says under which conditions a delivery report SHOULD be sent ๐ฌ Conformant implementations must honor this request [DSN] ๐
RET
the RET parameter says whether the content of the message should be returned ๐ Conformant systems SHOULD honor a request for returned content [DSN] โญ
6. Management Protocols ๐ง
okay the Internet protocols give us a way to manage messaging systems, from the physical network all the way down to the message queues ๐ธ SNMP should be supported on a compliant message machine ๐
6.1 Network Management
the digital interface to the VM and the TCP/IP protocols SHOULD be managed ๐ ๏ธ MIB II SHOULD be implemented to provide basic statistics and reporting of TCP and IP protocol performance [MIB II] ๐
6.2 Directory and Message Management
Conformant systems SHOULD provide for the management of message traffic and queue monitoring based on the Message and Directory MIB [MADMAN] ๐
7. References ๐
[MIME] Borenstein, N., and N. Freed, "Multipurpose Internet Mail Extensions", RFC 1521, Bellcore, Innosoft, September 1993.
[MSG822] Crocker, D., "Standard for the Format of ARPA Internet Text Messages", STD 11, RFC 822, UDEL, August 1982.
[X400] Hardcastle-Kille, S., "Mapping between X.400(1988) / ISO 10021 and RFC 822", RFC 1327, UCL, May 1992.
[PIPE] Freed, N., and A. Cargille, "SMTP Service Extension for Command Pipelining", RFC 1854, October 1995.
[ESMTP] Klensin, J., Freed, N., Rose, M., Stefferud, E., and D. Crocker, "SMTP Service Extensions", RFC 1869, United Nations University, Innosoft International, Inc., Dover Beach Consulting, Inc., Network Management Associates, Inc., The Branch Office, November 1995.
[SIZE] Klensin, J, Freed, N., Moore, K, "SMTP Service Extensions for Message Size Declaration", RFC 1870, United Nations University, Innosoft International, Inc., November 1995.
[8BIT] Klensin, J., Freed, N., Rose, M., Stefferud, E., D. Crocker, "SMTP Service Extension for 8bit-MIMEtransport", RFC 1426, United Nations University, Innosoft International, Inc., Dover Beach Consulting, Inc., Network Management Associates, Inc., The Branch Office, February 1993.
[DNS1] Mockapetris, P., "Domain Names - Implementation and Specification", STD 13, RFC 1035, USC/Information Sciences Institute, November 1987.
[DNS2] Mockapetris, P., "Domain Names - Concepts and Facilities", STD 13, RFC 1034, USC/Information Sciences Institute, November 1987.
[SMTP] Postel, J., "Simple Mail Transfer Protocol", STD 10, RFC 821, USC/Information Sciences Institute, August 1982.
[BINARY] Vaudreuil, G., "SMTP Service Extensions for Transmission of Large and Binary MIME Messages", RFC 1830, Octel Network Services, October 1995.
[NOTIFY] Moore, K., and G. Vaudreuil, "An Extensible Message Format for Delivery Status Notifications", RFC 1894, University of Tennessee, Octel Network Services, January 1996.
[REPORT] Vaudreuil, G., "The Multipart/Report Content Type for the Reporting of Mail System Administrative Messages", RFC 1892, Octel Network Services, January 1996.
[DSN] Moore, K., "SMTP Service Extensions for Delivery Status Notifications", RFC 1891, University of Tennessee, January 1996.
[G721] CCITT Recommendation G.700-G.795 (1988), General Aspects of Digital Transmission Systems, Terminal Equipment. Blue Book.
[MADMAN] Freed, N., and S. Kille, "Mail Monitoring MIB", RFC 1566, January 1994.
[MIB II] Rose, M., "Management Information Base for Network Management of TCP/IP-based internets: MIB-II", RFC 1158, May 1990.
8. Security Consideration ๐
bestie, this one is SERIOUS ๐จ please read it carefully
This document is a profile of existing Internet mail protocols. As such, it does not create any security issues not already existing in the profiled Internet mail protocols themselves.
9. Acknowledgments ๐ซถ
The author would like to offer special thanks to Glenn Parsons/BNR for his extensive review, helpful suggestions, and extensive editing including the requirements matrix ๐
10. Author's Address ๐
Gregory M. Vaudreuil
Octel Network Services
17080 Dallas Parkway
Dallas, TX 75248-1905
Phone/Fax: +1-214-733-2722
EMail: Greg.Vaudreuil@Octel.Com
11. Appendix - MIME/ESMTP Voice Profile Requirements Summary โจ
okay bestie, this is the cheat sheet ๐ it's a giant table of every MIME and ESMTP voice profile feature, with little x's showing which column each one lands in. the columns are the big shared thing, so use the key below the table to decode them ๐
| | | | |S| |
| | | | |H| |F
| | | | |O|M|o
| | |S| |U|U|o
| | |H| |L|S|t
| |M|O| |D|T|n
| |U|U|M| | |o
| |S|L|A|N|N|t
| |T|D|Y|O|O|t
FEATURE |SECTION | | | |T|T|e
-------------------------------------------|----------|-|-|-|-|-|-
| | | | | | |
Message Addressing Formats: | | | | | | |
Use DNS host names |4.1 |x| | | | |
Use only numbers in mailbox IDs |4.1 | |x| | | |
Use alpha-numeric mailbox IDs |4.1 | | |x| | |
Support of postmaster@domain |4.1 | |x| | | |
Support of loopback@domain |4.1 | |x| | | |
| | | | | | |
Message Header Fields: | | | | | | |
Encoding outbound messages | | | | | | |
From |4.2 |x| | | | |
Addition of text personal name |4.2 | |x| | | |
To |4.2 |x| | | | |
Addition of text personal name |4.2 | |x| | | |
CC |4.2 | | |x| | |
Date |4.2 |x| | | | |
Sender |4.2 | | | |x| |
Message-id |4.2 | |x| | | |
Received |4.2 |x| | | | |
MIME Version: 1.0 (Voice 1.0) |4.2 |x| | | | |
Content-Type |4.2 |x| | | | |
Content-Transfer-Encoding |4.2 |x| | | | |
Sensitivity |4.2 | | |x| | |
Importance |4.2 | | |x| | |
Subject |4.2 | | |x| | |
Detection & Decoding inbound messages | | | | | | |
From |4.2 |x| | | | |
Utilize text personal name |4.2 | |x| | | |
To |4.2 |x| | | | |
Utilize text personal name |4.2 | | |x| | |
CC |4.2 | | |x| | |
Utilize text personal name |4.2 | | |x| | |
Date |4.2 |x| | | | |
Conversion of Date to local time |4.2 | |x| | | |
Sender |4.2 | | | |x| |
Message ID |4.2 |x| | | | |
Received |4.2 | |x| | | |
MIME Version: 1.0 (Voice 1.0) |4.2 |x| | | | |
Content Type |4.2 |x| | | | |
Content-Transfer-Encoding |4.2 |x| | | | |
Sensitivity |4.2 |x| | | | |1
Importance |4.2 | | |x| | |
Subject |4.2 | | |x| | |
| | | | | | |
Binary Content Encoding: | | | | | | |
Encoding outbound messages | | | | | | |
7BITMIME |4.3 | | | | |x|
8BITMIME |4.3 | | | | |x|
Quoted Printable |4.3 | | | | |x|
Base-64 |4.3 |x| | | | |2
Binary |4.3 |x| | | | |3
Detection & decoding inbound messages | | | | | | |
7BITMIME |4.3 |x| | | | |
8BITMIME |4.3 |x| | | | |
Quoted Printable |4.3 |x| | | | |
Base-64 |4.3 |x| | | | |
Binary |4.3 |x| | | | |
| | | | | | |
Message Content Types: | | | | | | |
Inclusion in outbound messages | | | | | | |
Message/RFC822 |4.3 | | | |x| |
Text/plain |4.3 | | | | |x|
Multipart/Mixed |4.3 | | |x| | |
Message/Notification |4.3 |x| | | | |
Multipart/Report |4.3 |x| | | | |
Audio/32KADPCM |4.3 |x| | | | |
Audio/* (proprietary encodings) |4.3 | | |x| | |
Multipart/Voice-Message |4.3 |X| | | | |
Detection & decoding in inbound messages | | | | | | |
Message/RFC822 |4.3 |x| | | | |
Text/plain |4.3 |x| | | | |
Multipart/Mixed |4.3 |x| | | | |
Message/Notification |4.3 |x| | | | |
Multipart/Report |4.3 |x| | | | |
Audio/32KADPCM |4.3 |x| | | | |
Audio/* (proprietary encodings) |4.3 | | |x| | |
Multipart/Voice-Message |4.3 |X| | | | |
| | | | | | |
Message Transport Protocol: | | | | | | |
ESMTP Commands | | | | | | |
HELO |5.1 |x| | | | |
MAIL FROM |5.1 |x| | | | |
RCPT TO |5.1 |x| | | | |
DATA |5.1 |x| | | | |
TURN |5.1 | | | | |x|
QUIT |5.1 |x| | | | |
RSET |5.1 |x| | | | |
VRFY |5.1 | | |x| | |
EHLO |5.1 |x| | | | |
BDAT |5.1 | |x| | | |3
ESMTP Keywords | | | | | | |
PIPELINING |5.2 | |x| | | |
SIZE |5.2 |x| | | | |
CHUNKING |5.2 | |x| | | |
BINARYMIME |5.2 | |x| | | |
NOTIFY |5.2 |x| | | | |
| | | | | | |
Management Protocols: | | | | | | |
Network management |6.1 | |x| | | |
Monitoring queues |6.2 | |x| | | |
-------------------------------------------|----------|-|-|-|-|-|-
okay so the footnotes ๐ง these are the little extra rules hiding under the table:
- okay so if a sensitive message lands at a system that doesn't support sensitivity, it must be returned to the originator with an appropriate error notification ๐
- this one's for when binary transport is not available ๐
- and this one's for when binary transport is available ๐ซถ
12. Appendix - Example Voice Message
okay this is the full-send example ๐ one message with every single option switched on, going to two recipients. it carries the sender's spoken name and a short speech bit, and it's marked important and private ๐ฅ
To: 2145551212@vm1.mycompany.com
To: "Parsons, Glenn, W." 2145551234@VM1.mycompany.com
From: "Vaudreuil, Greg" 2175552345@VM2.mycompany.com
Date: Mon, 26 Aug 93 10:20:20 CST
MIME-Version: 1.0 (Voice 1.0)
Content-type: Multipart/Voice-Message; Boundary = "MessageBoundary"
Content-Transfer-Encoding: 7bit
Message-ID: VM2.mycompany.com-123456789
Sensitivity: Private
Importance: High
--MessageBoundary
Content-type: Audio/32KADPCM
Content-Transfer-Encoding: Base-64
glslfdslsertiflkTfpgkTportrpkTpfgTpoiTpdadasssdasddasdasd
(This is a sample of the base-64 Spoken Name data) fgdhgd
jrgoij3o45itj09fiuvdkjgWlakgQ93ijkpokfpgokQ90gQ5tkjpokfgW
dlkgpokpeowrit09==
--MessageBoundary
Content-type: Audio/32KADPCM
Content-Transfer-Encoding: Base-64
glslfdslsertiflkTfpgkTportrpkTpfgTpoiTpdadasssdasddasdasd
(This is a sample of the base-64 Spoken Subject data) fgdhgd
jrgoij3o45itj09fiuvdkjgWlakgQ93ijkpokfpgokQ90gQ5tkjpokfgW
dlkgpokpeowrit09==
--MessageBoundary
Content-type: Audio/32KADPCM
Content-Transfer-Encoding: Base-64
glslfdslsertiflkTfpgkTportrpkTpfgTpoiTpdadasssdasddasdasd
(This is a sample of the base-64 message data) fgdhgdfwgd
jrgoij3o45itj09fiuvdkjgWlakgQ93ijkpokfpgokQ90gQ5tkjpokfgW
dlkgpokpeowrit09==
--MessageBoundary--
13. Appendix - Audio/32KADPCM Content Type
here's the Audio/32KADPCM content type spec ๐ฆ the basics come first:
Mime type name: Audio
Mime Sub-Type name: 32KADPCM
Required Parameters: None
Optional Parameters: None
Encoding Considerations: Any encoding necessary for transport may be
used.
the vibe of the codec is this: CCITT Recommendation G.721 [G721] is the algorithm they recommend for turning a 64 KB/s A-law or u-law PCM channel into a 32 KB/s channel and back again ๐ the conversion runs on the PCM stream using Adaptive Differential Pulse Code Modulation (ADPCM) transcoding, so that's the whole trick โจ
and the final bits, bestie: no header information shall be included before the audio data ๐ and when this subtype shows up, a sample rate of 8000 Hz and a single channel get assumed ๐
14. Appendix - Multipart/Voice-Message โจ
okay so this is the appendix for the Multipart/Voice-Message type, and it's giving main character energy ๐ here's the header block, copied exactly:
Mime type name: Multipart
Mime Sub-Type name: Voice-Message
Required Parameters: Boundary
Optional Parameters: None
Encoding Considerations: Binary of 7 bit are sufficient. Base-64
and Quoted-Printable are prohibited on multipart content-types.
bestie, the encoding part is the one to watch ๐ Binary or 7-bit is fine, but Base-64 and Quoted-Printable are prohibited on multipart content types ๐ โโ๏ธ
The syntax of a Multipart/Voice-Message is identical to Multipart/Mixed ๐ So the structure is the same, the only difference is what the parts are for. This one has three body parts ๐ฆ The first is an audio segment with the spoken name of the sender, the second is an audio segment with a spoken subject, and the third is the voice message itself. And forwarding is so easy, you just nest multipart content types inside each other ๐ Literally a chain of voicemails ๐
The spoken name segment is the sender's name, said in their own voice ๐ฃ๏ธโจ It is limited to 12 seconds โฑ๏ธ If there's no spoken name available, the segment still has to be there, it's just allowed to be empty ๐ซถ
The spoken subject segment works the same way. It's the subject of the message, said in the sender's voice ๐ง This one can run up to 20 seconds. If there's no spoken subject, it still has to show up, but it can be empty ๐ธ
The voice message body part is pretty flexible ๐ It can hold any arbitrary content, even a multipart/mixed collection of body parts. It will usually just be an audio segment though ๐๏ธ
The default handling is the iconic part ๐ A Multipart/Voice-Message is voiced in this order: first the spoken-name segment, then the spoken-subject, and only then the rest of the message gets displayed or voiced. So you hear who it's from and what it's about before the actual message hits ๐
๐ฆ where this page comes from
- ietf: rfc1911 1996-02
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms