|
An ultra-condensed explanation of e-mail:
a sender (person)
uses a mail agent (program)
to compose a message, which contains the
e-mail addresses of several
recipients.
The agent passes the message to a transport
service for delivery to the mailboxes of the recipients, who each use
their own agents to read the e-mail.
The rest of this document expands this explanation in two successively finer
levels of detail. The Terms section gives a bit more
explanation of each role in the ultra-condensed explanation, and the remaining
sections explain each step in more detail.
To understand electronic mail (e-mail), you need to learn a mental model
that involves
seven
roles, that correspond roughly to similar roles for "regular" letters:
- the sender: a person who composes and sends e-mail messages,
- the mail agent, a program the sender uses to do so;
for regular mail, this might be a pen or typewriter
- the message, a computer representation of what the sender wanted
to say. For regular mail this would be the paper and its envelope.
- the mail transport subsystem: a system (that is, a complex
collection of programs) that delivers the message; for regular mail,
this would be the combined Postal Services, airlines, trucking
companies, and so on, involved in delivery.
- the recipient, a person who receives the mail
- the recipient's mail agent, which might be a different program
from the sender's; for regular mail, this might be a magnifying
glass used to read the sender's tiny handwriting
- the e-mail address, a text string used to identify senders and
recipients; for regular mail, this would be the text for the usual
street address, city, country, and so on.
There are a few more roles that show up in the details:
- a server is a program constantly running
on some internet site, waiting for other sites to send it requests to
perform some service or other (like delivering mail).
- a protocol is a particular collection
of types of requests and responses understood by a particular kind of
server. Thus Web servers follow HTTP, the Hyper Text Transfer Protocol.
First the sender composes a message with the mail agent, then asks the mail
agent to invoke the mail transport system to deliver the message.
Composing an e-mail message is much like composing any other kind of document;
the mail agent usually behaves similarly to many other editors. The main
complication is that messages have two parts:
- The header, which more-or-less corresponds to the envelope of
postal mail. It consists of a sequence of tagged header lines;
tags are defined by an Internet standard, and include things like
To, Subject, CC, and
Date. Your mail agent will ask you to supply some of
these (such as To), will fill in some by itself
(e.g. From and Date), and will allow you to add others (like CC).
- The body: the main part of your message, which corresponds
more-or-less to the paper you put inside the envelope for postal mail.
You can think of this as a simple text message with zero or more
attachments; in fact the attachments are encoded as text via a protocol
called MIME
(Multipurpose Internet Mail Extensions)
While in the midst of composing, you may decide to stop and do something
else. Some mail agents provide a 'draft' folder into which you can place
partly-composed mail, which you can resume later.
At some point you tell your mail agent to send the message you have just
composed. The method for doing this varies with the mail agent. Agents with
a graphical user interface (GUI),
like NetScape Messenger, have a Send button or menu item.
Text-based agents, like GNU Emacs RMAIL, have some special keyboard
combination, like a pair of control-C characters (ASCII 003, typed twice).
At this point the mail agent may perform certain checks before sending your
message -- the primary check being: did you supply sensible values for at
least one recipient header field (primarily To and CC)? Once it is convinced
it should actually send the message, it invokes the mail transport subsystem
to deliver it.
Mail transport usually involves sending information over the Internet.
The Internet is not always immediately available when you want to send
mail; many personal computers use dialup lines to connect to the Internet, so
are sometimes "off-line" while you are composing mail. Thus there may be a
second queue somewhere, separate from the "draft"
folder, where the mail agent or the mail transport system keeps mail that
you've committed to send, but which hasn't actually been sent yet. If the
mail agent keeps the queue, it might choose to make it visible through an
"unsent messages" folder. If the mail transport system keeps the queue, it
might be invisible to you unless your system provides some extra way to get at
this information. On my UNIX system at work, for example, the mail transport
subsystem keeps the queue, and I have no idea where it is.
Ideally, it would be nice to ignore what happens in between when you send a
message and when the recipient reads it. Unfortunately, you can be faced with
the consequences of failures of various kinds at the transport level, and thus
need a basic understanding to have any hope of figuring out what is
happening.
To tell the mail transport system where to send your message, you supply one
or more addresses for recipients. An address is a text string of the form
mailbox@site. The second part is a string identifying a
particular site on the Internet; the first part is a string identifying a
particular mailbox at that site.
Every Internet site has an Internet Protocol (IP) address,
specified as four decimal numbers (each in the range 0-255) separated by dots.
The transport service sends the site name string to a Domain Name
Server (DNS), which translates the name into an IP address.
The transport service then starts up an Internet connection to the given
IP address, and asks the destination site to deliver mail to the given mailbox.
For this to work, the destination site has to be running a program called a
mail server that is listening for requests to deliver mail.
At this point the mail server can do one of several things
- Accept the message and store it in the expected mailbox.
- Forward the message somewhere else, usually to a place specified by the
owner of the mailbox, but possibly to a mailing list.
- Reject the message as undeliverable, either because the mailbox doesn't
exist, or because the mailbox is full, or because the server is facing
some temporary problem.
There is usually no good way to guess at someone's e-mail address, unless they
tell you -- although there are some guidelines for
finding addresses.
Some sites let you look up domain names in their DNS with a Web form.
There are basically two kinds of mail servers, distinguished by the
protocol they expect you to use to
communicate with them.
- Basic Simple Mail Transfer Protocol (SMTP) delivery. The server
translates the mailbox name into a
local file name, and appends the message to the file. For example, on
some UNIX system, mailbox XX might be stored in file
/var/spool/XX. Mail agents on the server's site know to
copy and truncate this file when receiving incoming mail.
- Post Office Protocol (POP) delivery. The server still stores messages
somewhere, in a place derived from the mailbox name. However, it
allows mail-receiving connections from other Internet sites. The mail
agent on the recipient's site knows to open an Internet connection
to the POP server, request contents of
particular messages, and (optionally) remove messages from the
server's mailbox.
POP service is newer than SMTP service; it has the large advantage that you
can access your e-mail from anywhere on the Internet, without logging in to
the server. You can typically arrange that, when reading messages from some
site other than your main one, the mail agent leaves all messages on the
server, so you can read them again later from your home site.
When you start your mail agent, it usually checks with
the mail server to see if any new mail has arrived. Most agents can also
perform this check periodically, or on command.
An agent downloads incoming mail, and may also (if you so choose) filter out
some messages so you never see them.
When the server reports that there is new mail, the agent typically copies all
new messages from the server into an "incoming messages" or
"in box" folder and removes them from the server. The agent usually keeps
track of which messages you've read, and which remain unread. It may give
you some way to move messages from your in box to other folders.
Some agents provide ways to filter incoming mail. Based on patterns in the
header or text body, the agent can file messages in special folders, or delete
them entirely. On UNIX systems, filtering can take place as the server receives
messages (via programs such as procmail and mailagent).
Mailing lists and newsgroups are mail-like mechanisms for communicating with
(potentially) large groups of other people.
For normal e-mail addresses, the recipient's server translates the mailbox
into a specific file or directory, into which it places the incoming message.
For mailing lists, the server instead finds an associated file containing a
list of e-mail addresses, and forwards the message to each address on the
list.
Check out the very large list of publicly-accessible mailing lists
and the guide to social
newsgroups and mailing lists.
"This might best be explained by showing the contents of a form letter I use to
reply to people who complain about receiving my periodic news postings:
You appear to be complaining about my "finding e-mail addresses" FAQ. This is
not an e-mail message that I am sending to you; it is a USENET news posting.
I am guessing that you use a news reader like NetScape Communicator 4.0, which
confuses people by blurring the distinction between news and mail. Unlike
e-mail messages, which are directed to specific lists of people, news is
"broadcast" by a very different mechanism, and there is no way for me to
single you out to stop receiving it.
If you want to stop receiving this news group entirely, you need to use
your news reader's "unsubscribe" feature; how to do this depends on what news
reader software you are using.
However, if you don't want to unsubscribe completely, you can almost certainly
avoid any costs or annoyances associated with viewing my FAQ. When you open a
news folder like news.announce.newusers, your reader just downloads short news
headers from your Internet Service Provider, until you ask to see the actual
message (usually by clicking on its header, or by using "next"). Most news
readers have some kind of filtering mechanism that let you say "don't show me
messages with the following subject" (sometimes labeled "ignore thread" or
"ignore subject"). The filters use information in the headers, and so don't
need to download the very large message body before they decide not to show it
to you."
- David Alex Lamb;
Electronic
Mail: The Basics, 1999.
Thanks for visiting. We
hope that you found this page useful.
Comments? Please direct
them to support.
|