BSD 4_3_Net_1 development
authorCSRG <csrg@ucbvax.Berkeley.EDU>
Wed, 25 Jan 1989 04:49:39 +0000 (20:49 -0800)
committerCSRG <csrg@ucbvax.Berkeley.EDU>
Wed, 25 Jan 1989 04:49:39 +0000 (20:49 -0800)
Work on file sendmail/cf/M4_KEY
Work on file sendmail/cf/KEY
Work on file sendmail/cf/README

Synthesized-from: CSRG/cd2/net.1

sendmail/cf/KEY [new file with mode: 0644]
sendmail/cf/M4_KEY [new file with mode: 0644]
sendmail/cf/README [new file with mode: 0644]

diff --git a/sendmail/cf/KEY b/sendmail/cf/KEY
new file mode 100644 (file)
index 0000000..86eb043
--- /dev/null
@@ -0,0 +1,16 @@
+
+Macro                                  Class
+-----                                  -----
+A      Internet relay                  --
+B      BITNET relay                    --
+C      CSNET relay                     --
+D      domain name
+I      --                              "Fake" (Internal) domains, i.e.
+                                       UUCP, BITNET, CSNET.
+N      --                              hosts registered with the NIC
+R      UUCP relay host                 --
+U      This host's UUCP name           UUCP aliases
+V      None                            List of our UUCP neighbors
+W      Host to forward to for $=W      UUCP hosts on $W
+X      Host to forward to for $=X      UUCP hosts on $X
+Y      Host to forward to for $=Y      UUCP hosts on $Y
diff --git a/sendmail/cf/M4_KEY b/sendmail/cf/M4_KEY
new file mode 100644 (file)
index 0000000..e7eb7aa
--- /dev/null
@@ -0,0 +1,55 @@
+M4 Macros
+
+EXTERNAL_VERSION       ``#'    `%W%' (Berkeley) `%G%''
+
+     The SCCS id of the "outside" file.
+
+INTERNET_ALIASES       `Cwcad ucbcad'
+
+     If defined, the line which lists the w class.  If not defined,
+defaults to `Cwmonet ucbmonet' with a warning to replace this line
+with your hostname.
+
+UUCP_NAME              `DUucbcad'
+
+     If defined, includes UUCP code.  Used to define your official
+UUCP hostname.
+
+UUCP_ALIASES           `CUucbcad'
+
+     Included only if UUCP_NAME is defined, lists aliases for UUCP.
+
+UUCP_HOSTS_FILE                `../machdep/uucp.cad.m4'
+
+     Included only if UUCP_NAME is defined.  Defines class V of
+local UUCP hosts by including the appropriate m4 file.
+
+SMTPUUCP               `../machdep/smtpuucp.cad.m4'
+
+     If defined, use SMTP to resolve local UUCP connections (while
+keepign bangist format).  Should be defined to be the file that
+contains thef ruleset 0 additions.
+
+INTERNET_RELAY         `DAcad.Berkeley.EDU'
+
+     If defined, this will be the machine behind which non-NIC registered
+hosts are hidden, resuling in addresses of the form
+
+       user%host@INTERNET_RELAY
+
+If not defined, defaults to ucbvax.Berkeley.EDU.
+
+UUCP_RELAY             `DRcad'
+
+     If defined, this will be the machine to which non-local UUCP traffic
+is forwarded.  If not defined, defaults to ucbvax.
+
+BITNET_RELAY           `DBjade.Berkeley.EDU'
+
+     If defined, this will be the machien to which BITNET traffic
+is forwarded.  If not defined, it defaults to jade.Berkeley.EDU.
+
+CSNET_RELAY            `DCrelay.cs.net'
+
+     If defined, this will be the machine to which CSNET traffic is
+forwarded.  If not defined, it defaults to relay.cs.net.
diff --git a/sendmail/cf/README b/sendmail/cf/README
new file mode 100644 (file)
index 0000000..cda1a6e
--- /dev/null
@@ -0,0 +1,392 @@
+INTRODUCTION:
+-------------
+
+This document describes (in some detail, though undoubtedly not enough!)
+the sendmail configuration files currently in use at Berkeley as distributed
+with version 5.61 of sendmail.  It discusses the configuration file
+directory hierarchy, how the files are processed by m4(1), what functionality
+the files provide, what m4(1) options can be used to produce specific
+results, and goes through an example or two.  It concludes with a list
+of things that will change in the next release of the configuration files.
+
+This is a working draft; your comments are appreciated.  Please send your
+suggestions to Phil Lapsley, phil@ucbvax.berkeley.edu, ...!ucbvax!phil.
+
+
+HIERARCHY:
+----------
+
+The "cf" subdirectory is organized as follows:
+
+                                       cf
+                                       |
+                       +---------------+---------------+
+                       |               |               |
+                     sitedep           m4              cf
+                       |               |             /    \
+                       *.m4            *.m4        *.mc   *.cf
+
+where the directories contain the following:
+
+       sitedep         Site dependent parts of configuration files
+                       in m4(1) include files.
+
+       m4              Site independent parts of configuration files
+                       in m4(1) include files.
+
+       cf              Includes "master configuration" (.mc) files
+                       that include m4 files from ../m4 and ../sitedep.
+                       .mc files are processed by m4(1) and result in
+                       configuration files (.cf).
+
+In the remainder of this document, all path names are referenced
+relative to the top level "cf" directory.  Hence, the m4 subdirectory
+is called "cf/m4".
+
+
+WHERE m4(1) FITS INTO ALL OF THIS:
+----------------------------------
+
+Configuration files are built by typing "make" in cf/cf.  This
+runs m4(1) on the .mc files in cf/cf and produces .cf files.
+
+The philosophy at Berkeley is to place as much information into
+one .mc file as possible, and then use m4 conditional substitution
+(ifdef, for example) to produce other configuration files from it.
+This results in a substantial reduction of duplicated code that must
+be maintained separately.
+
+The main master configuration file that contains all this information
+is "cf/proto.mc".  This file has a number of m4 conditional substitutions
+that can be controlled by other .mc files that include "cf/proto.mc".
+
+For example, most hosts at Berkeley have only SMTP (TCP) connections
+to other hosts.  A file called "ucbproto.cf" takes care of these
+machines by defining the m4 flags needed to produce only SMTP mailer
+definitions from "cf/proto.mc".  Since this is default behavior, very
+little needs to be defined.
+
+But some hosts at Berkeley (e.g., cad.Berkeley.EDU) have both SMTP
+connections and UUCP connections as well.  Thus, they need to
+produce a configuration file that contains both SMTP and UUCP mailer
+definitions, and they need to include a list of directly connected
+UUCP neighbors.  The file "cf/cad.mc" does this by setting the m4
+flags for "cf/proto.mc" that say "(1) I am a UUCP host with hostname "ucbcad",
+(2) a list of my UUCP neighbors can be found in ../sitedep/uucp.cad.m4".
+
+Thus, there are many .mc files in cf/cf that simply define m4 flags and
+then include "cf/proto.mc" to produce a specific configuration file.
+
+Note:
+
+       IT IS STRONGLY SUGGESTED THAT YOU, THE SYSTEM MANAGER,
+       CONTINUE TO MAINTAIN CONFIGURATION FILES BY USING THIS
+       m4(1) METHOD.  TRYING TO MAINTAIN MULTIPLE .CF FILES
+       ON SEPARATE MACHINES WILL LEAD TO INSANITY.
+
+
+With that out of the way, we should now examine the functionality
+provided by the supplied sendmail configuration files, and then
+talk in detail about the m4(1) options that control this.
+
+FUNCTIONALITY PROVIDED BY THE SUPPLIED SENDMAIL CONFIGURATIONS:
+---------------------------------------------------------------
+
+Mailers:
+--------
+
+The sendmail configuration files come with the following mailers:
+
+       local           For delivery of messages to users on the
+                       local machine.
+
+       tcp             For SMTP delivery of messages across the
+                       the Internet.
+
+       tcpld           For SMTP delivery of messages within the
+                       local domain.
+
+       uucp            For delivery of messages to a UUCP neighbor.
+
+       smtpuucp        For delivery of messages to a UUCP neighbor
+                       with whom we also share Internet connectivity.
+
+The tcp/tcpld mailers and the smtpuucp mailers deserve a little more
+explanation.
+
+The "tcp" and "tcpld" mailers:
+------------------------------
+
+As regards tcp and tcpld: in theory, there should be only one mailer
+here, called "smtp", that deals with addresses in the form "user@host.domain".  
+Everyone on the Internet would use this, regardless of what domain
+they were in.  Host name lookups would be performed via the domain naming
+system (DNS), and no central registry of machine names would be necessary.
+
+Unfortunately, this is not the case.  The MILNET community is still
+in transition towards the DNS, and until this transition is complete,
+they do not have to use the nameserver.  Rather, they can "legally"
+still use the host table supplied by SRI-NIC to translate names to
+addresses.  This means that to be strictly legal, we must send out
+messages in the form "user@host.domain" ONLY FOR machines that are
+registered with SRI NIC.  Machines that are not registered with the
+NIC must be "hidden" behind a relay machine, e.g.,
+user%unregistered_host@registered_host.domain.  This, when MILNET folks
+reply to this, the mail passes through "registered_host.domain" first.
+
+Currently this "hiding" behind NIC registered hosts is performed by
+the "tcp" mailer.
+
+Since you don't want to register all the hosts at your site with
+the NIC (and they don't want you to!), the "tcpld" mailer was created.
+The idea here is that you KNOW all the hosts in your local domain
+use the nameserver, so there is no need to hide mail behind a NIC
+registered relay -- that would only slow things down.  So the "tcpld"
+does not do any hiding of unregistered hosts behind a registered relay.
+
+Eventually the "tcpld" mailer will become the "smtp" mailer mentioned above.
+
+The "smtpuucp" mailer:
+----------------------
+
+The "smtpuucp" mailer is another fun one.  As time progresses, many
+hosts with whom one has UUCP connections join the Internet.  Unfortunately,
+if the UUCP connection existed for any length of time, people are
+probably used to using it, complete with the bangist syntax that comes
+with UUCP.  As a result, many sites elect to keep their
+UUCP connections even though they have TCP/IP connectivity to the sites
+in question.  This turns out not be such a good idea because of the
+double-queuing incurred by UUCP, explained in the following example.
+
+For concreteness, consider the following scenario: ucbvax.Berkeley.EDU
+(UUCP host "ucbvax") and decvax.dec.com (UUCP host "decvax") have shared
+a cross county UUCP link that is heavily used by many people.  Let's say
+that a piece of mail is routed through the ucbvax-decvax link via UUCP.
+The queueing process is:
+
+
+step   host    action
+-----  -----   ------
+1      ucbvax  incoming mail is accepted via UUCP
+2      ucbvax  uuxqt is queued to invoke sendmail.
+3      ucbvax  sendmail parses the message.
+4      ucbvax  sendmail passes the message to the UUCP
+               mailer for delivery to decvax.
+5      ucbvax  message is placed in the outgoing UUCP queue for decvax
+
+6      decvax  uucico takes the message from ucbvax
+7      decvax  uuxqt is queued to invoke sendmail
+8      decvax  sendmail parses the message
+9      decvax  sendmail passes the message to someplace else.
+
+Note that the message transited the inbound UUCP queue on ucbvax, the sendmail
+queue on ucbvax, the outbound UUCP queue on ucbvax, the inbound UUCP queue
+on decvax, etc.
+
+Now, if decvax and ucbvax have SMTP connectivity, the session is more
+manageable:
+
+step   host    action
+-----  -----   ------
+1      ucbvax  incoming mail is accepted via UUCP
+2      ucbvax  uuxqt is queued to invoke sendmail.
+3      ucbvax  sendmail parses the message
+4a     ucbvax  sendmail delivers it to decvax.dec.com via SMTP.
+
+a      decvax  sendmail accepts the message from ucbvax via SMTP.
+8      decvax  sendmail parses the message.
+9      decvax  sendmail passes it to someplace else.
+
+Note that old steps (5) and (7), the UUCP queueing, are avoided entirely.
+
+The only trick to the "smtpuucp" mailer is that even though it uses
+SMTP to communicate with its neighbors, it must use the UUCP syntax
+and rewriting rulesets so that the operation is transparent to the
+outside world.  This is easy enough to do.
+
+Other functionality:
+-------------------
+
+Aside from the mailers supplied, the basic configuration files
+support the following features:
+
+       * Domains.  Addresses of the form "user@host.domain" are
+         considered to be the basic type of address we deal with.
+
+       * Fake domains.  Addresses of the form:
+
+               user@host.BITNET
+       and
+               user@host.CSNET
+
+         are forwarded to a CSNET relay host and a BITNET relay host,
+         respectively.
+
+         Note: this feature exists for convenience.  As CSNET and
+         BITNET convert to domains, it will go away.  In particular,
+         "user@host.CSNET" is slated to get the axe in the next release.
+
+m4(1) OPTIONS USED IN THE .MC FILES:
+------------------------------------
+
+The following options, from "most important" to "trivial", can be
+used to control what configuration file you get from running m4(1)
+on "cf/proto.mc".  As explained earlier, the standard practice is to
+create an ".mc" file for a particular configuration that contains
+all the m4(1) macro definitions/flags you want, and then have
+that .mc file include "mc/proto.mc".
+
+Macro name             Example (you must include the ` and ')!
+----------             ---------------------------------------
+
+DOMAIN                 `DDBerkeley.EDU'
+
+     This MUST be defined to be your Internet domain.
+
+INTERNET_RELAY         `DAcad.Berkeley.EDU'
+
+     If defined, this will be the machine behind which non-NIC registered
+hosts are hidden, resulting in addresses of the form
+
+       user%host@internet_relay.domain
+
+e.g.,
+
+       moore%prefect@cad.Berkeley.EDU
+
+     If not defined, outgoing addresses will always be of the form
+
+       user@host.domain
+
+regardless of whether "host.domain" is registered with the NIC.
+
+UUCP_NAME              `DUucbcad'
+
+     If defined, includes the UUCP mailer and assumes you have local
+UUCP connections.  The UUCP_NAME macro is used to define your
+canonical UUCP hostname.  See also: UUCP_ALIASES and UUCP_HOSTS_FILE.
+
+UUCP_ALIASES           `CUucbcad cad'
+
+     Used only if UUCP_NAME is defined, this macro lists any UUCP
+aliases for your machine.  See also: UUCP_NAME and UUCP_HOSTS_FILE.
+
+UUCP_HOSTS_FILE                `../sitedep/uucp.cad.m4'
+
+     Used only if UUCP_NAME is defined.  Defines class V of
+local UUCP hosts by including the appropriate m4 file.  See also:
+UUCP_NAME and UUCP_ALIASES.
+
+UUCP_RELAY             `DRcad.Berkeley.EDU'
+
+     If defined, this will be the machine to which non-local UUCP traffic
+is forwarded.  That is, any address that ends in ".UUCP" that is
+not listed in the V class (as defined by UUCP_HOSTS_FILE) will be
+forwarded to the UUCP_RELAY host via the "tcpld" mailer.
+
+UUCP_ONLY              1
+
+     If defined, makes sure that no TCP/IP based mailers will be
+put in the resulting configuration file.  Normally undefined.
+
+SMTPUUCP               `../sitedep/smtpuucp.cad.m4'
+
+     If defined, use SMTP to resolve certain UUCP connections (while
+keeping UUCP syntax).  Should be defined to be a file that
+contains the list of pairs of UUCP names and their corresponding
+Internet names.  See "machdep/smtpuucp.ucbvax.m4" for an example
+of what this should look like.
+
+BITNET_RELAY           `DBjade.Berkeley.EDU'
+
+     If defined, this will be the machine to which BITNET traffic
+(i.e., mail to user@host.bitnet) is forwarded.  If not defined,
+addresses of the form "user@host.bitnet" will bounce.
+
+CSNET_RELAY            `DCrelay.cs.net'
+
+     If defined, this will be the machine to which CSNET traffic
+(i.e., mail to user@host.csnet) is forwarded.  If not defined, addresses
+of that form will bounce.
+
+ARPAKLUDGE             `1'
+
+     If defined, this turns on a kludge to reduce mail load on your
+INTERNET_GATEWAY.  What is done is the following: if mail is outgoing
+to a machine in the ".arpa" domain and we're not registered with the
+NIC, we hide ourselves behind our INTERNET_GATEWAY.  If the machine
+to which mail is being delivered is NOT in the ".arpa" domain, we
+assume they use the domain name system and can reply to our address --
+hence, we don't hide anywhere.
+
+AN EXAMPLE OR TWO:
+------------------
+
+Let's consider a hypothetical system at Foo, Inc.  Foo, Inc. is on the
+ARPA Internet and is the proud owner of the domain "foo.com".  Machines
+in "foo.com" exchange mail with other hosts on the Internet via SMTP.
+Foo, Inc. also has customers with whom they have UUCP links -- these
+links are all on the machine "uucp-gw.foo.com".  Mail to any address
+that ends in ".UUCP" should be forwarded to "uucp-gw.foo.com".  They
+also have a gateway to the bitnet through their local machine
+"bitnet-gw.foo.com"; mail to any address ending in ".bitnet" should go
+there.  They intend to take advantage of the kind folks at CSNET by
+forwarding mail to "host.csnet" to the machine "relay.cs.net".
+
+The master configuration file for a generic machine on the corporate
+ethernet might look like this:
+
+define(DOMAIN, `DDfoo.com')
+define(UUCP_RELAY, `DRuucp-gw.foo.com')
+define(BITNET_RELAY, `DBbitnet-gw.foo.com')
+define(CSNET_RELAY, `DCrelay.cs.net')
+include(proto.mc)
+
+And that's it!  The system manager at "foo.com" would simply install
+this in the "cf" subdirectory, add a production to the make file,
+and type "make foo.cf".  This would run m4(1) on the .mc file and
+we're done.
+
+Now let's turn to the machine "uucp-gw.foo.com".  It obviously needs
+to have the UUCP mailer compiled in, and it needs a list of UUCP
+neighbors with whom it is connected.  Of course, it also needs a TCP/IP
+(SMTP) based mailer so it can talk to the rest of the company.
+On the UUCP network, "uucp-gw.foo.com" is known as "foo".
+The master configuration file might be:
+
+define(DOMAIN, `DDfoo.com')
+define(UUCP_NAME, `DUfoo')
+define(UUCP_ALIASES, `CUfoo')
+define(UUCP_HOSTS_FILE, `../sitedep/uucp.foo.m4')
+define(BITNET_RELAY, `DBbitnet-gw.foo.com')
+define(CSNET_RELAY, `DCrelay.cs.net')
+include(proto.mc)
+
+Note that we didn't define UUCP_RELAY here, since we ARE the UUCP relay.
+
+The file "../sitedep/uucp.foo.m4" contains a list of our UUCP neighbors:
+
+CV     oink
+CV     bletch
+CV     spam
+
+indicating that "uucp-gw.foo.com" is directly connected to three other
+machines via UUCP: "oink", "bletch", and "spam."
+
+
+WHAT WILL BE CHANGING IN THE NEXT RELEASE:
+------------------------------------------
+
+In the next release, the following things should change:
+
+1. The MILNET should have gotten its act together.  This means
+   that the "tcp" mailer goes away.  The "tcpld" mailer will
+   be renamed "smtp".  The "N" class (NIC registered hosts)
+   gets axed.  The ARPAKLUDGE and INTERNET_RELAY  m4(1) options
+   will disappear as well.
+
+2. The CSNET "fake domain" (i.e., user@host.csnet) will cease
+   to be supported.
+
+3. The "smtp" mailer rulesets (currently 17/27) will be rewritten,
+   along with much of rulesets 0 and 3.