sources-request@mirror.UUCP (02/11/87)
Submitted by: ksb@j.cc.purdue.edu Mod.sources: Volume 8, Issue 55 Archive-name: ease/Part03 # This is a shell archive. # Remove everything above and including the cut line. # Then run the rest of the file through sh. #----cut here-----cut here-----cut here-----cut here----# #!/bin/sh # shar: Shell Archiver # Run the following text with /bin/sh to create: # config-files mkdir config-files chdir config-files mkdir FINIS chdir FINIS cat << \SHAR_EOF > zerobase.cpp /*********************************************************** *********************************************************** **** **** RULESET ZERO PREAMBLE **** **** The beginning of ruleset zero is constant through all **** configurations. **** **** $Id: zerobase.cpp,v 1.4 86/04/04 14:31:36 kcs Exp $ **** *********************************************************** ***********************************************************/ ruleset BASE_RW { /* first make canonical */ if ( anypath < anypath > anypath ) retry ( $1$2$3); /* defocus */ if ( path ) next ( NAME_CANON ( $1 ) ); /* make canonical */ /* handle special cases..... */ if ( @ ) resolve ( mailer (local), user ("MAILER-DAEMON") ); /* handle <> form */ if ( anypath < @[path] > anypath ) resolve ( mailer (tcp), host (hostnum ($2)), user ("$1@[$2]$3") ); /* numeric internet spec */ /* arrange for local names to be fully qualified */ /*** if ( anypath < anypath campushost > anypath ) retry ( $1<$2$3".LOCAL">$4 ); /* user@campushost */ /*** if ( anypath < anypath berkhost > anypath ) retry ( $1<$2$3".LOCAL">$4 ); /* user@berkhost */ /*** if ( anypath < path ".ARPA.LOCAL" > anypath ) retry ( $1<$2".ARPA">$3 ); /* because ARPA is a host */ /* delete local domain info -- this is a (temporary?) kludge */ if ( anypath < anypath "." $localname > anypath ) retry ( $1<$2>$3 ); /* strip local domain */ if ( anypath < anypath "." localdomain > anypath ) retry ( $1<$2>$4 ); /* strip local subdomains */ /* now delete (more) local info */ if ( anypath < anypath this_host "." topdomain_id > anypath ) retry ( $1<$2>$5 ); /* this_host.LOCAL */ if ( anypath < anypath this_host > anypath ) retry ( $1<$2>$4 ); /* this_host */ if ( anypath < anypath "." > anypath ) retry ( $1<$2>$3 ); /* drop trailing dot */ if ( < @ > : anypath ) return ( BASE_RW ( $1 ) ); /* retry after route strip */ if ( anypath < @ > ) return ( BASE_RW ( $1 ) ); /* strip null trash and retry */ /******************************** * End of ruleset zero preamble * ********************************/ SHAR_EOF if test 2139 -ne "`wc -c zerobase.cpp`" then echo shar: error transmitting zerobase.cpp '(should have been 2139 characters)' fi cat << \SHAR_EOF > version.cpp /* $Id: version.cpp,v 1.3 85/05/04 17:01:03 acu Exp Locker: acu $ */ macro berkhosts = "4.41"; SHAR_EOF if test 98 -ne "`wc -c version.cpp`" then echo shar: error transmitting version.cpp '(should have been 98 characters)' fi cat << \SHAR_EOF > pucc-h.mc /*********************************************************** *********************************************************** **** **** SENDMAIL CONFIGURATION FILE **** **** For PUCC-H **** **** $Id: pucc-h.mc,v 1.2 86/04/04 14:18:03 kcs Exp $ **** *********************************************************** ***********************************************************/ /*********************************************************** ** local info ***********************************************************/ macro m_sitename = "h.cc.purdue.edu"; /* internet hostname */ berkname = "h.cc.purdue.edu"; /* berknet hostname */ class m_sitename = { "h.cc.purdue.edu", pucc-h, pucch, h }; #include "puccbase.cpp" options /*** o_slog = "1"; /* override logging level in base.cpp */ #include "zerobase.cpp" /*********************************************** ** Machine dependent part of ruleset zero ** ***********************************************/ /* resolve berknet names */ if ( < @berkhost > : path ) resolve ( mailer ( berk ), host ( $1 ), user ( $2 ) ); /* @berkhost: ... */ if ( usr < @berkhost > ) resolve ( mailer ( berk ), host ( $2 ), user ( $1 ) ); /* user@berknethost */ /* we don't do uucp */ if ( anypath < @anypath ".UUCP" > anypath ) resolve ( mailer ( error ), user ( "Non-Local UUCP Mail Unavailable" ) ); /* resolve campus names (actually, all non-local names) */ if ( anypath < @anypath hostname > anypath ) resolve ( mailer ( pcl ), host ( $3 ), user ( $1<@$2$3>$4 ) ); /* user@campushost */ if ( path ) resolve ( mailer ( local ), user ( $1 ) ); /* everything else */ /************************************** ** Host dependent address cleanup ** **************************************/ ruleset HOSTDEP_RW { if ( anypath uucphost!usr@path ) retry ( $3@$4 ); /* drop uucp forward */ if ( anypath campushost ".ARPA" anypath ) retry ( $1$2$3 ); /* drop ".ARPA" */ } #include "pclm.cpp" #include "berkm.cpp" SHAR_EOF if test 2042 -ne "`wc -c pucc-h.mc`" then echo shar: error transmitting pucc-h.mc '(should have been 2042 characters)' fi cat << \SHAR_EOF > phonenethosts.cpp /******************************************************* ******************************************************* **** **** Phonenet Host List **** **** Mail to these sites should be routed **** through csnet-relay. **** **** $Id: phonenethosts.cpp,v 1.3 85/07/10 22:37:28 acu Exp $ **** ******************************************************* *******************************************************/ class phonehosts = { albany, alcoa-atc, alcoa-sei, arizona, asu, bostonu, boulder, brandeis, brown, brown-cogsci, btl, buffalo, canisius, carleton, case, clemson, colgate, colostate, ct, dartmouth, depaul, digital, duke, emory, france, gatech, georgetown, germany, gmr, gte-labs, houston, hplabs, ibm-sj, icase, indiana, iowa-state, israel, jhu, kaist, kansas-state, kent, lsu, mcnc, mtu, ncar, nmsu, nmt, northeastern, nsf-cs, nwu, ohio-state, okstate, oregon-grad, oregon-state, penn-state, pitt, portland, princeton, rit, rpi, scarolina, smu, src, suny-bing, suny-sb, syr, tamu, tektronix, ti-csl, ti-eg, toronto, tufts, tulane, uab, ubc, ucd, ucf, uchicago, uconn, ucsb, ucsc, udenver, ufl, uhcl, uiowa, ukans, ulowell, umass, umass-boston, umich, umiss, umn-cs, unc, unh, unl, unlv, uno, uoregon, upenn, usc-cse, usl, utd, utenn, uvm, uwm, vanderbilt, virginia, vpi, wang-inst, waterloo, williams, wfu, wright, wsu }; SHAR_EOF if test 1481 -ne "`wc -c phonenethosts.cpp`" then echo shar: error transmitting phonenethosts.cpp '(should have been 1481 characters)' fi cat << \SHAR_EOF > Makefile ###################################################################### # # Makefile for Sendmail PUCC configuration files # # $Id: Makefile,v 1.4 86/04/04 14:16:17 kcs Exp $ # ###################################################################### PUCCSRCS=pucc-h.mc \ pucc-i.mc \ pucc-j.mc \ pucc-k.mc \ stat-l.mc \ pucc-n.mc \ pucc-s.mc GENSRCS=base.cpp \ berkhosts.cpp \ berkm.cpp \ compat.cpp \ localhosts.cpp \ localm.cpp \ pclm.cpp \ puccbase.cpp \ tcpm.cpp \ version.cpp \ zerobase.cpp SRCS= $(GENSRCS) $(PUCCSRCS) PUCCALL=pucc-h.cf \ pucc-i.cf \ pucc-j.cf \ pucc-k.cf \ stat-l.cf \ pucc-n.cf \ pucc-s.cf ALL= $(PUCCALL) .SUFFIXES: .mc .cf .mc.cf: /lib/cpp $*.mc > $*.cf all: $(ALL) ############################ # special dependencies # ############################ # pessimize -- basic dependencies $(ALL): base.cpp berkhosts.cpp localm.cpp localhosts.cpp pclm.cpp puccbase.cpp \ version.cpp zerobase.cpp # hosts on berknet pucc-h.cf: berkm.cpp # hosts on the arpanet pucc-j.cf: tcpm.cpp # hosts on csnet pucc-j.cf: phonenethosts.cpp # mailers requiring backwards compatibility berkm.cpp tcpm.cpp: compat.cpp ##################### # administrivia # ##################### sources: $(SRCS) clean: rm -f $(ALL) a.out core errs SHAR_EOF if test 1283 -ne "`wc -c Makefile`" then echo shar: error transmitting Makefile '(should have been 1283 characters)' fi cat << \SHAR_EOF > base.cpp /*********************************************************** *********************************************************** **** **** General configuration information **** **** This information is basically just "boiler-plate"; it must be **** there, but is essentially constant. **** **** Information in this file should be independent of location -- **** i.e., although there are some policy decisions made, they are **** not specific to Berkeley per se. **** **** $Id: base.cpp,v 1.3 85/05/04 17:00:43 acu Exp Locker: acu $ **** *********************************************************** ***********************************************************/ #include "version.cpp" /************************ ** Special macros ** ************************/ macro m_daemon = "MAILER-DAEMON"; /* my name */ m_ufrom = "From ${m_sreladdr} ${m_udate}"; /* UNIX header format */ m_addrops = ".:%@!^=/[]"; /* delimiter (operator) characters */ m_defaddr = concat ( ifset (m_sname, "${m_sname} "), "<${m_sreladdr}>" ); /* format of a total name */ m_smtp = "${m_oname} Sendmail ${m_version}/${berkhosts} ready at ${m_adate}"; /* SMTP login message */ /*************** ** Class ** ***************/ class uucphosts = {}; /***************** ** Options ** *****************/ options o_alias = "/usr/lib/aliases"; /* location of alias file */ o_ewait = "10"; /* wait up to ten minutes for alias file rebuild */ o_bsub = "."; /* substitution for space (blank) characters */ o_delivery = d_background; /* default delivery mode (deliver in background) */ /*** o_qwait = ""; /* (don't) connect to "expensive" mailers */ o_tmode = "0600"; /* temporary file mode */ o_gid = "3"; /* default GID (network) */ o_fsmtp = "/usr/lib/sendmail.hf"; /* location of help file */ o_slog = "9"; /* log level */ /*** o_dnet = "ARPA"; /* default network name */ o_hformat = ""; /* default messages to old style */ o_qdir = "/usr/spool/mqueue"; /* queue directory */ o_tread = "2h"; /* read timeout -- violates protocols */ o_flog = "/usr/lib/sendmail.st"; /* status file */ o_safe = ""; /* queue everything before transmission */ o_qtimeout = "3d"; /* default timeout interval */ o_timezone = "EST"; /* time zone names (V6 only) */ o_dmuid = "5"; /* default UID (network) */ o_wizpass = "XXXXXXXXXXXXX"; /* wizard's password */ o_loadq = "999"; /* load average at which we just queue messages */ o_loadnc = "999"; /* load average at which we refuse connections */ /***************************** ** Message precedences ** *****************************/ precedence first-class = 0; special-delivery = 100; junk = -100; /*********************** ** Trusted users ** ***********************/ trusted {root, daemon, uucp, network}; {aat}; /*************************** ** Format of headers ** ***************************/ header define ("Received:", concat (ifset (m_shostname, "from ${m_shostname} "), "by ${m_oname}; ${m_adate}")); define ("Subject:", ""); /*** define ("Posted-Date:", "${m_odate}"); ***/ for (f_return) define ("Return-Path:", "<${m_sreladdr}>"); for (f_date) { define ("Resent-Date:", "${m_odate}"); define ("Date:", "${m_odate}"); }; for (f_from) { define ("Resent-From:", "${m_defaddr}"); define ("From:", "${m_defaddr}"); }; for (f_full) define ("Full-Name:", "${m_sname}"); /*** for (f_locm) define ("Received-Date:", "${m_adate}"); ***/ for (f_mesg) { define ("Resent-Message-Id:", "<${m_ctime}.${m_qid}@${m_oname}>"); define ("Message-Id:", "<${m_ctime}.${m_qid}@${m_oname}>"); }; /************************* ************************* ** Rewriting rules ** ************************* *************************/ /************************* ** Field definitions ** *************************/ field anypath : match (0*); path, usr, hostpath, domain : match (1*); this_host : match (1) in m_sitename; hostname : match (1); campushost : match (1) in campushosts; localdomain : match (1) in localname; topdomain_id : match (1) in topdomain; uucphost : match (1) in uucphosts; phonehost : match (1) in phonehosts; /******************************** * Sender Field Pre-rewriting * ********************************/ ruleset SEND_PRW { /*** if ( anypath < anypath > anypath ) retry ( $1$2$3 ); /* defocus */ } /*********************************** * Recipient Field Pre-rewriting * ***********************************/ ruleset RECP_PRW { /*** if ( anypath < anypath > anypath ) retry ( $1$2$3 ); /* defocus */ } /********************************* * Final Output Post-rewriting * *********************************/ ruleset FINAL_RW { if ( @ ) return (); /* handle <> error addr */ /* externalize local domain info */ /*** if ( anypath < anypath "LOCAL" > anypath ) retry ( $1 < $2 $localname > $3 ); /* change local info */ /*** if ( anypath < anypath "LOCAL.ARPA" > anypath ) retry ( $1 < $2 $localname > $3 ); /* change local info */ if ( anypath < path > anypath ) retry ( $1$2$3 ); /* defocus */ if ( @path: @path: usr ) retry ( @$1,@$2:$3); /* <route-addr> canonical */ /* UUCP must always be presented in old form */ if ( usr @ hostname ".UUCP" ) retry ( $2!$1); /* u@h.UUCP => h!u */ /* delete duplicate local names -- mostly for arpaproto.mc */ if ( usr % this_host @ this_host ) retry ( $1@$3 ); /* u%UCB@UCB => u@UCB */ if ( usr % this_host @ this_host ".ARPA" ) retry ( $1@$3 ".ARPA" ); /* u%UCB@UCB => u@UCB */ } /*************************** * Name Canonicalization * ***************************/ ruleset NAME_CANON { /* handle "from:<>" special case */ if ( <> ) return ( @ ); /* turn into magic token */ /* basic textual canonicalization -- note RFC733 heuristic here */ if ( anypath < anypath < anypath < path > anypath > anypath > anypath ) retry ( $4 ); /* 3-level <> nesting */ if ( anypath < anypath < path > anypath > anypath ) retry ( $3 ); /* 2-level <> nesting */ if ( anypath < path > anypath ) retry ( $2 ); /* basic RFC821/822 parsing */ if ( usr " at " path ) retry ( $1@$2 ); /* "at" -> "@" for RFC 822 */ /* make sure <@a,@b,@c:user@d> syntax is easy to parse -- undone later */ if ( @path, usr ) retry ( @$1:$2 ); /* change all "," to ":" */ /* localize and dispose of route-based addresses */ if ( @path: usr ) return ( LOCAL_RW ( <@$1>:$2 ) ); /* handle <route-addr> */ /* more miscellaneous cleanup */ if ( path ) next ( HOSTDEP_RW ( $1 ) ); /* host dependent cleanup */ if ( path: anypath; @domain ) return ( $1:$2;@$3 ); /* list syntax */ if ( usr @ domain ) next ( $1<@$2> ); /* focus on domain */ if ( path < path @ domain > ) retry ( $1$2<@$3> ); /* move gaze right */ if ( path < @domain > ) return ( LOCAL_RW ( $1<@$2> ) ); /* already canonical */ /* convert old-style addresses to a domain-based address */ if ( usr % hostpath ) return ( LOCAL_RW ( $1<@$2> ) ); /* user%host */ if ( hostname:usr ) return ( LOCAL_RW ( $2<@$1> ) ); /* host:user */ if ( hostname.usr ) return ( LOCAL_RW ( $2<@$1> ) ); /* host.user */ if ( hostname^usr ) retry ( $1!$2); /* convert ^ to ! */ if ( hostname!usr ) return ( LOCAL_RW ( $2<@$1".UUCP"> ) ); /* resolve uucp names */ if ( hostname=usr ) return ( LOCAL_RW ( $2<@$1".BITNET"> ) ); /* resolve bitnet names */ SHAR_EOF if test 7566 -ne "`wc -c base.cpp`" then echo shar: error transmitting base.cpp '(should have been 7566 characters)' fi cat << \SHAR_EOF > berkhosts.cpp /*********************************************************** *********************************************************** **** **** Berknet Host List **** **** $Id: berkhosts.cpp,v 1.4 85/07/21 22:15:14 acu Exp Locker: acu $ **** *********************************************************** ***********************************************************/ class berkhosts = { C, pucc-c, puccc, D, pucc-d, puccd, E, pucc-e, pucce, X, asterix, library, libr, W, physics, pur-phy, phy-a, physics-galileo, purdue-galileo, galileo }; SHAR_EOF if test 576 -ne "`wc -c berkhosts.cpp`" then echo shar: error transmitting berkhosts.cpp '(should have been 576 characters)' fi cat << \SHAR_EOF > berkm.cpp /*********************************************************** *********************************************************** **** **** Berknet Mailer specification **** **** $Id: berkm.cpp,v 1.4 85/07/10 22:32:07 acu Exp $ **** *********************************************************** ***********************************************************/ #ifdef cppCOMPAT #include "compat.cpp" #endif mailer berk { Path = "/usr/net/bin/sendberkmail", Flags = { f_ffrom, f_strip, f_date, f_from, f_mesg, f_addrw }; Sender = BERKSEND_RW; Recipient = BERKREC_RW; Argv = "sendberkmail -m ${m_rhost} -h ${m_hops} -t ${m_ruser}"; Maxsize = "25000" }; ruleset BERKSEND_RW { if ( path ) next ( OLDSTYLE_RW ( $1 ) ); /* convert to old style */ if ( hostname:usr ) return ( $1:$2); /* old berknet as is */ if ( path < @path > ) return ( $1<@$2> ); /* don't modify arpanet */ if ( hostname!usr ) return ( $1!$2 ); /* don't modify uucp */ if ( < @path > ) return ( <@$1> ); /* don't modify <routeaddr> */ if ( path ) return ( $m_shostname:$1 ); /* make others relative */ } ruleset BERKREC_RW { if ( path ) next ( OLDSTYLE_RW ( $1 ) ); /* convert to old style */ } SHAR_EOF if test 1211 -ne "`wc -c berkm.cpp`" then echo shar: error transmitting berkm.cpp '(should have been 1211 characters)' fi cat << \SHAR_EOF > compat.cpp /*********************************************************** *********************************************************** **** **** Provide Backward Compatibility **** **** $Id: compat.cpp,v 1.4 85/11/24 22:46:32 acu Exp $ **** *********************************************************** ***********************************************************/ #define cppCOMPAT 4.2 field berkhost: match (1) in berkhosts; /*************************************************** * General code to convert back to old style names * ***************************************************/ ruleset OLDSTYLE_RW { if ( usr < @berkhost > ) return ( $2:$1 ); /* u@bhost => h:u */ if ( usr < @hostname ".UUCP" > ) retry ( $2!$1 ); /* u@host.UUCP => host!u */ if ( usr @ hostpath ".ARPA" ) retry ( $1@$2 ); /* u@host.ARPA => u@host */ } SHAR_EOF if test 843 -ne "`wc -c compat.cpp`" then echo shar: error transmitting compat.cpp '(should have been 843 characters)' fi cat << \SHAR_EOF > localhosts.cpp /*********************************************************** *********************************************************** **** **** Campus Host List **** **** $Id: localhosts.cpp,v 1.3 85/06/26 16:10:15 acu Exp $ **** *********************************************************** ***********************************************************/ class campushosts = { pucc-c, c, puccc, pucc-d, d, puccd, pucc-e, e, pucce, pucc-h, h, pucch, pucc-i, i, pucci, pucc-j, j, puccj, pucc, pucc-k, k, pucck, pucc-n, n, puccn, stat-l, l, statl, stat, purdue-arthur, arthur, purdue, purdue-cs, purdue-merlin, merlin, purdue-mordred, mordred, cs, purdue-bmec, purdue-ecn-bmec, ecn-bmec, bmec, purdue-chem, purchem, chemistry, purdue-chemistry, purdue-dipl, ecn-dipl, dipl, purdue-ecn-ca, ecn-ca, ca, ca-en, purdue-ecn-cb, ecn-cb, cb, cb-en, purdue-ecn-ec, ecn-ec, ec, ec-en, purdue-ecn-ed, ecn-ed, ed, ed-en, purdue-ecn-ee, ecn-ee, ee, ee-en, pur-ee, ecn, purdue-ecn, purdue-ecn-ef, ecn-ef, ef, ef-en, purdue-ecn-ef, ecn-ef, ef, ef-rsch, purdue-ecn-eg, ecn-eg, eg, eg-en, purdue-ecn-eh, ecn-eh, eh, eh-en, ecn-test, purdue-ecn-ei, ecn-ei, ei, ei-en, purdue-ecn-ej, ecn-ej, ej, ej-en, purdue-ecn-ek, ecn-ek, ek, ek-en, purdue-ecn-ga, ecn-ga, ga, ga-en, purdue-ecn-gb, ecn-gb, gb, gb-en, purdue-ecn-ma, ecn-ma, ma, ma-en, purdue-ecn-mb, ecn-mb, mb, mb-en, purdue-ecn-md, ecn-md, md, md-en, purdue-ecn-pb, ecn-pb, pb, pb-en, cidmac, purdue-ecn-pc, ecn-pc, pc, pc-en, purdue-galileo, galileo, physics-galileo, purdue-malcolm, ecn-malcolm, malcolm, purdue-newton, newton, physics-newton, purdue-trillian, ecn-trillian, trillian, purdue-vlsi, puvlsi, vlsi, purdue-zaphod, ecn-zaphod, zaphod }; /* non-standard names for CS hosts (translated to CS) */ othercs = { cs-arthur, cs-mordred, cs-merlin }; SHAR_EOF if test 1906 -ne "`wc -c localhosts.cpp`" then echo shar: error transmitting localhosts.cpp '(should have been 1906 characters)' fi cat << \SHAR_EOF > pclm.cpp /**************************************************************************** **************************************************************************** **** **** PCL11 Mailer specification **** **** Messages processed by this configuration are assumed to remain **** in the same domain. Hence, they may not necessarily correspond **** to RFC822 in all details. **** **** $Id: pclm.cpp,v 1.4 85/06/26 15:10:46 acu Exp $ **** **************************************************************************** ****************************************************************************/ mailer pcl { Path = "[IPC]", Flags = { f_mult, f_date, f_from, f_mesg, f_upperu, f_addrw, f_dot, f_smtp }, Sender = HOSTNAME_RW, Recipient = HOSTNAME_RW, Argv = "IPC ${m_rhost}", Maxsize = "100000" }; ruleset HOSTNAME_RW { if ( anypath < @path > anypath ) return ( $1<@$2>$3 ); /* already ok */ if ( path ) return ( $1<@$m_sitename ); /* tack on our hostname */ } SHAR_EOF if test 995 -ne "`wc -c pclm.cpp`" then echo shar: error transmitting pclm.cpp '(should have been 995 characters)' fi cat << \SHAR_EOF > localm.cpp /*********************************************************** *********************************************************** **** **** Local and Program Mailer specification **** **** $Id: localm.cpp,v 1.4 85/07/10 22:38:09 acu Exp $ **** *********************************************************** ***********************************************************/ mailer local { Path = "/bin/mail", Flags = { f_rfrom, f_locm, f_strip, f_date, f_from, f_mesg, f_mult, f_noufrom }, Sender = MAGIC_RW, Recipient = UNIMPLEMENTED, Argv = "mail -d ${m_ruser}", Maxsize = "200000" }; prog { Path = "/bin/sh", Flags = { f_locm, f_strip, f_date, f_from, f_mesg, f_upperu }, Sender = MAGIC_RW, Recipient = UNIMPLEMENTED, Argv = "sh -c ${m_ruser}", Maxsize = "200000" }; ruleset MAGIC_RW { if ( @ ) return ( "MAILER-DAEMON" ); /* errors to mailer-daemon */ } SHAR_EOF if test 893 -ne "`wc -c localm.cpp`" then echo shar: error transmitting localm.cpp '(should have been 893 characters)' fi cat << \SHAR_EOF > pucc-j.mc /*********************************************************** *********************************************************** **** **** SENDMAIL CONFIGURATION FILE **** **** For PUCC-J **** **** $Id: pucc-j.mc,v 1.2 86/04/04 14:20:57 kcs Exp $ **** *********************************************************** ***********************************************************/ /*********************************************************** ** local info ***********************************************************/ macro m_sitename = "j.cc.purdue.edu"; /* internet hostname */ arpa_name = "asc"; /* our arpanet name */ class m_sitename = { "j.cc.purdue.edu", pucc-j, puccj, j, pucc, purdue-asc, purdue-205-gw, purdue-asc-tn, asc, "asc.purdue.edu", "asc.cc.purdue.edu", 205-gw, asc-tn }; arpa_name = { "asc.purdue.edu", "asc.cc.purdue.edu", asc, purdue-asc, purdue-205-gw }; #include "phonenethosts.cpp" #include "puccbase.cpp" #include "zerobase.cpp" /********************************************** ** Machine dependent part of ruleset zero ** **********************************************/ /* send berknet names through relay */ if ( < @berkhost > : path ) resolve ( mailer ( pcl ), host ( $relay_host ), user ( $2<@$1> ) ); /* @berkhost: ... */ if ( anypath < @anypath berkhost > anypath ) resolve ( mailer ( pcl ), host ( $relay_host ), user ( $1<@$2$3>$4 ) ); /* user@berknethost */ /* resolve campus names */ if ( anypath < @anypath campushost > anypath ) resolve ( mailer ( pcl ), host ( $3 ), user ( $1<@$2$3>$4 ) ); /* user@campushost */ /* send csnet names through relay */ if ( anypath < @phonehost > anypath ) resolve ( mailer ( tcp ), host ( "CSNet-Relay" ), user ( $1%$2<@"CSNet-Relay">$3 ) ); if ( anypath < @phonehost ".ARPA" > anypath ) resolve ( mailer ( tcp ), host ( "CSNet-Relay" ), user ( $1%$2<@"CSNet-Relay">$3 ) ); if ( anypath < @path ".CSNET" > anypath ) resolve ( mailer ( tcp ), host ( "CSNet-Relay" ), user ( $1%$2<@"CSNet-Relay">$3 ) ); /* we don't do uucp */ if ( anypath < @anypath ".UUCP" > anypath ) resolve ( mailer ( error ), user ( "Non-Local UUCP Mail Unavailable" ) ); /* we don't do bitnet (yet) */ if ( anypath < @anypath ".BITNET" > anypath ) resolve ( mailer ( error ), user ( "Bitnet Mail Unavailable At This Time" ) ); /* other non-local names to the arpanet */ if ( anypath < @anypath > anypath ) resolve ( mailer ( tcp ), host ( $2 ), user ( $1<@$2>$3 ) ); /* user@arpahost */ /* remaining names must be local */ if ( path ) resolve ( mailer ( local ), user ( $1 ) ); /* everything else */ /************************************** ** Host dependent address cleanup ** **************************************/ ruleset HOSTDEP_RW { if ( anypath uucphost!usr@hostpath ) retry ( $3@$4 ); /* drop uucp forward */ } #include "pclm.cpp" #include "tcpm.cpp" SHAR_EOF if test 3004 -ne "`wc -c pucc-j.mc`" then echo shar: error transmitting pucc-j.mc '(should have been 3004 characters)' fi cat << \SHAR_EOF > pucc-i.mc /*********************************************************** *********************************************************** **** **** SENDMAIL CONFIGURATION FILE **** **** For PUCC-I **** **** $Id: pucc-i.mc,v 1.2 86/04/04 14:19:21 kcs Exp $ **** *********************************************************** ***********************************************************/ /*********************************************************** ** local info ***********************************************************/ macro m_sitename = "i.cc.purdue.edu"; /* internet hostname */ class m_sitename = { "i.cc.purdue.edu", pucc-i, pucci, i }; #include "puccbase.cpp" options /*** o_slog = "1"; /* override logging level in base.cpp */ #include "zerobase.cpp" /********************************************** ** Machine dependent part of ruleset zero ** **********************************************/ /* send berknet names through relay */ if ( < @berkhost > : path ) resolve ( mailer ( pcl ), host ( $relay-host ), user ( $2<@$1> ) ); /* @berkhost: ... */ if ( anypath < @anypath berkhost > anypath ) resolve ( mailer ( pcl ), host ( $relay-host ), user ( $1<@$2$3>$4 ) ); /* user@berknethost */ /* we don't do uucp */ if ( anypath < @anypath ".UUCP" > anypath ) resolve ( mailer ( error ), user ( "Non-Local UUCP Mail Unavailable" ) ); /* resolve campus names (actually, all non-local names) */ if ( anypath < @anypath hostname > anypath ) resolve ( mailer ( pcl ), host ( $3 ), user ( $1<@$2$3>$4 ) ); /* user@campushost */ /* remaining names must be local */ if ( path ) resolve ( mailer ( local ), user ( $1 ) ); /* everything else */ /************************************** ** Host dependent address cleanup ** **************************************/ ruleset HOSTDEP_RW { if ( anypath uucphost!usr@path ) retry ( $3@$4 ); /* drop uucp forward */ if ( anypath campushost ".ARPA" anypath ) retry ( $1$2$3 ); /* drop ".ARPA" */ } #include "pclm.cpp" SHAR_EOF if test 2059 -ne "`wc -c pucc-i.mc`" then echo shar: error transmitting pucc-i.mc '(should have been 2059 characters)' fi cat << \SHAR_EOF > puccbase.cpp /************************************************ ************************************************ **** **** General configuration information **** **** $Id: puccbase.cpp,v 1.4 86/04/04 14:25:46 kcs Exp $ **** ************************************************ ************************************************/ /******************** * General Macros * ********************/ macro localname = "PURDUE.EDU"; /* local domain names */ relay_host = "pucc-h"; /* berknet relay host */ m_oname = "${m_sitename}"; /* my official hostname (sort of */ class localname = { "PURDUE.EDU", PURDUE, CC, Purdue-CS, CS, ECN }; topdomain = { LOCAL, ARPA, UUCP, BITNET, CSNET }; /* known top-level domains */ #include "localhosts.cpp" #include "berkhosts.cpp" #include "base.cpp" /********************* * Rewriting rules * *********************/ /*** special local conversions ***/ S6 # R$*<@$*$=D>$* $1<@$2LOCAL>$4 convert local domain # R$*<@$*$=D.ARPA>$* $1<@$2LOCAL>$4 R$*<@$+.$=T.$=T>$* $1<@$2.$3>$5 delete dup top level R$*<@$*$=S.UUCP>$* $1<@$2$3>$4 local UUCP direct R$*<@$*$=Z.UUCP>$* $1<@$2$3>$4 local UUCP direct R$*<@$=Y$*>$* $1<@cs$3>$4 cs-host => cs kludge #include "localm.cpp" SHAR_EOF if test 1219 -ne "`wc -c puccbase.cpp`" then echo shar: error transmitting puccbase.cpp '(should have been 1219 characters)' fi chdir .. cat << \SHAR_EOF > KEY USES FOR MACROS AND CLASSES MACROS CLASSES ====== ======= A arpanet name arpanet names B C comp ctr gateway (ucbvax only) comp ctr hosts (ucbvax & jade only) - - - - - - - - - - - - - - - - - - - - - - - - - - D full local domain name (bottom) local domain names $locdomain E F forwarding host, $R default hosts that we cannot talk directly to - - - - - - - - - - - - - - - - - - - - - - - - - - G H internet name all names this host is known by I - - - - - - - - - - - - - - - - - - - - - - - - - - J K L - - - - - - - - - - - - - - - - - - - - - - - - - - M N ncp gateway list of ncp-only hosts O - - - - - - - - - - - - - - - - - - - - - - - - - - P Q R relay host (e.g., ucbvax) - - - - - - - - - - - - - - - - - - - - - - - - - - S known internet hostnames T top level domains U uucp name uucp names - - - - - - - - - - - - - - - - - - - - - - - - - - V a machine with local uucp link uucp sites on $V machine W a machine with local uucp link uucp sites on $W machine X a machine with local uucp link uucp sites on $X machine - - - - - - - - - - - - - - - - - - - - - - - - - - Y Z config version code known berknet hosts $berkhosts SHAR_EOF if test 1377 -ne "`wc -c KEY`" then echo shar: error transmitting KEY '(should have been 1377 characters)' fi cat << \SHAR_EOF > README Ironically enough, PUCC doesn't yet use ease for our configuration files. These are approximations to what will eventually become our configuration files. They are not entirely finished, but the ones in "FINIS" are pretty much done, according to what Jim Schoner said before he left. Someday I'll finish them... Jeff Smith SHAR_EOF if test 327 -ne "`wc -c README`" then echo shar: error transmitting README '(should have been 327 characters)' fi cat << \SHAR_EOF > pucc-k.mc /*********************************************************** *********************************************************** **** **** SENDMAIL CONFIGURATION FILE **** **** For PUCC-K **** **** $Id: pucc-k.mc,v 1.2 86/04/04 14:22:32 kcs Exp $ **** *********************************************************** ***********************************************************/ /*********************************************************** ** local info ***********************************************************/ /* internet hostname */ Dwk.cc.purdue.edu Cwk.cc.purdue.edu pucc-k pucck k #include "puccbase.cpp" /* override logging level in base.cpp */ # OL1 #include "zerobase.cpp" ################################################ ### Machine dependent part of ruleset zero ### ################################################ # send berknet names through relay R<@$=Z>:$+ $#pcl$@$R$:$2<@$1> @berkhost: ... R$*<@$*$=Z>$* $#pcl$@$R$:$1<@$2$3>$4 user@berknethost # we don't do uucp R$*<@$*.UUCP>$* $#error$:Non-Local UUCP Mail Unavailable # resolve campus names (actually, all non-local names) R$*<@$*$->$* $#pcl$@$3$:$1<@$2$3>$4 user@campushost # remaining names must be local R$+ $#local$:$1 everything else ######################################## ### Host dependent address cleanup ### ######################################## S8 R$*$=U!$+@$+ $3@$4 drop uucp forward R$*$=S.ARPA$* $1$2$3 drop ".ARPA" include(pclm.cpp) SHAR_EOF if test 1462 -ne "`wc -c pucc-k.mc`" then echo shar: error transmitting pucc-k.mc '(should have been 1462 characters)' fi cat << \SHAR_EOF > pucc-n.mc /*********************************************************** *********************************************************** **** **** SENDMAIL CONFIGURATION FILE **** **** For PUCC-N **** **** $Id: pucc-n.mc,v 1.2 86/04/04 14:23:57 kcs Exp $ **** *********************************************************** ***********************************************************/ /*********************************************************** ** local info ***********************************************************/ /* internet hostname */ Dwn.cc.purdue.edu Cwn.cc.purdue.edu pucc-n puccn n #include "puccbase.cpp" # override logging level in base.cpp # OL1 include(zerobase.cpp) ################################################ ### Machine dependent part of ruleset zero ### ################################################ # send berknet names through relay R<@$=Z>:$+ $#pcl$@$R$:$2<@$1> @berkhost: ... R$*<@$*$=Z>$* $#pcl$@$R$:$1<@$2$3>$4 user@berknethost # we don't do uucp R$*<@$*.UUCP>$* $#error$:Non-Local UUCP Mail Unavailable # resolve campus names (actually, all non-local names) R$*<@$*$->$* $#pcl$@$3$:$1<@$2$3>$4 user@campushost # remaining names must be local R$+ $#local$:$1 everything else ######################################## ### Host dependent address cleanup ### ######################################## S8 R$*$=U!$+@$+ $3@$4 drop uucp forward R$*$=S.ARPA$* $1$2$3 drop ".ARPA" include(pclm.cpp) SHAR_EOF if test 1456 -ne "`wc -c pucc-n.mc`" then echo shar: error transmitting pucc-n.mc '(should have been 1456 characters)' fi cat << \SHAR_EOF > pucc-s.mc /*********************************************************** *********************************************************** **** **** SENDMAIL CONFIGURATION FILE **** **** For PUCC-S **** **** $Id: pucc-s.mc,v 1.1 86/03/31 11:16:37 kcs Exp Locker: kcs $ **** *********************************************************** ***********************************************************/ /*********************************************************** ** local info ***********************************************************/ /* internet hostname */ Dws.cc.purdue.edu Cws.cc.purdue.edu pucc-s puccs s #include "puccbase.cpp" /* override logging level in base.cpp */ # OL1 include(zerobase.cpp) ################################################ ### Machine dependent part of ruleset zero ### ################################################ # send berknet names through relay R<@$=Z>:$+ $#pcl$@$R$:$2<@$1> @berkhost: ... R$*<@$*$=Z>$* $#pcl$@$R$:$1<@$2$3>$4 user@berknethost # we don't do uucp R$*<@$*.UUCP>$* $#error$:Non-Local UUCP Mail Unavailable # resolve campus names (actually, all non-local names) R$*<@$*$->$* $#pcl$@$3$:$1<@$2$3>$4 user@campushost # remaining names must be local R$+ $#local$:$1 everything else ######################################## ### Host dependent address cleanup ### ######################################## S8 R$*$=U!$+@$+ $3@$4 drop uucp forward R$*$=S.ARPA$* $1$2$3 drop ".ARPA" include(pclm.cpp) SHAR_EOF if test 1472 -ne "`wc -c pucc-s.mc`" then echo shar: error transmitting pucc-s.mc '(should have been 1472 characters)' fi cat << \SHAR_EOF > puccbase.cpp /************************************************ ************************************************ **** **** General configuration information **** **** $Id: puccbase.cpp,v 1.4 86/04/04 14:25:46 kcs Exp $ **** ************************************************ ************************************************/ /******************** * General Macros * ********************/ macro localname = "PURDUE.EDU"; /* local domain names */ relay_host = "pucc-h"; /* berknet relay host */ m_oname = "${m_sitename}"; /* my official hostname (sort of */ class localname = { "PURDUE.EDU", PURDUE, CC, Purdue-CS, CS, ECN }; topdomain = { LOCAL, ARPA, UUCP, BITNET, CSNET }; /* known top-level domains */ #include "localhosts.cpp" #include "berkhosts.cpp" #include "base.cpp" /********************* * Rewriting rules * *********************/ /*** special local conversions ***/ S6 # R$*<@$*$=D>$* $1<@$2LOCAL>$4 convert local domain # R$*<@$*$=D.ARPA>$* $1<@$2LOCAL>$4 R$*<@$+.$=T.$=T>$* $1<@$2.$3>$5 delete dup top level R$*<@$*$=S.UUCP>$* $1<@$2$3>$4 local UUCP direct R$*<@$*$=Z.UUCP>$* $1<@$2$3>$4 local UUCP direct R$*<@$=Y$*>$* $1<@cs$3>$4 cs-host => cs kludge #include "localm.cpp" SHAR_EOF if test 1219 -ne "`wc -c puccbase.cpp`" then echo shar: error transmitting puccbase.cpp '(should have been 1219 characters)' fi cat << \SHAR_EOF > stat-l.mc ############################################################ ############################################################ ##### ##### SENDMAIL CONFIGURATION FILE ##### ##### For STAT-L ##### ##### $Id: stat-l.mc,v 1.2 86/04/04 14:27:47 kcs Exp $ ##### ############################################################ ############################################################ ############################################################ ### local info ############################################################ # internet hostname Dwstat-l Cwstat-l statl l stat include(puccbase.cpp) include(zerobase.cpp) ################################################ ### Machine dependent part of ruleset zero ### ################################################ # send berknet names through relay R<@$=Z>:$+ $#pcl$@$R$:$2<@$1> @berkhost: ... R$*<@$*$=Z>$* $#pcl$@$R$:$1<@$2$3>$4 user@berknethost # we don't do uucp R$*<@$*.UUCP>$* $#error$:Non-Local UUCP Mail Unavailable # resolve campus names (actually, all non-local names) R$*<@$*$->$* $#pcl$@$3$:$1<@$2$3>$4 user@campushost # remaining names must be local R$+ $#local$:$1 everything else ######################################## ### Host dependent address cleanup ### ######################################## S8 R$*$=U!$+@$+ $3@$4 drop uucp forward R$*$=S.ARPA$* $1$2$3 drop ".ARPA" include(pclm.cpp) SHAR_EOF if test 1384 -ne "`wc -c stat-l.mc`" then echo shar: error transmitting stat-l.mc '(should have been 1384 characters)' fi cat << \SHAR_EOF > tcpm.cpp /*********************************************************** *********************************************************** **** **** 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. **** **** $Id: tcpm.cpp,v 1.5 86/04/04 14:29:16 kcs Exp $ **** *********************************************************** ***********************************************************/ #ifndef cppCOMPAT #include "compat.cpp" #endif mailer tcp { Path = "[IPC]", Flags = { f_mult, f_date, f_from, f_mesg, f_upperu, f_dot, f_llimit }, Sender = MAP_RW, Recipient = MAP_RW, Argv = "IPC ${m_rhost}", Eol = "\r\n", Maxsize = "100000" }; ruleset MAP_RW { /* pass <route-addr>'s through */ /*** if ( < @path > anypath ) return ( <@canon($1)>$2 ); /* resolve <route-addr> */ if ( < @path > anypath ) return ( <@$1>$2 ); /* resolve <route-addr> */ /* map colons to dots everywhere..... */ if ( anypath : anypath ) retry ( $1.$2 ); /* map colons to dots */ /* handle the simple case.... */ /*** if ( path < @hostname ".ARPA" > ) return ( $1<@canon($2".ARPA")> ); /* user@host.ARPA */ if ( path < @hostname ".ARPA" > ) return ( $1<@$2".ARPA"> ); /* user@host.ARPA */ /*** if ( path < @hostpath ".LOCAL" > ) # R$+<@$+.LOCAL> $@$1%$2<@$A> local hosts # R$+<@$+.BITNET> $@$1%$2.BITNET<@$A> user@host.BITNET # R$+<@$+.CSNET> $@$1.$2<@CSNET-RELAY.ARPA> user@host.CSNET # handle other external cases # R$+<@$-> $@$1<@$[$2$]> no .ARPA on simple names R$+<@$-> $@$1<@$2> no .ARPA on simple names R$+<@$+.$-> $@$1<@$2$3> already ok (we think) # R$+<@$+.$-.ARPA> $@$1%$2<@$[$3.ARPA$]> approximate something R$+<@[$+]> $@$1<@[$2]> already ok # convert remaining addresses to old format and externalize appropriately R$+ $:$>5$1 => old format R$-:$+ $@$1.$2<@$A.$D> convert berk hosts R$* $@$1<@$A.$D> tack on our host name SHAR_EOF if test 2055 -ne "`wc -c tcpm.cpp`" then echo shar: error transmitting tcpm.cpp '(should have been 2055 characters)' fi chdir .. # End of shell archive exit 0