Article View: comp.mail.misc
Article #5103Re: Getting the most out of pathalias
From: Erik E. Fair
Date: Fri, 06 Jan 1989 08:40
Date: Fri, 06 Jan 1989 08:40
456 lines
15874 bytes
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!fairReferences:
<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