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)