RFC 4237

Voice Messaging Directory Service

๐Ÿ“… published October 2005, from ietf

Voice Messaging Directory Service ๐ŸŽ€

Okay bestie, this one is RFC 4237 and it's giving Standards Track ๐Ÿ’… It came out in October 2005, written by G. Vaudreuil at Lucent Technologies, under the Network Working Group. The title block doesn't list anything it obsoletes or updates, so it's doing its own thing ๐Ÿฆ‹

Status of This Memo โœจ

Okay so this is an Internet standards track protocol for the Internet community, and the authors are literally asking for discussion and suggestions for improvements ๐Ÿซถ If you want to know where it stands in the official standardization process, check the current edition of "Internet Official Protocol Standards" (STD 1). And distribution is unlimited, so share it with everyone ๐ŸŒธ

Copyright (C) The Internet Society (2005).

Abstract ๐Ÿ’œ

So this document is all about the Voice Profile for Internet Mail (VPIM) directory service. The main job is pretty iconic: you give it a telephone number, and it hands back the email address of the recipient who owns that number. It can also optionally return the recipient's spoken name and their media capabilities ๐ŸŽ€

The VPIM directory schema adds the extra attributes needed to recreate the voicemail experience using standardized directories. The best part is that when you're addressing a message, you get basic assurance that it'll be delivered the way you meant it to be ๐Ÿ’–

This document is a merge of two earlier documents, one from Anne Brown and one from Greg Vaudreuil. Both defined a voice messaging schema, and now they're one working group submission. Main character crossover energy ๐Ÿ‘‘

Table of Contents ๐Ÿงš

   1. Scope ...........................................................2
      1.1. Design Goals ...............................................2
      1.2. Performance Constraints ....................................2
      1.3. Scaling Constraints ........................................3
      1.4. Reliability Constraints ....................................3
   2. The VPIMUser Directory Schema ...................................3
      2.1. vPIMTelephoneNumber ........................................4
      2.2. vPIMRfc822Mailbox ..........................................4
      2.3. vPIMSpokenName .............................................4
      2.4. vPIMTextName ...............................................5
      2.5. vPIMSupportedAudioMediaTypes ...............................5
      2.6. vPIMSupportedMessageContext ................................5
      2.7. vPIMExtendedAbsenceStatus ..................................6
      2.8. vPIMSupportedUABehaviors ...................................6
      2.9. vPIMMaxMessageSize .........................................7
      2.10. vPIMSubMailboxes ..........................................8
   3. Security Considerations .........................................8
   4. IANA Considerations .............................................9
      4.1. Object Identifiers .........................................9
      4.2. Object Identifier Descriptors ..............................9
   5. References .....................................................10
      5.1. Normative References ......................................10
      5.2. Informative References ....................................10

1. Scope ๐Ÿฆ‹

1.1. Design Goals ๐Ÿ’…

The VPIM directory schema (VPIMDIR) gets accessed from outside the enterprise or service provider domain, and the lookup key is the recipient's telephone number ๐Ÿ“ž

1.2. Performance Constraints โญ

Once you know where the VPIM directory server is, you can grab the email address, the capabilities, and the spoken name confirmation info. This query is expected to use LDAP [LDAP], which is a connection-oriented protocol. The whole transaction takes multiple packet round-trips to run the query and get the data back, so it's the highest latency part of the messaging service, no cap ๐Ÿ˜ญ

The confirmation info can also include a spoken name segment of up to 20kbytes, which is about 5 seconds at 4kbytes/second. On a well-engineered Internet connection, a response time of 1250 ms is believed to be achievable over the Internet at large ๐Ÿซถ

1.3. Scaling Constraints ๐ŸŒธ

A service provider's namespace is expected to hold entries for tens of millions of subscribers, all in a flat namespace based on the VPIM inter-domain address form: telephone_number@domain_name. A large corporation might have a hundred-thousand entries, while a large service provider might have tens of millions of entries in a single domain. It's expected that there will be one public address validation service for a given service provider's network ๐Ÿ“

The authors believe that existing directory technology will be enough for this. That includes horizontal scalability through replication, which can handle the transaction throughput within the latency requirements. The only fundamentally new requirement this application puts on directory servers, beyond similar existing services, is returning the recipient's spoken name. Early investigation suggests that storing and retrieving a spoken name won't add much latency, but it will add to the need for storage capacity ๐Ÿ’พ

1.4. Reliability Constraints ๐Ÿงš

DNS already has well-documented redundancy and load-balancing for the VPIMDIR. Still, the latency requirements toward the end user might not allow client-side fail-over to a secondary server, so the directory server may need to be built as a high-availability service ๐Ÿ”ฅ

2. The VPIMUser Directory Schema ๐Ÿ’–

Here's the vPIMUser object class. Its MUST and MAY attributes are listed below:

      (IANA-ASSIGNED-OID.1 NAME 'vPIMUser'
              SUP 'top'
              AUXILIARY
              MUST ( vPIMRfc822Mailbox $
                     vPIMTelephoneNumber )
              MAY  ( vPIMSpokenName $
                     vPIMSupportedUABehaviors $
                     vPIMSupportedAudioMediaTypes $
                     vPIMSupportedMessageContext $
                     vPIMTextName $
                     vPIMExtendedAbsenceStatus $
                     vPIMMaxMessageSize $
                     vPIMSubMailboxes ) )

When it's present, the vPIMUser object holds info that helps verify that the dialed telephone number belongs to the intended recipient. It also carries capability and mailbox status info, which helps the sender write the message and sets delivery expectations at send time. Very helpful, very organized ๐ŸŽ€

2.1. vPIMTelephoneNumber ๐Ÿ“ž

The attribute vPIMTelephoneNumber is the full E.164 form of the telephone number [E164], including any sub-addressing portion. The normal search is done on this attribute ๐Ÿ”

      (IANA-ASSIGNED-OID.2.1 NAME 'vPIMTelephoneNumber'
                          EQUALITY caseIgnoreMatch
                          SYNTAX 1.3.6.1.4.1.1466.115.121.1.44{20} )

For example, a North American telephone number with the sub address of 12 would be represented as +12145551212+12.

vPIMTelephoneNumber is multi-valued by default. But if an entry has multiple values for this attribute, those values MUST be distinct from each other in the telephone number portion. Each submailbox of a single telephone number is expected to have its own vPIMUser entry ๐Ÿ’…

vPIMTelephoneNumber is different from telephoneNumber in [LDAP] because it supports sub-addressing info and gets used as a voice messaging address. In most cases the two values will be the same ๐Ÿฆ‹

The telephone number is stored with no parentheses, spaces, dots, or hyphens. The leading '+' and the '+' that separates the submailbox are required markup. Non-negotiable, bestie ๐Ÿ™ˆ

2.2. vPIMRfc822Mailbox ๐Ÿ’Œ

The attribute vPIMRfc822Mailbox stores the inter-domain SMTP address of the voice mailbox linked to a given telephone number. It's its own separate attribute so it can be told apart from the rfc822Mailbox attribute, which might get used for other stuff. Ideally vPIMRfc822Mailbox would be a subtype of rfc822Mailbox, but it's defined as a totally new attribute because some directory implementations don't support subtyping ๐Ÿ™ƒ

      (IANA-ASSIGNED-OID.2.2 NAME 'vPIMRfc822Mailbox'
                        EQUALITY caseIgnoreIA5Match
                        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )

2.3. vPIMSpokenName ๐ŸŽค

The vPIMSpokenName attribute is an octet string. It MUST be encoded in 32 kbit/s ADPCM exactly, as defined by [32KADPCM]. vPIMSpokenName shall contain the spoken name of the user, in the user's own voice. The length of the spoken name segment MUST NOT exceed five seconds ๐Ÿ”ฅ

Private or additional encoding types are outside the scope of this version. So no going rogue on the encoding yet ๐Ÿ™…

      (IANA-ASSIGNED-OID.2.3 NAME 'vPIMSpokenName'
                        EQUALITY octetStringMatch
                        SYNTAX 1.3.6.1.4.1.1466.115.121.1.40{20000}
                        SINGLE-VALUE )

2.4. vPIMTextName ๐Ÿ’œ

The text name is designed to match the unstructured text name databases that caller ID's calling name delivery service uses ๐Ÿชช

      (IANA-ASSIGNED-OID.2.4 NAME 'vPIMTextName'
                        EQUALITY caseIgnoreMatch
                        SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{20}
                        SINGLE-VALUE )

2.5. vPIMSupportedAudioMediaTypes ๐ŸŽง

The vPIMSupportedAudioMediaTypes attribute tells you which audio encodings can be received at the address in vPIMRfc822Mailbox ๐ŸŽถ

      (IANA-ASSIGNED-OID.2.5 NAME 'vPIMSupportedAudioMediaTypes'
                        EQUALITY caseIgnoreIA5Match
                        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )

This is a multi-value attribute. The allowable values are the MIME audio subtypes registered with IANA. Non-standard and private encoding types must be indicated by putting "X-" or "x-" in front of the new type name โœจ

Because ADPCM is a required format, the audio32kadpcm value must be listed whenever this attribute is present. No skipping ADPCM, periodt ๐Ÿ’…

2.6. vPIMSupportedMessageContext ๐ŸŒˆ

The message context gives the sender a hint about which message contexts the recipient is likely to accept. It's less precise than a list of media types, but with media-conversion gateways becoming a bigger deal, the context indicator gives senders more useful guidance in a "unified messaging" environment ๐Ÿ“ฌ

      (IANA-ASSIGNED-OID.2.6 NAME 'vPIMSupportedMessageContext'
                        EQUALITY caseIgnoreIA5Match
                        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )

This is a multi-value attribute. The set of valid message context values is defined in [CONTEXT] ๐Ÿง 

2.7. vPIMExtendedAbsenceStatus โœจ

okay so it's super common for a mailbox to have a little flag that basically says "hey, I'm away rn" ๐ŸŒธ this is called "extended absence," and it gives the sender an advisory message right at sending time. it's kinda like vacation notices for regular email, but it has its own cultural and operational vibes ๐Ÿ’…

      (IANA-ASSIGNED-OID.2.7 NAME 'vPIMExtendedAbsenceStatus'
                        EQUALITY caseIgnoreIA5Match
                        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
                        SINGLE-VALUE )

the three values are:

            "Off", "On", "MsgBlocked"

"Off" means the recipient either doesn't support extended absence or hasn't turned the indicator on. it's the default if this attribute isn't returned, so no drama there ๐Ÿซถ

"On" means the recipient has an extended absence indicator set, but the mailbox is still accepting messages to be reviewed at some unspecified time later. kinda the "I'm busy but I'll see it" energy ๐Ÿฆ‹

"MsgBlocked" means the recipient has the indicator set AND the mailbox is currently configured to reject incoming messages. this one is the big one ๐Ÿ˜ญ Messages SHOULD NOT be sent to the recipient if this value is returned in the vPIMExtendedAbsenceStatus attribute.


2.8. vPIMSupportedUABehaviors ๐ŸŽ€

so internet mail has no real way for the sender to know whether the recipient supports certain optional features that can be requested or indicated in the RFC822 headers. that's the tea ๐Ÿต this attribute gives a list of the attributes that VPIM considers optional, plus vendor-specific ones, that the recipient may support. if this attribute isn't supported, then only the attributes VPIM lists as mandatory are assumed to be supported. undisclosed behaviors can still show up in the RFC822 message, but the receiving system can't promise it'll actually support them ๐Ÿ™ˆ

      (IANA-ASSIGNED-OID.2.8 NAME 'vPIMSupportedUABehaviors'
                        EQUALITY caseIgnoreIA5Match
                        SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )

the following behaviors are defined:

            MessageDispositionNotification
            MessageSensitivity
            MessageImportance

if MessageDispositionNotification shows up, it means the recipient will send an MDN in response to an MDN request. the recipient will reply, bestie ๐Ÿ“ฌ

MessageSensitivity means the recipient fully supports the sensitivity indication as defined in VPIM [VPIMV2].

MessageImportance means the recipient fully supports the importance indication as defined in VPIM [VPIMV2].

these can be extended later without standardization to include proprietary user interface functional extensions. those proprietary extension values must be prefixed with an X- or x-. the X- rule is giving main character energy and I respect it ๐Ÿ’–


2.9. vPIMMaxMessageSize ๐Ÿ“

at composition time, the message can be checked for acceptable length using the maximum message size attribute. this is usually set by the receiving system's policy and is typically measured in units of minutes โฑ๏ธ ESMTP does have a way to figure out if a message is too long in bytes, but ngl it's kinda unreliable for the composer when you've got multiple encodings, multiple media, or variable bit-rate encodings going on ๐Ÿ’€

      (IANA-ASSIGNED-OID.2.9 NAME 'vPIMMaxMessageSize'
                        EQUALITY integerMatch
                        SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
                        SINGLE-VALUE )

this attribute tells you the maximum message length in seconds that the receiving mailbox can receive. โœจ


2.10. vPIMSubMailboxes ๐Ÿงš

this attribute says whether there are sub-mailboxes for the telephone number being queried. it can be used to give the sender a post-dial sub-addressing menu, which is so iconic ๐Ÿ‘‘

      (IANA-ASSIGNED-OID.2.10 NAME 'vPIMSubMailboxes'
                        EQUALITY numericStringMatch
                        SYNTAX 1.3.6.1.4.1.1466.115.121.1.36{4} )

the allowable values are a list of sub-mailbox numbers with a numeric range of 1-9999. the user interface can use this info to prompt the sender to pick a sub-mailbox. spoken names for each sub-mailbox can be pulled one at a time with later queries to the recipient's VPIMDIR service ๐ŸŽ™๏ธ


3. Security Considerations ๐Ÿ”’

okay, serious moment incoming ๐Ÿ˜ญ these are the known security issues:

  1. Service provider customer information is very sensitive, especially in this time of local phone competition. Service providers require maximum flexibility to protect this data. Because of the dense nature of telephone number assignments, this data is subject to "go fish" queries via repeated LDAP queries to determine a complete list of current or active messaging subscribers. To reduce the value of this retrieved data, service providers may limit disclosure of data that is useful for telemarketing, such as the textual name, and may disclose only information useful to the sender, such as the recipient's spoken name, a data element that is much harder to auto-process.
  2. In many countries, there are privacy laws or regulations that prohibit disclosure of certain kinds of descriptive information (e.g., text names). Hence, server implementors are encouraged to support DIT structural rules and name forms [LDAPMODELS] as these provide a mechanism for administrators to select appropriate naming attributes for entries. Administrators are encouraged to use these mechanisms, access controls, and other administrative controls, which may be available to restrict use of attributes containing sensitive information when naming entries.
  3. The LDAP directory service needs to be secured properly for this intended use. [LDAPAUTH] describes a number of considerations that apply in this use. In particular, this service provides unauthenticated, public access to directory data, and as such, it is vulnerable to attacks that redirect the query to a rogue server and offer malicious data.
this last one is the scary one ๐Ÿ‘€ unauthenticated public access plus redirects to a rogue server means bad data can get served up. lock it down, bestie ๐Ÿ”

4. IANA Considerations ๐Ÿ“‹

Reference RFC 3383 "Internet Assigned Numbers Authority (IANA) Considerations for the Lightweight Directory Access Protocol (LDAP)" [LDAPREG].

4.1. Object Identifiers ๐Ÿ†”

IANA has registered an LDAP Object Identifier for this technical specification, using the template below:

Subject: Request for LDAP OID Registration

Person & email address to contact for further information:

   Greg Vaudreuil (gregv@ieee.org)

Specification: RFC 4237

Author/Change Controller: IESG

Comments:

The assigned OID will be used as a base for identifying a number of
schema elements defined in this document.

4.2. Object Identifier Descriptors ๐Ÿท๏ธ

IANA has registered the LDAP Descriptors used in this technical specification, using the template below:

Subject: Request for LDAP Descriptor Registration Update

Descriptor (vPIM): see comment

Object Identifier: see comment

Person & email address to contact for further information:

   GregV@ieee.org

Usage: see comment

Specification: RFC 4237

Author/Change Controller: IESG

Comments:

The following descriptors have been added:

NAME                            Type    OID
--------------                  ----    ------------
vPIMUser                         O      IANA-ASSIGNED-OID.1.1
vPIMRfc822Mailbox                A      IANA-ASSIGNED-OID.2.1
vPIMTelephoneNumber              A      IANA-ASSIGNED-OID.2.2
vPIMSpokenName                   A      IANA-ASSIGNED-OID.2.3
vPIMSupportedUABehaviors         A      IANA-ASSIGNED-OID.2.4
vPIMSupportedAudioMediaTypes     A      IANA-ASSIGNED-OID.2.5
vPIMSupportedMessageContext      A      IANA-ASSIGNED-OID.2.6
vPIMTextName                     A      IANA-ASSIGNED-OID.2.7
vPIMExtendedAbsenceStatus        A      IANA-ASSIGNED-OID.2.8
vPIMMaxMessageSize               A      IANA-ASSIGNED-OID.2.9
vPIMSubMailboxes                 A      IANA-ASSIGNED-OID.2.10

Where Type A is Attribute and Type O is ObjectClass

5. References ๐Ÿ“š

5.1. Normative References

[LDAP]       Hodges, J. and R. Morgan, "Lightweight Directory Access
             Protocol (v3): Technical Specification", RFC 3377,
             September 2002.

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

[CONTEXT]    Burger, E., Candell, E., Eliot, C., and G. Klyne,
             "Message Context for Internet Mail", RFC 3458, January
             2003.

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

5.2. Informative References

[VPIMV2]     Vaudreuil, G. and G. Parsons, "Voice Profile for
             Internet Mail - version 2 (VPIMv2)", RFC 3801, June
             2004.

[LDAPREG]    Zeilenga, K., "Internet Assigned Numbers Authority
             (IANA) Considerations for the Lightweight Directory
             Access Protocol (LDAP)", BCP 64, RFC 3383, September
             2002.

[LDAPAUTH]   Wahl, M., Alvestrand, H., Hodges, J., and R. Morgan,
             "Authentication Methods for LDAP", RFC 2829, May 2000.

[LDAPMODELS] Zeilenga, K., "LDAP: Directory Information Models" Work
             in Progress, February 2005.

Acknowledgements ๐Ÿซถ

this directory schema builds on the earlier work of Carl Malamud and Marshall Rose in their TPC.INT remote printing experiment, and on the work led by Anne Brown as part of the EMA voice messaging committee's directory effort. Anne Brown showed huge leadership and was a co-author of the original version of this document ๐Ÿ‘‘

Bernhard Elliot, working with the TMIA, provided most of the organizational push to get this project moving, which was a big task given how slow and bureaucratic the voice mail industry and regulatory environment can be ๐Ÿ™„

thanks to Dave Dudley and the Messaging Alliance (TMA) for their early work pioneering a shared directory service for voice messaging, and for their continuing efforts to apply that work to this project ๐ŸŒˆ

Greg White and Jeff Bouis, both of Lucent Technologies, gave invaluable help with reviewing and sanity checking. countless errors and inconsistencies were fixed thanks to their careful review ๐Ÿ’…

as chairman of the VPIM working group, Glenn Parsons has provided essential support over the many years this document has been in development โญ


Author's Address ๐Ÿ“ฎ

Please send comments on this document to the VPIM working group mailing list <vpim@ietf.org>.

Gregory M. Vaudreuil
Lucent Technologies
9489 Bartgis Ct
Frederick, MD 21702

EMail: GregV@ieee.org

Copyright (C) The Internet Society (2005).

This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights.

This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

Intellectual Property โœจ

Okay bestie, let's talk legal stuff, but make it cute ๐ŸŽ€. The IETF takes no position on whether any Intellectual Property Rights (IPR) or other rights that someone might claim over the tech in this document are valid or how far they reach. It also doesn't say whether any license for those rights exists or might be available. And it hasn't made any independent effort to find out what rights are out there ๐Ÿ™ˆ. If you want the rules for rights in RFC documents, check out BCP 78 and BCP 79 ๐Ÿ“š.

Copies of IPR disclosures sent to the IETF Secretariat are available from the IETF's online IPR repository at http://www.ietf.org/ipr ๐Ÿฆ‹. The same goes for any assurances that licenses will be made available, and for the results of anyone trying to get a general license or permission to use those proprietary rights, whether they're an implementer or a user of this spec ๐Ÿ’œ.

The IETF also invites anyone to tell it about copyrights, patents, patent applications, or other proprietary rights that might cover technology needed to implement this standard ๐ŸŒˆ. Send that info to the IETF at ietf-ipr@ietf.org ๐Ÿ’Œ.

Acknowledgement ๐Ÿซถ

Big thank you to the Internet Society, which is currently funding the RFC Editor function ๐ŸŒธ๐Ÿ’–.

๐Ÿ“ฆ where this page comes from