############################################################ # # Sendmail # Copyright (c) 1983 Eric P. Allman # Berkeley, California # # Copyright (c) 1983 Regents of the University of California. # All rights reserved. The Berkeley software License Agreement # specifies the terms and conditions for redistribution. # # @(#)ucbvax.mc 1.39 (Berkeley) 1/3/89 # # built by phil on Wed Jan 25 11:47:20 PST 1989 # in /usr/src/local/nettables/sendmail.cf/cf on monet.Berkeley.EDU # ############################################################ ############################################################ ##### ##### SENDMAIL CONFIGURATION FILE ##### ##### This one is the big daddy. There is no "upstairs" ##### to bounce a message to -- except perhaps the arpanet. ##### ##### ############################################################ ############################################################ ###################### ### local info ### ###################### # internet hostnames Cwucbvax vax k UCB-VAX Berkeley UCB-C70 UCB # UUCP hostnames DUucbvax CUucbvax # local UUCP connections CV Padova CV Shasta CV alice CV allegra CV amdcad CV anlams CV att CV attunix CV avsd CV bellcore bellcor CV calma CV cithep CV craylab CV decusj CV decvax CV decwrl CV dssovax CV eagle CV ecovax CV floyd CV geoff CV harpo CV ho3e2 CV hpda CV hplabs CV ibmsupt ibmuupa ibmpa CV iiasa70 CV imagen CV isunix menlo70 CV kentmth CV kentvax CV lbl-csam lbl-csa CV lime CV mebazf CV molbio CV mothra CV mseonyx CV mtxinu CV nbires CV pixar CV pur-ee CV purdue CV pwbd CV research researc CV sdcarl CV sdcsvax CV sftig CV sgi olympus CV sii CV srivisi CV ssyx CV sun CV tektronix tektron CV tolerant toleran CV trwrb CV twg CV ucbcad CV ucdavis CV ucivax CV ucla-se ucla-cs CV ucsbcsl ucsbhub CV ucscc CV ucsd CV ucsfcgl CV ucsfmis CV ulysses CV unisoft CV unmvax CV usenix CV uw CV uwvax CV vax135 CV voder CV wheps CV whuxle CV whuxlj CV xprin CV zehntel CV zilog # UUCP connections on ucbarpa DWucbarpa.Berkeley.EDU CW endotsew CW fateman CW franz CW interlan CW metron # UUCP connections on ucbcad DXcad.Berkeley.EDU CX a CX ames CX analog CX ardent dana CX arthur CX biosys CX black CX boulder CX evans CX harpo CX harris CX hpda CX hpsrla CX island CX jupiter CX masscomp masscom CX nsc CX oakhill CX octal CX sda CX stellar CX teklds CX tektronix tektron CX binky tonto CX toshiba tsb0 CX ucbcad CX ucbvax CX voder CX vogon # UUCP connections on cogsci DYcogsci.Berkeley.EDU CY capmkt CY contessa CY emind CY hoptoad CY nkainc CY well CY ferdy # known uucp connections with a smart uucp CMdecvax # we have full sendmail support here Oa ############################# ### Setup Information ### ############################# ###################### # General Macros # ###################### # local domain name # YOUR DOMAIN NAME GOES HERE! DDYOUR_DOMAIN_NAME # my official hostname Dj$w ############### # Classes # ############### # Internal ("fake") domains that we use in rewriting CIUUCP BITNET CSNET ############################################################ ############################################################ ##### ##### BERKELEY HOSTS REGISTERED WITH THE NIC ##### ############################################################ ############################################################ CNbach ucbbach CNbizet ucbbizet CNcad ucbcad CNdegas ucbdegas CNeast ucbeast CNernie ucbernie CNesvax ucbesvax CNjade ucbjade CNji ucbji CNmike ucbmike CNmonet ucbmonet CNpostgres CNrenoir ucbrenoir CNucbarpa CNucbvax CNviolet ucbviolet ###################### # Version Number # ###################### DZ1.34 ###################### # Special macros # ###################### # my name DnMAILER-DAEMON # UNIX header format DlFrom $g $d # delimiter (operator) characters Do.:%@!^=/[] # format of a total name Dq$g$?x ($x)$. # SMTP login message De$j Sendmail $v/$Z ready at $b ############### # Options # ############### # location of alias file OA/usr/lib/aliases # wait up to ten minutes for alias file rebuild Oa10 # substitution for space (blank) characters OB. # (don't) connect to "expensive" mailers #Oc # default delivery mode (deliver in background) Odbackground # temporary file mode OF0600 # default GID Og1 # location of help file OH/usr/lib/sendmail.hf # log level OL9 # default network name ONARPA # default messages to old style Oo # queue directory OQ/usr/spool/mqueue # read timeout -- violates protocols Or2h # status file OS/usr/lib/sendmail.st # queue up everything before starting transmission Os # default timeout interval OT3d # time zone names (V6 only) OtPST,PDT # default UID Ou1 # wizard's password OW* # load average at which we just queue messages Ox8 # load average at which we refuse connections OX12 ########################### # Message precedences # ########################### Pfirst-class=0 Pspecial-delivery=100 Pbulk=-60 Pjunk=-100 ##################### # Trusted users # ##################### Troot Tdaemon Tuucp ######################### # Format of headers # ######################### H?P?Return-Path: <$g> HReceived: $?sfrom $s $.by $j ($v/$Z) id $i; $b H?D?Resent-Date: $a H?D?Date: $a H?F?Resent-From: $q H?F?From: $q H?x?Full-Name: $x HSubject: # HPosted-Date: $a # H?l?Received-Date: $b H?M?Resent-Message-Id: <$t.$i@$j> H?M?Message-Id: <$t.$i@$j> ########################### ### Rewriting Rules ### ########################### ################################ # Sender Field Pre-rewriting # ################################ S1 #R$*<$*>$* $1$2$3 defocus ################################### # Recipient Field Pre-rewriting # ################################### S2 #R$*<$*>$* $1$2$3 defocus ################################# # Final Output Post-rewriting # ################################# S4 R@ $@ handle <> error addr # resolve numeric addresses to name if possible R$*<@[$+]>$* $:$1<@$[[$2]$]>$3 lookup numeric internet addr # externalize local domain info R$*<$+>$* $1$2$3 defocus R@$+:@$+:$+ @$1,@$2:$3 canonical # UUCP must always be presented in old form R$+@$-.UUCP $2!$1 u@h.UUCP => h!u # delete duplicate local names R$+%$=w@$=w $1@$w u%host@host => u@host R$+%$=w@$=w.$D $1@$w u%host@host => u@host # addition to Post-rewrite Rule R$+%$=w@$=w.EDU $1@$w u%UCB@UCB.edu => u@UCB.berk.edu R$+%$=w@$=w.$=w.EDU $1@$w u%UCB@UCB.berk.edu => u@UCB ########################### # Name Canonicalization # ########################### S3 # handle "from:<>" special case R$*<>$* $@@ turn into magic token # basic textual canonicalization -- note RFC733 heuristic here 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 route-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; 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$-!$+ $@$>6$2<@$1.UUCP> resolve uucp names R$+.$-!$+ $@$>6$3<@$1.$2> domain uucps R$+!$+ $@$>6$2<@$1.UUCP> uucp subdomains R$+%$+ $:$>9$1%$2 user%host R$+<@$+> $@$>6$1<@$2> already canonical R$-.$+ $@$>6$2<@$1> host.user ################################# # special local conversions # ################################# S6 R$*<@$=w>$* $:$1<@$w>$3 get into u@$w form R$*<@$=w.$D>$* $:$1<@$w>$3 R$*<@$=U.UUCP>$* $:$1<@$w>$3 ################################ # Change rightmost % to @. # ################################ S9 R$*%$* $1@$2 First make them all @'s. R$*@$*@$* $1%$2@$3 Undo all but the last. R$*@$* $@$1<@$2> Put back the brackets. ############################################################ ############################################################ ##### ##### Provide Backward Compatibility ##### ############################################################ ############################################################ ##################################################### # General code to convert back to old style names # ##################################################### S5 R$+<@$w> $1 strip host R$+<@$-.UUCP> $2!$1 u@host.UUCP => host!u ################### ### Mailers ### ################### ############################################################ ############################################################ ##### ##### Local and Program Mailer specification ##### ############################################################ ############################################################ Mlocal, P=/bin/mail, F=rlsDFMmn, S=10, R=20, A=mail -d $u Mprog, P=/bin/sh, F=lsDFMe, S=10, R=20, A=sh -c $u S10 R@ $n errors to mailer-daemon ############################################################ ############################################################ ##### ##### UUCP Smart Mailer specification ##### (handles multiple recipients) ##### ############################################################ ############################################################ Msuucp, P=/usr/bin/uux, F=mDFMhuU, S=13, R=23, M=100000, A=uux - -r $h!rmail ($u) ############################################################ ############################################################ ##### ##### UUCP Mailer specification ##### ############################################################ ############################################################ Muucp, P=/usr/bin/uux, F=DFMhuU, S=13, R=23, M=100000, A=uux - -r -z -a$f -gC $h!rmail ($u) S13 R$+ $:$>5$1 convert to old style R$*<@$=w>$* $1<@$w>$2 resolve abbreviations R$*<@$->$* $1<@$2.$D>$3 resolve abbreviations R$+<@$+> $2!$1 uucpize (no @'s in addr) R$w!$+ $1 strip local name R$+ $:$U!$1 stick on our host name R$=U!$-%$- $:$1!$2@$3.$D ucbvax!user@host.domain S23 R$+ $:$>5$1 convert to old style R$*<@$=w>$* $1<@$w>$2 resolve abbreviations R$*<@$->$* $1<@$2.$D>$3 resolve abbreviations R$+<@$w> $U!$1 a!b@here -> here!a!b R$=U!$+ $2 here!a!b -> a!b # sanity ... should not happen. R$=U.$D!$+ $2 strip local name.domain ############################################################ ############################################################ ##### ##### SMTP UUCP Mailer specification ##### ##### This mailer sends UUCP traffic over an SMTP connection. ##### Obviously, we only want to do this with UUCP hosts with ##### whom we have SMTP connectivity. The idea here is to ##### avoid having to double queue (once for sendmail, once ##### for UUCP) when there's no need. Since we need to ##### preserve uucp-ness (e.g., bangs), we use the UUCP mailer ##### rewriting rulesets. ##### ############################################################ ############################################################ Msmtpuucp, P=[IPC], F=mDFMueXLC, S=13, R=23, A=IPC $h, E=\r\n ############################################################ ############################################################ ##### ##### Internet SMTP Mailer specification ##### ##### Messages processed by this specification are assumed to leave ##### the local domain -- hence, they must be canonical according to ##### RFC822 etc. This means that machines not registered with ##### the NIC must be hidden behind our Internet relay. ##### ############################################################ ############################################################ Mtcp, P=[IPC], F=mDFMueXLC, S=14, R=24, A=IPC $h, E=\r\n S14 # pass 's through R<@$+>$* $@<@$[$1$]>$2 resolve # map colons to dots everywhere R$*:$* $1.$2 map colons to dots # output local host in user@host.domain syntax R$- $1<@$w> user w/o host R$+<@$=w> $:$1<@$w> this host R$+<@$-> $:$1<@$[$2$]> canonicalize into dom R$+<@$-> $:$1<@$2.$D> if nameserver fails R$+<@$=N.$D> $@$1<@$2.$D> nic-reg hosts are ok R$+<@$*.$D> $@$1%$2.$D<@$A> else -> u%h@gateway # if not local, and not a "fake" domain, ask the nameserver R$+<@$+.$~I> $@$1<@$[$2.$3$]> user@host.domain R$+<@[$+]> $@$1<@[$2]> already ok # output internal ("fake") domains as "user%host@relay" R$+<@$+.UUCP> $@$2!$1<@$w> user@host.UUCP S24 # put in <> kludge R$*<$*>$* $1$2$3 defocus R$* $:$>3$1 now canonical form # pass 's through R<@$+>$* $@<@$[$1$]>$2 resolve # map colons to dots everywhere..... R$*:$* $1.$2 map colons to dots # output local host in user@host.domain syntax R$- $1<@$w> user w/o host R$+<@$=w> $:$1<@$w> this host R$+<@$-> $:$1<@$[$2$]> canonicalize into dom R$+<@$-> $:$1<@$2.$D> if nameserver fails R$+<@$=N.$D> $@$1<@$2.$D> nic-reg hosts are ok R$+<@$*.$D> $@$1%$2.$D<@$A> else -> u%h@gateway # if not local, and not a "fake" domain, ask the nameserver R$+<@$+.$~I> $@$1<@$[$2.$3$]> user@host.domain R$+<@[$+]> $@$1<@[$2]> already ok # Hide fake domains behind relays R$+<@$+.UUCP> $@$2!$1 user@host.UUCP ############################################################ ############################################################ ##### ##### Local Domain SMTP Mailer specification ##### ##### Messages processed by this specification are assumed to remain ##### the local domain. Hence, they can refer to hosts that are ##### not registered in the NIC host table. ##### ############################################################ ############################################################ Mtcpld, P=[IPC], F=mDFMueXLC, S=17, R=27, A=IPC $h, E=\r\n S17 # cleanup forwarding a bit R$*<$*>$* $1$2$3 defocus R$* $:$>3$1 canonicalize R$*%$*<@$w> $:$>9$1%$2 user%localhost@localdomain # pass 's through R<@$+>$* $@<@$[$1$]>$2 resolve # map colons to dots everywhere R$*:$* $1.$2 map colons to dots # output local host as user@host.domain R$- $@$1<@$w> user w/o host R$+<@$w> $@$1<@$w> this host R$+<@$=w> $@$1<@$w> or an alias R$+<@$-> $:$1<@$[$2$]> ask nameserver R$+<@$w> $@$1<@$w> this host R$+<@$-> $@$1<@$2.$D> if nameserver fails # if not local, and not a "fake" domain, ask the nameserver R$+<@$+.$~I> $@$1<@$[$2.$3$]> user@host.domain R$+<@[$+]> $@$1<@[$2]> already ok # output fake domains as user%fake@relay R$+<@$+.UUCP> $@$2!$1<@$w> user@host.UUCP S27 # cleanup R$*<$*>$* $1$2$3 defocus R$* $:$>3$1 now canonical form R$*%$*<@$w> $:$>9$1%$2 user%localhost@localdomain # pass 's through R<@$+>$* $@<@$[$1$]>$2 resolve # map colons to dots everywhere R$*:$* $1.$2 map colons to dots # output local host as user@host.domain R$- $@$1<@$w> user w/o host R$+<@$w> $@$1<@$w> this host R$+<@$=w> $@$1<@$w> or an alias R$+<@$-> $:$1<@$[$2$]> ask nameserver R$+<@$w> $@$1<@$w> this host R$+<@$-> $@$1<@$2.$D> if nameserver fails # if not local, and not a "fake" domain, ask the nameserver R$+<@$+.$~I> $@$1<@$[$2.$3$]> user@host.domain R$+<@[$+]> $@$1<@[$2]> already ok # output fake domains as user%fake@relay R$+<@$+.UUCP> $@$2!$1 user@host.UUCP ##################### ### Rule Zero ### ##################### ############################################################ ############################################################ ##### ##### RULESET ZERO PREAMBLE ##### ##### The beginning of ruleset zero is constant through all ##### configurations. ##### ############################################################ ############################################################ S0 # first make canonical R$*<$*>$* $1$2$3 defocus R$+ $:$>3$1 make canonical # handle special cases R$*<@[$+]>$* $:$1<@$[[$2]$]>$3 numeric internet addr R$*<@[$+]>$* $#tcp$@[$2]$:$1@[$2]$3 numeric internet spec R$+ $:$>6$1 R$-<@$w> $#local$:$1 R@ $#error$:Invalid address handle <> form # canonicalize using the nameserver if not internal domain R$*<@$*.$~I>$* $:$1<@$[$2.$3$]>$4 R$*<@$->$* $:$1<@$[$2$]>$3 R$*<@$->$* $:$1<@$2.$D>$3 if nameserver fails # now delete the local info R<@$w>:$* $@$>0$1 @here:... -> ... R$*<@$w> $@$>0$1 ...@here -> ... ################################## # End of ruleset zero preamble # ################################## ################################################ ### Machine dependent part of ruleset zero ### ################################################ # resolve SMTP UUCP connections R<@bellcore.uucp>:$+ $#smtpuucp$@bellcore.com$:$2 R$*<@bellcore.uucp> $#smtpuucp$@bellcore.com$:$1 R<@decvax.uucp>:$+ $#smtpuucp$@decvax.dec.com$:$2 R$*<@decvax.uucp> $#smtpuucp$@decvax.dec.com$:$1 R<@decwrl.uucp>:$+ $#smtpuucp$@decwrl.dec.com$:$2 R$*<@decwrl.uucp> $#smtpuucp$@decwrl.dec.com$:$1 R<@hplabs.uucp>:$+ $#smtpuucp$@hplabs.hp.com$:$2 R$*<@hplabs.uucp> $#smtpuucp$@hplabs.hp.com$:$1 R<@lbl-csam.uucp>:$+ $#smtpuucp$@lbl-csam.arpa$:$2 R$*<@lbl-csam.uucp> $#smtpuucp$@lbl-csam.arpa$:$1 R<@pur-ee.uucp>:$+ $#smtpuucp$@ecn.purdue.edu$:$2 R$*<@pur-ee.uucp> $#smtpuucp$@ecn.purdue.edu$:$1 R<@purdue.uucp>:$+ $#smtpuucp$@purdue.edu$:$2 R$*<@purdue.uucp> $#smtpuucp$@purdue.edu$:$1 R<@sdcarl.uucp>:$+ $#smtpuucp$@sdcarl.ucsd.edu$:$2 R$*<@sdcarl.uucp> $#smtpuucp$@sdcarl.ucsd.edu$:$1 R<@sun.uucp>:$+ $#smtpuucp$@sun.com$:$2 R$*<@sun.uucp> $#smtpuucp$@sun.com$:$1 R<@ucbcad.uucp>:$+ $#smtpuucp$@cad.berkeley.edu$:$2 R$*<@ucbcad.uucp> $#smtpuucp$@cad.berkeley.edu$:$1 R<@ucdavis.uucp>:$+ $#smtpuucp$@ucdavis.ucdavis.edu$:$2 R$*<@ucdavis.uucp> $#smtpuucp$@ucdavis.ucdavis.edu$:$1 R<@ucla-se.uucp>:$+ $#smtpuucp$@seas.ucla.edu$:$2 R$*<@ucla-se.uucp> $#smtpuucp$@seas.ucla.edu$:$1 R<@ucscc.uucp>:$+ $#smtpuucp$@c.ucsc.edu$:$2 R$*<@ucscc.uucp> $#smtpuucp$@c.ucsc.edu$:$1 R<@ucsfcgl.uucp>:$+ $#smtpuucp$@cgl.ucsf.edu$:$2 R$*<@ucsfcgl.uucp> $#smtpuucp$@cgl.ucsf.edu$:$1 R<@uwvax.uucp>:$+ $#smtpuucp$@spool.cs.wisc.edu$:$2 R$*<@uwvax.uucp> $#smtpuucp$@spool.cs.wisc.edu$:$1 # resolve local UUCP links R<@$=V.UUCP>:$+ $#uucp$@$1$:$1:$2 @host.UUCP: ... R$+<@$=V.UUCP> $#uucp$@$2$:$1 user@host.UUCP # resolve explicit arpanet names (to avoid with machine name "arpa" below) R$*<@$*$-.ARPA>$* $#tcp$@$3.ARPA$:$1<@$2$3.ARPA>$4 user@domain.ARPA # resolve fake top level domains by forwarding to other hosts # resolve non-local UUCP links R$*<@$=W.UUCP>$* $#tcpld$@$W$:$1<@$2.UUCP>$3 user@host.UUCP R$*<@$=X.UUCP>$* $#tcpld$@$X$:$1<@$2.UUCP>$3 user@host.UUCP R$*<@$=Y.UUCP>$* $#tcpld$@$Y$:$1<@$2.UUCP>$3 user@host.UUCP # this uucp stuff is wrong for domain uucp addresses # - we should pass the whole "host.domain" to uucp so it can # find the best route. But that depends on a uucp router # which doesn't exist here yet, so for now, we'll settle for # trying to route to the domain (pretending its a host). # Suitable L.sys entries can make this work. If it doesn't # then returned mail will just say "dom unknown", which is true .. # resolve smart UUCP links R<@$=M.$-.UUCP>:$+ $#suucp$@$2$:@$1.$2.UUCP:$3 @host.domain.UUCP: ... R<@$=M.UUCP>:$+ $#suucp$@$1$:$2 @host.UUCP: ... R$+<@$=M.$-.UUCP> $#suucp$@$3$:$1@$2.$3.UUCP user@host.domain.UUCP R$+<@$=M.UUCP> $#suucp$@$2$:$1 user@host.UUCP # local domain sites R$*<@$*.$D>$* $#tcpld$@$2.$D$:$1<@$2.$D>$3 user@host.our.domain R$*<@$->$* $#tcpld$@$2.$D$:$1<@$2.$D>$3 user@host R$*<@$-.UUCP>$* $#tcpld$@$2.$D$:$1<@$2.$D>$3 user@host.UUCP # other non-local names will be kicked upstairs R$*<@$+>$* $#tcp$@$2$:$1<@$2>$3 user@some.where # remaining names must be local R$+ $#local$:$1 everything else ######################################## ### Host dependent address cleanup ### ######################################## S8 R$*$=U!$+@$+ $3@$4 drop uucp forward