Path: utzoo!utgpu!watserv1!watmath!att!rutgers!cs.utexas.edu!usc!ucsd!dog.ee.lbl.gov!me10.lbl.gov!milburn From: milburn@me10.lbl.gov (John Milburn) Newsgroups: comp.sys.hp Subject: Re: HP sendmail doesn't work (with free bugfix!) Message-ID: <6768@dog.ee.lbl.gov> Date: 2 Sep 90 17:44:31 GMT References: Sender: usenet@dog.ee.lbl.gov Reply-To: JEMilburn@lbl.gov (John Milburn) Organization: Lawrence Berkeley Laboratory, Berkeley, CA Lines: 614 X-Local-Date: Sun, 2 Sep 90 10:44:31 PDT In article jwright@cfht.hawaii.edu (Jim Wright) writes: >PROBLEM 2: The fixed sendmail will not resolve through two aliases. >This one has gone "back to the factory". Oh shit, not again. So my >plea to the net: why does this not work? An example below. The problem is certainly not with sendmail, but rather with your .cf file. I can't comment on the one hp supports, but ours works just fine with multiple aliases: me10:milburn 136 %)) /usr/lib/sendmail -v jemilburn HReceived: $?sfrom $s $.by $w ($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: 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$*<@LOCAL> $@$1@$w R$*<$*LOCAL>$* $1<$2lbl.gov>$3 change local info R$*<$*LOCAL.ARPA>$* $1<$2lbl.gov>$3 change local info R$*<$+>$* $1$2$3 defocus R@$+:@$+:$+ @$1,@$2:$3 canonical # UUCP must always be presented in old form (with domains, leave the ".uucp") R$+@$-.UUCP $2!$1 u@h.UUCP => h!u R$+@$-.$-.UUCP $2.$3.uucp!$1 u@h.UUCP => h!u R$+@$-.$-.$-.UUCP $2.$3.$4.uucp!$1 u@h.UUCP => h!u R$+@$-.$-.$-.$-.UUCP $2.$3.$4.$5.uucp!$1 u@h.UUCP => h!u R$+@$-.$-.$-.$-.$-.UUCP $2.$3.$4.$5.$6.uucp!$1 u@h.UUCP => h!u # delete duplicate local names -- mostly for arpaproto.mc R$+%$=w@$=w $1@$w u%UCB@UCB => u@UCB R$+%$=w@$=w $1@$w u%UCB@UCB => u@UCB R$+%$=w@$=w $1@$w u%UCB@UCB => u@UCB R$+%$=w@$=w.arpa $1@$w u%UCB@UCB => u@UCB R$+%$=w.arpa@$=w $1@$w u%UCB@UCB => u@UCB R$+%$=w@$=w.arpa $1@$w u%UCB@UCB => u@UCB R$+%$=w.arpa@$=w.arpa $1@$w u%UCB@UCB => u@UCB ########################### # Name Canonicalization # ########################### S3 # handle "from:<>" special case R<> $@@ turn into magic token R$-::$+ $@$>6$2<@$1.HEPNET> resolve hepnet/decnet names # basic textual canonicalization -- note RFC733 heuristic here R$*<$*<$*<$+>$*>$*>$* $4 3-level <> nesting R$*<$*<$+>$*>$* $3 2-level <> nesting R$*<$+>$* $2 basic RFC821/822 parsing R$+ at $+ $1@$2 "at" -> "@" for RFC 822 # 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$-:$+ $@$>6$2<@$1> host:user R$-=$+ $@$>6$2<@$1.BITNET> resolve bitnet names 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<@LOCAL>$3 R$*<@$=w>$* $1<@$2.LOCAL>$3 convert local domain R$*<@$=w.ARPA>$* $1<@$2.LOCAL>$3 R$*<@$=w.ARPA>$* $1<@$2.LOCAL>$3 R$+<@LOCAL> $@$1<@LOCAL> R$+<@$=w.LOCAL> $@$1<@LOCAL> R<@$=w.LOCAL>:$+ $@$>3$2 R$+<@$*.LOCAL>$* $1<@$2>$3 R$*<@$+.$=T.$=T>$* $1<@$2.$3>$5 make UUCP top level R$*<@ucsfcgl.UUCP>$* $1<@cgl.ucsf.edu>$2 ucsfcgl now on Internet ################################ # 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$+<@$-.LOCAL> $2:$1 u@h.LOCAL => h:u R$+<@LOCAL> $1 strip LOCAL R$+<@$+.LOCAL> $1<@$2> R$+<@$-.UUCP> $2!$1 u@host.UUCP => host!u ################### ### Mailers ### ################### ############################################################ ##### Local and Program Mailer specification ############################################################ #BSD #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 Mlocal, P=/bin/rmail, F=lsDFPm, S=10, R=20, A=rmail -d $u Mprog, P=/bin/sh, F=lsDFMeuP, S=10, R=20, A=sh -c $u Mtty, P=/bin/false, F=rlsnP, S=10, R=20, A=to $u, M=5000 # This is HP9000 stuff: #Mlocal, P=/bin/rmail, F=lsDPFMm, S=10, R=20, A=rmail -d $u #Mprog, P=/bin/sh, F=lsDFMeuP, S=10, R=20, A=sh -c $u #Mtty, P=/bin/false, F=rlsnP, S=10, R=20, A=to $u, M=5000 S10 R@ $n errors to mailer-daemon S20 # None needed? ############################################################ ##### ##### Arpanet TCP Mailer specification ##### ##### Messages processed by this specification are assumed to leave ##### the local domain -- hence, they must be canonical according to ##### RFC822 etc. ##### ##### This mailer is to be used with the Berkeley Name Server. ##### ############################################################ 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$+<@LOCAL> $:$1<@$w> this host R$+<@$-> $:$1<@$[$2$]> check for local domain R$+<@$+.LOCAL> $:$1<@$[$2$]> nic-reg local hosts R$+<@$=w> $@$1<@$w> u@this.arpa R$+<@$=w> $@$1<@$w> u@this.arpa R$+<@$=w.arpa> $@$1<@$w> u@this.arpa R$+<@$+.CSNET> $@$1%$2.CSNET<@CSNET-RELAY.ARPA> user@host.CSNET R$+<@$+.DEC> $@$1%$2.DEC<@decwrl.dec.com> user@host.DEC R$+<@$+.JANET> $@$1%$2.JANET<@CS.UCL.AC.UK> user@host.JANET #R$+<@$+.MFENET> $@$1%$2.MFENET<@lll-mfe.arpa> user@host.MFENET R$+<@$+.MFENET> $@$1%$2.MFENET<@nmfecc.arpa> user@host.MFENET #R$+<@$+.MAILNET> $@$1%$2.MAILNET<@mit-multics.arpa> user@host.mailnet # MailNet is probably bogus...mit-multics is dead. #R$+<@$+.OZ.AU> $@$1%$2.OZ.AU<@seismo.css.gov> user@host.OZ.AU R$+<@$+.OZ.AU> $@$1%$2.OZ.AU<@uunet.uu.net> user@host.OZ.AU R$+<@$+.UUCP> $@$2!$1<@$R> user@host.UUCP R$+<@$+.$=P> $@$1<@$[$2.$3$]> user@host.{mil,edu,...} R$+<@$+.$=K> $@$1%$2.$3<@$R> user@host.fake # handle other external cases R$+<@$-> $@$1<@$[$2$]> no .ARPA on simple names R$+<@[$+]> $@$1<@[$2]> already ok R$+<@$+> $@$1<@$[$2$]> set for named # convert remaining addresses to old format and externalize appropriately R$+ $:$>5$1 => old format R$+ $:$1<@$w> tack on our hostname R$+<@$=w> $:$1<@$w> $w doesn't have domain 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$+<@LOCAL> $:$1<@$w> this host R$+<@$-> $:$1<@$[$2$]> check for local domain R$+<@$+.LOCAL> $:$1<@$[$2$]> nic-reg local hosts R$+<@$=w> $@$1<@$w> u@this.arpa R$+<@$=w> $@$1<@$w> u@this.arpa R$+<@$=w.arpa> $@$1<@$w> u@this.arpa R$+<@$+.CSNET> $@$1%$2.CSNET<@CSNET-RELAY.ARPA> user@host.CSNET R$+<@$+.DEC> $@$1%$2.DEC<@decwrl.dec.com> user@host.DEC #R$+<@$+.OZ.AU> $@$1%$2.OZ.AU<@seismo.css.gov> user@host.OZ.AU R$+<@$+.OZ.AU> $@$1%$2.OZ.AU<@uunet.uu.net> user@host.OZ.AU R$+<@$+.JANET> $@$1%$2.JANET<@CS.UCL.AC.UK> user@host.JANET #R$+<@$+.MFENET> $@$1%$2.MFENET<@lll-mfe.arpa> user@host.MFENET R$+<@$+.MFENET> $@$1%$2.MFENET<@nmfecc.arpa> user@host.MFENET #R$+<@$+.MAILNET> $@$1%$2.MAILNET<@mit-multics.arpa> user@host.mailnet R$+<@$+.UUCP> $@$2!$1 user@host.UUCP R$+<@$+.BITNET> $@$1<@$2.BITNET> user@host.BITNET R$+<@$+.$=P> $@$1<@$[$2.$3$]> user@host.{mil,edu,...} R$+<@$+.$=K> $@$1%$2.$3<@$R> user@host.fake # handle other external cases R$+<@$-> $@$1<@$[$2$]> no .ARPA on simple names R$+<@[$+]> $@$1<@[$2]> already ok R$+<@$+> $@$1<@$[$2$]> set for named # convert remaining addresses to old format and externalize appropriately R$+ $:$>5$1 => old format R$-:$+ $@$1.$2<@$R> convert berk hosts R$+ $:$1@$w<.lbl.gov> tack on domain ############################################################ ############################################################ ##### ##### 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!$+ $2 strip local name R$=w!$+ $2 strip local name R$=w.arpa!$+ $2 strip local name R$*<@$->$* $1<@$2>$3 resolve abbreviations R$+<@$+> $2!$1 uucpize (no @'s in addr) R$+ $:$U!$1 stick on our host name S23 R$+ $:$>5$1 convert to old style R$*<@$=w>$* $1<@$2>$3 resolve abbreviations R$*<@$->$* $1<@$2>$3 resolve abbreviations R$+<@$*$=w> $2$3!$1 uucp!u@local -> local!uucp!u R$+<@$*$=w.arpa> $2$3!$1 uucp!u@local -> local!uucp!u R$=U!$+ $2 strip local name R$=U.lbl.gov!$+ $2 strip local name.domain R$=U.arpa!$+ $2 strip local name.domain ##################### ### 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 lookup numeric internet addr R$*<@[$+]>$* $#tcp$@[$2]$:$1@[$2]$3 numeric internet spec R$+ $:$>6$1 R$-<@LOCAL> $#local$:$1 R@ $#local$:$n handle <> form # canonicalize using the nameserver if not internal domain R$*<@$*.$~I>$* $:$1<@$[$2.$3$]>$4 R$*<@$->$* $:$1<@$[$2$]>$3 # arrange for local names to be fully qualified R$*<$+.ARPA.LOCAL>$* $1<$2.ARPA>$3 because ARPA is a host # now delete the local info R$*<$*$=w.$=T>$* $1<$2>$5 thishost.LOCAL 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 # forward around hosts with communication problems #R$*<@$=F.LOCAL>$* $#tcp$@$F$:$1<@$2.LOCAL>$3 reroute message ################################## # End of ruleset zero preamble # ################################## ################################################ ### Machine dependent part of ruleset zero ### ################################################ # resolve names we can handle locally R<@$=W.UUCP>:$+ $#uucp$@$1$:$2 @host.UUCP:... R$+<@$=W.UUCP> $#uucp$@$2$:$1 user@host.UUCP R$+<@$=F.UUCP>$* $#tcp$@$2$:$1<@$2.UUCP> uucp mail # convert some hosts from uucp to tcp # These are our nntp peers #R$*<@$*nosc.UUCP>$* $#tcp$@trout.nosc.mil$:$1<@trout.nosc.mil>$3 user@host #R$*<@$*pasteur.UUCP>$* $#tcp$@pasteur.berkeley.edu$:$1<@pasteur.berkeley.edu>$3 user@host # resolve explicit known foreign networks R$*<@qm>R* $#tcp$@me10.lbl.gov$:$1<@$2>$3 #R$*<@$+.MFENET>$* $#tcp$@nmfecc.arpa$:$1<@$2.MFENET>$3 user@host.MFENET # Use the direct connect to mfe at lbl...seems to work better ...mwh R$*<@$+.MFENET>$* $#tcp$@lbl.gov$:$1<@$2.MFENET>$3 user@host.MFENET R$*<@$+.HEPNET>$* $#tcp$@lbl.gov$:$1<@$2.HEPNET>$3 user@host.HEPNET R$*<@$+.BITNET>$* $#tcp$@$C$:$1<@$2.BITNET>$3 user@host.BITNET R$*<@$+.CSNET>$* $#tcp$@relay.cs.net$:$1<@$2.CSNET>$3 user@host.CSNET R$*<@$+.DEC>$* $#tcp$@decwrl.dec.com$:$1<@$2.DEC>$3 user@host.DEC #R$*<@$+.MailNET>$* $#tcp$@MIT-Multics.ARPA$:$1<@$2.MailNET>$3 user@host.MailNET R$*<@$*.UUCP>$* $#tcp$@$F$:$1<@$2.UUCP> uucp mail # other non-local names 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 R$+%$=R@$=R $1@$[$2$] strip unneeded relay R$+%$=R@$=R.lbl.gov $1@$[$2$] strip unneeded relay R$+%$=R@$=R.arpa $1@$[$2$] strip unneeded relay R$+%$=R.lbl.gov@$=R $1@$[$2.$3$] strip unneeded relay R$+%$=R.arpa@$=R $1@$[$2.$3$] strip unneeded relay R$+%$=R.lbl.gov@$=R.lbl.gov $1@$[$2.$3$] strip unneeded relay R$+%$=R.arpa@$=R.lbl.gov $1@$[$2.$3$] strip unneeded relay R$+%$=R.lbl.gov@$=R.arpa $1@$[$2.$3$] strip unneeded relay R$+%$=R.arpa@$=R.arpa $1@$[$2.$3$] strip unneeded relay R$+%$=w@$=R $1@$[$2$] strip unneeded relay R$+%$=w@$=R.lbl.gov $1@$[$2$] strip unneeded relay R$+%$=w@$=R.arpa $1@$[$2$] strip unneeded relay R$+%$=w@$=R $1@$[$2.$3$] strip unneeded relay R$+%$=w.arpa@$=R $1@$[$2.$3$] strip unneeded relay R$+%$=w@$=R.lbl.gov $1@$[$2.$3$] strip unneeded relay R$+%$=w.arpa@$=R.lbl.gov $1@$[$2.$3$] strip unneeded relay R$+%$=w@$=R.arpa $1@$[$2.$3$] strip unneeded relay R$+%$=w.arpa@$=R.arpa $1@$[$2.$3$] strip unneeded relay R$+%$=w@$=w $1@$w u%UCB@UCB = u@UCB R$+%$=w@$=w $1@$w u%UCB@UCB = u@UCB R$+%$=w@$=w.arpa $1@$w u%UCB@UCB = u@UCB R$+%$=w@$=w $1@$w u%UCB@UCB = u@UCB R$+%$=w.arpa@$=w $1@$w u%UCB@UCB = u@UCB R$+%$=w@$=w.arpa $1@$w u%UCB@UCB = u@UCB R$+%$=w.arpa@$=w.arpa $1@$w u%UCB@UCB = u@UCB -- JEMilburn@lbl.gov ...!ucbvax!lbl.gov!JEMilburn