###############################################################################
###                                                                         ###
###            sendmail configuration for generic complex host              ###
###                with both UUCP and Internet connections                  ###
###                                                                         ###
###            Erik E. Fair <[email protected]>                     ###
###                                                                         ###
###############################################################################

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

# 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")
Cw

# Our UUCP name
DU$w

# the list of UUCP hosts that we speak to (same rules as Cw, use the
# output of the "uuname" command; also, when you add or delete a host
# from the L.sys, don't forget to add or delete it here)
CU

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

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

DV25

# my official hostname
Dj$w.$D
# 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
# location of alias file
OA/usr/lib/aliases
# default delivery mode (deliver in background)
Odbackground
# (don't) connect to "expensive" mailers
#Oc
# temporary file mode
OF0600
# default GID
Og1
# location of help file
OH/usr/lib/sendmail.hf
# log level
OL9
# Send to me too (even if I'm in an alias expansion)
Om
# default messages to old style
Oo
# queue directory
OQ/usr/spool/mqueue
# read timeout -- violates protocols (timeout an SMTP idle for 2 hours)
Or2h
# status file
OS/usr/lib/sendmail.st
# 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
Ox10
# maximum load average before rejecting connections
OX15

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

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

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

Troot
Tdaemon
Tnews
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$*<@[$+]>$*            $#tcp$@[$2]$:$1@[$2]$3          numeric internet spec

# now delete the local info
R$*<$*$=w.UUCP>$*       $1<$2>$4                        thishost
R$*<$*$=w.$D>$*         $1<$2>$4                        thishost
R$*<$*$=w>$*            $1<$2>$4                        thishost
R$*<$*.>$*              $1<$2>$3                        drop trailing dot
R<@>:$*                 $@$>0$1                         retry after route strip
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)   ###
###############################################################################

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

# special case violation of RFC822 for hybrid bang/at addresses
# if uucphost!user@arpahost, forward to uucphost if we speak to it.
R$=U!$+<@$+>$*          $#uucp$@$1$:$2@$3$4

# resolve various and sundry other unofficial networks
R$*<@$+.MAILNET>$*      $#[email protected]$:$1@$2.MAILNET$3        MAILNET
R$*<@$+.BITNET>$*       $#[email protected]$:$1@$2.BITNET$3          BITNET
R$*<@$+.MFENET>$*       $#[email protected]$:$1@$2.MFENET$3              MFENET
R$*<@$+.CSNET>$*        $#[email protected]$:$1@$2.CSNET$3              CSNET



# when all else fails, look up the whole name in the host table
R$*<@$+>$*              $#tcp$@$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
R$+ at $+               $1@$2                           "at" -> "@" for RFC 822
R$*<$*>$*               $1$2$3                          in case recursive

# 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$+                     $:$>8$1                         host dependent cleanup
R$+:$*;@$+              $@$1:$2;@$3                     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$+%$+.MAILNET<@mit-multics.arpa>       $>5$1<%$2.MAILNET>      strip
R$+%$+.MFENET<@nmfecc.arpa>             $>5$1<%$2.MFENET>       strip
R$+%$+.BITNET<@cunyvm.cuny.edu>         $>5$1<%$2.BITNET>       strip
R$+%$+.CSNET<@relay.cs.net>             $>5$1<%$2.CSNET>        strip

# regulation route-addr format

R<@mit-multics.arpa>:$+@$+.MAILNET      $1<@$2.MAILNET>         strip
R<@nmfecc.arpa>:$+@$+.MFENET            $1<@$2.MFENET>          strip
R<@cunyvm.cuny.edu>:$+@$+.BITNET        $1<@$2.BITNET>          strip
R<@relay.cs.net>:$+@$+.CSNET            $1<@$2.CSNET>           strip

# mung up names for the outside world - called from tcp mailer

S7
R$+@$+.MAILNET          $1%[email protected]  [email protected]
R$+@$+.MFENET           $1%[email protected]        [email protected]
R$+@$+.BITNET           $1%[email protected]    [email protected]
R$+@$+.CSNET            $1%[email protected]        [email protected]

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

S9
R$+!$=w!$+              $3                              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

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

# UUCP must always be presented in old form
R$+@$-.UUCP             $2!$1                           [email protected] => 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=SlsDFMPpmnxr, S=10, R=20, A=mail -d $u
#
# USG UNIX (System III, System V, Xenix 3.0 or later)
# Mlocal, P=/bin/mail, F=SlsDFMPpmnx, S=10, R=20, 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)

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

S10

S20


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

Mtcp,   P=[IPC], F=AmnDFMpueXLC, 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)
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$+@$+                  $@$>7$1@$2              fix up names for the internet
R$+                     $@$1@$j                 add our official host name

###############################################################################
####   UUCP mailer (bangland)                                              ####
###############################################################################

# if none of your UUCP neighbors are 4.1 BSD sites, add an "m" after "F="
# this will cause multiple recipients on the same remote host to be done
# in the same uux command (i.e. one letter sent for "n" recipients)
#
# 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.

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

S13
R$+@$-.UUCP             $2!$1                           [email protected] => 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 mailers are supposed to rewrite these headers
# relative to the sender by themselves anyway.



Downloaded From P-80 International Information Systems 304-744-2253