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.

MESSAGE STRUCTURE
     A  message contains a series of header fields, 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.

ADDRESS LISTS
     Certain fields, such as To, contain address lists.

     An address list contains some number of addresses or address
     groups, 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  address  group  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 default host name.

     All  host  names  should  be  fully qualified.  qmail-inject
     appends the default domain name to any name without dots:

          djb@silverton  ->  djb@silverton.berkeley.edu

     It appends the plus domain name 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 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 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 cre-
     ate any Received fields.

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

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

SEE ALSO
     addresses(5), envelopes(5), qmail-inject(8)



SunOS 5.5                 Last change:                          3