Annotation of 43BSDReno/usr.sbin/sendmail/doc/usenix.me, revision 1.1

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.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.