home *** CD-ROM | disk | FTP | other *** search
- ###############################################################################
- ### ###
- ### sendmail configuration for generic complex host ###
- ### with both UUCP and Internet connections ###
- ### ###
- ### Erik E. Fair <fair@ucbarpa.berkeley.edu> ###
- ### ###
- ###############################################################################
-
- # 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>$* $#tcp$@mit-multics.arpa$:$1@$2.MAILNET$3 MAILNET
- R$*<@$+.BITNET>$* $#tcp$@cunyvm.cuny.edu$:$1@$2.BITNET$3 BITNET
- R$*<@$+.MFENET>$* $#tcp$@nmfecc.arpa$:$1@$2.MFENET$3 MFENET
- R$*<@$+.CSNET>$* $#tcp$@relay.cs.net$:$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%$2.MAILNET@mit-multics.arpa user@host.MAILNET
- R$+@$+.MFENET $1%$2.MFENET@nmfecc.arpa user@host.MFENET
- R$+@$+.BITNET $1%$2.BITNET@cunyvm.cuny.edu user@host.BITNET
- R$+@$+.CSNET $1%$2.CSNET@relay.cs.net user@host.CSNET
-
- ###############################################################################
- #### 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 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=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 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 mailers are supposed to rewrite these headers
- # relative to the sender by themselves anyway.
-
-
-
-