############################################################################### ### ### ### sendmail configuration for generic complex host ### ### with both UUCP and Internet connections ### ### ### ### Erik E. Fair ### ### ### ############################################################################### # 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 # 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 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. Downloaded From P-80 International Information Systems 304-744-2253