NAME¶
envelopes - sender/recipient lists attached to messages
INTRODUCTION¶
Electronic mail messages are delivered in
envelopes.
An envelope lists a
sender and one or more
recipients. Usually
these envelope addresses are the same as the addresses listed in the message
header:
(envelope) from djb to root
From: djb
To: root
In more complicated situations, though, the envelope addresses may differ from
the header addresses.
ENVELOPE EXAMPLES¶
When a message is delivered to several people at different locations, it is
first photocopied and placed into several envelopes:
(envelope) from djb to root
From: djb Copy #1 of message
To: root, god@brl.mil
(envelope) from djb to god@brl.mil
From: djb Copy #2 of message
To: root, god@brl.mil
When a message is delivered to several people at the same location, the sender
doesn't have to photocopy it. He can instead stuff it into one envelope with
several addresses; the recipients will make the photocopy:
(envelope) from djb to god@brl.mil, angel@brl.mil
From: djb
To: god@brl.mil, angel@brl.mil, joe, frde
Bounced mail is sent back to the envelope sender address. The bounced mail
doesn't list an envelope sender, so bounce loops are impossible:
(envelope) from <> to djb
From: MAILER-DAEMON
To: djb
Subject: unknown user frde
The recipient of a message may make another copy and forward it in a new
envelope:
(envelope) from djb to joe
From: djb Original message
To: joe
(envelope) from joe to fred
From: djb Forwarded message
To: joe
A mailing list works almost the same way:
(envelope) from djb to sos-list
From: djb Original message
To: sos-list
(envelope) from sos-owner to god@brl.mil
From: djb Forwarded message
To: sos-list to recipient #1
(envelope) from sos-owner to frde
From: djb Forwarded message
To: sos-list to recipient #2
Notice that the mailing list is set up to replace the envelope sender with
something new,
sos-owner. So bounces will come back to
sos-owner:
(envelope) from <> to sos-owner
From: MAILER-DAEMON
To: sos-owner
Subject: unknown user frde
It's a good idea to set up an extra address,
sos-owner, like this: the
original envelope sender (
djb) has no way to fix bad
sos-list
addresses, and of course bounces must not be sent to
sos-list itself.
HOW ENVELOPE ADDRESSES ARE STORED¶
Envelope sender and envelope recipient addresses are transmitted and recorded in
several ways.
When a user injects mail through
qmail-inject, he can supply a
Return-Path line or a
-f option for the envelope sender; by
default the envelope sender is his login name. The envelope recipient
addresses can be taken from the command line or from various header fields,
depending on the options to
qmail-inject. Similar comments apply to
sendmail.
When a message is transferred from one machine to another through SMTP, the
envelope sender is given in a
MAIL FROM command, the envelope
recipients are given in
RCPT TO commands, and the message is supplied
separately by a
DATA command.
When a message is delivered by
qmail to a single local recipient,
qmail-local records the recipient in
Delivered-To and the
envelope sender in
Return-Path. It uses
Delivered-To to detect
mail forwarding loops.
sendmail normally records the envelope sender in
Return-Path. It
does not record envelope recipient addresses, on the theory that they are
redundant: you received the mail, so you must have been one of the envelope
recipients.
Note that, if the header doesn't have any recipient addresses,
sendmail
will move envelope recipient addresses back into the header. This situation
occurs if all addresses were originally listed as
Bcc, since
Bcc
is automatically removed. When
sendmail sees this, it creates a new
Apparently-To header field with the envelope recipient addresses. This
has the strange effect that each blind-carbon-copy recipient will see a list
of all recipients on the same machine.
When a message is stored in
mbox format, the envelope sender is recorded
at the top of the message as a UUCP-style
From (no colon) line. Note
that this line is less reliable than the
Return-Path line added by
qmail-local or
sendmail.
SEE ALSO¶
qmail-header(5),
qmail-local(8),
qmail-inject(8)