v08i055: Ease, a language for writing sendmail.cf files, Part03/04
sources-request at mirror.UUCP
sources-request at mirror.UUCP
Thu Feb 12 06:32:24 AEST 1987
Submitted by: ksb at 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 at campushost */
/***
if ( anypath < anypath berkhost > anypath )
retry ( $1<$2$3".LOCAL">$4 ); /* user at 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 at 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 at campushost */
if ( path )
resolve ( mailer ( local ),
user ( $1 ) ); /* everything else */
/**************************************
** Host dependent address cleanup **
**************************************/
ruleset HOSTDEP_RW {
if ( anypath uucphost!usr at 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 at h.UUCP => h!u */
/* delete duplicate local names -- mostly for arpaproto.mc */
if ( usr % this_host @ this_host )
retry ( $1@$3 ); /* u%UCB at UCB => u at UCB */
if ( usr % this_host @ this_host ".ARPA" )
retry ( $1@$3 ".ARPA" ); /* u%UCB at UCB => u at 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, at b, at c:user at 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 at bhost => h:u */
if ( usr < @hostname ".UUCP" > )
retry ( $2!$1 ); /* u at host.UUCP => host!u */
if ( usr @ hostpath ".ARPA" )
retry ( $1@$2 ); /* u at host.ARPA => u at 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 at berknethost */
/* resolve campus names */
if ( anypath < @anypath campushost > anypath )
resolve ( mailer ( pcl ),
host ( $3 ),
user ( $1<@$2$3>$4 ) ); /* user at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at host.ARPA */
if ( path < @hostname ".ARPA" > )
return ( $1<@$2".ARPA"> ); /* user at host.ARPA */
/***
if ( path < @hostpath ".LOCAL" > )
# R$+<@$+.LOCAL> $@$1%$2<@$A> local hosts
# R$+<@$+.BITNET> $@$1%$2.BITNET<@$A> user at host.BITNET
# R$+<@$+.CSNET> $@$1.$2<@CSNET-RELAY.ARPA> user at 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
More information about the Mod.sources
mailing list