|
|
1.1 root 1: .nr si 3n
2: .he 'Mail Systems and Addressing in 4.2bsd''%'
3: .fo 'Version 4.1'USENIX \- Jan 83'Last Mod 7/25/83'
4: .if n .ls 2
5: .+c
6: .(l C
7: .sz 14
8: Mail Systems and Addressing
9: in 4.2bsd
10: .sz
11: .sp
12: Eric Allman\(dg
13: .sp 0.5
14: .i
15: Britton-Lee, Inc.
16: 1919 Addison Street, Suite 105.
17: Berkeley, California 94704.
18: .sp 0.5
19: .r
20: [email protected]
21: ucbvax!eric
22: .)l
23: .sp
24: .(l F
25: .ce
26: ABSTRACT
27: .sp \n(psu
28: Routing mail through a heterogeneous internet presents many new
29: problems.
30: Among the worst of these is that of address mapping.
31: Historically, this has been handled on an ad hoc basis.
32: However,
33: this approach has become unmanageable as internets grow.
34: .sp \n(psu
35: Sendmail acts a unified
36: .q "post office"
37: to which all mail can be
38: submitted.
39: Address interpretation is controlled by a production
40: system,
41: which can parse both old and new format addresses.
42: The
43: new format is
44: .q "domain-based,"
45: a flexible technique that can
46: handle many common situations.
47: Sendmail is not intended to perform
48: user interface functions.
49: .sp \n(psu
50: Sendmail will replace delivermail in the Berkeley 4.2 distribution.
51: Several major hosts are now or will soon be running sendmail.
52: This change will affect any users that route mail through a sendmail
53: gateway.
54: The changes that will be user visible are emphasized.
55: .)l
56: .sp 2
57: .(f
58: \(dgA considerable part of this work
59: was done while under the employ
60: of the INGRES Project
61: at the University of California at Berkeley.
62: .)f
63: .pp
64: The mail system to appear in 4.2bsd
65: will contain a number of changes.
66: Most of these changes are based on the replacement of
67: .i delivermail
68: with a new module called
69: .i sendmail.
70: .i Sendmail
71: implements a general internetwork mail routing facility,
72: featuring aliasing and forwarding,
73: automatic routing to network gateways,
74: and flexible configuration.
75: Of key interest to the mail system user
76: will be the changes in the network addressing structure.
77: .pp
78: In a simple network,
79: each node has an address,
80: and resources can be identified
81: with a host-resource pair;
82: in particular,
83: the mail system can refer to users
84: using a host-username pair.
85: Host names and numbers have to be administered by a central authority,
86: but usernames can be assigned locally to each host.
87: .pp
88: In an internet,
89: multiple networks with different characteristics
90: and managements
91: must communicate.
92: In particular,
93: the syntax and semantics of resource identification change.
94: Certain special cases can be handled trivially
95: by
96: .i "ad hoc"
97: techniques,
98: such as
99: providing network names that appear local to hosts
100: on other networks,
101: as with the Ethernet at Xerox PARC.
102: However, the general case is extremely complex.
103: For example,
104: some networks require that the route the message takes
105: be explicitly specified by the sender,
106: simplifying the database update problem
107: since only adjacent hosts must be entered
108: into the system tables,
109: while others use logical addressing,
110: where the sender specifies the location of the recipient
111: but not how to get there.
112: Some networks use a left-associative syntax
113: and others use a right-associative syntax,
114: causing ambiguity in mixed addresses.
115: .pp
116: Internet standards seek to eliminate these problems.
117: Initially, these proposed expanding the address pairs
118: to address triples,
119: consisting of
120: {network, host, username}
121: triples.
122: Network numbers must be universally agreed upon,
123: and hosts can be assigned locally
124: on each network.
125: The user-level presentation was changed
126: to address domains,
127: comprised of a local resource identification
128: and a hierarchical domain specification
129: with a common static root.
130: The domain technique
131: separates the issue of physical versus logical addressing.
132: For example,
133: an address of the form
134: .q "[email protected]"
135: describes the logical
136: organization of the address space
137: (user
138: .q eric
139: on host
140: .q a
141: in the Computer Center
142: at Berkeley)
143: but not the physical networks used
144: (for example, this could go over different networks
145: depending on whether
146: .q a
147: were on an ethernet
148: or a store-and-forward network).
149: .pp
150: .i Sendmail
151: is intended to help bridge the gap
152: between the totally
153: .i "ad hoc"
154: world
155: of networks that know nothing of each other
156: and the clean, tightly-coupled world
157: of unique network numbers.
158: It can accept old arbitrary address syntaxes,
159: resolving ambiguities using heuristics
160: specified by the system administrator,
161: as well as domain-based addressing.
162: It helps guide the conversion of message formats
163: between disparate networks.
164: In short,
165: .i sendmail
166: is designed to assist a graceful transition
167: to consistent internetwork addressing schemes.
168: .sp
169: .pp
170: Section 1 defines some of the terms
171: frequently left fuzzy
172: when working in mail systems.
173: Section 2 discusses the design goals for
174: .i sendmail .
175: In section 3,
176: the new address formats
177: and basic features of
178: .i sendmail
179: are described.
180: Section 4 discusses some of the special problems
181: of the UUCP network.
182: The differences between
183: .i sendmail
184: and
185: .i delivermail
186: are presented in section 5.
187: .sp
188: .(l F
189: .b DISCLAIMER:
190: A number of examples
191: in this paper
192: use names of actual people
193: and organizations.
194: This is not intended
195: to imply a commitment
196: or even an intellectual agreement
197: on the part of these people or organizations.
198: In particular,
199: Bell Telephone Laboratories (BTL),
200: Digital Equipment Corporation (DEC),
201: Lawrence Berkeley Laboratories (LBL),
202: Britton-Lee Incorporated (BLI),
203: and the University of California at Berkeley
204: are not committed to any of these proposals at this time.
205: Much of this paper
206: represents no more than
207: the personal opinions of the author.
208: .)l
209: .sh 1 "DEFINITIONS"
210: .pp
211: There are four basic concepts
212: that must be clearly distinguished
213: when dealing with mail systems:
214: the user (or the user's agent),
215: the user's identification,
216: the user's address,
217: and the route.
218: These are distinguished primarily by their position independence.
219: .sh 2 "User and Identification"
220: .pp
221: The user is the being
222: (a person or program)
223: that is creating or receiving a message.
224: An
225: .i agent
226: is an entity operating on behalf of the user \*-
227: such as a secretary who handles my mail.
228: or a program that automatically returns a
229: message such as
230: .q "I am at the UNICOM conference."
231: .pp
232: The identification is the tag
233: that goes along with the particular user.
234: This tag is completely independent of location.
235: For example,
236: my identification is the string
237: .q "Eric Allman,"
238: and this identification does not change
239: whether I am located at U.C. Berkeley,
240: at Britton-Lee,
241: or at a scientific institute in Austria.
242: .pp
243: Since the identification is frequently ambiguous
244: (e.g., there are two
245: .q "Robert Henry" s
246: at Berkeley)
247: it is common to add other disambiguating information
248: that is not strictly part of the identification
249: (e.g.,
250: Robert
251: .q "Code Generator"
252: Henry
253: versus
254: Robert
255: .q "System Administrator"
256: Henry).
257: .sh 2 "Address"
258: .pp
259: The address specifies a location.
260: As I move around,
261: my address changes.
262: For example,
263: my address might change from
264: .q [email protected]
265: to
266: .q [email protected]
267: or
268: .q [email protected]
269: depending on my current affiliation.
270: .pp
271: However,
272: an address is independent of the location of anyone else.
273: That is,
274: my address remains the same to everyone who might be sending me mail.
275: For example,
276: a person at MIT and a person at USC
277: could both send to
278: .q [email protected]
279: and have it arrive to the same mailbox.
280: .pp
281: Ideally a
282: .q "white pages"
283: service would be provided to map user identifications
284: into addresses
285: (for example, see
286: [Solomon81]).
287: Currently this is handled by passing around
288: scraps of paper
289: or by calling people on the telephone
290: to find out their address.
291: .sh 2 "Route"
292: .pp
293: While an address specifies
294: .i where
295: to find a mailbox,
296: a route specifies
297: .i how
298: to find the mailbox.
299: Specifically,
300: it specifies a path
301: from sender to receiver.
302: As such, the route is potentially different
303: for every pair of people in the electronic universe.
304: .pp
305: Normally the route is hidden from the user
306: by the software.
307: However,
308: some networks put the burden of determining the route
309: onto the sender.
310: Although this simplifies the software,
311: it also greatly impairs the usability
312: for most users.
313: The UUCP network is an example of such a network.
314: .sh 1 "DESIGN GOALS"
315: .pp
316: Design goals for
317: .i sendmail \**
318: .(f
319: \**This section makes no distinction between
320: .i delivermail
321: and
322: .i sendmail.
323: .)f
324: include:
325: .np
326: Compatibility with the existing mail programs,
327: including Bell version 6 mail,
328: Bell version 7 mail,
329: Berkeley
330: .i Mail
331: [Shoens79],
332: BerkNet mail
333: [Schmidt79],
334: and hopefully UUCP mail
335: [Nowitz78].
336: ARPANET mail
337: [Crocker82]
338: was also required.
339: .np
340: Reliability, in the sense of guaranteeing
341: that every message is correctly delivered
342: or at least brought to the attention of a human
343: for correct disposal;
344: no message should ever be completely lost.
345: This goal was considered essential
346: because of the emphasis on mail in our environment.
347: It has turned out to be one of the hardest goals to satisfy,
348: especially in the face of the many anomalous message formats
349: produced by various ARPANET sites.
350: For example,
351: certain sites generate improperly formated addresses,
352: occasionally
353: causing error-message loops.
354: Some hosts use blanks in names,
355: causing problems with
356: mail programs that assume that an address
357: is one word.
358: The semantics of some fields
359: are interpreted slightly differently
360: by different sites.
361: In summary,
362: the obscure features of the ARPANET mail protocol
363: really
364: .i are
365: used and
366: are difficult to support,
367: but must be supported.
368: .np
369: Existing software to do actual delivery
370: should be used whenever possible.
371: This goal derives as much from political and practical considerations
372: as technical.
373: .np
374: Easy expansion to
375: fairly complex environments,
376: including multiple
377: connections to a single network type
378: (such as with multiple UUCP or Ethernets).
379: This goal requires consideration of the contents of an address
380: as well as its syntax
381: in order to determine which gateway to use.
382: .np
383: Configuration information should not be compiled into the code.
384: A single compiled program should be able to run as is at any site
385: (barring such basic changes as the CPU type or the operating system).
386: We have found this seemingly unimportant goal
387: to be critical in real life.
388: Besides the simple problems that occur when any program gets recompiled
389: in a different environment,
390: many sites like to
391: .q fiddle
392: with anything that they will be recompiling anyway.
393: .np
394: .i Sendmail
395: must be able to let various groups maintain their own mailing lists,
396: and let individuals specify their own forwarding,
397: without modifying the system alias file.
398: .np
399: Each user should be able to specify which mailer to execute
400: to process mail being delivered for him.
401: This feature allows users who are using specialized mailers
402: that use a different format to build their environment
403: without changing the system,
404: and facilitates specialized functions
405: (such as returning an
406: .q "I am on vacation"
407: message).
408: .np
409: Network traffic should be minimized
410: by batching addresses to a single host where possible,
411: without assistance from the user.
412: .pp
413: These goals motivated the architecture illustrated in figure 1.
414: .(z
415: .hl
416: .ie t \
417: . sp 18
418: .el \{\
419: .(c
420: +---------+ +---------+ +---------+
421: | sender1 | | sender2 | | sender3 |
422: +---------+ +---------+ +---------+
423: | | |
424: +----------+ + +----------+
425: | | |
426: v v v
427: +-------------+
428: | sendmail |
429: +-------------+
430: | | |
431: +----------+ + +----------+
432: | | |
433: v v v
434: +---------+ +---------+ +---------+
435: | mailer1 | | mailer2 | | mailer3 |
436: +---------+ +---------+ +---------+
437: .)c
438: .\}
439:
440: .ce
441: Figure 1 \*- Sendmail System Structure.
442: .hl
443: .)z
444: The user interacts with a mail generating and sending program.
445: When the mail is created,
446: the generator calls
447: .i sendmail ,
448: which routes the message to the correct mailer(s).
449: Since some of the senders may be network servers
450: and some of the mailers may be network clients,
451: .i sendmail
452: may be used as an internet mail gateway.
453: .sh 1 "USAGE"
454: .sh 2 "Address Formats"
455: .pp
456: Arguments may be flags or addresses.
457: Flags set various processing options.
458: Following flag arguments,
459: address arguments may be given.
460: Addresses follow the syntax in RFC822
461: [Crocker82]
462: for ARPANET
463: address formats.
464: In brief, the format is:
465: .np
466: Anything in parentheses is thrown away
467: (as a comment).
468: .np
469: Anything in angle brackets (\c
470: .q "<\|>" )
471: is preferred
472: over anything else.
473: This rule implements the ARPANET standard that addresses of the form
474: .(b
475: user name <machine-address>
476: .)b
477: will send to the electronic
478: .q machine-address
479: rather than the human
480: .q "user name."
481: .np
482: Double quotes
483: (\ "\ )
484: quote phrases;
485: backslashes quote characters.
486: Backslashes are more powerful
487: in that they will cause otherwise equivalent phrases
488: to compare differently \*- for example,
489: .i user
490: and
491: .i
492: "user"
493: .r
494: are equivalent,
495: but
496: .i \euser
497: is different from either of them.
498: This might be used
499: to avoid normal aliasing
500: or duplicate suppression algorithms.
501: .pp
502: Parentheses, angle brackets, and double quotes
503: must be properly balanced and nested.
504: The rewriting rules control remaining parsing\**.
505: .(f
506: \**Disclaimer: Some special processing is done
507: after rewriting local names; see below.
508: .)f
509: .pp
510: Although old style addresses are still accepted
511: in most cases,
512: the preferred address format
513: is based on ARPANET-style domain-based addresses
514: [Su82a].
515: These addresses are based on a hierarchical, logical decomposition
516: of the address space.
517: The addresses are hierarchical in a sense
518: similar to the U.S. postal addresses:
519: the messages may first be routed to the correct state,
520: with no initial consideration of the city
521: or other addressing details.
522: The addresses are logical
523: in that each step in the hierarchy
524: corresponds to a set of
525: .q "naming authorities"
526: rather than a physical network.
527: .pp
528: For example,
529: the address:
530: .(l
531: [email protected]
532: .)l
533: would first look up the domain
534: BigSite
535: in the namespace administrated by
536: ARPA.
537: A query could then be sent to
538: BigSite
539: for interpretation of
540: HostA.
541: Eventually the mail would arrive at
542: HostA,
543: which would then do final delivery
544: to user
545: .q eric.
546: .sh 2 "Mail to Files and Programs"
547: .pp
548: Files and programs are legitimate message recipients.
549: Files provide archival storage of messages,
550: useful for project administration and history.
551: Programs are useful as recipients in a variety of situations,
552: for example,
553: to maintain a public repository of systems messages
554: (such as the Berkeley
555: .i msgs
556: program).
557: .pp
558: Any address passing through the initial parsing algorithm
559: as a local address
560: (i.e, not appearing to be a valid address for another mailer)
561: is scanned for two special cases.
562: If prefixed by a vertical bar (\c
563: .q \^|\^ )
564: the rest of the address is processed as a shell command.
565: If the user name begins with a slash mark (\c
566: .q /\^ )
567: the name is used as a file name,
568: instead of a login name.
569: .sh 2 "Aliasing, Forwarding, Inclusion"
570: .pp
571: .i Sendmail
572: reroutes mail three ways.
573: Aliasing applies system wide.
574: Forwarding allows each user to reroute incoming mail
575: destined for that account.
576: Inclusion directs
577: .i sendmail
578: to read a file for a list of addresses,
579: and is normally used
580: in conjunction with aliasing.
581: .sh 3 "Aliasing"
582: .pp
583: Aliasing maps local addresses to address lists using a system-wide file.
584: This file is hashed to speed access.
585: Only addresses that parse as local
586: are allowed as aliases;
587: this guarantees a unique key
588: (since there are no nicknames for the local host).
589: .sh 3 "Forwarding"
590: .pp
591: After aliasing,
592: if an recipient address specifies a local user
593: .i sendmail
594: searches for a
595: .q .forward
596: file in the recipient's home directory.
597: If it exists,
598: the message is
599: .i not
600: sent to that user,
601: but rather to the list of addresses in that file.
602: Often
603: this list will contain only one address,
604: and the feature will be used for network mail forwarding.
605: .pp
606: Forwarding also permits a user to specify a private incoming mailer.
607: For example,
608: forwarding to:
609: .(b
610: "\^|\|/usr/local/newmail myname"
611: .)b
612: will use a different incoming mailer.
613: .sh 3 "Inclusion"
614: .pp
615: Inclusion is specified in RFC 733 [Crocker77] syntax:
616: .(b
617: :Include: pathname
618: .)b
619: An address of this form reads the file specified by
620: .i pathname
621: and sends to all users listed in that file.
622: .pp
623: The intent is
624: .i not
625: to support direct use of this feature,
626: but rather to use this as a subset of aliasing.
627: For example,
628: an alias of the form:
629: .(b
630: project: :include:/usr/project/userlist
631: .)b
632: is a method of letting a project maintain a mailing list
633: without interaction with the system administration,
634: even if the alias file is protected.
635: .pp
636: It is not necessary to rebuild the index on the alias database
637: when a :include: list is changed.
638: .sh 2 "Message Collection"
639: .pp
640: Once all recipient addresses are parsed and verified,
641: the message is collected.
642: The message comes in two parts:
643: a message header and a message body,
644: separated by a blank line.
645: The body is an uninterpreted
646: sequence of text lines.
647: .pp
648: The header is formated as a series of lines
649: of the form
650: .(b
651: field-name: field-value
652: .)b
653: Field-value can be split across lines by starting the following
654: lines with a space or a tab.
655: Some header fields have special internal meaning,
656: and have appropriate special processing.
657: Other headers are simply passed through.
658: Some header fields may be added automatically,
659: such as time stamps.
660: .sh 1 "THE UUCP PROBLEM"
661: .pp
662: Of particular interest
663: is the UUCP network.
664: The explicit routing
665: used in the UUCP environment
666: causes a number of serious problems.
667: First,
668: giving out an address
669: is impossible
670: without knowing the address of your potential correspondent.
671: This is typically handled
672: by specifying the address
673: relative to some
674: .q "well-known"
675: host
676: (e.g.,
677: ucbvax or decvax).
678: Second,
679: it is often difficult to compute
680: the set of addresses
681: to reply to
682: without some knowledge
683: of the topology of the network.
684: Although it may be easy for a human being
685: to do this
686: under many circumstances,
687: a program does not have equally sophisticated heuristics
688: built in.
689: Third,
690: certain addresses will become painfully and unnecessarily long,
691: as when a message is routed through many hosts in the USENET.
692: And finally,
693: certain
694: .q "mixed domain"
695: addresses
696: are impossible to parse unambiguously \*-
697: e.g.,
698: .(l
699: decvax!ucbvax!lbl-h!user@LBL-CSAM
700: .)l
701: might have many possible resolutions,
702: depending on whether the message was first routed
703: to decvax
704: or to LBL-CSAM.
705: .pp
706: To solve this problem,
707: the UUCP syntax
708: would have to be changed to use addresses
709: rather than routes.
710: For example,
711: the address
712: .q decvax!ucbvax!eric
713: might be expressed as
714: .q [email protected]
715: (with the hop through decvax implied).
716: This address would itself be a domain-based address;
717: for example,
718: an address might be of the form:
719: .(l
720: [email protected]
721: .)l
722: Hosts outside of Bell Telephone Laboratories
723: would then only need to know
724: how to get to a designated BTL relay,
725: and the BTL topology
726: would only be maintained inside Bell.
727: .pp
728: There are three major problems
729: associated with turning UUCP addresses
730: into something reasonable:
731: defining the namespace,
732: creating and propagating the necessary software,
733: and building and maintaining the database.
734: .sh 2 "Defining the Namespace"
735: .pp
736: Putting all UUCP hosts into a flat namespace
737: (e.g.,
738: .q \&[email protected] )
739: is not practical for a number of reasons.
740: First,
741: with over 1600 sites already,
742: and (with the increasing availability of inexpensive microcomputers
743: and autodialers)
744: several thousand more coming within a few years,
745: the database update problem
746: is simply intractable
747: if the namespace is flat.
748: Second,
749: there are almost certainly name conflicts today.
750: Third,
751: as the number of sites grow
752: the names become ever less mnemonic.
753: .pp
754: It seems inevitable
755: that there be some sort of naming authority
756: for the set of top level names
757: in the UUCP domain,
758: as unpleasant a possibility
759: as that may seem.
760: It will simply not be possible
761: to have one host resolving all names.
762: It may however be possible
763: to handle this
764: in a fashion similar to that of assigning names of newsgroups
765: in USENET.
766: However,
767: it will be essential to encourage everyone
768: to become subdomains of an existing domain
769: whenever possible \*-
770: even though this will certainly bruise some egos.
771: For example,
772: if a new host named
773: .q blid
774: were to be added to the UUCP network,
775: it would probably actually be addressed as
776: .q d.bli.UUCP
777: (i.e.,
778: as host
779: .q d
780: in the pseudo-domain
781: .q bli
782: rather than as host
783: .q blid
784: in the UUCP domain).
785: .sh 2 "Creating and Propagating the Software"
786: .pp
787: The software required to implement a consistent namespace
788: is relatively trivial.
789: Two modules are needed,
790: one to handle incoming mail
791: and one to handle outgoing mail.
792: .pp
793: The incoming module
794: must be prepared to handle either old or new style addresses.
795: New-style addresses
796: can be passed through unchanged.
797: Old style addresses
798: must be turned into new style addresses
799: where possible.
800: .pp
801: The outgoing module
802: is slightly trickier.
803: It must do a database lookup on the recipient addresses
804: (passed on the command line)
805: to determine what hosts to send the message to.
806: If those hosts do not accept new-style addresses,
807: it must transform all addresses in the header of the message
808: into old style using the database lookup.
809: .pp
810: Both of these modules
811: are straightforward
812: except for the issue of modifying the header.
813: It seems prudent to choose one format
814: for the message headers.
815: For a number of reasons,
816: Berkeley has elected to use the ARPANET protocols
817: for message formats.
818: However,
819: this protocol is somewhat difficult to parse.
820: .pp
821: Propagation is somewhat more difficult.
822: There are a large number of hosts
823: connected to UUCP
824: that will want to run completely standard systems
825: (for very good reasons).
826: The strategy is not to convert the entire network \*-
827: only enough of it it alleviate the problem.
828: .sh 2 "Building and Maintaining the Database"
829: .pp
830: This is by far the most difficult problem.
831: A prototype for this database
832: already exists,
833: but it is maintained by hand
834: and does not pretend to be complete.
835: .pp
836: This problem will be reduced considerably
837: if people choose to group their hosts
838: into subdomains.
839: This would require a global update
840: only when a new top level domain
841: joined the network.
842: A message to a host in a subdomain
843: could simply be routed to a known domain gateway
844: for further processing.
845: For example,
846: the address
847: .q [email protected]
848: might be routed to the
849: .q bli
850: gateway
851: for redistribution;
852: new hosts could be added
853: within BLI
854: without notifying the rest of the world.
855: Of course,
856: other hosts
857: .i could
858: be notified as an efficiency measure.
859: .pp
860: There may be more than one domain gateway.
861: A domain such as BTL,
862: for instance,
863: might have a dozen gateways to the outside world;
864: a non-BTL site
865: could choose the closest gateway.
866: The only restriction
867: would be that all gateways
868: maintain a consistent view of the domain
869: they represent.
870: .sh 2 "Logical Structure"
871: .pp
872: Logically,
873: domains are organized into a tree.
874: There need not be a host actually associated
875: with each level in the tree \*-
876: for example,
877: there will be no host associated with the name
878: .q UUCP.
879: Similarly,
880: an organization might group names together for administrative reasons;
881: for example,
882: the name
883: .(l
884: CAD.research.BigCorp.UUCP
885: .)l
886: might not actually have a host representing
887: .q research.
888: .pp
889: However,
890: it may frequently be convenient to have a host
891: or hosts
892: that
893: .q represent
894: a domain.
895: For example,
896: if a single host exists that
897: represents
898: Berkeley,
899: then mail from outside Berkeley
900: can forward mail to that host
901: for further resolution
902: without knowing Berkeley's
903: (rather volatile)
904: topology.
905: This is not unlike the operation
906: of the telephone network.
907: .pp
908: This may also be useful
909: inside certain large domains.
910: For example,
911: at Berkeley it may be presumed
912: that most hosts know about other hosts
913: inside the Berkeley domain.
914: But if they process an address
915: that is unknown,
916: they can pass it
917: .q upstairs
918: for further examination.
919: Thus as new hosts are added
920: only one host
921: (the domain master)
922: .i must
923: be updated immediately;
924: other hosts can be updated as convenient.
925: .pp
926: Ideally this name resolution process
927: would be performed by a name server
928: (e.g., [Su82b])
929: to avoid unnecessary copying
930: of the message.
931: However,
932: in a batch network
933: such as UUCP
934: this could result in unnecessary delays.
935: .sh 1 "COMPARISON WITH DELIVERMAIL"
936: .pp
937: .i Sendmail
938: is an outgrowth of
939: .i delivermail .
940: The primary differences are:
941: .np
942: Configuration information is not compiled in.
943: This change simplifies many of the problems
944: of moving to other machines.
945: It also allows easy debugging of new mailers.
946: .np
947: Address parsing is more flexible.
948: For example,
949: .i delivermail
950: only supported one gateway to any network,
951: whereas
952: .i sendmail
953: can be sensitive to host names
954: and reroute to different gateways.
955: .np
956: Forwarding and
957: :include:
958: features eliminate the requirement that the system alias file
959: be writable by any user
960: (or that an update program be written,
961: or that the system administration make all changes).
962: .np
963: .i Sendmail
964: supports message batching across networks
965: when a message is being sent to multiple recipients.
966: .np
967: A mail queue is provided in
968: .i sendmail.
969: Mail that cannot be delivered immediately
970: but can potentially be delivered later
971: is stored in this queue for a later retry.
972: The queue also provides a buffer against system crashes;
973: after the message has been collected
974: it may be reliably redelivered
975: even if the system crashes during the initial delivery.
976: .np
977: .i Sendmail
978: uses the networking support provided by 4.2BSD
979: to provide a direct interface networks such as the ARPANET
980: and/or Ethernet
981: using SMTP (the Simple Mail Transfer Protocol)
982: over a TCP/IP connection.
983: .+c
984: .ce
985: REFERENCES
986: .nr ii 1.5i
987: .ip [Crocker77]
988: Crocker, D. H.,
989: Vittal, J. J.,
990: Pogran, K. T.,
991: and
992: Henderson, D. A. Jr.,
993: .ul
994: Standard for the Format of ARPA Network Text Messages.
995: RFC 733,
996: NIC 41952.
997: In [Feinler78].
998: November 1977.
999: .ip [Crocker82]
1000: Crocker, D. H.,
1001: .ul
1002: Standard for the Format of Arpa Internet Text Messages.
1003: RFC 822.
1004: Network Information Center,
1005: SRI International,
1006: Menlo Park, California.
1007: August 1982.
1008: .ip [Feinler78]
1009: Feinler, E.,
1010: and
1011: Postel, J.
1012: (eds.),
1013: .ul
1014: ARPANET Protocol Handbook.
1015: NIC 7104,
1016: Network Information Center,
1017: SRI International,
1018: Menlo Park, California.
1019: 1978.
1020: .ip [Nowitz78]
1021: Nowitz, D. A.,
1022: and
1023: Lesk, M. E.,
1024: .ul
1025: A Dial-Up Network of UNIX Systems.
1026: Bell Laboratories.
1027: In
1028: UNIX Programmer's Manual, Seventh Edition,
1029: Volume 2.
1030: August, 1978.
1031: .ip [Schmidt79]
1032: Schmidt, E.,
1033: .ul
1034: An Introduction to the Berkeley Network.
1035: University of California, Berkeley California.
1036: 1979.
1037: .ip [Shoens79]
1038: Shoens, K.,
1039: .ul
1040: Mail Reference Manual.
1041: University of California, Berkeley.
1042: In UNIX Programmer's Manual,
1043: Seventh Edition,
1044: Volume 2C.
1045: December 1979.
1046: .ip [Solomon81]
1047: Solomon, M.,
1048: Landweber, L.,
1049: and
1050: Neuhengen, D.,
1051: .ul
1052: The Design of the CSNET Name Server.
1053: CS-DN-2.
1054: University of Wisconsin,
1055: Madison.
1056: October 1981.
1057: .ip [Su82a]
1058: Su, Zaw-Sing,
1059: and
1060: Postel, Jon,
1061: .ul
1062: The Domain Naming Convention for Internet User Applications.
1063: RFC819.
1064: Network Information Center,
1065: SRI International,
1066: Menlo Park, California.
1067: August 1982.
1068: .ip [Su82b]
1069: Su, Zaw-Sing,
1070: .ul
1071: A Distributed System for Internet Name Service.
1072: RFC830.
1073: Network Information Center,
1074: SRI International,
1075: Menlo Park, California.
1076: October 1982.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.