A quick look at ENUM mapping telephone numbers to DNS

With my talk about Lumicall at FOSDEM coming this Sunday, I'm going to have a quick look at some of the technologies used in Lumicall over this week. The first is ENUM

Introduction to ENUM

ENUM, as defined by the IETF, is a convenient and powerful way to map telephone numbers to the latest communications technologies such as SIP, XMPP (Jabber) and web sites.

ENUM resolution operates much like reverse DNS lookup:

Here is an example using dig. The subject number we are looking up is 01865 332244 from the Nominet contact page:

$ dig -t naptr ; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> -t naptr ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49821 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 3, ADDITIONAL: 4 ;; QUESTION SECTION: ; IN NAPTR ;; ANSWER SECTION: 86400 IN NAPTR 100 20 "u" "E2U+pstn:tel" "!^(.*)$!tel:\\1!" . 86400 IN NAPTR 100 10 "u" "E2U+sip" "!^\\+441865332(.*)$!sip:\\1@nominet.org.uk!" .

Ready to use today

dlz-ldap-enum is a plugin for bind9 nameservers that can read telephone numbers from LDAP and make them available in real time for DNS lookup

Most SIP proxies and related products like Asterisk also support ENUM lookups during the process of routing a call.

ENUM dialing from Lumicall

When dialing any number from your address book on Android, Lumicall can perform an ENUM lookup against the public ENUM tree and any private ENUM trees you configure.

This blog is based on a page I published at sip5060.net