Previous Section Next Section

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- 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.

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.

    Previous Section Next Section