Email Addresses

Each Internet domain has an associated email server that manages all email addresses at that domain. Each email address is expressed in the form “name@domain” and is unique at that domain, as in for example “jane@twenty.net”.

The key to this elegant architecture is its simple structure, where each domain’s associated mail server maintains the accounts for all users with email addresses at that domain. Therefore, any email server can easily use the Internet’s domain name system to find the IP address of any other mail server, connect to that server over the Internet, and transfer email to recipients at that domain using the standard SMTP protocol. In practice, there may be more than one email server for a large domain, in which case the DNS will direct the connection to the appropriate mail server as required.

While second level domains are the main type used in email addresses, you sometimes encounter email addresses specifying third-level or higher domain names, as in the following four-level example:

jack@mail.odin.twenty.net

Usually your best course is to include the entire domain exactly as received whenever replying to a user with a multi-level email address. However, if that doesn’t work, then you can try dropping the left-most levels from the address and send the email to the second-level domain, as in jack@twenty.net, which sometimes lets the receiving DNS figure out the correct address from there.

The elegance of the fit between email addresses and the domain name system is not accidental, since, as described on the DNS history page, it was the need to find a solution to the increasingly cumbersome addressing used for site relaying (described below) that initially triggered the development of the domain name architecture in 1982.

Historical addresses. The original design of email addresses on the ARPANET assumed that every server could connect directly to every other server, an idea which quickly became untrue as the network spread. Over time, some organizations that weren’t directly connected to the ARPANET began to communicate over dial-up lines. To reduce long distance connection costs, a relaying architecture was developed where each computer connected only to a certain number of other computers, and each computer passed on each other’s email to the next computer in the chain, often using FTP or UUCP, and sometimes in the evening or at night to minimize long-distance telephone costs.

The path that an email traveled as it was relayed from site to site, sometimes over several links, was recorded in the header in what was called a “bang” notation, with the “!” character separating each computer in a path, as in the following actual bang path:

utzoo!decvax!harpo!eagle!mhtsa!ihnss!ihuxp!grg

In the above path, the local email address of the user who sent the email (Greg Guthrie) was “ihux!grg”, and the rest of the computers in the path indicate the route the email took on its travels. To send a reply email to Greg, or to send an email to anyone, you had to be a human router and specify a valid route as part of the address. If he hadn’t already sent you an email or you didn’t know a route to get to him, the software couldn’t automatically help you.

Years later, during the creation of the CSNET, another kind of relaying notation was developed. The first instantiation of the CSNET established computers at RAND and the University of Delaware to provide email connectivity for sites not connected to the ARPANET. In order to indicate the required relaying, a notation called the “percent hack” was created, so that an email address could be specified in the following form:

mary%compsci@udel

The above email address specifies that the user “mary” has an account on the computer “compsci”, and can be reached through the relaying host at the University of Delaware. The % sign was chosen because it wasn’t used by any of the other popular email systems, and because it was visually similar to the notation “C/O” used to designate “in care of” for letters sent with postal mail. Although the percent hack enabled multilevel relaying, its actual use was limited to a single relay — one % and one @.