🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.mail.misc
Article #5103

Re: Getting the most out of pathalias

#5103
From: Erik E. Fair
Date: Fri, 06 Jan 1989 08:40
456 lines
15874 bytes
###############################################################################
###                                                                         ###
###                          APPLE.COM                                      ###
###                                                                         ###
###            sendmail configuration for generic complex host              ###
###                with both UUCP and Internet connections                  ###
###                                                                         ###
###            Erik E. Fair <fair@apple.com>                                ###
###                                                                         ###
###############################################################################


# Our local domain ($D is added to $w [hostname] for official name in base.m4)
DDapple.com

# All the names we are known by (put all the names & nick names on the next
# line, separated by spaces. If you need another line, begin it with "Cw")
Cwapple

# Our UUCP name
DUapple

# the list of UUCP hosts that we speak to
FU/usr/lib/uucp/L.sys %[a-zA-Z0-9]


# our pathalias database
Op/usr/lib/mail/paths

###############################################################################
###   baseline definitions that sendmail needs to operate                   ###
###############################################################################


# "I"nternal domains
CI BITNET UUCP

##########################
###   Special macros   ###
##########################

DV25

# my official hostname (is $w (hostname(2)) fully qualified?)

Dj$w
# my name (the name on mailer bounces)
DnMAILER-DAEMON
# UNIX header format
DlFrom $g $d
# delimiter (operator) characters
Do.:%@!^/[]
# format of a total name
Dq$?x$x <$g>$|$g$.
# SMTP login message
De$j Sendmail $v/$V ready at $b

###################
###   Options   ###
###################

# we have full sendmail support here
Oa
# substitution for space (blank) characters
OB.
# default network name
ONARPA
# send a copy of mail headers we bounce to "bounces"
OPbounces
# default delivery mode (deliver in background)
Odbackground
# (don't) connect to "expensive" mailers
#Oc
# temporary file mode
OF0600
# default GID
Og1
# log level
OL9
# Send to me too (even if I'm in an alias expansion)
Om
# default messages to old style
Oo
# read timeout -- violates protocols (timeout an SMTP idle for 2 hours)
Or2h
# queue up everything before starting transmission
Os
# default timeout interval (returns undelivered mail after 3 days)
OT3d
# time zone names (V6 only)
OtPST,PDT
# default UID
Ou1
# encrypted wizard's password (for the undocumented "wiz" SMTP command)
OWnot-likely
# rebuild the aliasfile automagically
#OD
# maximum load average before queueing mail
Ox50
# maximum load average before rejecting connections
OX60

################################## FILES ######################################
# location of alias file
OA/usr/lib/aliases
# location of help file
OH/usr/lib/sendmail.hf
# queue directory
OQ/usr/spool/mqueue
# status file
OS/usr/lib/sendmail.st

###############################
###   Message precedences   ###
###############################

Pfirst-class=0
Pspecial-delivery=100
Pbulk=-60
Pjunk=-100

#########################
###   Trusted users   ###
#########################

Troot
Tdaemon
Tusenet
Tuucp

#############################
###   Format of headers   ###
#############################

H?P?Return-Path: <$g>
HReceived: $?sfrom $s$. by $j$?r with $r$. ($v/$V-eef)
	id $i; $b
H?D?Date: $a
H?F?From: $q
H?x?Full-Name: $x
H?M?Message-Id: <$t.$i@$j>
HSubject:
H?D?Resent-Date: $a
H?F?Resent-From: $q
H?M?Resent-Message-Id: <$t.$i@$j>


###############################################################################
#		RULESET ZERO PREAMBLE                                         #
###############################################################################

S0

# first make canonical
R$*<$*>$*		$1$2$3				defocus
R$+			$:$>3$1				make canonical

# handle special cases.....
R@			$#local$:$n			handle <> form

R$*<@[$+]>$*		$:$1<@$[[$2]$]>$3		lookup numeric internet addr
R$*<@[$+]>$*		$#smtp$@[$2]$:$1@[$2]$3		numeric internet spec
R$-<@$w>		$#local$:$1

# canonicalize using the nameserver if not internal domain

R$*<@$*.$~I>$*		$:$1<@$[$2.$3$]>$4
R$*<@$->$*		$:$1<@$[$2$]>$3

# now delete the local info
R$*<$*.>$*		$1<$2>$3			remove trailing dot
R$*<$*.>		$1<$2>				remove trailing dot
R$*<$*$=w.UUCP>$*	$1<$2>$4			strip UUCP
R$*<$*$=w.$D>$*		$1<$2>$4			strip domain name
R$*<$*$=w>$*		$1<$2>$4			strip unqualified
R$*<$*$w>$*		$1<$2>$3			strip domain name
R$*<$*.>$*		$1<$2>$3			remove trailing dot
R$*<$*.>		$1<$2>				remove trailing dot

R<@>:$*			$@$>0$1				retry after route strip
R$*<@>$*		$@$>0$1				strip null trash & retry
R$*<@>			$@$>0$1				strip null trash & retry

# return uucp mail that looks like decvax!ittvax!marsvax! since it
# will be rejected at the final site with no username on it
R$*!<@$-.UUCP>		$#error$:Destination address truncated



###############################################################################
###   Machine dependent part of ruleset zero (where we decide what to do)   ###
###############################################################################


# .forward on the end of the domain name is a magic cookie we put in our UUCP
# map data so that we only do domain forwarding for sites that we have set up
# by hand, rather than for anything in the UUCP maps. If you are not on the 
# the Internet, do not worry about this. If you are, and you want to be nice to
# that little UUCP site next door, offer them domain forwarding service, and
# put "theiruucpname	.their.domain.com.forward" into your PRIVATE UUCP map
# data.
R$*<@$+.$~I>		$:$>20$1<@$2.$3>
R$*<@$~U.UUCP>		$:$>8$1<@$2.UUCP>		route UUCP

# resolve UUCP links to hosts known to this machine
R$*<@$=U.UUCP>$*	$#uucp$@$2$:$1			resolve local uucp

R$*<@$-.UUCP>		$#error$:Unknown UUCP host - not in the UUCP maps and not one of our UUCP neighbors

# resolve various and sundry other unofficial networks
#R$*<@$+.BITNET>$*	$#smtp$@cunyvm.cuny.edu$:$1@$2.BITNET$3		BITNET
R$*<@$+.MFENET>$*	$#smtp$@nmfecc.arpa$:$1@$2.MFENET$3		MFENET
R$*<@$+.CSNET>$*	$#error$:Obsolete domain tag - please use a real domain name


# when all else fails, look up the whole name in the host table
R$*<@$+>$*		$#smtp$@$2$:$1@$2$3			user@domain

# remaining names must be local
R@			$n					fix magic token
R$+			$#local$:$1				everything else

###############################################################################
###   End of ruleset zero                                                   ###
###############################################################################

###########################
#  Name Canonicalization  #
###########################
S3

# handle "from:<>" special case
R<>			$@@				resolve into magic token

# basic textual canonicalization
R$*<$*<$*<$+>$*>$*>$*	$4				3-level <> nesting
R$*<$*<$+>$*>$*		$3				2-level <> nesting
R$*<$+>$*		$2				basic RFC821/822 parsing

# make sure <@a,@b,@c:user@d> syntax is easy to parse -- undone later
R@$+,$+			@$1:$2				change all "," to ":"

# localize and dispose of domain-based addresses
R@$+:$+			$@$>6<@$1>:$2			handle <route-addr>

# more miscellaneous cleanup
R$+:$*;@$+		$@$1:$2;@$3			list syntax
R$+:$*;			$@$1:$2;			list syntax
R$+@$+			$:$1<@$2>			focus on domain
R$+<$+@$+>		$1$2<@$3>			move gaze right
R$+<@$+>		$@$>6$1<@$2>			already canonical

# convert old-style addresses to a domain-based address
R$+^$+			$1!$2				convert ^ to !
R$+!$+			$@$>9$1!$2			uucp name hackery
R$+%$+			$:$>5$1%$2			user%host%host
R$+<@$+>		$@$>6$1<@$2>			canonical

# Given multiple %'s change rightmost % to @.
S5
R$*<$*>$*		$1$2$3				defocus
R$*%$*			$1@$2				First make them all @'s.
R$*@$*@$*		$1%$2@$3			Undo all but the last.
R$*@$*			$@$1<@$2>			Put back the brackets.

###############################################################################
####   Assorted name hackery to make things simple for people              ####
###############################################################################

# here we look for addresses of the form: user%host.domain@gateway
# and strip off the gateway name (for the ones that we know)

S6

# conventional percent format

R$+%$+.MFENET<@nmfecc.arpa>	$>5$1<%$2.MFENET>	strip
R$+%$+.BITNET<@$+>		$>5$1<%$2.BITNET>	strip

# regulation route-addr format

R<@nmfecc.arpa>:$+@$+.MFENET	$1<@$2.MFENET>		strip
R<@$+>:$+@$+.BITNET		$2<@$3.BITNET>		strip

R$+<@$+.$-.UUCP>		$1<@$2.$3>		fix rn


# mung up names for the outside world - called from smtp mailer
S7
R$+@$+.MFENET		$1%$2.MFENET@nmfecc.arpa	user@host.MFENET
R$+@$+.BITNET		$1%$2.BITNET@cunyvm.cuny.edu	user@host.BITNET

###############################################################################
####   UUCP address hackery                                                ####
###############################################################################

S9
R$+!$=w!$+		$3				collapse loops
R$=w!$+			$2				collapse loops
R$-.$+!$+		$@$>6$3<@$1.$2>			do.main!user
R$-!$+			$@$>6$2<@$1.UUCP>		host!user

################################
#  Sender Field Pre-rewriting  #
################################
S1
R$*<$*>$*		$1$2$3				defocus

###################################
#  Recipient Field Pre-rewriting  #
###################################
S2
R$*<$*>$*		$1$2$3				defocus

###################################
#  Final Output Post-rewriting    #
#  Standard Domain-based version  #
###################################
S4
R@			$n				handle <> error addr


# resolve numeric addresses to name if possible
R$*@[$+]$*		$:$1@$[[$2]$]$3			numeric internet addr

# externalize local domain info
R$*<$+>$*		$1$2$3				defocus
R@$+:$+:$+		$@@$1,$2:$3			<route-addr> canonical

# UUCP must always be presented in old form
R$+@$-.UUCP		$2!$1				u@h.UUCP => h!u

###############################################################################
###   Local, and Program Mailer specifications                              ###
###############################################################################

# Nota Bene: what mailer flags you use depends upon what version of /bin/mail
# you have:
#
# 4th Berkeley Software Distribution (4.1 BSD or later)
#
Mlocal, P=/bin/mail, F=SlsDFMmnr, S=10, R=10, A=mail -d $u
#
# USG UNIX (System III, System V, Xenix 3.0 or later)
#
# Mlocal, P=/bin/mail, F=SlsDFMPpmn, S=10, R=10, A=mail $u
#
# Also, if you are using System V, you should get the Berkeley version of
# /bin/mail as soon as you can and junk the one you've got: it doesn't
# believe in sendmail, so the wrong thing will happen when someone types
# mail user@host (i.e. it will attempt local delivery, rather than call
# sendmail). It also does header hacking when it shouldn't (like adding
# a To: field).

Mprog, P=/bin/sh, F=lsDFMxehu, S=10, R=10, A=sh -c $u

S10

# S20
# I use ruleset 20 for other stuff


###############################################################################
####    IP/TCP/SMTP mailer (going out to internet land)                    ####
###############################################################################

Msmtp,	P=[IPC], F=mnDFMeuXLC, S=14, R=14, A=IPC $h, E=\r\n

S14
R$*@[$+]$*		$@$1@[$2]$3		already ok (inet addr spec)
R@$+@$+			$@@$1@$2		already ok (route-addr)

# if not local, and not a "fake" domain, ask the nameserver
R$+@$+.$~I		$:$1@$[$2.$3$]		user@host.domain
R$*:$*			$1.$2			map colons to dots
R$+@$+			$:$>7$1@$2		fix up names for the internet
R$+@$=X.UUCP		$2!$1@$X		fix remote UUCP
R$+@$=Y.UUCP		$2!$1@$Y		fix remote UUCP
R$+@$=Z.UUCP		$2!$1@$Z		fix remote UUCP
R$+@$-.UUCP		$@$2!$1@$j		undo local UUCP hack
R$-			$@$1@$j			add our official host name

S24
# nothing here - sender and recipient addresses are handled the same

###############################################################################
####   UUCP mailer (bangland)                                              ####
###############################################################################
#
# By default, this mailer will send only one copy of a letter per host,
# regardless of the number of recipients there. However, 4.1 BSD UNIX
# sites have a version of "rmail" that can't deal with this (and so do
# sites that inherited that old mailer).  Some older (and brain-dead, but
# what can you expect from Microsoft?) versions of Xenix are similarly
# afflicted. The "m" flag in the "F=" statement below controls this behavior.
# If you must speak to a site broken in this way, you can handle it two ways:
# 
# 1. define(DUMBUUCP)dnl configuration option, create a CLASS that
#    contains the list of brain-damaged sites, and match that
#    class in ruleset zero, before matching for the normal UUCP sites.
#    For a class "D", the rule should look like this:
#
#    R$+<@$=D.UUCP>	$#dumbuucp$@$2$:$1	BROKEN UUCP SITES
#
# 2. eschew all sendmail.cf hacking, and remove the "m" flag from the "F="
#    statement below. This will cause multiple copies of letters bound for
#    multiple recipients on any single host to be sent, rather than just one
#    copy per host.
#
# If you want uucico to be invoked immediately after a letter is queued
# (i.e. initiate the phone call immediately) remove the "-r" flag in the
# uux command line. Bear in mind that this has significant overhead when
# your system does a lot of UUCP; you'll have lots of uucico's contending
# with each other for modems.
#
# If your uux can't do the "-a" flag, remove it from the command line.
# When present, if something goes wrong at the other end, their uuxqt (if
# they also understand it - if they don't, they'll ignore it, so it's
# harmless, and potentially helpful) will mail a notification to the
# address given, rather than to "daemon" or "uucp" on your system.

Muucp,	P=/usr/bin/uux, F=msDFMhuU, S=13, R=23, M=100000,
	A=uux - -a$f -r $h!rmail ($u)


Mdumbuucp,	P=/usr/bin/uux, F=sDFMhuU, S=13, R=23, M=100000,
	A=uux - -a$f -r $h!rmail ($u)

S13
R$+@$-.UUCP		$2!$1				u@host.UUCP => host!u
R$=w!$+			$2				zap dups

R@$+@$+			$@$U!@$1@$2			ugh, route-addrs
# unfortunately, I have to resolve route-addrs before this rule, because
# it is so general that it matches them too, with disastrous results. - EEF
R$+@$-.$+		$2.$3!$1			uucpize address
R$+			$:$U!$1				stick on our host name

S23
# nothing here because bangland user-agents are supposed to rewrite these
# headers relative to the sender by themselves anyway, and the mailers
# (MTAs) are supposed to leave them the hell alone.

S8
# magic UUCP shit
R$*<@$-.UUCP>		$:${$2$}!$1		look up UUCP site in maps
R$+!%s!$*		$:$1!$2			remove %s database cruft
R$+			$:$>9$1			recanon

S20
# find domains that we forward for
R$*<@$+.$~I>		$:${.$2.$3.forward$}!$2.$3!$1
R.$+.forward!$+.$~I!$+	$@$4<@$2.$3>		match failed - go away
R$*!.$*			$1!$2			remove extra dot
R$+!$+.forward!$*	$1!$3			remove .forward copy
R$+			$:$>8$1			remove %s & recanon
Technical Details
Message-ID: <23434@apple.Apple.COM>
Path: arc1-ca.pugleaf.net!utzoo!utgpu!attcan!uunet!lll-winken!lll-lcc!ames!mailrus!tut.cis.ohio-state.edu!rutgers!apple!fair
References: <601@ur-cc.UUCP>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!attcan!uunet!lll-winken!lll-lcc!ames!mailrus!tut.cis.ohio-state.edu!rutgers!apple!fair
From: fair@Apple.COM (Erik E. Fair)
Newsgroups: comp.mail.misc
Subject: Re: Getting the most out of pathalias
Summary: sendmail.cf (part 4 of 4)
Message-ID: <23434@apple.Apple.COM>
Date: 6 Jan 89 08:40:04 GMT
References: <601@ur-cc.UUCP>
Organization: USENET Protocol Police, Western Gateway Division
Lines: 456