qmail-header 5
NAME
qmail-header - format of a mail message
OVERVIEW
At the top of every mail message is a highly structured header . Many programs expect the header to carry certain information, as described below. The main function of qmail-inject is to make sure that each outgoing message has an appropriate header. For more detailed information, see http://pobox.com/~djb/proto/immhf.html .
"MESSAGE STRUCTURE"
A message contains a series of header fields, a blank line, and a body : .EX Received: (qmail-queue invoked by uid 666);

30 Jul 1996 11:54:54 -0000

From: djb@silverton.berkeley.edu (D. J. Bernstein)

To: fred@silverton.berkeley.edu

Date: 30 Jul 1996 11:54:54 -0000

Subject: Go, Bears!

I've got money on this one. How about you?

---Dan (this is the third line of the body) Each header field has a name , a colon, some contents , and a newline: .EX Subject: Go, Bears! The field contents may be folded across several lines. Each line past the first must begin with a space or tab: .EX Received: (qmail-queue invoked by uid 666);

30 Jul 1996 11:54:54 -0000 The field name must not contain spaces, tabs, or colons. Also, an empty field name is illegal. qmail-inject does not allow field names with unprintable characters. Case is irrelevant in field names: subject and SUBJECT and SuBjEcT have the same meaning.

"ADDRESS LISTS"
Certain fields, such as To , contain address lists. An address list contains some number of addresses or address groups, separated by commas: .EX a@b, c@d (Somebody), A Person <e@f>,

random group: g@h, i@j;, k@l An address group has some text, a colon, a list of addresses, and a semicolon: .EX random group: g@h, i@j; An address can appear in several forms. The most common form is box@host . Every address must include a host name. If qmail-inject sees a lone box name it adds the default host name. All host names should be fully qualified. qmail-inject appends the default domain name to any name without dots: .EX djb@silverton -> djb@silverton.berkeley.edu It appends the plus domain name to any name that ends with a plus sign: .EX eric@mammoth.cs+ -> eric@mammoth.cs.berkeley.edu A host name may be a dotted-decimal address: .EX djb@[128.32.183.163] RFC 822 allows mailbox names inside angle brackets to include source routes, but qmail-inject strips all source routes out of addresses.

"SENDER ADDRESSES"
qmail-inject looks for sender address lists in the following fields: Sender , From , Reply-To , Return-Path , Return-Receipt-To , Errors-To , Resent-Sender , Resent-From , Resent-Reply-To . If there is no From field, qmail-inject adds a new From field with the name of the user invoking qmail-inject. RFC 822 requires that certain sender fields contain only a single address, but qmail-inject does not enforce this restriction.
"RECIPIENT ADDRESSES"
qmail-inject looks for recipient address lists in the following fields: To , Cc , Bcc , Apparently-To , Resent-To , Resent-Cc , Resent-Bcc . Every message must contain at least one To or Cc or Bcc . qmail-inject deletes any Bcc field. If there is no To or Cc field, qmail-inject adds a line .EX Cc: recipient list not shown: ; This complies with RFC 822; it also works around some strange sendmail behavior, in case the message is passed through sendmail on another machine.
STAMPS
Every message must contain a Date field, with the date in a strict format defined by RFC 822. If necessary qmail-inject creates a new Date field with the current date (in GMT). Every message should contain a Message-Id field. The field contents are a unique worldwide identifier for this message. If necessary qmail-inject creates a new Message-Id field. Another important field is Received . Every time the message is sent from one system to another, a new Received field is added to the top of the message. qmail-inject does not create any Received fields.
"RESENT MESSAGES"
A message is resent if it contains any of the following fields: Resent-Sender , Resent-From , Resent-Reply-To , Resent-To , Resent-Cc , Resent-Bcc , Resent-Date , Resent-Message-ID . If a message is resent, qmail-inject changes its behavior as follows. It deletes any Resent-Bcc field (as well as any Bcc field); if there are no Resent-To or Resent-Cc fields, qmail-inject adds an appropriate Resent-Cc line. It does not add a Cc line, even if neither To nor Cc is present. If there is no Resent-From field, qmail-inject adds a new Resent-From field. It does not add a new From field. qmail-inject adds Resent-Date if one is not already present; same for Resent-Message-Id . It does not add new Date or Message-Id fields.
"OTHER FEATURES"
Addresses are separated by commas, not spaces. When qmail-inject sees an illegal space, it inserts a comma: .EX djb fred -> djb, fred qmail-inject removes all Return-Path header fields. qmail-inject also removes any Content-Length fields.
"SEE ALSO"
addresses(5), envelopes(5), qmail-inject(8)