Enum is a suite of protocols to marry the telephone system to the internet.

E.164 adresses can be used in DNS by using Enum. Enum allocates a specific zone, namely e164.arpa for use with E.164 numbers. Any phone number, such as +1 555 42 42 can be transformed into a hostname by reversing the numbers, separating them with dots and adding the e164.arpa suffix, like so: 2.4.2.4.5.5.5.1.e164.arpa

DNS can then be used to look up internet addresses for services such as SIP VoIP telephony. NAPTR records are used to 'translate' E.164 adresses to SIP addresses for example.

An example NAPTR record looks like this :

$ORIGIN 2.4.2.4.5.5.5.1.e164.arpa.
 IN NAPTR 100 10 "u" "sip+E2U"  "!^.*$!sip:phoneme@example.net!"     .
 IN NAPTR 102 10 "u" "mailto+E2U" "!^.*$!mailto:myemail@example.com!"  .

This specifies that if you want to use the "sip+E2U" service, you should use sip:phoneme@example.net as the address. The regular expression can be used by a telephone company to easily assign addresses to all of its clients; e.g. if your number is +15554242 your SIP address is sip:4242@555telco.example.net and if your number is +15551234 your SIP address is sip:1234@555telco.example.net.

e164.arpa subdomains are first delegated to ('registered by') regulatory bodies designated by the national government of the country code concerned, which further delegates zones to telecommunications providers. Your telephone company is therefore in charge of the NAPTR records, usually. Some countries are proposing to let end-users register their own telephonenumbers via an intermediary which need not be their own telco. This is a good idea, since Enum is mostly useful for VoIP (Voice over IP) - people who use an Enum-enabled VoIP service can dial your existing number, and be connected not to your existing phone line, but to your own VoIP telephone, directly via the internet, bypassing the telephone system entirely - but when they call some one who does not use Enum, calls run over the conventional telephone system.

External references


enum (all lowercase) is a command in some programming languages including C and C++