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>,
               random group: g@h, i@j;, k@l

       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 follow-
       ing 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

            Cc: recipient list not shown: ;

       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 mes-
       sage 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 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-Mes-
       sage-ID.

       If a message is forwarded, qmail-inject changes its behav-
       ior 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  pre-
       sent;  same  for  Resent-Message-Id.   It does not add new
       Date or Message-Id fields.


OTHER FEATURES

       For compatibility with sendmail, if  qmail-inject  sees  a
       line  containing  (the  beginning  of)  a  Message or Text
       field, it will consider all further lines to  be  part  of
       the message body.

       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.

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