D. J. Bernstein
Internet mail
Internet mail infrastructure


An Internet mail address is a string of bytes containing @.

The domain part of an address is everything after the final @. The box part is everything before.

For example, the addresses

all have domain part "heaven.af.mil". The box parts are "God", "", and "@at@".

Some domains have owners. It is up to the owner of heaven.af.mil to say how mail messages will be delivered to addresses with domain part heaven.af.mil.

The domain part of an address is interpreted without regard to case, so

all refer to the same domain.

Choosing mail addresses

Here are some suggestions on choosing mail addresses for the Internet.

Do not use non-ASCII characters. Under existing IETF specifications, these characters cannot be used in mail headers or in SMTP requests. In practice, they are regularly corrupted.

Do not use ASCII control characters. \0 is regularly corrupted. \012 and \015 cannot be used in some combinations and are corrupted in all. None of these characters are usable on business cards.

Avoid spaces, backslashes, double quotes, <, >, brackets, parentheses, semicolons, commas, and colons. These all require quoting in mail headers and in SMTP. Many existing mail programs do not handle quoting properly.

Do not use @ in a box part. @ requires quoting in mail headers and in SMTP. Many programs incorrectly look for the first @, rather than the last @, to find the domain part of an address.

In a box part, do not use two consecutive dots, a dot at the beginning, or a dot at the end. Any of these would require quoting in mail headers.

Do not use an empty box part; it cannot appear in SMTP requests.

Avoid box parts longer than 64 characters.

Be wary of uppercase letters in box parts. Some mail programs (and users!) will incorrectly convert God@heaven.af.mil to god@heaven.af.mil.

Be wary of the following characters:

Some users will not know how to feed these characters safely to their mail programs.

In domain names, stick to letters, digits, dash, and dot. A few hosts have trouble with underscore; many hosts have trouble with other characters.

In a domain name, do not use two consecutive dots, a dot at the beginning, or a dot at the end. This means that, when a domain name is broken down into components separated by dots, there are no empty components.

Always use at least one dot in a domain name. If you own the mil domain, don't bother using the address boss@mil; most users will be unable to send messages to that address. Same for the root domain.

Avoid domain names longer than 64 characters.

Global box parts

RFC 822 requires that a Postmaster box part, interpreted without regard to case, be ``valid'' at each ``site,'' and that mail to Postmaster be sent to an appropriate person. The intended meaning of ``site'' is unclear. In practice Postmaster is widely, but not universally, supported.

RFC 1123 requires that each SMTP server ``support'' Postmaster. Klensin requires that each server accept mail for the string Postmaster, without an @ or a domain part.