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:

	    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

       An  address  group  has	some text, a colon, a list of addresses, and a
       semicolon:


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

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


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)



				       5		s/qmail:(qmail-header)

Man(1) output converted with man2html