[mod.sources] GaTech Sendmail configuration

sources-request@genrad.UUCP (04/24/85)

From: Gene Spafford <spaf@gatech>

Recently, I made an offer in "net.mail" to send copies of our sendmail
configuration files to anyone wishing copies.

The response has been staggering.  25 requests in 3 days.  I am sure
the article has not propagated everywhere yet.

So, I'm posting them here.  If you want to read some of the discussion
about this, see articles <434@gatech.CSNET> and <443@gatech.CSNET>
along with the articles they reference (in net.mail).

I'd really appreciate it if anyone finding bugs or enchancements for
these files would please communicate them to me.  I'll also try to
answer questions about how or why something is set up the way it is
(although I won't claim to be a sendmail wizard by any stretch of the
imagination) -- but I will only consider questions MAILED to me.

I hope some of you find these of value.
--gene

: ------------------ cut here -----------------------------------
: to unbundle, "sh" this file -- DO NOT use csh
:  SHAR archive format.  Archive created Wed Apr 24 09:45:58 EST 1985
echo x - README
sed 's/^X//' > README <<'+FUNKY+STUFF+'
XThe files in this package build the sendmail.cf files for machines at
XGeorgia Tech.  They are derived from the standard BSD 4.2 sendmail
Xfiles, and from a set of sendmail files we received along with PMDF
Xfrom the folks at CSNet.  The CSNet set of files were put together by
XRay Essick (essick@uiucdcs) and were a great help in putting this
Xpackage together.
X
XThe machines using "sendmail" at Georgia Tech fall into 3 basic
Xcategories: gateway ("gatech"), department machines on a common
Xethernet ("stratus", "nimbus", et.al.), and campus machines not on the
XEtherent (only "gt-cmmsr" so far).
X
X"gatech" is intended to be the campus gateway machine.  It is on the
Xcommon ethernet, has over 60 uucp contacts known to the outside world,
Xhas a CSNet connection, and a set of rotored phone lines.  It is also
Xthe "traditional" mail address known to most outsiders.
X
XThe department machines currently are comprised of the Clouds research
Xmachines "stratus", "cirrus", and "nimbus", and the ICS/OCS Pyramid
X"gitpyr".  They are connected via a common ethernet link, and they all
Xcan speak TCP at each other.  Other machines are expected to be added
Xto this group before long.  Almost all of these machines have a single
Xphone line and/or direct links for uucp to machines that can't speak
XTCP, such as all our 3B equipment.
X
XThe third class of machine on campus runs sendmail but has no TCP
Xconnection to the others because our Net/One bridge won't pass TCP
Xpackets across the backbone.  These sites use a phone line or Net/One
Xvirtual circuit to connect to "gatech" and some of the other systems.
XCurrently, the Man-Machine Center Vax, "gt-cmmsr" is the only machine
Xin this state, but others are currently being arranged.
X
XThe basic idea in our configuration is for users to be able to use
Xaddresses of the forms:
X		site!user, site!site2!user, user@site.UUCP
X		user@site.CSNET, user@site.ARPA, user@site.MAILNET,
X		user@site.BITNET user@site.DEC
Xand the local case:     user@site.GTNET, site:user, user%site
XWe'd also like to be able to use just "user@site" and let the mailer
Xfigure it out.  Here's how we accomplish that.
X
XAll of the internal machines are simple: they merely canonicalize the
Xaddress according to standard rule, look to see if it is a GTNET host
Xthat they know and send the letter straight to that host. Local letters
Xare handled appropriately. Any other address which looks like a network
Xaddress is sent to the relay site, "gatech", except that each machine
Xcan have a small number of direct UUCP connections to outside
Xmachines.  Ruleset zero for these systems check for these UUCP
Xconnections.  Note that we use a file (/usr/lib/mail/uucp.local) to
Xhold the UUCP connection list so that we don't have to play around with
Xthe actual sendmail configuration if we change contacts.  The only
Xthing one has to do to update the list of UUCP connections available on
Xthat host is update the file. If you run with a frozen sendmail.cf, you
Xalso have to type "/usr/lib/sendmail -bz".
X
XThe "gatech" machine is the big daddy.  Any address that the internal
Xmachines are unable to handle gets bounced to this machine. The
X"gatech" machine speaks to a plethora of people. It has Ethernet
Xconnections within the department, over 60 UUCP connections, and a PMDF
Xconnection to the CSnet-relay.  Someday we hope to have some form of
Xdirect Internet connection too.  "gatech" should be able to recognize
Xand route any (valid) address.  The "gatech" machine compares UUCP
Xaddresses against a file similarly to the way the other machines handle
Xthem.  Mail to the CSNET domain is sent to the PMDF mailer, which
Xqueues the letter for phone transmission to the CSnet-relay host.  Mail
Xto the ARPA domain, since we have no direct ARPA connection, is handed
Xto the PMDF mailer for transmission to the CSnet-relay, which is an
XARPA host.  Mail to the BITNET (IBM derivative) and MAILNET (through
XMIT-multics) machines are routed to the host defined by the $B and $M
Xmacros.  Mail to the DEC E-net is routed to the site listed in the $E
Xmacro, currently "decwrl.arpa".  Since we do not have connections to
Xany of those networks, we instead append the address of a known gateway
Xto the address forming something like: user@host.mailnet@mit-multics.arpa
Xand then re-iterate through ruleset 0 to get from our machine to the
Xgateway.
X
XAny address without a domain gets converted into an address of the form
X"user@site", and it makes an attempt to intuit the domain. This is done
Xby checking (in order) the list of local sites, local uucp contacts (1
Xhop), CSNET, ARPA, BITNET, UUCP, and DEC E-net sites. In the event of a
Xmatch, the proper domain name is appended to the address and we
Xre-iterate through ruleset zero.  This catches a fair number of missing
Xdomain problems and hasn't caused too much confusion about names in use
Xin several domains.
X
XFinally, the "gatech" machine takes any left-over non-local names and
Xreturns them to the sender with a message about the fact that there is
Xan unknown host/domain name in his letter.
X
XThe UUCP mailer on "gatech" is a re-routing mailer.  Any path or address
Xhanded to "uumail" gets an "optimal" path supplied to it.  That is, the
Xprogram steps through the address from ultimate destination to
Xbeginning, and if it knows a path to that site it will substitute that
Xpath for the remainder of the user-supplied path.  For example, if the
Xaddress "a!b!c!d!e!f" is provided to the mailer, and it knows how to
Xget to site "d" via "z!y" (but no idea how to get to "e"), it will
Xrewrite the path to be "z!y!d!e!f".  The path database is built using
X"pathalias" on the uucp map data obtained twice a month from the Usenix
Xmachine ("gatech" is a regional repository of UUCP map information).
XThe ruleset along with "uumail" rewrites the "To:" field to look like
X"f@e.UUCP" since the user-supplied address-path is probably not the
Xpath that the mailer is going to use. Note that this means that
X"uumail.m4" and "uucpm.m4" are NOT identical in function -- beware if
Xyou decide to use one of them as a base in building your own files.
X"uucpm.m4" does not muck about with the "To:" field.
X
XThis uucp mechanism allows any of our users to simply address mail to
X"foo@site.UUCP" and not worry about a path.  It also optimizes message
Xpaths provided when answering news articles, and it allows our
Xneighbors without mail routing software to address mail to
X"gatech!somesite!person" and expect the mail to get through, if
Xpossible.  So far, no one has complained about not being able to force
Xa particular path through our mailer.
X
XThat's about it.  If you find these useful in some way, great.  If you
Xshould find bugs or possible enhancements to these files, I would
Xgreatly appreciate hearing about it.
X----
XGene Spafford
XThe Clouds Project, School of ICS, Georgia Tech, Atlanta GA 30332
XCSNet:	Spaf @ GATech		ARPA:	Spaf%GATech.CSNet @ CSNet-Relay.ARPA
Xuucp:	...!{akgua,allegra,hplabs,ihnp4,linus,seismo,ulysses}!gatech!spaf
+FUNKY+STUFF+
echo '-rw-r-----  1 root         6948 Apr 24 09:44 README    (as sent)'
chmod u=rw,g=r,o= README
ls -l README
echo x - MANIFEST
sed 's/^X//' > MANIFEST <<'+FUNKY+STUFF+'
XFile		Description
X----		-----------
XKEY		Describes some of the macros and classes we use.
XMANIFEST	This file; directory of files.
XMakefile	Processes all our files.
XREADME		Description of what files are and what they do.
Xbase.m4		"basic" information included with all configurations.
Xcirrus.mc	Master configuration file for gt-cirrus Clouds machine.
Xcsbase.m4	Information specific to your installation. 
Xetherm.m4	Actual definition of the Ethernet mail "channel".
Xgatech.mc	Master configuration file for our main relay machine.
Xgitpyr.mc	Master configuration file for ICS/OCS Pyramid.
Xgt-cmmsr.mc	Master configuration file for MMR Vax.
Xlocalm.m4	Actual definition of the "local" mail channel.
Xnimbus.mc	Master configuration for gt-nimbus Clouds machine.
Xpmdfm.m4	Definition of the pmdf mail "channel". 
Xshort2.m4	Short ruleset 0 used by non-ICS sites.
Xshortzero.m4	Short ruleset 0 used in ICS department sites.
Xstratus.mc	Master configuration file for gt-stratus Clouds machine.
Xtcpm.m4		TCP mailer, if we needed to use it.
Xuucpm.m4	Definition of the uucp mail "channel". 
Xuumail.m4	Definition of the uucp optimizing mailer used on "gatech"
Xversion.m4	Define the sendmail version. 
Xzerobase.m4	Machine independent preamble for ruleset 0.
+FUNKY+STUFF+
echo '-r--r--r--  1 root         1237 Apr 24 09:44 MANIFEST    (as sent)'
chmod u=r,g=r,o=r MANIFEST
ls -l MANIFEST
echo x - KEY
sed 's/^X//' > KEY <<'+FUNKY+STUFF+'
X		USES FOR MACROS AND CLASSES
X
X	MACROS				CLASSES
X	======				=======
X
XA	arpanet relay			known arpanet hosts
XB	Bitnet relay (wiscvm.arpa)	known BITNET hosts
XC	CSnet-relay			known CSnet hosts
X -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
XD	full local domain name		(bottom) local domain names
XE       Decwrl.arpa			list of DEC E-net sites
XF	forwarding host, $R default	hosts that we cannot talk directly to
X -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
XG
XH	internet name			all names this host is known by
XI
X -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
XJ
XK
XL
X -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
XM	Mailnet relay site		(could be list of mailnet sites)
XN
XO
X -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
XP
XQ
XR	Relay-host			Relay-host nicknames
X -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
XS					known SMTP partners
XT	Outside domain			Top level domains
XU	(local) uucp name		(local) uucp nicknames
X -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
XV	Version number
XW	Local machine with UUCP links	uucp sites on $W machine
XX					Known UUCP hosts
X -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -
XY	other machine with UUCP links	UUCP hosts connected to $Y machine
XZ
+FUNKY+STUFF+
echo '-rw-r-----  1 root         1414 Apr 24 09:44 KEY    (as sent)'
chmod u=rw,g=r,o= KEY
ls -l KEY
echo x - Makefile
sed 's/^X//' > Makefile <<'+FUNKY+STUFF+'
X######################################################################
X#
X#	Makefile for Sendmail GaTech configuration files
X#
X#		$Header: Makefile,v 4.1 85/04/22 15:13:00 root Rel $
X#
X######################################################################
X
X
XM4	= base.m4 csbase.m4 etherm.m4 localm.m4 shortzero.m4\
X	  uucpm.m4 uumail.m4 version.m4 zerobase.m4 pmdfm.m4 short2.m4
XMC	= gatech.mc stratus.mc nimbus.mc gitpyr.mc cirrus.mc gt-cmmsr.mc
XSRCS=	$(MC) $(M4)
X
XCSALL	= gatech.cf gitpyr.cf stratus.cf nimbus.cf cirrus.cf
XALL	= $(CSALL) gt-cmmsr.cf
X
XGET=	co
X
X.SUFFIXES: .mc .cf
X
X.mc.cf:
X	m4 $*.mc > $*.cf
X
Xall: $(ALL)
X
Xcs:  $(CSALL)
X
Xinstall: cs
X	inst gatech
X	inst stratus
X	inst nimbus
X	inst cirrus
X	echo "Don't forget to restart the daemons."
X
X############################
X#   special dependencies   #
X############################
X
X# all computer science department hosts....
X$(CSALL): csbase.m4
X
X# pessimize -- basic dependencies
X$(ALL): base.m4 localm.m4 uucpm.m4 version.m4 zerobase.m4
X
X# hosts using MMDF/PMDF
Xgatech.cf: pmdfm.m4
X
X# Hosts using Ethernet/SMTP
X$(CSALL): etherm.m4 
X
X# Hosts using optimized uucp mailer
Xgatech.cf: uumail.m4
X
X# Hosts using short definition
Xstratus.cf: shortzero.m4
Xnimbus.cf: shortzero.m4
Xcirrus.cf: shortzero.m4
Xgitpyr.cf: shortzero.m4
X
X# Other cases
Xgt-cmmsr.cf: short2.m4
X
X#####################
X#   administrivia   #
X#####################
X
Xsources: $(SRCS)
X
X$(SRCS):
X	$(GET) -sRel $@
X
Xclean:
X	rm -f *.cf a.out core make.out Make.errs
X
+FUNKY+STUFF+
echo '-rw-r-----  1 root         1475 Apr 24 09:44 Makefile    (as sent)'
chmod u=rw,g=r,o= Makefile
ls -l Makefile
echo x - base.m4
sed 's/^X//' > base.m4 <<'+FUNKY+STUFF+'
X############################################################
X#
X#  General configuration information
X#
X#  This information is basically just "boiler-plate"; it must be
X#  there, but is essentially constant.
X#
X#  Information in this file should be independent of location --
X#  i.e., although there are some policy decisions made, they are
X#  not specific to Gatech per se.
X#
X#  $Header: base.m4,v 4.1 85/04/22 15:13:04 root Rel $
X#
X############################################################
X
Xinclude(version.m4)
X
X##########################
X###   Special macros   ###
X##########################
X
X# my name
XDnMAILER-DAEMON
X# UNIX header format
XDlFrom $g  $d
X# delimiter (operator) characters
XDo.:%@!^=/[]
X# format of a total name
XDq$?x$x $.<$g>
X# SMTP login message
XDe$j Sendmail $v/$V ready at $b
X
X###################
X###   Options   ###
X###################
X
X# location of alias file
XOA/usr/lib/aliases
X# default delivery mode (deliver in background)
XOdbackground
X# (don't) connect to "expensive" mailers
XOc
X# temporary file mode
XOF0600
X# default GID
XOg1
X# location of help file
XOH/usr/lib/sendmail.hf
X# log level
XOL2
X# default messages to old style
XOo
X# queue directory
XOQ/usr/spool/mqueue
X# read timeout -- violates protocols
XOr2h
X# status file
XOS/usr/lib/sendmail.st
X# queue up everything before starting transmission
XOs
X# Queue when we're busy (x) and refuse SMTP when really busy (X)
XOx15
XOX20
X# default timeout interval
XOT5d
X# time zone names (V6 only)
XOtEST,EDT
X# default UID
XOu1
X# wizard's password
XOWa/FjIfuGKXyc2
X
X###############################
X###   Message precedences   ###
X###############################
X
XPfirst-class=0
XPspecial-delivery=100
XPjunk=-100
X
X#########################
X###   Trusted users   ###
X#########################
X
XTroot
XTdaemon
XTuucp
XTnetwork
X
X#############################
X###   Format of headers   ###
X#############################
X
XH?P?Return-Path: <$g>
XHReceived: $?sfrom $s $.by $j ($v/$V)
X	id $i; $b
XH?D?Resent-Date: $a
XH?D?Date: $a
XH?F?Resent-From: $q
XH?F?From: $q
XH?x?Full-Name: $x
XHSubject:
XHPosted-Date: $a
X# H?l?Received-Date: $b
X# H?M?Resent-Message-Id: <$t.$i@$j>
XH?M?Message-Id: <$t.$i@$j>
X
X###########################
X###   Rewriting rules   ###
X###########################
X
X
X################################
X#  Sender Field Pre-rewriting  #
X################################
XS1
X
X###################################
X#  Recipient Field Pre-rewriting  #
X###################################
XS2
X
X#################################
X#  Final Output Post-rewriting  #
X#################################
XS4
X
XR@			$@				handle <> error addr
X
X# externalize local domain info
XR$*<$*LOCAL>$*		$1<$2$D>$3			change local info
XR$*<$+>$*		$1$2$3				defocus
XR$*$=S:$*		$1$2!$3
XR@$+:$+:$+		$@@$1,$2:$3			<route-addr> canonical
X
X# delete duplicate local names -- mostly for arpaproto.mc
XR$+%$=w@$=w		$1@$3				u%UCB@UCB => u@UCB
XR$+%$=w@$=w.$=D		$1@$3.$D			u%UCB@UCB => u@UCB
X
X###########################
X#  Name Canonicalization  #
X###########################
XS3
X
X# handle "from:<>" special case
XR<>			$@@				turn into magic token
XR$*$=S:$=S$*		$1$3$4
XR$*$=S!$=S$*		$1$3$4
X
X# basic textual canonicalization
XR$*<$+>$*		$2				basic RFC821/822 parsing
XR$+ at $+		$1@$2				"at" -> "@" for RFC 822
XR$*<$*>$*		$1$2$3				in case recursive
X
X# make sure <@a,@b,@c:user@d> syntax is easy to parse -- undone later
XR@$+,$+			@$1:$2				change all "," to ":"
X
X# localize and dispose of domain-based addresses
XR@$+:$+			$@$>6<@$1>:$2			handle <route-addr>
X
X# more miscellaneous cleanup
XR$+			$:$>8$1				host dependent cleanup
XR$+:$*;@$+		$@$1:$2;@$3			list syntax
XR$+@$+			$:$1<@$2>			focus on domain
XR$+<$+@$+>		$1$2<@$3>			move gaze right
XR$+<@$+>		$@$>6$1<@$2>			already canonical
X
X# convert old-style addresses to a domain-based address
XR$+%$+			$@$>6$1<@$2>			user%host
XR$-:$+			$@$>6$2<@$1>			host:user
XR$-.$+			$@$>6$2<@$1>			host.user
XR$+^$+			$1!$2				convert ^ to !
XR$-!$+			$@$>6$2<@$1.UUCP>		resolve uucp names
XR$-=$+			$@$>6$2<@$1.BITNET>		resolve bitnet names
+FUNKY+STUFF+
echo '-rw-r-----  1 root         3987 Apr 24 09:44 base.m4    (as sent)'
chmod u=rw,g=r,o= base.m4
ls -l base.m4
echo x - cirrus.mc
sed 's/^X//' > cirrus.mc <<'+FUNKY+STUFF+'
X############################################################
X############################################################
X#####
X#####		SENDMAIL CONFIGURATION FILE FOR CIRRUS
X#####
X#####	$Header: cirrus.mc,v 4.1 85/04/22 15:13:11 root Rel $
X#####
X############################################################
X############################################################
X
X
X
X############################################################
X###	local info
X############################################################
X
X# internet hostname
XCwgt-cirrus cirrus Cirrus CIRRUS GT-Cirrus GT-CIRRUS GT-cirrus
X
X# UUCP name
XDUgt-cirrus
XCUgt-cirrus cirrus
X
Xinclude(csbase.m4)
Xinclude(shortzero.m4)
+FUNKY+STUFF+
echo '-rw-r-----  1 root          678 Apr 24 09:44 cirrus.mc    (as sent)'
chmod u=rw,g=r,o= cirrus.mc
ls -l cirrus.mc
echo x - csbase.m4
sed 's/^X//' > csbase.m4 <<'+FUNKY+STUFF+'
X#################################################
X#
X#  General configuration information and so on
X#  Specific to GaTech sites
X#
X#  $Header: csbase.m4,v 4.1 85/04/22 15:13:17 root Rel $
X#
X#################################################
X
X######################
X#   General Macros   #
X######################
X
X
X# local domain names
XDDGTNET
XCDgtnet GTNET GTNet GtNet GTnet
X
X# My "top-level" domain (seen on Gatech)
XDTCSNET
X
X# major relay host
XDRgatech
XCRgatech GATECH GATech Gatech GaTech GAtech
X
X# and forwarding host for ether mail
XDFgatech
X
X# my official hostname
XDj$w.$D
X
X# known SMTP/ethernet hosts (this domain only) -- only $R need be complete
XCSgatech Gatech
XCSgitpyr Gitpyr
XCSgt-nimbus nimbus GT-Nimbus Nimbus
XCSgt-cirrus GT-Cirrus cirrus Cirrus
XCSgt-stratus stratus GT-Stratus Stratus
X
X# known top-level domains
XCTARPA UUCP BITNET CSNET MAILNET DEC 
X
X# UUCP hosts that we talk to
XFW/usr/lib/mail/uucp.local
X
X
Xinclude(base.m4)
X
X#######################
X#   Rewriting rules   #
X#######################
X
X##### special local conversions
XS6
X# Recognize "old" syntax mistakes, like UUCP specifications of Ethernet
X#	hosts
XR$*<@$=S.UUCP>		$1<@$2.$D>			uucp-isms
X#
XR$*<@$*$=D>$*		$1<@$2LOCAL>$4			convert local domain
XR$*<@$=S>$*		$1<@$2.LOCAL>$3			user@localhost
XR$*<@$+$=S>$*		$1<@$2$3.LOCAL>$4		user@host.subdomain
XR$*<@$*$=D.$=T>$*	$1<@$2LOCAL>$4			catch "gtnet.csnet"
XR$*<@LOCAL>		$1				degenerate case
X
XR$+%$+<@$R.LOCAL>	$1<@$2.LOCAL>			hacks for % syntax
XR$+%$=S<@$=S.LOCAL>	$1<@$2.LOCAL>			relayed internally
X
XR$*<@$+.$=D.$=D>$*	$1<@$2.$3>$5			make gtnet top level
X
Xinclude(localm.m4)
X
Xinclude(zerobase.m4)
X
+FUNKY+STUFF+
echo '-rw-r-----  1 root         1615 Apr 24 09:44 csbase.m4    (as sent)'
chmod u=rw,g=r,o= csbase.m4
ls -l csbase.m4
echo x - etherm.m4
sed 's/^X//' > etherm.m4 <<'+FUNKY+STUFF+'
X############################################################
X############################################################
X#####
X#####  	Ethernet Mailer specification
X#####
X#####  	$Header: etherm.m4,v 4.1 85/04/22 15:13:21 root Rel $
X#####
X############################################################
X############################################################
X
XMether,	P=[IPC], F=msDFIMuCX, S=11, A=IPC $h
X
XS11
XR$*<@$+>$*		$@$1<@$2>$3			already ok
XR$+			$@$1<@$w.LOCAL>			tack on our hostname
+FUNKY+STUFF+
echo '-rw-r-----  1 root          495 Apr 24 09:44 etherm.m4    (as sent)'
chmod u=rw,g=r,o= etherm.m4
ls -l etherm.m4
echo x - gatech.mc
sed 's/^X//' > gatech.mc <<'+FUNKY+STUFF+'
X############################################################
X############################################################
X#####
X#####		SENDMAIL CONFIGURATION FILE FOR GATCH
X#####
X#####	This one is the big daddy.  There is no "upstairs"
X#####	to bounce a message to -- except perhaps the CSnet
X#####
X#####	$Header: gatech.mc,v 4.2 85/04/23 11:05:00 root Rel $
X#####
X############################################################
X############################################################
X
X
X
X############################################################
X###	local info
X############################################################
X
X# internet hostname
XCwgatech Gatech GATech GaTech ga-tech
X
X# override SMTP hostname to match Arpanet name
XDj$w.csnet
X
X# Our UUCP hostname(s)
XDUgatech
XCUgatech GATech GaTech
X
X# Defined Gateway sites and so on.  Hosts are listed in files.
X#
X# 	ARPA Gateway
XDAcsnet-relay
XFA/usr/lib/mail/arpa.hosts %s
X#
X#	BITNET gateway
XDBwiscvm.arpa
XFB/usr/lib/mail/bitnet.hosts %s
X#
X#	 CSNET gateway
XDCcsnet-relay
XFC/usr/lib/mail/csnet.hosts %s
X#
X#       Gateway to Dec E-Net
XDEdecwrl.arpa
XFE/usr/lib/mail/decnet.hosts %s
X#
X#	Gateway to Mailnet.
XDMmit-multics.arpa
X# (no list of sites at this time)
X#
X#	UUCP network
X#  (no gateway host)
XFX/usr/lib/mail/uucp.hosts %s
X
X
X# we have full sendmail support here
XOa
X
Xinclude(csbase.m4)
X
X################################################
X###  Machine dependent part of ruleset zero  ###
X################################################
X
X
X# 	Resolve names that can go via the ethernet
XR$*<@$*$=S.LOCAL>$*		$#ether$@$3$:$1<@$2$3.$D>$4	user@etherhost
X
X# 	Resolve local UUCP links (all others)
XR<@$+.$-.UUCP>:$+	$#uucp$@$2$:@$1.$2.UUCP:$3	@host.domain.UUCP: ...
XR<@$-.UUCP>:$+		$#uucp$@$1$:$2			@host.UUCP: ...
XR$+<@$+.$-.UUCP>	$#uucp$@$3$:$1@$2.$3.UUCP	user@host.domain.UUCP
XR$+<@$-.UUCP>		$#uucp$@$2$:$1			user@host.UUCP
X
X#
X#	Resolution of the CSNET, ARPA, BITNET and MAILNET domains should really
X#	have some sort of provision for addresses of the form:
X#	"@domain.XXX:rest-of-address" similar to the UUCP stuff
X#
X
X#	Resolve ARPA names - these go by way of the PMDF mailer.
X#       If we had an Arpa link, we'd use the TCP mailer instead.
X#		make sure that we leave the "arpa" in the address
XR$+<@$*.ARPA>		$#pmdf$@$A$:$1<@$2.ARPA>	user@domain.ARPA
X
X# Current: send BITNET mail to a known gatewaying host (wiscvm.arpa)
XR$+<@$*.BITNET>		$@$>0$1%$2.BITNET<@$B>		user@domain.BITNET
X
X#	Resolve mail to the CSNET domain
X#		make sure to leave the "csnet" in the address
XR$+<@$*.CSNET>		$#pmdf$@$C$:$1<@$2.CSNET>	user@domain.CSNET
X
X#	Resolve addresses to the MAILNET domain - these are handled
X#		by the site in the $M macro.  We merely re-iterate rule 0
X#		to get to the site specified by $M.
XR$+<@$*.MAILNET>	$@$>0$1%$2.MAILNET<@$M>		user@domain.MAILNET
X
X#	Resolve DEC E-Net addresses
XR$+<@$*.DEC>		$@$>0$1%$2.DEC<@$E>		user@domain.DEC
X
X#	At this point we look for names of the form
X#	user@site and see if we can intuit a domain for
X#	"site".  If so, we append the domain and try all over again.
XR$+<@$*$=S>		$@$>0$1<@$2$3.$D>		Local host
XR$+<@$*$=W>		$@$>0$1<@$2$3.UUCP>		(local) UUCP host
XR$+<@$*$=C>		$@$>0$1<@$2$3.CSNET>		CSnet host
XR$+<@$*$=A>		$@$>0$1<@$2$3.ARPA>		Arpanet host
XR$+<@$*$=X>		$@$>0$1<@$2$3.UUCP>		(other) UUCP host
XR$+<@$*$=B>		$@$>0$1<@$2$3.BITNET>		BITNET host
XR$+<@$*$=E>		$@$>0$1<@$2$3.DEC>		DEC E-Net host
XR$+<@$*dec-$=E>		$@$>0$1<@$2$3.DEC>		ditto
X
X#	Error on any names with a network in them here since we couldn't
X#	figure out where to send them.
XR$*<@$+>$*		$#error$:Unknown host or domain in address
X
X# remaining names are local (since they aren't on any of our networks)
XR$+			$#local$:$1			everything else
X
X########################################
X###  Host dependent address cleanup  ###
X########################################
X
XS8
XR$*$=U!$+@$+		$3@$4				drop uucp forward
X
X
Xinclude(uumail.m4)
Xinclude(pmdfm.m4)
Xinclude(etherm.m4)
+FUNKY+STUFF+
echo '-rw-r-----  1 root         3912 Apr 24 09:44 gatech.mc    (as sent)'
chmod u=rw,g=r,o= gatech.mc
ls -l gatech.mc
echo x - gitpyr.mc
sed 's/^X//' > gitpyr.mc <<'+FUNKY+STUFF+'
X############################################################
X############################################################
X#####
X#####		SENDMAIL CONFIGURATION FILE FOR GITPYR
X#####
X#####	$Header: gitpyr.mc,v 4.1 85/04/22 15:13:30 root Rel $
X#####
X############################################################
X############################################################
X
X
X
X############################################################
X###	local info
X############################################################
X
X# internet hostname
XCwgitpyr Gitpyr GITPYR
X
X# UUCP name
XDUgitpyr
XCUgitpyr
X
Xinclude(csbase.m4)
Xinclude(shortzero.m4)
+FUNKY+STUFF+
echo '-rw-r-----  1 root          625 Apr 24 09:44 gitpyr.mc    (as sent)'
chmod u=rw,g=r,o= gitpyr.mc
ls -l gitpyr.mc
echo x - gt-cmmsr.mc
sed 's/^X//' > gt-cmmsr.mc <<'+FUNKY+STUFF+'
X############################################################
X############################################################
X#####
X#####		SENDMAIL CONFIGURATION FILE FOR GT-CMMSR
X#####
X#####	$Header: gt-cmmsr.mc,v 4.1 85/04/22 15:13:34 root Rel $
X#####
X############################################################
X############################################################
X
X
X
X############################################################
X###	local info
X############################################################
X
X# internet hostname
XCwgt-cmmsr cmmsr Cirrus CIRRUS GT-Cirrus GT-CIRRUS GT-cmmsr
X
X# UUCP name
XDUgt-cmmsr
XCUgt-cmmsr cmmsr
X
Xinclude(csbase.m4)
Xinclude(short2.m4)
+FUNKY+STUFF+
echo '-rw-r--r--  1 root          673 Apr 24 09:44 gt-cmmsr.mc    (as sent)'
chmod u=rw,g=r,o=r gt-cmmsr.mc
ls -l gt-cmmsr.mc
echo x - localm.m4
sed 's/^X//' > localm.m4 <<'+FUNKY+STUFF+'
X############################################################
X############################################################
X#####
X#####  	Local and Program Mailer specification
X#####
X#####  	$Header: localm.m4,v 4.1 85/04/22 15:13:39 root Rel $
X#####
X############################################################
X############################################################
X
XMlocal,	P=/bin/mail, F=rlsDFMmn, S=10, A=mail -d $u
XMprog,	P=/bin/sh,   F=lsDFMe,   S=10, A=sh -c $u
X
XS10
XR@			MAILER-DAEMON			errors to mailer-daemon
+FUNKY+STUFF+
echo '-rw-r-----  1 root          523 Apr 24 09:44 localm.m4    (as sent)'
chmod u=rw,g=r,o= localm.m4
ls -l localm.m4
echo x - nimbus.mc
sed 's/^X//' > nimbus.mc <<'+FUNKY+STUFF+'
X############################################################
X############################################################
X#####
X#####		SENDMAIL CONFIGURATION FILE FOR NIMBUS
X#####
X#####	$Header: nimbus.mc,v 4.1 85/04/22 15:13:43 root Rel $
X#####
X############################################################
X############################################################
X
X
X
X############################################################
X###	local info
X############################################################
X
X# internet hostname
XCwgt-nimbus nimbus NIMBUS Nimbus GT-Nimbus GT-nimbus GT-NIMBUS
X
X# UUCP name
XDUgt-nimbus
XCUgt-nimbus nimbus
X
Xinclude(csbase.m4)
Xinclude(shortzero.m4)
+FUNKY+STUFF+
echo '-rw-r-----  1 root          678 Apr 24 09:44 nimbus.mc    (as sent)'
chmod u=rw,g=r,o= nimbus.mc
ls -l nimbus.mc
echo x - pmdfm.m4
sed 's/^X//' > pmdfm.m4 <<'+FUNKY+STUFF+'
X############################################################
X############################################################
X#####
X#####		PMDF Phonenet Channel Mailer specification
X#####
X#####	$Header: pmdfm.m4,v 4.1 85/04/22 15:13:47 root Rel $
X#####
X############################################################
X############################################################
X
XMpmdf,	P=/usr/local/lib/pmdf/pmdf-submit,	F=mDsFSn,	S=17, R=17,
X	M=65535, A=pmdf-submit -f $g $u
X#
X#	Notice that the PMDF mailer DOES NOT USE the host field. We
X#	set this host field to "CSNET-RELAY" in all instances where
X#	we call the PMDF mailer so as to be able to send one copy
X#	of a letter with a number of recipients.
X#
X
XS17
X
X# pass <route-addr>'s through
XR<@$+>$*		$@<@$1>$2			resolve <route-addr>
X
X# map colons to dots everywhere.....
XR$*:$*			$1.$2				map colons to dots
X
X# handle the simple case....
XR$+<@$-.ARPA>		$@$1<@$2.ARPA>			user@host.ARPA
XR$+<@$-.CSNET>		$@$1<@$2.CSNET>			user@host.CSNET
X
XR$+<@LOCAL>		$@$1<@$R.CSNET>			local names
XR$+<@$+.LOCAL>		$@$1%$2<@$R.CSNET>		local notes
XR$+<@$*$=S>		$@$1%$2$3<@$R.CSNET>		more local hosts
X
X# handle other external cases
XR$+<@$->		$@$1<@$2>	
XR$+<@$+.$-.$=T>		$@$1%$2<@$3.$4>			approximate something
XR$+<@[$+]>		$@$1<@[$2]>			already ok
X
X# convert remaining addresses to old format and externalize appropriately
XR$+<@$-.UUCP>		$2!$1				u@host.UUCP => host!u
XR$-:$+			$@$1.$2<@$A>			convert berk hosts
XR$+<@$+>		$@$1%$2<@$A>			pessmize
XR$+			$:$1<@$R.CSNET>			tack on our hostname
XR$+%$=A<@$A>		$1<@$2>				strip out unneeded relay
+FUNKY+STUFF+
echo '-rw-r-----  1 root         1564 Apr 24 09:44 pmdfm.m4    (as sent)'
chmod u=rw,g=r,o= pmdfm.m4
ls -l pmdfm.m4
echo x - short2.m4
sed 's/^X//' > short2.m4 <<'+FUNKY+STUFF+'
X################################################
X###  Machine dependent part of ruleset zero  
X###
X###  Short version for non-ICS machines not on 
X###  common ethernet. (e.g., gt-cmmsr)
X###
X###  $Header: short2.m4,v 4.1 85/04/22 15:13:51 root Rel $
X################################################
X
X# resolve names that we can handle locally
XR<@$=W.UUCP>$+		$#uucp$@$1$:$2			@host.UUCP: ...
XR$+<@$=W.UUCP>		$#uucp$@$2$:$1			user@host.UUCP
X
X# other non-local names will be kicked upstairs
XR$*<@$+>$*		$#uucp$@$F$:$1<@$2>$3		user@some.where
X
X# remaining names must be local
XR$+			$#local$:$1			everything else
X
Xinclude(uucpm.m4)
+FUNKY+STUFF+
echo '-rw-r--r--  1 root          627 Apr 24 09:44 short2.m4    (as sent)'
chmod u=rw,g=r,o=r short2.m4
ls -l short2.m4
echo x - shortzero.m4
sed 's/^X//' > shortzero.m4 <<'+FUNKY+STUFF+'
X################################################
X###  Machine dependent part of ruleset zero  
X###
X###  Short version for ICS machines on common
X###  ethernet. (NOT "gatech")
X###
X###  $Header: shortzero.m4,v 4.1 85/04/22 15:13:55 root Rel $
X################################################
X
X# resolve names that we can handle locally
XR<@$=W.UUCP>$+		$#uucp$@$1$:$2			@host.UUCP: ...
XR$+<@$=W.UUCP>		$#uucp$@$2$:$1			user@host.UUCP
X
X# resolve names that can go via the ethernet
XR$*<@$*$=S.LOCAL>$*	$#ether$@$3$:$1<@$2$3.$D>$4	user@etherhost
X
X# other non-local names will be kicked upstairs
XR$*<@$+>$*		$#ether$@$F$:$1<@$2>$3		user@some.where
X
X# remaining names must be local
XR$+			$#local$:$1			everything else
X
Xinclude(uucpm.m4)
Xinclude(etherm.m4)
+FUNKY+STUFF+
echo '-rw-r--r--  1 root          748 Apr 24 09:44 shortzero.m4    (as sent)'
chmod u=rw,g=r,o=r shortzero.m4
ls -l shortzero.m4
echo x - stratus.mc
sed 's/^X//' > stratus.mc <<'+FUNKY+STUFF+'
X############################################################
X############################################################
X#####
X#####		SENDMAIL CONFIGURATION FILE FOR STRATUS
X#####
X#####	$Header: stratus.mc,v 4.1 85/04/22 15:13:58 root Rel $
X#####
X############################################################
X############################################################
X
X
X
X############################################################
X###	local info
X############################################################
X
X# internet hostname
XCwgt-stratus stratus STRATUS GT-Stratus GT-STRATUS
X
X# UUCP name
XDUgt-stratus
XCUgt-stratus stratus
X
Xinclude(csbase.m4)
Xinclude(shortzero.m4)
+FUNKY+STUFF+
echo '-rw-r--r--  1 root          671 Apr 24 09:44 stratus.mc    (as sent)'
chmod u=rw,g=r,o=r stratus.mc
ls -l stratus.mc
echo x - tcpm.m4
sed 's/^X//' > tcpm.m4 <<'+FUNKY+STUFF+'
X############################################################
X############################################################
X#####
X#####  	Arpanet TCP Mailer specification
X#####
X#####  	$Header: tcpm.m4,v 4.1 85/04/23 11:03:09 root Rel $
X#####
X############################################################
X############################################################
X
XMtcp,	P=[IPC], F=msDFMueXL, S=14, R=14, A=IPC $h, E=\r\n
X
XS14
X
X# pass <route-addr>'s through
XR<@$+>$*		$@<@$1>$2			resolve <route-addr>
X
X# map colons to dots everywhere.....
XR$*:$*			$1.$2				map colons to dots
X
X# handle the simple case....
XR$+<@$-.ARPA>		$@$1<@$2.ARPA>			user@host.ARPA
X
X# output local hosts in user%host@Berkeley syntax
XR$+<@LOCAL>		$@$1<@$A>			local names
XR$+<@$+.LOCAL>		$@$1%$2<@$A>			local hosts
XR$+<@$*$=S>		$@$1%$2$3<@$A>
XR$+<@$*$=Z>		$@$1%$2$3<@$A>
X
X# handle other external cases
XR$+<@$->		$@$1<@$2>			no .ARPA on simple names
XR$+<@$+.$-.ARPA>	$@$1%$2<@$3.ARPA>		approximate something
XR$+<@[$+]>		$@$1<@[$2]>			already ok
X
X# convert remaining addresses to old format and externalize appropriately
XR$+			$:$>5$1				=> old format
XR$-:$+			$@$1.$2<@$A>			convert berk hosts
XR$+<@$+>		$@$1%$2<@$A>			pessmize
XR$+			$:$1%$w<@$A>			tack on our hostname
XR$+%$=R<@$=A>		$1<@$3>				strip unneeded relay
+FUNKY+STUFF+
echo '-rw-r-----  1 root         1284 Apr 24 09:44 tcpm.m4    (as sent)'
chmod u=rw,g=r,o= tcpm.m4
ls -l tcpm.m4
echo x - uucpm.m4
sed 's/^X//' > uucpm.m4 <<'+FUNKY+STUFF+'
X############################################################
X############################################################
X#####
X#####  	UUCP Mailer specification
X#####
X#####  	$Header: uucpm.m4,v 4.3 85/04/23 18:44:55 root Exp $
X#####
X############################################################
X############################################################
X
XMuucp,	P=/usr/bin/uux, F=sDFMuU, S=13, R=23, M=65535,
X	A=uux - -L -a$f -gC $h!rmail ($u)
X
XS13
XR$+			$:$>5$1				convert to old style
XR$=w!$+			$2				strip local name
XR$*<@$->$*		$1<@$2.UUCP>$3			resolve abbreviations
XR$*<@$*.UUCP>$*		$:$>5$1<@$2.UUCP>$3
XR$+			$:$U!$1				stick on our host name
XR$=w!$=R$+		$:$2$3
XR$*$=w!$=w$*		$1$U$4
X
XS23
XR$+			$:$>5$1				convert to old style
XR$*<@$=S>$*		$1<@$2.$D.UUCP>$3		resolve abbreviations
XR$*<@$R.$D.UUCP>$3	$1<@$2.UUCP>$3
X
X
XS5
XR$+<@$-.LOCAL>		$1%$2				u@h.LOCAL => u%h
XR$+<@$-.UUCP>		$2!$1				u@host.UUCP => host!u
XR$+@$+.$=T		$1@$2				u@host.ARPA => u@host
+FUNKY+STUFF+
echo '-rw-r-----  1 root          958 Apr 24 09:45 uucpm.m4    (as sent)'
chmod u=rw,g=r,o= uucpm.m4
ls -l uucpm.m4
echo x - uumail.m4
sed 's/^X//' > uumail.m4 <<'+FUNKY+STUFF+'
X############################################################
X############################################################
X#####
X#####  	UUCP Mailer specification
X#####   This is for the rerouting mailer on Gatech
X#####
X#####  	$Header: uumail.m4,v 4.3 85/04/23 18:44:12 root Exp $
X#####
X############################################################
X############################################################
X
X# use fancy path expanding UUCP frontend.
XMuucp,	P=/usr/lib/mail/uumail, F=sCDFMSU, S=13, R=23, M=65535,
X	A=uumail -f $g $h!$u
X
XS13
XR$+			$:$>5$1				convert to old style
XR$=w!$+			$2				strip local name
XR$*<@$->$*		$1<@$2.UUCP>$3			resolve abbreviations
XR$*<@$*.UUCP>$*		$:$>5$1<@$2.UUCP>$3
XR$+			$:$U!$1				stick on our host name
XR$=w!$=R$+		$:$2$3
XR$*$=w!$=w$*		$1$U$4
X
XS23
XR$+!$+!$+<@$*.UUCP>$*	$2!$3<@$4.UUCP>$5		strip leading sites
XR$+!$+<@$*.UUCP>$*	$:$2<@$1.UUCP>$4		put in right sitename
XR$*<@$-.LOCAL>$*	$1<@$2.UUCP>$3
XR$*<@$=S>$*		$1<@$2.UUCP>$3			resolve abbreviations
XR$*<@$R.$D.UUCP>$3	$1<@$2.UUCP>$3
X
X
XS5
XR$+<@$-.LOCAL>		$1%$2				u@h.LOCAL => u%h
XR$+<@$-.UUCP>		$2!$1				u@host.UUCP => host!u
+FUNKY+STUFF+
echo '-rw-r--r--  1 root         1117 Apr 24 09:45 uumail.m4    (as sent)'
chmod u=rw,g=r,o=r uumail.m4
ls -l uumail.m4
echo x - version.m4
sed 's/^X//' > version.m4 <<'+FUNKY+STUFF+'
X#	$Header: version.m4,v 4.2 85/04/22 16:15:48 root Rel $
X
XDV5.1.GaTech
+FUNKY+STUFF+
echo '-rw-r-----  1 root           71 Apr 24 09:44 version.m4    (as sent)'
chmod u=rw,g=r,o= version.m4
ls -l version.m4
echo x - zerobase.m4
sed 's/^X//' > zerobase.m4 <<'+FUNKY+STUFF+'
X############################################################
X############################################################
X#####
X#####		RULESET ZERO PREAMBLE
X#####
X#####	The beginning of ruleset zero is constant through all
X#####	configurations.
X#####
X#####	$Header: zerobase.m4,v 4.1 85/04/22 15:14:15 root Rel $
X#####
X############################################################
X############################################################
X
XS0
X
X# first make canonical
XR$*<$*>$*		$1$2$3				defocus
XR$+			$:$>3$1				make canonical
X
X# handle special cases.....
XR@			$#local$:MAILER-DAEMON		handle <> form
X#R$*<@[$+]>$*		$#tcp$@[$2]$:$1@[$2]$3		numeric internet spec
X
X# arrange for local names to be fully qualified
XR$*<$*$=S>$*		$1<$2$3.LOCAL>$4		user@etherhost
X
X# now delete the local info
XR$*<$*$=w.LOCAL>$*	$1<$2>$4			thishost.LOCAL
XR$*<$*$=w.$T>$*		$1<$2>$4			thishost.ARPA
XR$*<$*$=w>$*		$1<$2>$4			thishost
XR$*<$*.>$*		$1<$2>$3			drop trailing dot
XR<@>:$*			$@$>0$1				retry after route strip
XR$*<@>			$@$>0$1				strip null trash & retry
X
X##################################
X#  End of ruleset zero preamble  #
X##################################
+FUNKY+STUFF+
echo '-rw-r-----  1 root         1147 Apr 24 09:45 zerobase.m4    (as sent)'
chmod u=rw,g=r,o= zerobase.m4
ls -l zerobase.m4
exit 0