Some mail-reading programs (MUAs) allow users to forward messages to
other users. For example, the
mush
(1) MUA forwards
the current message to the user named
fred
with the following
command:
message 1 of 3>
m -f fred
Messages can also be forwarded with
dist
(1) from
mh
(1)
and from within other MUAs.
When messages are forwarded, header lines that describe the
forwarding user must begin with the
Resent-
prefix.
When
fred
receives this message, he sees two similar header
lines:
From: original-sender
Resent-From: forwarding-sender
When both the original
From:
and the forwarded
Resent-From:
appear in the same header, the
Resent-
form is always considered the most recent.
The
sendmail
program examines only a few header names
to see whether a mail message has been forwarded. Those that it
knows are listed in
Table 35.9
.
Table 35.9: Known Resent-Headers
Resent- form of |
Header |
Resent-Bcc:
|
Bcc: |
Resent-Cc:
|
Cc: |
Resent-Date:
|
Date: |
Resent-From:
|
From: |
Resent-Message-ID:
|
Message-ID: |
Resent-To:
|
To: |
If
sendmail
finds any header with a name beginning with
Resent-
,
it marks that message as
one that is being forwarded, preserves all
Resent-
headers, and creates any needed ones.
Whether the message is forwarded or not,
sendmail
compares
the sender envelope address to the address in the
From:
header (or
Resent-From:
if present).
If they are the same,
sendmail
deletes the
From:
(or
Resent-From:
). The purpose of this deletion
is to add the sender's full name (the
$x
macro; see
Section 31.10.42
) to the
address. If the envelope and sender addresses are the same,
it is safe to delete and regenerate those header lines.
If the message is being forwarded,
sendmail
recreates
the
Resent-From:
header; otherwise, it recreates
the
From:
header (see
Section 37.5.113, -d31.2
).
This recreation is useful because some old versions of
mh
(1)
added a
From:
header without the full name (
$x
).
It is also useful in mail client/server arrangements in which
all mail is sent to the server. Because that mail is sent with
the
TCP
delivery agent, no
$x
full name is added.
On the server the
From:
is discarded, and there
is a second chance to add the
$x
. However, this can happen only if the address in the envelope and the address in
the
From:
are identical. Since the address in
the envelope is surrounded with angle brackets, so must be the
address in the
From:
header. One way to ensure
that they are the same is by defining the
From:
header with
$g
in angle brackets, as
<$g>
in the
client's configuration file.