Commit | Line | Data |
---|---|---|
906fdf05 | 1 | .\" Copyright (c) 1983 Eric P. Allman |
2c57334f KB |
2 | .\" Copyright (c) 1988 The Regents of the University of California. |
3 | .\" All rights reserved. | |
906fdf05 | 4 | .\" |
ff262511 | 5 | .\" %sccs.include.redist.roff% |
906fdf05 | 6 | .\" |
ff262511 | 7 | .\" @(#)intro.me 6.5 (Berkeley) %G% |
906fdf05 | 8 | .\" |
13c6ffb1 | 9 | .\" pic -Pxx intro.me | ditroff -me -Pxx |
bc431e5e KD |
10 | .eh 'SMM:16-%''SENDMAIL \*- An Internetwork Mail Router' |
11 | .oh 'SENDMAIL \*- An Internetwork Mail Router''SMM:16-%' | |
7f667328 | 12 | .nr si 3n |
74b6e641 | 13 | .if n .ls 2 |
64dbe651 EA |
14 | .+c |
15 | .(l C | |
d5bda243 | 16 | .sz 14 |
fbbba053 | 17 | SENDMAIL \*- An Internetwork Mail Router |
64dbe651 EA |
18 | .sz |
19 | .sp | |
fe65cf0c | 20 | Eric Allman\(dg |
d5bda243 | 21 | .sp 0.5 |
64dbe651 | 22 | .i |
d754edf0 EA |
23 | University of California, Berkeley |
24 | Mammoth Project | |
64dbe651 | 25 | .)l |
fbbba053 EA |
26 | .sp |
27 | .(l F | |
28 | .ce | |
29 | ABSTRACT | |
1c9783dc | 30 | .sp \n(psu |
fbbba053 EA |
31 | Routing mail through a heterogenous internet presents many new |
32 | problems. Among the worst of these is that of address mapping. | |
37a260a5 EA |
33 | Historically, this has been handled on an |
34 | .i "ad hoc" | |
35 | basis. However, | |
fbbba053 | 36 | this approach has become unmanageable as internets grow. |
1c9783dc | 37 | .sp \n(psu |
fbbba053 EA |
38 | Sendmail acts a unified "post office" to which all mail can be |
39 | submitted. Address interpretation is controlled by a production | |
40 | system, which can parse both domain-based addressing and old-style | |
37a260a5 EA |
41 | .i "ad hoc" |
42 | addresses. | |
1c9783dc | 43 | The production system is powerful |
fbbba053 EA |
44 | enough to rewrite addresses in the message header to conform to the |
45 | standards of a number of common target networks, including old | |
46 | (NCP/RFC733) Arpanet, new (TCP/RFC822) Arpanet, UUCP, and Phonenet. | |
1c9783dc | 47 | Sendmail also implements an SMTP server, message |
fbbba053 | 48 | queueing, and aliasing. |
fbbba053 | 49 | .)l |
d5bda243 | 50 | .sp 2 |
64dbe651 | 51 | .(f |
1c9783dc EA |
52 | \(dgA considerable part of this work |
53 | was done while under the employ | |
54 | of the INGRES Project | |
d754edf0 EA |
55 | at the University of California at Berkeley |
56 | and at Britton Lee. | |
fe65cf0c | 57 | .)f |
64dbe651 EA |
58 | .pp |
59 | .i Sendmail | |
d5bda243 EA |
60 | implements a general internetwork mail routing facility, |
61 | featuring aliasing and forwarding, | |
64dbe651 EA |
62 | automatic routing to network gateways, |
63 | and flexible configuration. | |
64 | .pp | |
fbbba053 EA |
65 | In a simple network, |
66 | each node has an address, | |
67 | and resources can be identified | |
7fa298c9 EA |
68 | with a host-resource pair; |
69 | in particular, | |
fbbba053 | 70 | the mail system can refer to users |
7fa298c9 | 71 | using a host-username pair. |
fbbba053 EA |
72 | Host names and numbers have to be administered by a central authority, |
73 | but usernames can be assigned locally to each host. | |
74 | .pp | |
75 | In an internet, | |
1c9783dc EA |
76 | multiple networks with different characterstics |
77 | and managements | |
dccb3105 | 78 | must communicate. |
fbbba053 EA |
79 | In particular, |
80 | the syntax and semantics of resource identification change. | |
81 | Certain special cases can be handled trivially | |
37a260a5 EA |
82 | by |
83 | .i "ad hoc" | |
84 | techniques, | |
fbbba053 EA |
85 | such as |
86 | providing network names that appear local to hosts | |
7fa298c9 | 87 | on other networks, |
01e97e73 | 88 | as with the Ethernet at Xerox PARC. |
fbbba053 EA |
89 | However, the general case is extremely complex. |
90 | For example, | |
91 | some networks require point-to-point routing, | |
7fa298c9 EA |
92 | which simplifies the database update problem |
93 | since only adjacent hosts must be entered | |
94 | into the system tables, | |
fbbba053 EA |
95 | while others use end-to-end addressing. |
96 | Some networks use a left-associative syntax | |
97 | and others use a right-associative syntax, | |
1c9783dc | 98 | causing ambiguity in mixed addresses. |
7fa298c9 | 99 | .pp |
1c9783dc | 100 | Internet standards seek to eliminate these problems. |
fbbba053 | 101 | Initially, these proposed expanding the address pairs |
7fa298c9 | 102 | to address triples, |
fbbba053 EA |
103 | consisting of |
104 | {network, host, resource} | |
105 | triples. | |
1c9783dc | 106 | Network numbers must be universally agreed upon, |
fbbba053 | 107 | and hosts can be assigned locally |
7fa298c9 | 108 | on each network. |
37a260a5 | 109 | The user-level presentation was quickly expanded |
fbbba053 EA |
110 | to address domains, |
111 | comprised of a local resource identification | |
112 | and a hierarchical domain specification | |
113 | with a common static root. | |
114 | The domain technique | |
115 | separates the issue of physical versus logical addressing. | |
116 | For example, | |
117 | an address of the form | |
118 | .q "eric@a.cc.berkeley.arpa" | |
119 | describes only the logical | |
1c9783dc | 120 | organization of the address space. |
7fa298c9 EA |
121 | .pp |
122 | .i Sendmail | |
123 | is intended to help bridge the gap | |
37a260a5 EA |
124 | between the totally |
125 | .i "ad hoc" | |
126 | world | |
7fa298c9 EA |
127 | of networks that know nothing of each other |
128 | and the clean, tightly-coupled world | |
129 | of unique network numbers. | |
fbbba053 EA |
130 | It can accept old arbitrary address syntaxes, |
131 | resolving ambiguities using heuristics | |
132 | specified by the system administrator, | |
133 | as well as domain-based addressing. | |
7fa298c9 EA |
134 | It helps guide the conversion of message formats |
135 | between disparate networks. | |
136 | In short, | |
137 | .i sendmail | |
fbbba053 EA |
138 | is designed to assist a graceful transition |
139 | to consistent internetwork addressing schemes. | |
7fa298c9 EA |
140 | .sp |
141 | .pp | |
64dbe651 EA |
142 | Section 1 discusses the design goals for |
143 | .i sendmail . | |
144 | Section 2 gives an overview of the basic functions of the system. | |
145 | In section 3, | |
146 | details of usage are discussed. | |
fbbba053 | 147 | Section 4 compares |
64dbe651 EA |
148 | .i sendmail |
149 | to other internet mail routers, | |
150 | and an evaluation of | |
151 | .i sendmail | |
fbbba053 | 152 | is given in section 5, |
64dbe651 EA |
153 | including future plans. |
154 | .sh 1 "DESIGN GOALS" | |
155 | .pp | |
64dbe651 | 156 | Design goals for |
fbbba053 EA |
157 | .i sendmail |
158 | include: | |
64dbe651 | 159 | .np |
37a260a5 | 160 | Compatibility with the existing mail programs, |
64dbe651 | 161 | including Bell version 6 mail, |
d5bda243 | 162 | Bell version 7 mail |
01e97e73 | 163 | [UNIX83], |
d5bda243 EA |
164 | Berkeley |
165 | .i Mail | |
0e2142c8 | 166 | [Shoens79], |
48cec4c6 | 167 | BerkNet mail |
ce4c8997 | 168 | [Schmidt79], |
48cec4c6 | 169 | and hopefully UUCP mail |
7f667328 | 170 | [Nowitz78a, Nowitz78b]. |
48cec4c6 | 171 | ARPANET mail |
7f667328 | 172 | [Crocker77a, Postel77] |
b7e67727 | 173 | was also required. |
64dbe651 | 174 | .np |
b7e67727 EA |
175 | Reliability, in the sense of guaranteeing |
176 | that every message is correctly delivered | |
177 | or at least brought to the attention of a human | |
178 | for correct disposal; | |
179 | no message should ever be completely lost. | |
37a260a5 | 180 | This goal was considered essential |
64dbe651 | 181 | because of the emphasis on mail in our environment. |
37a260a5 | 182 | It has turned out to be one of the hardest goals to satisfy, |
64dbe651 EA |
183 | especially in the face of the many anomalous message formats |
184 | produced by various ARPANET sites. | |
185 | For example, | |
37a260a5 EA |
186 | certain sites generate improperly formated addresses, |
187 | occasionally | |
188 | causing error-message loops. | |
b7e67727 | 189 | Some hosts use blanks in names, |
37a260a5 | 190 | causing problems with |
b7e67727 | 191 | UNIX mail programs that assume that an address |
64dbe651 | 192 | is one word. |
fbbba053 EA |
193 | The semantics of some fields |
194 | are interpreted slightly differently | |
195 | by different sites. | |
64dbe651 | 196 | In summary, |
37a260a5 | 197 | the obscure features of the ARPANET mail protocol |
d5bda243 EA |
198 | really |
199 | .i are | |
200 | used and | |
64dbe651 EA |
201 | are difficult to support, |
202 | but must be supported. | |
d5bda243 EA |
203 | .np |
204 | Existing software to do actual delivery | |
205 | should be used whenever possible. | |
37a260a5 | 206 | This goal derives as much from political and practical considerations |
d5bda243 | 207 | as technical. |
64dbe651 | 208 | .np |
1c9783dc EA |
209 | Easy expansion to |
210 | fairly complex environments, | |
64dbe651 | 211 | including multiple |
48cec4c6 | 212 | connections to a single network type |
d5bda243 | 213 | (such as with multiple UUCP or Ether nets |
1c9783dc | 214 | [Metcalfe76]). |
37a260a5 EA |
215 | This goal requires consideration of the contents of an address |
216 | as well as its syntax | |
217 | in order to determine which gateway to use. | |
b7e67727 | 218 | For example, |
fbbba053 EA |
219 | the ARPANET is bringing up the |
220 | TCP protocol to replace the old NCP protocol. | |
b7e67727 EA |
221 | No host at Berkeley runs both TCP and NCP, |
222 | so it is necessary to look at the ARPANET host name | |
223 | to determine whether to route mail to an NCP gateway | |
224 | or a TCP gateway. | |
64dbe651 EA |
225 | .np |
226 | Configuration should not be compiled into the code. | |
37a260a5 EA |
227 | A single compiled program should be able to run as is at any site |
228 | (barring such basic changes as the CPU type or the operating system). | |
48cec4c6 | 229 | We have found this seemingly unimportant goal |
64dbe651 | 230 | to be critical in real life. |
48cec4c6 EA |
231 | Besides the simple problems that occur when any program gets recompiled |
232 | in a different environment, | |
233 | many sites like to | |
234 | .q fiddle | |
235 | with anything that they will be recompiling anyway. | |
64dbe651 | 236 | .np |
fbbba053 | 237 | .i Sendmail |
64dbe651 | 238 | must be able to let various groups maintain their own mailing lists, |
b7e67727 | 239 | and let individuals specify their own forwarding, |
37a260a5 | 240 | without modifying the system alias file. |
64dbe651 | 241 | .np |
37a260a5 EA |
242 | Each user should be able to specify which mailer to execute |
243 | to process mail being delivered for him. | |
244 | This feature allows users who are using specialized mailers | |
245 | that use a different format to build their environment | |
48cec4c6 | 246 | without changing the system, |
37a260a5 | 247 | and facilitates specialized functions |
48cec4c6 EA |
248 | (such as returning an |
249 | .q "I am on vacation" | |
250 | message). | |
64dbe651 EA |
251 | .np |
252 | Network traffic should be minimized | |
253 | by batching addresses to a single host where possible, | |
37a260a5 | 254 | without assistance from the user. |
fbbba053 | 255 | .pp |
37a260a5 | 256 | These goals motivated the architecture illustrated in figure 1. |
fbbba053 EA |
257 | .(z |
258 | .hl | |
259 | .ie t \ | |
13c6ffb1 EA |
260 | \{\ |
261 | .ie !"\*(.T"" \ | |
262 | \{\ | |
263 | .PS | |
264 | boxht = 0.5i | |
265 | boxwid = 1.0i | |
266 | ||
267 | down | |
268 | S: [ | |
269 | right | |
270 | S1: box "sender1" | |
271 | move | |
272 | box "sender2" | |
273 | move | |
274 | S3: box "sender3" | |
275 | ] | |
276 | arrow | |
277 | SM: box "sendmail" wid 2i ht boxht | |
278 | arrow | |
279 | M: [ | |
280 | right | |
281 | M1: box "mailer1" | |
282 | move | |
283 | box "mailer2" | |
284 | move | |
285 | M3: box "mailer3" | |
286 | ] | |
287 | ||
288 | arrow from S.S1.s to 1/2 between SM.nw and SM.n | |
289 | arrow from S.S3.s to 1/2 between SM.n and SM.ne | |
290 | ||
291 | arrow from 1/2 between SM.sw and SM.s to M.M1.n | |
292 | arrow from 1/2 between SM.s and SM.se to M.M3.n | |
293 | .PE | |
294 | .\} | |
295 | .el \ | |
fbbba053 | 296 | . sp 18 |
13c6ffb1 | 297 | .\} |
fbbba053 EA |
298 | .el \{\ |
299 | .(c | |
300 | +---------+ +---------+ +---------+ | |
301 | | sender1 | | sender2 | | sender3 | | |
302 | +---------+ +---------+ +---------+ | |
303 | | | | | |
304 | +----------+ + +----------+ | |
305 | | | | | |
306 | v v v | |
307 | +-------------+ | |
308 | | sendmail | | |
309 | +-------------+ | |
310 | | | | | |
311 | +----------+ + +----------+ | |
312 | | | | | |
313 | v v v | |
314 | +---------+ +---------+ +---------+ | |
315 | | mailer1 | | mailer2 | | mailer3 | | |
316 | +---------+ +---------+ +---------+ | |
317 | .)c | |
318 | .\} | |
319 | ||
320 | .ce | |
321 | Figure 1 \*- Sendmail System Structure. | |
322 | .hl | |
323 | .)z | |
324 | The user interacts with a mail generating and sending program. | |
325 | When the mail is created, | |
326 | the generator calls | |
327 | .i sendmail , | |
328 | which routes the message to the correct mailer(s). | |
329 | Since some of the senders may be network servers | |
330 | and some of the mailers may be network clients, | |
331 | .i sendmail | |
332 | may be used as an internet mail gateway. | |
64dbe651 EA |
333 | .sh 1 "OVERVIEW" |
334 | .sh 2 "System Organization" | |
335 | .pp | |
336 | .i Sendmail | |
337 | neither interfaces with the user | |
338 | nor does actual mail delivery. | |
339 | Rather, | |
340 | it collects a message | |
48cec4c6 | 341 | generated by a user interface program (UIP) |
7f667328 | 342 | such as Berkeley |
d5bda243 | 343 | .i Mail , |
7f667328 EA |
344 | MS |
345 | [Crocker77b], | |
346 | or MH | |
0e2142c8 | 347 | [Borden79], |
d5bda243 | 348 | edits the message as required by the destination network, |
64dbe651 | 349 | and calls appropriate mailers |
b7e67727 EA |
350 | to do mail delivery or queueing for network transmission\**. |
351 | .(f | |
352 | \**except when mailing to a file, | |
353 | when | |
354 | .i sendmail | |
355 | does the delivery directly. | |
356 | .)f | |
64dbe651 EA |
357 | This discipline allows the insertion of new mailers |
358 | at minimum cost. | |
d5bda243 EA |
359 | In this sense |
360 | .i sendmail | |
361 | resembles the Message Processing Module (MPM) | |
7f667328 | 362 | of [Postel79b]. |
fbbba053 EA |
363 | .sh 2 "Interfaces to the Outside World" |
364 | .pp | |
365 | There are three ways | |
366 | .i sendmail | |
367 | can communicate with the outside world, | |
368 | both in receiving and in sending mail. | |
369 | These are using the conventional UNIX | |
370 | argument vector/return status, | |
371 | speaking SMTP over a pair of UNIX pipes, | |
372 | and speaking SMTP over an interprocess(or) channel. | |
373 | .sh 3 "Argument vector/exit status" | |
374 | .pp | |
375 | This technique is the standard UNIX method | |
376 | for communicating with the process. | |
37a260a5 EA |
377 | A list of recipients is sent in the argument vector, |
378 | and the message body is sent on the standard input. | |
fbbba053 | 379 | Anything that the mailer prints |
37a260a5 | 380 | is simply collected and sent back to the sender |
fbbba053 EA |
381 | if there were any problems. |
382 | The exit status from the mailer is collected | |
383 | after the message is sent, | |
384 | and a diagnostic is printed if appropriate. | |
385 | .sh 3 "SMTP over pipes" | |
386 | .pp | |
387 | The SMTP protocol | |
388 | [Postel82] | |
389 | can be used to run an interactive lock-step interface | |
390 | with the mailer. | |
391 | A subprocess is still created, | |
37a260a5 | 392 | but no recipient addresses are passed to the mailer |
dccb3105 | 393 | via the argument list. |
fbbba053 EA |
394 | Instead, they are passed one at a time |
395 | in commands sent to the processes standard input. | |
396 | Anything appearing on the standard output | |
397 | must be a reply code | |
398 | in a special format. | |
399 | .sh 3 "SMTP over an IPC connection" | |
400 | .pp | |
37a260a5 | 401 | This technique is similar to the previous technique, |
fbbba053 | 402 | except that it uses a 4.2bsd IPC channel |
01e97e73 | 403 | [UNIX83]. |
fbbba053 EA |
404 | This method is exceptionally flexible |
405 | in that the mailer need not reside | |
406 | on the same machine. | |
37a260a5 | 407 | It is normally used to connect to a sendmail process |
fbbba053 | 408 | on another machine. |
64dbe651 | 409 | .sh 2 "Operational Description" |
b7e67727 | 410 | .pp |
37a260a5 | 411 | When a sender wants to send a message, |
fbbba053 EA |
412 | it issues a request to |
413 | .i sendmail | |
414 | using one of the three methods described above. | |
b7e67727 | 415 | .i Sendmail |
fbbba053 EA |
416 | operates in two distinct phases. |
417 | In the first phase, | |
418 | it collects and stores the message. | |
419 | In the second phase, | |
420 | message delivery occurs. | |
37a260a5 EA |
421 | If there were errors during processing |
422 | during the second phase, | |
fbbba053 EA |
423 | .i sendmail |
424 | creates and returns a new message describing the error | |
425 | and/or returns an status code | |
426 | telling what went wrong. | |
64dbe651 EA |
427 | .sh 3 "Argument processing and address parsing" |
428 | .pp | |
fbbba053 | 429 | If |
fe65cf0c | 430 | .i sendmail |
fbbba053 EA |
431 | is called using one of the two subprocess techniques, |
432 | the arguments | |
dccb3105 | 433 | are first scanned |
37a260a5 | 434 | and option specifications are processed. |
fbbba053 EA |
435 | Recipient addresses are then collected, |
436 | either from the command line | |
437 | or from the SMTP | |
438 | RCPT command, | |
64dbe651 | 439 | and a list of recipients is created. |
37a260a5 EA |
440 | Aliases are expanded at this step, |
441 | including mailing lists. | |
fe65cf0c | 442 | As much validation as possible of the addresses |
d5bda243 EA |
443 | is done at this step: |
444 | syntax is checked, and local addresses are verified, | |
64dbe651 | 445 | but detailed checking of host names and addresses |
d5bda243 EA |
446 | is deferred until delivery. |
447 | Forwarding is also performed | |
64dbe651 EA |
448 | as the local addresses are verified. |
449 | .pp | |
d5bda243 EA |
450 | .i Sendmail |
451 | appends each address | |
452 | to the recipient list after parsing. | |
64dbe651 | 453 | When a name is aliased or forwarded, |
d5bda243 | 454 | the old name is retained in the list, |
fbbba053 | 455 | and a flag is set that tells the delivery phase |
d5bda243 | 456 | to ignore this recipient. |
37a260a5 | 457 | This list is kept free from duplicates, |
64dbe651 | 458 | preventing alias loops |
37a260a5 EA |
459 | and duplicate messages deliverd to the same recipient, |
460 | as might occur if a person is in two groups. | |
64dbe651 EA |
461 | .sh 3 "Message collection" |
462 | .pp | |
d5bda243 | 463 | .i Sendmail |
fbbba053 EA |
464 | then collects the message. |
465 | The message should have a header at the beginning. | |
466 | No formatting requirements are imposed on the message | |
467 | except that they must be lines of text | |
468 | (i.e., binary data is not allowed). | |
469 | The header is parsed and stored in memory, | |
64dbe651 | 470 | and the body of the message is saved |
48cec4c6 | 471 | in a temporary file. |
64dbe651 | 472 | .pp |
37a260a5 EA |
473 | To simplify the program interface, |
474 | the message is collected even if no addresses were valid. | |
64dbe651 EA |
475 | The message will be returned with an error. |
476 | .sh 3 "Message delivery" | |
477 | .pp | |
37a260a5 | 478 | For each unique mailer and host in the recipient list, |
d5bda243 EA |
479 | .i sendmail |
480 | calls the appropriate mailer. | |
b7e67727 | 481 | Each mailer invocation sends to all users receiving the message on one host. |
37a260a5 | 482 | Mailers that only accept one recipient at a time |
64dbe651 EA |
483 | are handled properly. |
484 | .pp | |
d5bda243 | 485 | The message is sent to the mailer |
fbbba053 EA |
486 | using one of the same three interfaces |
487 | used to submit a message to sendmail. | |
37a260a5 | 488 | Each copy of the message is |
64dbe651 | 489 | prepended by a customized header. |
fbbba053 | 490 | The mailer status code is caught and checked, |
64dbe651 EA |
491 | and a suitable error message given as appropriate. |
492 | The exit code must conform to a system standard | |
37a260a5 | 493 | or a generic message |
64dbe651 EA |
494 | (\c |
495 | .q "Service unavailable" ) | |
496 | is given. | |
fe65cf0c EA |
497 | .sh 3 "Queueing for retransmission" |
498 | .pp | |
fbbba053 | 499 | If the mailer returned an status that |
fe65cf0c EA |
500 | indicated that it might be able to handle the mail later, |
501 | .i sendmail | |
502 | will queue the mail and try again later. | |
64dbe651 EA |
503 | .sh 3 "Return to sender" |
504 | .pp | |
37a260a5 | 505 | If errors occur during processing, |
d5bda243 EA |
506 | .i sendmail |
507 | returns the message to the sender for retransmission. | |
64dbe651 EA |
508 | The letter can be mailed back |
509 | or written in the file | |
510 | .q dead.letter | |
48cec4c6 EA |
511 | in the sender's home directory\**. |
512 | .(f | |
513 | \**Obviously, if the site giving the error is not the originating | |
514 | site, the only reasonable option is to mail back to the sender. | |
515 | Also, there are many more error disposition options, | |
516 | but they only effect the error message \*- the | |
517 | .q "return to sender" | |
518 | function is always handled in one of these two ways. | |
519 | .)f | |
1c9783dc EA |
520 | .sh 2 "Message Header Editing" |
521 | .pp | |
522 | Certain editing of the message header | |
523 | occurs automatically. | |
524 | Header lines can be inserted | |
525 | under control of the configuration file. | |
526 | Some lines can be merged; | |
527 | for example, | |
528 | a | |
529 | .q From: | |
530 | line and a | |
531 | .q Full-name: | |
532 | line can be merged under certain circumstances. | |
64dbe651 EA |
533 | .sh 2 "Configuration File" |
534 | .pp | |
535 | Almost all configuration information is read at runtime | |
d5bda243 EA |
536 | from an ASCII file, |
537 | encoding | |
b7e67727 EA |
538 | macro definitions |
539 | (defining the value of macros used internally), | |
540 | header declarations | |
541 | (telling sendmail the format of header lines that it will process specially, | |
542 | i.e., lines that it will add or reformat), | |
543 | mailer definitions | |
544 | (giving information such as the location and characteristics | |
545 | of each mailer), | |
546 | and address rewriting rules | |
547 | (a limited production system to rewrite addresses | |
1c9783dc | 548 | which is used to parse and rewrite the addresses). |
2fb78b49 EA |
549 | .pp |
550 | To improve performance when reading the configuration file, | |
551 | a memory image can be provided. | |
552 | This provides a | |
553 | .q compiled | |
554 | form of the configuration file. | |
48cec4c6 | 555 | .sh 1 "USAGE AND IMPLEMENTATION" |
64dbe651 EA |
556 | .sh 2 "Arguments" |
557 | .pp | |
7f667328 | 558 | Arguments may be flags and addresses. |
fbbba053 | 559 | Flags set various processing options. |
64dbe651 | 560 | Following flag arguments, |
fe65cf0c EA |
561 | address arguments may be given, |
562 | unless we are running in SMTP mode. | |
37a260a5 | 563 | Addresses follow the syntax in RFC822 |
fbbba053 | 564 | [Crocker82] |
64dbe651 EA |
565 | for ARPANET |
566 | address formats. | |
567 | In brief, the format is: | |
568 | .np | |
569 | Anything in parentheses is thrown away | |
570 | (as a comment). | |
571 | .np | |
b7e67727 | 572 | Anything in angle brackets (\c |
74b6e641 | 573 | .q "<\|>" ) |
b7e67727 | 574 | is preferred |
64dbe651 | 575 | over anything else. |
37a260a5 | 576 | This rule implements the ARPANET standard that addresses of the form |
b7e67727 | 577 | .(b |
fbbba053 | 578 | user name <machine-address> |
b7e67727 EA |
579 | .)b |
580 | will send to the electronic | |
581 | .q machine-address | |
582 | rather than the human | |
fbbba053 | 583 | .q "user name." |
64dbe651 EA |
584 | .np |
585 | Double quotes | |
586 | (\ "\ ) | |
587 | quote phrases; | |
588 | backslashes quote characters. | |
fe65cf0c EA |
589 | Backslashes are more powerful |
590 | in that they will cause otherwise equivalent phrases | |
591 | to compare differently \*- for example, | |
64dbe651 EA |
592 | .i user |
593 | and | |
594 | .i | |
595 | "user" | |
596 | .r | |
597 | are equivalent, | |
598 | but | |
599 | .i \euser | |
600 | is different from either of them. | |
64dbe651 | 601 | .pp |
64dbe651 EA |
602 | Parentheses, angle brackets, and double quotes |
603 | must be properly balanced and nested. | |
1c9783dc EA |
604 | The rewriting rules control remaining parsing\**. |
605 | .(f | |
37a260a5 | 606 | \**Disclaimer: Some special processing is done |
1c9783dc EA |
607 | after rewriting local names; see below. |
608 | .)f | |
7f667328 EA |
609 | .sh 2 "Mail to Files and Programs" |
610 | .pp | |
d5bda243 EA |
611 | Files and programs are legitimate message recipients. |
612 | Files provide archival storage of messages, | |
7f667328 EA |
613 | useful for project administration and history. |
614 | Programs are useful as recipients in a variety of situations, | |
615 | for example, | |
37a260a5 | 616 | to maintain a public repository of systems messages |
7f667328 EA |
617 | (such as the Berkeley |
618 | .i msgs | |
619 | program, | |
620 | or the MARS system | |
621 | [Sattley78]). | |
622 | .pp | |
d5bda243 | 623 | Any address passing through the initial parsing algorithm |
7f667328 | 624 | as a local address |
d5bda243 | 625 | (i.e, not appearing to be a valid address for another mailer) |
7f667328 | 626 | is scanned for two special cases. |
d5bda243 | 627 | If prefixed by a vertical bar (\c |
7f667328 EA |
628 | .q \^|\^ ) |
629 | the rest of the address is processed as a shell command. | |
a56399d5 | 630 | If the user name begins with a slash mark (\c |
7f667328 EA |
631 | .q /\^ ) |
632 | the name is used as a file name, | |
633 | instead of a login name. | |
0e2142c8 EA |
634 | .pp |
635 | Files that have setuid or setgid bits set | |
636 | but no execute bits set | |
637 | have those bits honored if | |
638 | .i sendmail | |
639 | is running as root. | |
64dbe651 EA |
640 | .sh 2 "Aliasing, Forwarding, Inclusion" |
641 | .pp | |
642 | .i Sendmail | |
d5bda243 | 643 | reroutes mail three ways. |
64dbe651 EA |
644 | Aliasing applies system wide. |
645 | Forwarding allows each user to reroute incoming mail | |
646 | destined for that account. | |
647 | Inclusion directs | |
648 | .i sendmail | |
649 | to read a file for a list of addresses, | |
d5bda243 | 650 | and is normally used |
64dbe651 EA |
651 | in conjunction with aliasing. |
652 | .sh 3 "Aliasing" | |
653 | .pp | |
d5bda243 | 654 | Aliasing maps names to address lists using a system-wide file. |
37a260a5 | 655 | This file is indexed to speed access. |
d5bda243 | 656 | Only names that parse as local |
64dbe651 | 657 | are allowed as aliases; |
37a260a5 EA |
658 | this guarantees a unique key |
659 | (since there are no nicknames for the local host). | |
64dbe651 EA |
660 | .sh 3 "Forwarding" |
661 | .pp | |
662 | After aliasing, | |
37a260a5 | 663 | recipients that are local and valid |
64dbe651 EA |
664 | are checked for the existence of a |
665 | .q .forward | |
666 | file in their home directory. | |
667 | If it exists, | |
668 | the message is | |
669 | .i not | |
670 | sent to that user, | |
671 | but rather to the list of users in that file. | |
37a260a5 EA |
672 | Often |
673 | this list will contain only one address, | |
674 | and the feature will be used for network mail forwarding. | |
64dbe651 EA |
675 | .pp |
676 | Forwarding also permits a user to specify a private incoming mailer. | |
677 | For example, | |
678 | forwarding to: | |
679 | .(b | |
680 | "\^|\|/usr/local/newmail myname" | |
681 | .)b | |
682 | will use a different incoming mailer. | |
683 | .sh 3 "Inclusion" | |
684 | .pp | |
fbbba053 | 685 | Inclusion is specified in RFC 733 [Crocker77a] syntax: |
64dbe651 EA |
686 | .(b |
687 | :Include: pathname | |
688 | .)b | |
689 | An address of this form reads the file specified by | |
690 | .i pathname | |
691 | and sends to all users listed in that file. | |
692 | .pp | |
693 | The intent is | |
694 | .i not | |
695 | to support direct use of this feature, | |
696 | but rather to use this as a subset of aliasing. | |
697 | For example, | |
698 | an alias of the form: | |
699 | .(b | |
700 | project: :include:/usr/project/userlist | |
701 | .)b | |
702 | is a method of letting a project maintain a mailing list | |
703 | without interaction with the system administration, | |
704 | even if the alias file is protected. | |
705 | .pp | |
2fb78b49 | 706 | It is not necessary to rebuild the index on the alias database |
64dbe651 | 707 | when a :include: list is changed. |
fbbba053 EA |
708 | .sh 2 "Message Collection" |
709 | .pp | |
37a260a5 | 710 | Once all recipient addresses are parsed and verified, |
1c9783dc | 711 | the message is collected. |
fbbba053 EA |
712 | The message comes in two parts: |
713 | a message header and a message body, | |
714 | separated by a blank line. | |
715 | .pp | |
716 | The header is formatted as a series of lines | |
717 | of the form | |
718 | .(b | |
37a260a5 | 719 | field-name: field-value |
fbbba053 EA |
720 | .)b |
721 | Field-value can be split across lines by starting the following | |
722 | lines with a space or a tab. | |
37a260a5 | 723 | Some header fields have special internal meaning, |
fbbba053 EA |
724 | and have appropriate special processing. |
725 | Other headers are simply passed through. | |
726 | Some header fields may be added automatically, | |
727 | such as time stamps. | |
728 | .pp | |
729 | The body is a series of text lines. | |
730 | It is completely uninterpreted and untouched, | |
731 | except that lines beginning with a dot | |
732 | have the dot doubled | |
733 | when transmitted over an SMTP channel. | |
1c9783dc | 734 | This extra dot is stripped by the receiver. |
0e2142c8 EA |
735 | .sh 2 "Message Delivery" |
736 | .pp | |
fbbba053 EA |
737 | The send queue is ordered by receiving host |
738 | before transmission | |
739 | to implement message batching. | |
37a260a5 EA |
740 | Each address is marked as it is sent |
741 | so rescanning the list is safe. | |
0e2142c8 EA |
742 | An argument list is built as the scan proceeds. |
743 | Mail to files is detected during the scan of the send list. | |
fbbba053 EA |
744 | The interface to the mailer |
745 | is performed using one of the techniques | |
1c9783dc | 746 | described in section 2.2. |
0e2142c8 | 747 | .pp |
37a260a5 | 748 | After a connection is established, |
0e2142c8 | 749 | .i sendmail |
fbbba053 EA |
750 | makes the per-mailer changes to the header |
751 | and sends the result to the mailer. | |
0e2142c8 EA |
752 | If any mail is rejected by the mailer, |
753 | a flag is set to invoke the return-to-sender function | |
754 | after all delivery completes. | |
fe65cf0c EA |
755 | .sh 2 "Queued Messages" |
756 | .pp | |
37a260a5 | 757 | If the mailer returns a |
fe65cf0c EA |
758 | .q "temporary failure" |
759 | exit status, | |
760 | the message is queued. | |
761 | A control file is used to describe the recipients to be sent to | |
762 | and various other parameters. | |
fbbba053 EA |
763 | This control file is formatted as a series of lines, |
764 | each describing a sender, | |
765 | a recipient, | |
766 | the time of submission, | |
767 | or some other salient parameter of the message. | |
768 | The header of the message is stored | |
769 | in the control file, | |
770 | so that the associated data file in the queue | |
771 | is just the temporary file that was originally collected. | |
fbbba053 | 772 | .sh 2 "Configuration" |
64dbe651 | 773 | .pp |
fbbba053 EA |
774 | Configuration is controlled primarily by a configuration file |
775 | read at startup. | |
64dbe651 EA |
776 | .i Sendmail |
777 | should not need to be recomplied except | |
778 | .np | |
779 | To change operating systems | |
780 | (V6, V7/32V, 4BSD). | |
781 | .np | |
b7e67727 EA |
782 | To remove or insert the DBM |
783 | (UNIX database) | |
784 | library. | |
64dbe651 EA |
785 | .np |
786 | To change ARPANET reply codes. | |
787 | .np | |
37a260a5 | 788 | To add headers fields requiring special processing. |
64dbe651 | 789 | .lp |
b7e67727 EA |
790 | Adding mailers or changing parsing |
791 | (i.e., rewriting) | |
792 | or routing information | |
64dbe651 EA |
793 | does not require recompilation. |
794 | .pp | |
795 | If the mail is being sent by a local user, | |
796 | and the file | |
797 | .q .mailcf | |
798 | exists in the sender's home directory, | |
799 | that file is read as a configuration file | |
800 | after the system configuration file. | |
37a260a5 | 801 | The primary use of this feature is to add header lines. |
dccb3105 EA |
802 | .pp |
803 | The configuration file encodes macro definitions, | |
804 | header definitions, | |
805 | mailer definitions, | |
806 | rewriting rules, | |
807 | and options. | |
808 | .sh 3 Macros | |
809 | .pp | |
810 | Macros can be used in three ways. | |
811 | Certain macros transmit | |
812 | unstructured textual information | |
813 | into the mail system, | |
814 | such as the name | |
815 | .i sendmail | |
816 | will use to identify itself in error messages. | |
817 | Other macros transmit information from | |
818 | .i sendmail | |
819 | to the configuration file | |
820 | for use in creating other fields | |
821 | (such as argument vectors to mailers); | |
822 | e.g., the name of the sender, | |
823 | and the host and user | |
824 | of the recipient. | |
825 | Other macros are unused internally, | |
826 | and can be used as shorthand in the configuration file. | |
827 | .sh 3 "Header declarations" | |
828 | .pp | |
829 | Header declarations inform | |
830 | .i sendmail | |
831 | of the format of known header lines. | |
832 | Knowledge of a few header lines | |
833 | is built into | |
834 | .i sendmail , | |
835 | such as the | |
836 | .q From: | |
837 | and | |
838 | .q Date: | |
839 | lines. | |
840 | .pp | |
841 | Most configured headers | |
842 | will be automatically inserted | |
843 | in the outgoing message | |
844 | if they don't exist in the incoming message. | |
845 | Certain headers are suppressed by some mailers. | |
846 | .sh 3 "Mailer declarations" | |
847 | .pp | |
848 | Mailer declarations tell | |
849 | .i sendmail | |
850 | of the various mailers available to it. | |
851 | The definition specifies the internal name of the mailer, | |
852 | the pathname of the program to call, | |
853 | some flags associated with the mailer, | |
854 | and an argument vector to be used on the call; | |
37a260a5 | 855 | this vector is macro-expanded before use. |
dccb3105 EA |
856 | .sh 3 "Address rewriting rules" |
857 | .pp | |
858 | The heart of address parsing in | |
859 | .i sendmail | |
860 | is a set of rewriting rules. | |
861 | These are an ordered list of pattern-replacement rules, | |
862 | (somewhat like a production system, | |
863 | except that order is critical), | |
864 | which are applied to each address. | |
865 | The address is rewritten textually until it is either rewritten | |
866 | into a special canonical form | |
867 | (i.e., | |
868 | a (mailer, host, user) | |
869 | 3-tuple, | |
870 | such as {arpanet, usc-isif, postel} | |
871 | representing the address | |
872 | .q "postel@usc-isif" ), | |
873 | or it falls off the end. | |
874 | When a pattern matches, | |
875 | the rule is reapplied until it fails. | |
876 | .pp | |
877 | The configuration file also supports the editing of addresses | |
878 | into different formats. | |
879 | For example, | |
880 | an address of the form: | |
881 | .(b | |
882 | ucsfcgl!tef | |
883 | .)b | |
884 | might be mapped into: | |
885 | .(b | |
886 | tef@ucsfcgl.UUCP | |
887 | .)b | |
888 | to conform to the domain syntax. | |
889 | Translations can also be done in the other direction. | |
890 | .sh 3 "Option setting" | |
891 | .pp | |
37a260a5 | 892 | There are several options that can be set |
dccb3105 EA |
893 | from the configuration file. |
894 | These include the pathnames of various support files, | |
895 | timeouts, | |
896 | default modes, | |
897 | etc. | |
64dbe651 EA |
898 | .sh 1 "COMPARISON WITH OTHER MAILERS" |
899 | .sh 2 "Delivermail" | |
900 | .pp | |
901 | .i Sendmail | |
902 | is an outgrowth of | |
903 | .i delivermail . | |
904 | The primary differences are: | |
905 | .np | |
906 | Configuration information is not compiled in. | |
37a260a5 | 907 | This change simplifies many of the problems |
64dbe651 EA |
908 | of moving to other machines. |
909 | It also allows easy debugging of new mailers. | |
910 | .np | |
911 | Address parsing is more flexible. | |
912 | For example, | |
913 | .i delivermail | |
914 | only supported one gateway to any network, | |
915 | whereas | |
916 | .i sendmail | |
917 | can be sensitive to host names | |
918 | and reroute to different gateways. | |
919 | .np | |
920 | Forwarding and | |
921 | :include: | |
d5bda243 | 922 | features eliminate the requirement that the system alias file |
64dbe651 EA |
923 | be writable by any user |
924 | (or that an update program be written, | |
925 | or that the system administration make all changes). | |
926 | .np | |
927 | .i Sendmail | |
928 | supports message batching across networks | |
929 | when a message is being sent to multiple recipients. | |
2fb78b49 EA |
930 | .np |
931 | A mail queue is provided in | |
932 | .i sendmail. | |
933 | Mail that cannot be delivered immediately | |
934 | but can potentially be delivered later | |
935 | is stored in this queue for a later retry. | |
936 | The queue also provides a buffer against system crashes; | |
937 | after the message has been collected | |
938 | it may be reliably redelivered | |
939 | even if the system crashes during the initial delivery. | |
940 | .np | |
941 | .i Sendmail | |
942 | uses the networking support provided by 4.2BSD | |
943 | to provide a direct interface networks such as the ARPANET | |
944 | and/or Ethernet | |
945 | using SMTP (the Simple Mail Transfer Protocol) | |
946 | over a TCP/IP connection. | |
64dbe651 EA |
947 | .sh 2 "MMDF" |
948 | .pp | |
7f667328 EA |
949 | MMDF |
950 | [Crocker79] | |
fe65cf0c | 951 | spans a wider problem set than |
64dbe651 EA |
952 | .i sendmail . |
953 | For example, | |
5296a55f | 954 | the domain of |
64dbe651 EA |
955 | MMDF includes a |
956 | .q "phone network" | |
957 | mailer, whereas | |
958 | .i sendmail | |
959 | calls on preexisting mailers in most cases. | |
64dbe651 EA |
960 | .pp |
961 | MMDF and | |
962 | .i sendmail | |
963 | both support aliasing, | |
964 | customized mailers, | |
965 | message batching, | |
fe65cf0c EA |
966 | automatic forwarding to gateways, |
967 | queueing, | |
968 | and retransmission. | |
5296a55f EA |
969 | MMDF supports two-stage timeout, |
970 | which | |
971 | .i sendmail | |
2fb78b49 | 972 | does not support. |
fbbba053 EA |
973 | .pp |
974 | The configuration for MMDF | |
2fb78b49 | 975 | is compiled into the code\**. |
fbbba053 EA |
976 | .(f |
977 | \**Dynamic configuration tables are currently being considered | |
978 | for MMDF; | |
37a260a5 | 979 | allowing the installer to select either compiled |
fbbba053 EA |
980 | or dynamic tables. |
981 | .)f | |
1c9783dc | 982 | .pp |
fbbba053 EA |
983 | Since MMDF does not consider backwards compatibility |
984 | as a design goal, | |
2fb78b49 | 985 | the address parsing is simpler but much less flexible. |
1c9783dc | 986 | .pp |
2fb78b49 | 987 | It is somewhat harder to integrate a new channel\** |
1c9783dc EA |
988 | .(f |
989 | \**The MMDF equivalent of a | |
990 | .i sendmail | |
991 | .q mailer. | |
992 | .)f | |
993 | into MMDF. | |
994 | In particular, | |
995 | MMDF must know the location and format | |
996 | of host tables for all channels, | |
997 | and the channel must speak a special protocol. | |
2fb78b49 EA |
998 | This allows MMDF to do additional verification |
999 | (such as verifying host names) | |
1000 | at submission time. | |
fbbba053 EA |
1001 | .pp |
1002 | MMDF strictly separates the submission and delivery phases. | |
1003 | Although | |
1004 | .i sendmail | |
1005 | has the concept of each of these stages, | |
1006 | they are integrated into one program, | |
1007 | whereas in MMDF they are split into two programs. | |
64dbe651 EA |
1008 | .sh 2 "Message Processing Module" |
1009 | .pp | |
1010 | The Message Processing Module (MPM) | |
7f667328 | 1011 | discussed by Postel [Postel79b] |
64dbe651 EA |
1012 | matches |
1013 | .i sendmail | |
1014 | closely in terms of its basic architecture. | |
1015 | However, | |
1016 | like MMDF, | |
1017 | the MPM includes the network interface software | |
1018 | as part of its domain. | |
1019 | .pp | |
1020 | MPM also postulates a duplex channel to the receiver, | |
37a260a5 EA |
1021 | as does MMDF, |
1022 | thus allowing simpler handling of errors | |
64dbe651 | 1023 | by the mailer |
37a260a5 EA |
1024 | than is possible in |
1025 | .i sendmail . | |
1026 | When a message queued by | |
64dbe651 EA |
1027 | .i sendmail |
1028 | is sent, | |
1029 | any errors must be returned to the sender | |
1030 | by the mailer itself. | |
1031 | Both MPM and MMDF mailers | |
1032 | can return an immediate error response, | |
1033 | and a single error processor can create an appropriate response. | |
1034 | .pp | |
37a260a5 | 1035 | MPM prefers passing the message as a structured object, |
2fb78b49 EA |
1036 | with type-length-value tuples\**. |
1037 | .(f | |
1038 | \**This is similar to the NBS standard. | |
1039 | .)f | |
37a260a5 EA |
1040 | Such a convention requires a much higher degree of cooperation |
1041 | between mailers than is required by | |
64dbe651 EA |
1042 | .i sendmail . |
1043 | MPM also assumes a universally agreed upon internet name space | |
37a260a5 | 1044 | (with each address in the form of a net-host-user tuple), |
64dbe651 EA |
1045 | which |
1046 | .i sendmail | |
1047 | does not. | |
1048 | .sh 1 "EVALUATIONS AND FUTURE PLANS" | |
1049 | .pp | |
1050 | .i Sendmail | |
1051 | is designed to work in a nonhomogeneous environment. | |
2fb78b49 | 1052 | Every attempt is made to avoid imposing unnecessary constraints |
64dbe651 EA |
1053 | on the underlying mailers. |
1054 | This goal has driven much of the design. | |
1055 | One of the major problems | |
1056 | has been the lack of a uniform address space, | |
7f667328 EA |
1057 | as postulated in [Postel79a] |
1058 | and [Postel79b]. | |
64dbe651 | 1059 | .pp |
37a260a5 | 1060 | A nonuniform address space implies that a path will be specified |
64dbe651 EA |
1061 | in all addresses, |
1062 | either explicitly (as part of the address) | |
1063 | or implicitly | |
1064 | (as with implied forwarding to gateways). | |
37a260a5 | 1065 | This restriction has the unpleasant effect of making replying to messages |
64dbe651 EA |
1066 | exceedingly difficult, |
1067 | since there is no one | |
1068 | .q address | |
1069 | for any person, | |
1070 | but only a way to get there from wherever you are. | |
1071 | .pp | |
1072 | Interfacing to mail programs | |
1073 | that were not initially intended to be applied | |
1074 | in an internet environment | |
1075 | has been amazingly successful, | |
1076 | and has reduced the job to a manageable task. | |
1077 | .pp | |
64dbe651 EA |
1078 | .i Sendmail |
1079 | has knowledge of a few difficult environments | |
1080 | built in. | |
fbbba053 | 1081 | It generates ARPANET FTP/SMTP compatible error messages |
64dbe651 | 1082 | (prepended with three-digit numbers |
fbbba053 | 1083 | [Neigus73, Postel74, Postel82]) |
64dbe651 EA |
1084 | as necessary, |
1085 | optionally generates UNIX-style | |
1086 | .q From | |
1087 | lines on the front of messages for some mailers, | |
1088 | and knows how to parse the same lines on input. | |
64dbe651 EA |
1089 | Also, |
1090 | error handling has an option customized for BerkNet. | |
1091 | .pp | |
fbbba053 EA |
1092 | The decision to avoid doing any type of delivery where possible |
1093 | (even, or perhaps especially, local delivery) | |
1094 | has turned out to be a good idea. | |
1095 | Even with local delivery, | |
1096 | there are issues of the location of the mailbox, | |
1097 | the format of the mailbox, | |
1098 | the locking protocol used, | |
1099 | etc., | |
1100 | that are best decided by other programs. | |
1101 | One surprisingly major annoyance in many internet mailers | |
1102 | is that the location and format of local mail is built in. | |
1103 | The feeling seems to be that local mail is so common | |
1104 | that it should be efficient. | |
37a260a5 EA |
1105 | This feeling is not born out by |
1106 | our experience; | |
1c9783dc | 1107 | on the contrary, |
fbbba053 EA |
1108 | the location and format of mailboxes seems to vary widely |
1109 | from system to system. | |
64dbe651 EA |
1110 | .pp |
1111 | The ability to automatically generate a response to incoming mail | |
1112 | (by forwarding mail to a program) | |
1113 | seems useful | |
1114 | (\c | |
1115 | .q "I am on vacation until late August...." ) | |
1116 | but can create problems | |
1117 | such as forwarding loops | |
1118 | (two people on vacation whose programs send notes back and forth, | |
1119 | for instance) | |
1120 | if these programs are not well written. | |
37a260a5 EA |
1121 | A program could be written to do standard tasks correctly, |
1122 | but this would solve the general case. | |
1123 | .pp | |
64dbe651 | 1124 | It might be desirable to implement some form of load limiting. |
48cec4c6 EA |
1125 | I am unaware of any mail system that addresses this problem, |
1126 | nor am I aware of any reasonable solution at this time. | |
64dbe651 | 1127 | .pp |
64dbe651 EA |
1128 | The configuration file is currently practically inscrutable; |
1129 | considerable convenience could be realized | |
1130 | with a higher-level format. | |
64dbe651 | 1131 | .pp |
7f667328 EA |
1132 | It seems clear that common protocols will be changing soon |
1133 | to accommodate changing requirements and environments. | |
1134 | These changes will include modifications to the message header | |
1c9783dc | 1135 | (e.g., [NBS80]) |
7f667328 EA |
1136 | or to the body of the message itself |
1137 | (such as for multimedia messages | |
1138 | [Postel80]). | |
fbbba053 EA |
1139 | Experience indicates that |
1140 | these changes should be relatively trivial to integrate | |
7f667328 EA |
1141 | into the existing system. |
1142 | .pp | |
7f667328 | 1143 | In tightly coupled environments, |
2fb78b49 EA |
1144 | it would be nice to have a name server |
1145 | such as Grapvine | |
1146 | [Birrell82] | |
1147 | integrated into the mail system. | |
1c9783dc | 1148 | This would allow a site such as |
fbbba053 | 1149 | .q Berkeley |
1c9783dc | 1150 | to appear as a single host, |
fbbba053 EA |
1151 | rather than as a collection of hosts, |
1152 | and would allow people to move transparently among machines | |
1153 | without having to change their addresses. | |
37a260a5 EA |
1154 | Such a facility |
1155 | would require an automatically updated database | |
7f667328 | 1156 | and some method of resolving conflicts. |
37a260a5 EA |
1157 | Ideally this would be effective even without |
1158 | all hosts being under | |
1159 | a single management. | |
fbbba053 | 1160 | However, |
37a260a5 EA |
1161 | it is not clear whether this feature |
1162 | should be integrated into the | |
1163 | aliasing facility | |
fbbba053 EA |
1164 | or should be considered a |
1165 | .q "value added" | |
1166 | feature outside | |
1167 | .i sendmail | |
1168 | itself. | |
37a260a5 EA |
1169 | .pp |
1170 | As a more interesting case, | |
1171 | the CSNET name server | |
01e97e73 | 1172 | [Solomon81] |
37a260a5 EA |
1173 | provides an facility that goes beyond a single |
1174 | tightly-coupled environment. | |
1175 | Such a facility would normally exist outside of | |
1176 | .i sendmail | |
1177 | however. | |
d5bda243 | 1178 | .sh 0 "ACKNOWLEDGEMENTS" |
7f667328 | 1179 | .pp |
0e2142c8 | 1180 | Thanks are due to Kurt Shoens for his continual cheerful |
7f667328 EA |
1181 | assistance and good advice, |
1182 | Bill Joy for pointing me in the correct direction | |
1183 | (over and over), | |
1184 | and Mark Horton for more advice, | |
1185 | prodding, | |
1186 | and many of the good ideas. | |
1187 | Kurt and Eric Schmidt are to be credited | |
1188 | for using | |
1189 | .i delivermail | |
1190 | as a server for their programs | |
1191 | (\c | |
1192 | .i Mail | |
1193 | and BerkNet respectively) | |
1194 | before any sane person should have, | |
1195 | and making the necessary modifications | |
1196 | promptly and happily. | |
1197 | Eric gave me considerable advice about the perils | |
1198 | of network software which saved me an unknown | |
1199 | amount of work and grief. | |
1200 | Mark did the original implementation of the DBM version | |
1201 | of aliasing, installed the VFORK code, | |
1202 | wrote the current version of | |
1203 | .i rmail , | |
1204 | and was the person who really convinced me | |
1205 | to put the work into | |
1206 | .i delivermail | |
1207 | to turn it into | |
1208 | .i sendmail . | |
1209 | Kurt deserves accolades for using | |
1210 | .i sendmail | |
1211 | when I was myself afraid to take the risk; | |
1212 | how a person can continue to be so enthusiastic | |
1213 | in the face of so much bitter reality is beyond me. | |
1214 | .pp | |
37a260a5 EA |
1215 | Kurt, |
1216 | Mark, | |
1217 | Kirk McKusick, | |
1218 | Marvin Solomon, | |
1219 | and many others have reviewed this paper, | |
7f667328 EA |
1220 | giving considerable useful advice. |
1221 | .pp | |
1c9783dc EA |
1222 | Special thanks are reserved for Mike Stonebraker at Berkeley |
1223 | and Bob Epstein at Britton-Lee, | |
fbbba053 | 1224 | who both knowingly allowed me to put so much work into this |
37a260a5 | 1225 | project |
7f667328 EA |
1226 | when there were so many other things I really should |
1227 | have been working on. | |
1228 | .+c | |
1229 | .ce | |
1230 | REFERENCES | |
1231 | .nr ii 1.5i | |
2fb78b49 EA |
1232 | .ip [Birrell82] |
1233 | Birrell, A. D., | |
1234 | Levin, R., | |
1235 | Needham, R. M., | |
1236 | and | |
1237 | Schroeder, M. D., | |
1238 | .q "Grapevine: An Exercise in Distributed Computing." | |
1239 | In | |
1240 | .ul | |
1241 | Comm. A.C.M. 25, | |
1242 | 4, | |
1243 | April 82. | |
fe65cf0c EA |
1244 | .ip [Borden79] |
1245 | Borden, S., | |
1246 | Gaines, R. S., | |
1247 | and | |
1248 | Shapiro, N. Z., | |
1249 | .ul | |
1250 | The MH Message Handling System: Users' Manual. | |
1251 | R-2367-PAF. | |
1252 | Rand Corporation. | |
1253 | October 1979. | |
7f667328 EA |
1254 | .ip [Crocker77a] |
1255 | Crocker, D. H., | |
1256 | Vittal, J. J., | |
1257 | Pogran, K. T., | |
1258 | and | |
1259 | Henderson, D. A. Jr., | |
1260 | .ul | |
d5bda243 | 1261 | Standard for the Format of ARPA Network Text Messages. |
7f667328 EA |
1262 | RFC 733, |
1263 | NIC 41952. | |
1264 | In [Feinler78]. | |
1265 | November 1977. | |
1266 | .ip [Crocker77b] | |
1267 | Crocker, D. H., | |
1268 | .ul | |
d5bda243 | 1269 | Framework and Functions of the MS Personal Message System. |
7f667328 EA |
1270 | R-2134-ARPA, |
1271 | Rand Corporation, | |
1272 | Santa Monica, California. | |
1273 | 1977. | |
1274 | .ip [Crocker79] | |
1275 | Crocker, D. H., | |
1276 | Szurkowski, E. S., | |
1277 | and | |
1278 | Farber, D. J., | |
1279 | .ul | |
d5bda243 | 1280 | An Internetwork Memo Distribution Facility \*- MMDF. |
7f667328 EA |
1281 | 6th Data Communication Symposium, |
1282 | Asilomar. | |
1283 | November 1979. | |
fbbba053 EA |
1284 | .ip [Crocker82] |
1285 | Crocker, D. H., | |
1286 | .ul | |
1287 | Standard for the Format of Arpa Internet Text Messages. | |
1288 | RFC 822. | |
1289 | Network Information Center, | |
1290 | SRI International, | |
1291 | Menlo Park, California. | |
1292 | August 1982. | |
31a22de8 EA |
1293 | .ip [Metcalfe76] |
1294 | Metcalfe, R., | |
1295 | and | |
7f667328 | 1296 | Boggs, D., |
31a22de8 | 1297 | .q "Ethernet: Distributed Packet Switching for Local Computer Networks" , |
7f667328 | 1298 | .ul |
31a22de8 EA |
1299 | Communications of the ACM 19, |
1300 | 7. | |
1301 | July 1976. | |
7f667328 EA |
1302 | .ip [Feinler78] |
1303 | Feinler, E., | |
1304 | and | |
1305 | Postel, J. | |
1306 | (eds.), | |
1307 | .ul | |
d5bda243 | 1308 | ARPANET Protocol Handbook. |
7f667328 EA |
1309 | NIC 7104, |
1310 | Network Information Center, | |
1311 | SRI International, | |
1312 | Menlo Park, California. | |
1313 | 1978. | |
7f667328 EA |
1314 | .ip [NBS80] |
1315 | National Bureau of Standards, | |
1316 | .ul | |
d5bda243 EA |
1317 | Specification of a Draft Message Format Standard. |
1318 | Report No. ICST/CBOS 80-2. | |
7f667328 | 1319 | October 1980. |
ce4c8997 | 1320 | .ip [Neigus73] |
7f667328 EA |
1321 | Neigus, N., |
1322 | .ul | |
d5bda243 | 1323 | File Transfer Protocol for the ARPA Network. |
ce4c8997 | 1324 | RFC 542, NIC 17759. |
d5bda243 | 1325 | In [Feinler78]. |
ce4c8997 | 1326 | August, 1973. |
7f667328 EA |
1327 | .ip [Nowitz78a] |
1328 | Nowitz, D. A., | |
1329 | and | |
1330 | Lesk, M. E., | |
1331 | .ul | |
d5bda243 | 1332 | A Dial-Up Network of UNIX Systems. |
7f667328 | 1333 | Bell Laboratories. |
7f667328 EA |
1334 | In |
1335 | UNIX Programmer's Manual, Seventh Edition, | |
1336 | Volume 2. | |
d5bda243 | 1337 | August, 1978. |
7f667328 EA |
1338 | .ip [Nowitz78b] |
1339 | Nowitz, D. A., | |
1340 | .ul | |
d5bda243 | 1341 | Uucp Implementation Description. |
7f667328 | 1342 | Bell Laboratories. |
7f667328 EA |
1343 | In |
1344 | UNIX Programmer's Manual, Seventh Edition, | |
1345 | Volume 2. | |
d5bda243 | 1346 | October, 1978. |
ce4c8997 EA |
1347 | .ip [Postel74] |
1348 | Postel, J., | |
1349 | and | |
1350 | Neigus, N., | |
1351 | Revised FTP Reply Codes. | |
1352 | RFC 640, NIC 30843. | |
1353 | In [Feinler78]. | |
1354 | June, 1974. | |
7f667328 EA |
1355 | .ip [Postel77] |
1356 | Postel, J., | |
1357 | .ul | |
d5bda243 | 1358 | Mail Protocol. |
7f667328 EA |
1359 | NIC 29588. |
1360 | In [Feinler78]. | |
1361 | November 1977. | |
1362 | .ip [Postel79a] | |
1363 | Postel, J., | |
1364 | .ul | |
d5bda243 | 1365 | Internet Message Protocol. |
7f667328 EA |
1366 | RFC 753, |
1367 | IEN 85. | |
1368 | Network Information Center, | |
1369 | SRI International, | |
1370 | Menlo Park, California. | |
1371 | March 1979. | |
1372 | .ip [Postel79b] | |
1373 | Postel, J. B., | |
1374 | .ul | |
d5bda243 | 1375 | An Internetwork Message Structure. |
ce4c8997 EA |
1376 | In |
1377 | .ul | |
1378 | Proceedings of the Sixth Data Communications Symposium, | |
1379 | IEEE. | |
1380 | New York. | |
1381 | November 1979. | |
7f667328 EA |
1382 | .ip [Postel80] |
1383 | Postel, J. B., | |
1384 | .ul | |
1385 | A Structured Format for Transmission of Multi-Media Documents. | |
d5bda243 | 1386 | RFC 767. |
7f667328 EA |
1387 | Network Information Center, |
1388 | SRI International, | |
1389 | Menlo Park, California. | |
1390 | August 1980. | |
fbbba053 | 1391 | .ip [Postel82] |
fe65cf0c EA |
1392 | Postel, J. B., |
1393 | .ul | |
1394 | Simple Mail Transfer Protocol. | |
fbbba053 EA |
1395 | RFC821 |
1396 | (obsoleting RFC788). | |
fe65cf0c EA |
1397 | Network Information Center, |
1398 | SRI International, | |
1399 | Menlo Park, California. | |
fbbba053 | 1400 | August 1982. |
ce4c8997 | 1401 | .ip [Schmidt79] |
7f667328 EA |
1402 | Schmidt, E., |
1403 | .ul | |
ce4c8997 | 1404 | An Introduction to the Berkeley Network. |
7f667328 | 1405 | University of California, Berkeley California. |
ce4c8997 | 1406 | 1979. |
0e2142c8 EA |
1407 | .ip [Shoens79] |
1408 | Shoens, K., | |
7f667328 | 1409 | .ul |
d5bda243 EA |
1410 | Mail Reference Manual. |
1411 | University of California, Berkeley. | |
1412 | In UNIX Programmer's Manual, | |
7f667328 EA |
1413 | Seventh Edition, |
1414 | Volume 2C. | |
7f667328 EA |
1415 | December 1979. |
1416 | .ip [Sluizer81] | |
1417 | Sluizer, S., | |
1418 | and | |
1419 | Postel, J. B., | |
1420 | .ul | |
d5bda243 EA |
1421 | Mail Transfer Protocol. |
1422 | RFC 780. | |
7f667328 EA |
1423 | Network Information Center, |
1424 | SRI International, | |
1425 | Menlo Park, California. | |
1426 | May 1981. | |
01e97e73 EA |
1427 | .ip [Solomon81] |
1428 | Solomon, M., Landweber, L., and Neuhengen, D., | |
1429 | .q "The Design of the CSNET Name Server." | |
1430 | CS-DN-2, | |
1431 | University of Wisconsin, Madison. | |
1432 | November 1981. | |
fbbba053 EA |
1433 | .ip [Su82] |
1434 | Su, Zaw-Sing, | |
1435 | and | |
1436 | Postel, Jon, | |
1437 | .ul | |
1438 | The Domain Naming Convention for Internet User Applications. | |
1439 | RFC819. | |
1440 | Network Information Center, | |
1441 | SRI International, | |
1442 | Menlo Park, California. | |
1443 | August 1982. | |
01e97e73 | 1444 | .ip [UNIX83] |
7f667328 EA |
1445 | .ul |
1446 | The UNIX Programmer's Manual, Seventh Edition, | |
1447 | Virtual VAX-11 Version, | |
1448 | Volume 1. | |
1449 | Bell Laboratories, | |
1450 | modified by the University of California, | |
01e97e73 EA |
1451 | Berkeley, California. |
1452 | March, 1983. |