nightmaremail

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

qmail-header.5 (5520B)


      1 .TH qmail-header 5
      2 .SH NAME
      3 qmail-header \- format of a mail message
      4 .SH OVERVIEW
      5 At the top of every mail message is a
      6 highly structured
      7 .BR header .
      8 Many programs expect the header to carry certain information,
      9 as described below.
     10 The main function of
     11 .B qmail-inject
     12 is to make sure that each outgoing message has an appropriate header.
     13 
     14 For more detailed information, see
     15 .BR https://cr.yp.to/immhf.html .
     16 .SH "MESSAGE STRUCTURE"
     17 A message contains a series of
     18 .I header fields\fR,
     19 a blank line,
     20 and a
     21 .IR body :
     22 
     23 .EX
     24      Received: (qmail-queue invoked by uid 666);
     25 .br
     26 	     30 Jul 1996 11:54:54 -0000
     27 .br
     28      From: djb@silverton.berkeley.edu (D. J. Bernstein)
     29 .br
     30      To: fred@silverton.berkeley.edu
     31 .br
     32      Date: 30 Jul 1996 11:54:54 -0000
     33 .br
     34      Subject: Go, Bears!
     35 .br
     36 
     37 .br
     38      I've got money on this one.  How about you?
     39 .br
     40 
     41 .br
     42      ---Dan   (this is the third line of the body)
     43 .EE
     44 
     45 Each header field has a
     46 .IR name ,
     47 a colon,
     48 some
     49 .IR contents ,
     50 and a newline:
     51 
     52 .EX
     53      Subject: Go, Bears!
     54 .EE
     55 
     56 The field contents may be folded across several lines.
     57 Each line past the first must begin with a space or tab:
     58 
     59 .EX
     60      Received: (qmail-queue invoked by uid 666);
     61 .br
     62 	     30 Jul 1996 11:54:54 -0000
     63 .EE
     64 
     65 The field name must not contain spaces, tabs, or colons.
     66 Also, an empty field name is illegal.
     67 .B qmail-inject
     68 does not allow field names with unprintable characters.
     69 
     70 Case is irrelevant in field names:
     71 .B subject
     72 and
     73 .B SUBJECT
     74 and
     75 .B SuBjEcT
     76 have the same meaning.
     77 .SH "ADDRESS LISTS"
     78 Certain fields, such as
     79 .BR To ,
     80 contain
     81 .I address lists\fR.
     82 
     83 An address list contains some number of
     84 .I addresses
     85 or
     86 .I address groups\fR,
     87 separated by commas:
     88 
     89 .EX
     90      a@b, c@d (Somebody), A Person <e@f>,
     91 .br
     92         random group: g@h, i@j;, k@l
     93 .EE
     94 
     95 An
     96 .I address group
     97 has some text, a colon, a list of addresses,
     98 and a semicolon:
     99 
    100 .EX
    101         random group: g@h, i@j;
    102 .EE
    103 
    104 An address can appear in several forms.
    105 The most common form is
    106 .IR box@host .
    107 
    108 Every address must include a host name.
    109 If
    110 .B qmail-inject
    111 sees a lone box name
    112 it adds the
    113 .I default host name\fR.
    114 
    115 All host names should be fully qualified.
    116 .B qmail-inject
    117 appends the
    118 .I default domain name
    119 to any name without dots:
    120 
    121 .EX
    122      djb@silverton  ->  djb@silverton.berkeley.edu
    123 .EE
    124 
    125 It appends the
    126 .I plus domain name
    127 to any name
    128 that ends with a plus sign:
    129 
    130 .EX
    131      eric@mammoth.cs+  ->  eric@mammoth.cs.berkeley.edu
    132 .EE
    133 
    134 A host name may be a dotted-decimal address:
    135 
    136 .EX
    137      djb@[128.32.183.163]
    138 .EE
    139 
    140 RFC 822 allows mailbox names inside angle brackets
    141 to include
    142 .I source routes\fR,
    143 but
    144 .B qmail-inject
    145 strips all source routes out of addresses.
    146 .SH "SENDER ADDRESSES"
    147 .B qmail-inject
    148 looks for sender address lists in the following fields:
    149 .BR Sender ,
    150 .BR From ,
    151 .BR Reply-To ,
    152 .BR Return-Path ,
    153 .BR Return-Receipt-To ,
    154 .BR Errors-To ,
    155 .BR Resent-Sender ,
    156 .BR Resent-From ,
    157 .BR Resent-Reply-To .
    158 
    159 If there is no
    160 .B From
    161 field,
    162 .B qmail-inject
    163 adds a new
    164 .B From
    165 field with the name of the user invoking
    166 .B qmail-inject.
    167 
    168 RFC 822 requires that certain sender fields contain
    169 only a single address, but
    170 .B qmail-inject
    171 does not enforce this restriction.
    172 .SH "RECIPIENT ADDRESSES"
    173 .B qmail-inject
    174 looks for recipient address lists in the following fields:
    175 .BR To ,
    176 .BR Cc ,
    177 .BR Bcc ,
    178 .BR Apparently-To ,
    179 .BR Resent-To ,
    180 .BR Resent-Cc ,
    181 .BR Resent-Bcc .
    182 
    183 Every message must contain at least one
    184 .B To
    185 or
    186 .B Cc
    187 or
    188 .BR Bcc .
    189 .B qmail-inject
    190 deletes any
    191 .B Bcc
    192 field.
    193 If there is no
    194 .B To
    195 or
    196 .B Cc
    197 field,
    198 .B qmail-inject
    199 adds a line
    200 
    201 .EX
    202      Cc: recipient list not shown: ;
    203 .EE
    204 
    205 This complies with RFC 822;
    206 it also works around some strange
    207 .B sendmail
    208 behavior, in case the message is passed through
    209 .B sendmail
    210 on another machine.
    211 .SH STAMPS
    212 Every message must contain a
    213 .B Date
    214 field, with the date in a strict format defined by RFC 822.
    215 If necessary
    216 .B qmail-inject
    217 creates a new
    218 .B Date
    219 field with the current date (in GMT).
    220 
    221 Every message should contain a
    222 .B Message-Id
    223 field.
    224 The field contents are a unique worldwide identifier for this message.
    225 If necessary
    226 .B qmail-inject
    227 creates a new
    228 .B Message-Id
    229 field.
    230 
    231 Another important field is
    232 .BR Received .
    233 Every time the message is sent from one system to another,
    234 a new
    235 .B Received
    236 field is added to the top of the message.
    237 .B qmail-inject
    238 does not create any
    239 .B Received
    240 fields.
    241 .SH "RESENT MESSAGES"
    242 A message is
    243 .I resent
    244 if it contains any of the following fields:
    245 .BR Resent-Sender ,
    246 .BR Resent-From ,
    247 .BR Resent-Reply-To ,
    248 .BR Resent-To ,
    249 .BR Resent-Cc ,
    250 .BR Resent-Bcc ,
    251 .BR Resent-Date ,
    252 .BR Resent-Message-ID .
    253 
    254 If a message is resent,
    255 .B qmail-inject
    256 changes its behavior as follows.
    257 
    258 It deletes any
    259 .B Resent-Bcc
    260 field (as well as any
    261 .B Bcc
    262 field);
    263 if there are no
    264 .B Resent-To
    265 or
    266 .B Resent-Cc
    267 fields,
    268 .B qmail-inject
    269 adds an appropriate
    270 .B Resent-Cc
    271 line.
    272 It does
    273 .I not
    274 add a
    275 .B Cc
    276 line,
    277 even if neither
    278 .B To
    279 nor
    280 .B Cc
    281 is present.
    282 
    283 If there is no
    284 .B Resent-From
    285 field,
    286 .B qmail-inject
    287 adds a new
    288 .B Resent-From
    289 field.
    290 It does
    291 .I not
    292 add a new
    293 .B From
    294 field.
    295 
    296 .B qmail-inject
    297 adds
    298 .B Resent-Date
    299 if one is not already present;
    300 same for
    301 .BR Resent-Message-Id .
    302 It does
    303 .I not
    304 add new
    305 .B Date
    306 or
    307 .B Message-Id
    308 fields.
    309 .SH "OTHER FEATURES"
    310 Addresses are separated by commas, not spaces.
    311 When
    312 .B qmail-inject
    313 sees an illegal space,
    314 it inserts a comma:
    315 
    316 .EX
    317      djb fred  ->  djb, fred
    318 .EE
    319 
    320 .B qmail-inject
    321 removes all
    322 .B Return-Path
    323 header fields.
    324 
    325 .B qmail-inject
    326 also removes any
    327 .B Content-Length
    328 fields.
    329 .SH "SEE ALSO"
    330 addresses(5),
    331 envelopes(5),
    332 qmail-inject(8)