qmail-header(5) Headers, Tables, and Macros 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 RFC 822 and RFC 1123.
MESSAGESTRUCTURE
A message contains a series of headerfields, a blank line,
and a body:
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:
Subject: Go, Bears!
The field contents may be folded across several lines. Each
line past the first must begin with a space or tab:
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.
ADDRESSLISTS
Certain fields, such as To, contain addresslists.
An address list contains some number of addresses or addressgroups, separated by commas:
a@b, c@d (Somebody), A Person <e@f>,
SunOS 5.5 Last change: 1
qmail-header(5) Headers, Tables, and Macros qmail-header(5)
random group: g@h, i@j;, k@l
An addressgroup has some text, a colon, a list of
addresses, and a semicolon:
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 defaulthostname.
All host names should be fully qualified. qmail-inject
appends the defaultdomainname to any name without dots:
djb@silverton -> djb@silverton.berkeley.edu
It appends the plusdomainname to any name that ends with a
plus sign:
eric@mammoth.cs+ -> eric@mammoth.cs.berkeley.edu
A host name may be a dotted-decimal address:
djb@[128.32.183.163]
RFC 822 allows mailbox names inside angle brackets to
include sourceroutes, but qmail-inject strips all source
routes out of addresses.
SENDERADDRESSESqmail-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 res-
triction.
RECIPIENTADDRESSESqmail-inject looks for recipient address lists in the fol-
lowing 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
SunOS 5.5 Last change: 2
qmail-header(5) Headers, Tables, and Macros qmail-header(5)
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.
RESENTMESSAGES
A message is forwarded 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 forwarded, 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.
OTHERFEATURES
Addresses are separated by commas, not spaces. When qmail-inject sees an illegal space, it inserts a comma:
djb fred -> djb, fred
qmail-inject removes all Return-Path header fields.
qmail-inject also removes any Content-Length fields.
SunOS 5.5 Last change: 3
qmail-header(5) Headers, Tables, and Macros qmail-header(5)
SEEALSO
addresses(5), envelopes(5), qmail-inject(8)
SunOS 5.5 Last change: 4