25.9 Forwarding with Resent Headers
Some
MUAs allow users to forward (resend, bounce, or redirect) 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 25-11.
Table 25-11. Known resent headers
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.
25.9.1 Remove and Re-create the From: Header
Regardless
of whether the message is forwarded, 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, $x) 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 re-creates the
Resent-From: header; otherwise, it re-creates the
From: header (-d31.2).
This re-creation 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. Because 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.
|