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 developed, 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
@.