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

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





SunOS 5.5                 Last change:                          3






qmail-header(5)    Headers, Tables, and Macros    qmail-header(5)



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





















































SunOS 5.5                 Last change:                          4