|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T b
Length: 7566 (0x1d8e) Types: TextFile Names: »base.cpp«
└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki └─⟦this⟧ »EUUGD11/euug-87hel/sec8/ease/config-files/FINIS/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 */