home *** CD-ROM | disk | FTP | other *** search
- From: csu@alembic.acs.com (Dave Mack)
- Newsgroups: alt.sources
- Subject: Anonymous Contact Service software v1.1, Part04/08
- Message-ID: <1990Jul15.170802.6970@alembic.acs.com>
- Date: 15 Jul 90 17:08:02 GMT
-
- This is the second distribution of the Anonymous Contact Service
- software. The distribution consists of 8 shar files. This will
- (hopefully) be the last full distribution of the system - all
- future versions will be distributed as patches. The patchlevel of
- this version is 1.
-
- The ACS software provides a mechanism for posting anonymous articles,
- for receiving replies to those articles which are also anonymous, and
- permits prolonged anonymous conversations in which neither writer knows
- the other's actual e-mail address.
-
- This software is currently being used to provide an anonymous personals
- service in alt.personals.
-
- Dave Mack
- csu@alembic.ACS.COM
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of archive 4 (of 8)."
- # Contents: mailer/Read.Me mailer/resolve.c mailer/template.cf
- # Wrapped by csu@alembic on Sun Jul 15 12:46:48 1990
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'mailer/Read.Me' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'mailer/Read.Me'\"
- else
- echo shar: Extracting \"'mailer/Read.Me'\" \(6735 characters\)
- sed "s/^X//" >'mailer/Read.Me' <<'END_OF_FILE'
- X Read.Me - Updated 9/15/87
- X
- XWhat smail does:
- X
- X smail is capable of handling UUCP syntax (bang paths, bang
- X domains, and at domains are supported) mail transportation
- X over UUCP/uux/rmail channels. It will support machines that
- X only have UUCP connections, and machines with UUCP links to
- X the outside world plus a small number of local machines that
- X are reached via SMTP. The domain intelligence is embedded
- X in the smail database (e.g. the pathalias output), not the
- X sendmail.cf file, so if you have a fancier domain structure
- X that involves SMTP or anything other than uux in the domain
- X structure, you'll want to modify the sendmail.cf file here or
- X merge pieces of the enclosed sendmail.cf into your own.
- X
- X smail runs under 4.2BSD and System V, as a back end to sendmail;
- X and under System V without sendmail. It also replaces rmail, which
- X becomes a link to smail. In a sendmail environment, smail depends on
- X sendmail to crack the headers, as smail just deals with the envelope.
- X smail makes your host capable of using the INTERNET definition in the
- X Usenet software.
- X
- X Features of smail include:
- X
- X (1) Using pathalias data to choose the best route to your destination.
- X (2) Handling of user@domain, domain!user, and host!user syntax.
- X (3) Generation of domain!user syntax to be forwarded by other systems.
- X (4) Logging of traffic through your machine, by sender, recipient, and
- X size of message, so you can, track use and detect abuse of your
- X machine.
- X (5) Mail being forwarded through your machine to another uux link is
- X passed from rmail directly to uux, so there's less overhead on
- X your machine (sendmail stays out of the loop.)
- X (6) Sendmail-like alias capability for hosts without sendmail.
- X (7) Generation of RFC822 required headers for locally generated mail.
- X (8) Robust delivery scheme that reroutes only if stated path is inaccessible.
- X (8) Mail that is undeliverable is returned to sender.
- X (9) Simplicity.
- X
- XPrerequisites:
- X
- X A copy of a recent posting of pathalias. (The one posted
- X by Peter Honeyman in January 1986 is recommended.)
- X
- X A current copy of the UUCP map, or at least a copy of the
- X appropriate part of it that you're interested in.
- X
- X A properly registered domain name for your organization, such
- X as ATT.COM. (It is possible to run smail using a domain name
- X under .UUCP, but since this can't be officially registered,
- X it is appropriate only for testing.)
- X
- X You can get pathalias from the mod.sources Usenet archive
- X (contact sources-request@uunet.uu.net or uunet!sources-request)
- X
- X You can get a UUCP map each month from Usenet newsgroup mod.map.
- X The UUCP map is quite large (currently about 2MB) so please don't ask
- X to have a copy mailed to you - get a copy from a nearby Usenet site.
- X
- X You can get a domain name by joining the UUCP Zone. There are
- X low membership dues for this, and a registration process that
- X will take 2-8 weeks. This Read.Me file may be out of date by
- X the time you read it, so we ask you to contact us for current
- X dues rates and procedures. Contact uucp-query@Stargate.COM or
- X cbosgd!stargate!uucp-query and ask for the UUCP Zone information
- X packet. (If you already belong to a network such as CSNET, DDN,
- X or BITNET, your organization may already have a domain name. If
- X you are also on UUCP, it is recommended that you also join the
- X UUCP Zone at the lower rate for organizations whose primary
- X affiliation is with another network. See the file "Registry"
- X for more information.
- X
- XOverall structure:
- X
- X smail is installed in /bin/smail with a link in /bin/rmail. Uuxqt
- X calls rmail, which either forwards the message on to the next hop
- X directly or, on a sysetm with sendmail, calls sendmail. sendmail
- X may decide the message should be delivered by UUCP, and invoke smail,
- X which will look up a route and invoke uux. (Note that the choice
- X about when to invoke sendmail and when to process a message directly
- X can be configured in smail.)
- X
- X smail uses a database which is generated from pathalias. You take the
- X current UUCP map, add some local information and topology data (to tell
- X it about the domain tree) and run pathalias. The result is sorted and
- X installed in /usr/lib/uucp/paths. There is no hashing done on this
- X file - when smail looks up a name it uses a binary search.
- X
- XConfiguration considerations:
- X
- X You'll note two configuration options in defs.h: HANDLE and ROUTING.
- X These control which sorts of addresses smail/rmail will handle, and
- X which type of routing they will do. The HANDLE define only affects
- X rmail, since smail sets it implicitly. In any case, we recommend
- X that you leave HANDLE alone, unless you are making major changes.
- X
- X ROUTING has three choices: JUSTDOMAIN, ALWAYS, and REROUTE. rmail
- X will run as JUSTDOMAIN, the defs.h default. This means rmail will
- X only apply routing if it sees "rmail user@domain", and will just call
- X uux if it sees "rmail host!user". (If the uux fails, it will call
- X smail -r, which will apply ALWAYS routing to try to get the mail
- X there anyway. If the ALWAYS routing fails, then REROUTE routing is
- X applied. This has the advantage of being low overhead on your
- X system, not second guessing a route someone else asked for, and still
- X recovering nicely from the mistakes of another system. Your host
- X becomes a "smart host" that can get mail anywhere.)
- X
- X Many people will note huge paths going through their machine. These
- X paths are generated by replies to netnews messages, and tend to be 10
- X or 20 hops long - far longer than necessary. If you are a bit aggressive,
- X you can change -r to -R, which will cause such failed mail to be rerouted,
- X thus, mail to a!b!c!d!e!f!g!user will look up a route to g, and send the
- X mail to route!g!user. (If it can't find g, it will try f, then e, and
- X so on until it finds someone it recognizes.) If you are REALLY aggressive,
- X you can change ROUTING to REROUTE in defs.h, to get the same effect for
- X ALL rmail being passed through your machine. This may help cut phone
- X bills, but it has some disadvantages. It can lengthen a path sometimes,
- X e.g. mail to tektronix!user might turn into ihnp4!tektronix!user if your
- X routing database says mail to tektronix goes through ihnp4. It makes it
- X hard to route around a dead host, or to redirect traffic from a mailing
- X list to several different directions. It may also make mail go a different
- X path than what your user thought it was, and it affects other hosts that
- X route mail through you if you set ROUTING to REROUTE in defs.h. So only
- X do this if you know what you are doing, and are willing to live with the
- X disadvantages.
- X
- X#
- X#@(#)Read.Me 2.5 (smail) 9/15/87
- X#
- END_OF_FILE
- if test 6735 -ne `wc -c <'mailer/Read.Me'`; then
- echo shar: \"'mailer/Read.Me'\" unpacked with wrong size!
- fi
- # end of 'mailer/Read.Me'
- fi
- if test -f 'mailer/resolve.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'mailer/resolve.c'\"
- else
- echo shar: Extracting \"'mailer/resolve.c'\" \(7634 characters\)
- sed "s/^X//" >'mailer/resolve.c' <<'END_OF_FILE'
- X/*
- X**
- X** Resolve.c
- X**
- X** Routes then resolves addresses into UUCP or LOCAL.
- X**
- X*/
- X#ifndef lint
- Xstatic char *sccsid="@(#)resolve.c 2.5 (smail) 9/15/87";
- X#endif
- X
- X#include <ctype.h>
- X#include <stdio.h>
- X#include "defs.h"
- X
- Xextern int exitstat; /* set if address doesn't resolve */
- Xextern enum ehandle handle; /* what mail we can handle */
- Xextern enum edebug debug; /* verbose and debug modes */
- Xextern enum erouting routing; /* when to route addresses */
- Xextern char hostdomain[]; /* */
- Xextern char hostname[]; /* */
- Xextern char *pathfile; /* location of path database */
- Xextern int getcost; /* get path cost even if not routing */
- X
- Xchar *sform();
- X
- X/*
- X**
- X** rsvp(): how to resolve addresses.
- X**
- X** After parsing an address into <form>, the resolved form will be
- X** rsvp( form ). If == ROUTE, we route the parsed address and parse again.
- X**
- X*/
- X
- X# define rsvp(a) table[(int)a][(int)handle]
- X
- Xenum eform table[5][3] = {
- X/* all justuucp none */
- X{ ERROR, ERROR, ERROR }, /* error */
- X{ LOCAL, LOCAL, LOCAL }, /* local */
- X{ ROUTE, LOCAL, LOCAL }, /* domain */
- X{ UUCP, UUCP, LOCAL }, /* uucp */
- X{ ERROR, ERROR, ERROR }}; /* route */
- X
- X/*
- X**
- X** resolve(): resolve addresses to <host, user, form>.
- X**
- X** This is a gnarly piece of code, but it does it all. Each section
- X** is documented.
- X**
- X*/
- X
- Xenum eform
- Xresolve( address, domain, user , cost)
- Xchar *address; /* the input address */
- Xchar *domain; /* the returned domain */
- Xchar *user; /* the returned user */
- Xint *cost; /* the returned cost */
- X{
- X enum eform form; /* the returned form */
- X enum eform parse(); /* to crack addresses */
- X int parts; /* to ssplit addresses */
- X char *partv[MAXPATH]; /* " " " */
- X char temp[SMLBUF]; /* " " " */
- X int i;
- X
- X
- X/*
- X** If we set REROUTE and are prepared to deliver UUCP mail, we split the
- X** address apart at !'s and try to resolve successively larger righthand
- X** substrings until we succeed. Otherwise, we just resolve the whole thing
- X** once.
- X*/
- X if ((routing == REROUTE) && (rsvp( UUCP ) == UUCP)) {
- X parts = ssplit( address, '!', partv );
- X } else {
- X parts = 1;
- X partv[0] = address;
- X }
- X/*
- X** This for(i) loop selects successively larger
- X** righthand substrings of the address.
- X*/
- X for( i = parts - 1; i >= 0; i-- ) {
- X/*
- X** Parse the address.
- X*/
- X (void) strcpy( temp, partv[i] );
- X form = parse( temp, domain, user );
- X
- XDEBUG("resolve: parse address '%s' = '%s' @ '%s' (%s)\n",
- X temp,user,domain,sform(form));
- X
- X/*
- X** If we are looking at a substring (that's not the entire string)
- X** which parses to a LOCAL address, we skip to the next larger substring.
- X*/
- X if((i != 0) && (form == LOCAL))
- X continue;
- X/*
- X** Routing, when required, is the next step.
- X** We route the address if we have a ROUTE form
- X** or if we have a UUCP form and we are told to
- X** route ALWAYS or REROUTE (i.e., routing != JUSTDOMAIN)
- X*/
- X if((rsvp( form ) == ROUTE)
- X ||((rsvp( form ) == UUCP) && (routing != JUSTDOMAIN ))) {
- X
- X int look_smart = 0;
- X
- X if((routing == REROUTE) && (i == 0)) {
- X look_smart = 1; /* last chance */
- X }
- X
- X /* route() puts the new route in 'temp' */
- X if(route(domain,user,look_smart,temp,cost) != EX_OK) {
- X continue; /* If routing fails, try
- X /* next larger substring.
- X /* */
- X }
- X/*
- X** After routing, reparse the new route into domain and user.
- X*/
- X form = parse( temp, domain, user );
- X
- XDEBUG("resolve: parse route '%s' = '%s' @ '%s' (%s)\n",
- X temp,user,domain,sform(form));
- X
- X } else if((getcost) && (rsvp(form) == UUCP)) {
- X /* get the cost of the route
- X ** even if we're not going route the mail.
- X ** this allows smart decisions about using
- X ** the -r flag to uux when we're not routing.
- X */
- X char junk[SMLBUF];
- X if(route(domain,user,0,junk,cost) != EX_OK) {
- X continue; /* If routing fails, try
- X /* next larger substring.
- X /* */
- X }
- X }
- X break; /* route is resolved */
- X }
- X/*
- X** For LOCAL mail in non-local format, we rewrite the full address into
- X** <user> and leave <domain> blank.
- X*/
- X if ((rsvp( form ) == LOCAL) && (form != LOCAL )) {
- X build( domain, user, form, temp );
- X (void) strcpy( user, temp );
- X (void) strcpy( domain, "" );
- X form = LOCAL;
- X }
- X/*
- X** If we were supposed to route an address but failed (form == ERROR),
- X** or after routing we are left with an address that still needs to
- X** be routed (rsvp( form ) == ROUTE), complain.
- X*/
- X if ((form == ERROR) || (rsvp( form ) == ROUTE )) {
- X exitstat = EX_NOHOST;
- X ADVISE("resolve failed '%s' = '%s' @ '%s' (%s)\n",
- X address, user, domain, sform(form));
- X form = ERROR;
- X } else {
- X ADVISE("resolve '%s' = '%s' @ '%s' (%s)\n",
- X address, user, domain, sform(form));
- X }
- X return ( form );
- X}
- X
- X/*
- X**
- X** route(): route domain, plug in user.
- X**
- X** Less complicated than it looks. Each section is documented.
- X**
- X*/
- X
- Xroute(domain, user, look_smart, result, cost)
- Xchar *domain; /* domain or host name */
- Xchar *user; /* user name */
- Xint look_smart; /* do we try to route through a smarter host? */
- Xchar *result; /* output route */
- Xint *cost; /* cost of output route */
- X{
- X int uucpdom = 0;
- X int domains, step; /* to split domain */
- X char *domainv[MAXDOMS]; /* " " " */
- X char temp[SMLBUF], path[SMLBUF];
- X
- X/*
- X** Fully qualify the domain, and then strip the last (top level domain)
- X** component off, so that we look it up separately.
- X*/
- X temp[0] = '.';
- X (void) strcpy(temp+1, domain );
- X
- X domains = ssplit( temp+1, '.', domainv );
- X
- X/*
- X** check target domain for the local host name and host domain.
- X** if it matches, then skip the lookup in the database.
- X** this prevents mail loops for cases where SMARTHOST is defined
- X** in the routing table, but the local host is not. It also is
- X** a little faster when the local host is the target domain.
- X*/
- X if((strcmpic(domain, hostname) == 0)
- X || (strcmpic(domain, hostdomain) == 0)) {
- X step = 0;
- X *cost = 0;
- X (void) strcpy(path, "%s");
- XDEBUG("route: '%s' is local\n", domain);
- X goto route_complete;
- X }
- X
- X /* If the domain ends in .UUCP, trim that off. */
- X if((domains > 0) && isuucp(domainv[domains-1])) {
- X domains--;
- X domainv[domains][-1] = '\0';
- X uucpdom = 1;
- X }
- X/*
- X** Try to get the path for successive components of the domain.
- X** Example for osgd.cb.att.uucp:
- X** osgd.cb.att
- X** cb.att
- X** att
- X** uucp ( remember stripping top level? )
- X** SMARTHOST
- X** Returns with error if we find no path.
- X*/
- X for(step = 0; (step < domains); step++) {
- X if((getpath(domainv[step]-1, path, cost) == EX_OK) /* w/ dot */
- X || (getpath(domainv[step] , path, cost) == EX_OK))/* no dot */
- X break;
- X }
- X
- X if(step == domains) {
- X /*
- X ** we've looked at each component of the domain without success
- X */
- X /*
- X ** If domain is a UUCP address, look for a UUCP gateway.
- X */
- X if((uucpdom == 0) || (getpath(".UUCP", path, cost) != EX_OK)) {
- X /*
- X ** The domain not is a UUCP address, or we can't
- X ** find a UUCP gateway. If this is our last chance,
- X ** look for a smarter host to deliver the mail.
- X */
- X if((look_smart == 0)
- X || (getpath(SMARTHOST, path, cost) != EX_OK)) {
- X /*
- X ** All our efforts have been in vain.
- X ** Tell them the bad news.
- X */
- X DEBUG("route '%s' failed\n", domain);
- X return( EX_NOHOST );
- X }
- X }
- X }
- X
- Xroute_complete:
- X
- XDEBUG("route: '%s' (%s) = '%s' (%d)\n", domain, domainv[step]?domainv[step]:"NULL", path, *cost);
- X
- X/*
- X** If we matched on the entire domain name, this address is fully resolved,
- X** and we plug <user> into it. If we matched on only part of the domain
- X** name, we plug <domain>!<user> in.
- X*/
- X build(domain, user, (step == 0) ? LOCAL : UUCP, temp);
- X (void) sprintf(result, path, temp);
- X return( EX_OK );
- X}
- END_OF_FILE
- if test 7634 -ne `wc -c <'mailer/resolve.c'`; then
- echo shar: \"'mailer/resolve.c'\" unpacked with wrong size!
- fi
- # end of 'mailer/resolve.c'
- fi
- if test -f 'mailer/template.cf' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'mailer/template.cf'\"
- else
- echo shar: Extracting \"'mailer/template.cf'\" \(8435 characters\)
- sed "s/^X//" >'mailer/template.cf' <<'END_OF_FILE'
- X############################################################
- X#
- X# SENDMAIL CONFIGURATION FILE
- X#
- X# supports internet style addressing
- X# over UUCP and ethernet links.
- X#
- X# A product of the UUCP Project.
- X#
- X# @(#)template.cf 2.5 (smail) 9/15/87
- X#
- X############################################################
- X
- X
- X############################################################
- X#
- X# Local configuration options - HINTS
- X#
- X# Host name and domain name macros.
- X#
- X# Dw sets $w
- X# DD sets $D
- X# CD sets $=D
- X#
- X# $D and $=D list all domains in which this host sits.
- X# $D goes into outbound addresses, i.e. "user@$w.$D".
- X# $A is another domain for which this host is 'authoritative'
- X# it will will be turned into $D.
- X
- XCF_HOST
- XCF_DOMAIN
- XCF_AUTHORITY
- XCF_DCLASS
- X
- X# Preemptive ether connections. We prefer these connections
- X# over both designated transport mechanisms and the general depository.
- X# You can add more classes (here and in S0).
- X
- X# /etc/hosts.smtp might be a link to /etc/hosts
- X#
- XCF_SMTP
- X
- X# Mock top-level domain names. These name designate a transport mechanism
- X# and appear internally only, set in S3, used in S0, and removed in S4 and
- X# (possibly) the ruleset for the particular mailer.
- X
- XCTETHER UUX
- X
- X# Relay host. Used at the end of S0 as the general depository for
- X# addresses which didn't resolve locally.
- X
- XDRrelay
- X
- X#
- X# End Local configuration options
- X#
- X############################################################
- X
- X############################################################
- X#
- X# General configuration information
- X#
- X############################################################
- X
- XDVsmail2.5/CF_DATE
- X
- X##########################
- X# Special macros #
- X##########################
- X
- X# official hostname
- XDj$w.$D
- X# my name
- XDnMAILER-DAEMON
- X# UNIX header format
- XDlFrom $g $d
- X# delimiter (operator) characters
- XDo.:%@!^=/[]
- X# format of a total name
- XDq$g$?x ($x)$.
- X# SMTP login message
- XDe$j Sendmail $v/$V ready at $b
- X
- X
- X###################
- X# Options #
- X###################
- X
- X# location of alias file
- XOA/usr/lib/aliases
- X# default delivery mode (deliver in background)
- XOdbackground
- X# (don't) connect to "expensive" mailers
- X#Oc
- X# temporary file mode
- XOF0644
- X# default GID
- XOg1
- X# location of help file
- XOH/usr/lib/sendmail.hf
- X# log level
- XOL9
- X# default messages to old style
- XOo
- X# queue directory
- XOQ/usr/spool/mqueue
- X# read timeout -- violates protocols
- XOr2h
- X# status file
- XOS/usr/lib/sendmail.st
- X# queue up everything before starting transmission
- XOs
- X# default timeout interval
- XOT3d
- X# time zone names (V6 only)
- XOtPST,PDT
- X# default UID
- XOu1
- X# wizard's password
- XOWvoidpasswords
- X
- X###############################
- X# Message precedences #
- X###############################
- X
- XPfirst-class=0
- XPspecial-delivery=100
- XPjunk=-100
- X
- X#########################
- X# Trusted users #
- X#########################
- X
- XTroot
- XTdaemon
- XTuucp
- XTnetwork
- X
- X#############################
- X# Format of headers #
- X#############################
- X
- X#H?P?Return-Path: <$g>
- XHReceived: $?sfrom $s
- X $.by $j ($v/$V)
- X id $i; $b
- XH?D?Resent-Date: $a
- XH?D?Date: $a
- XH?F?Resent-From: $q
- XH?F?From: $q
- XH?x?Full-Name: $x
- XHSubject:
- X# HPosted-Date: $a
- X# H?l?Received-Date: $b
- XH?M?Resent-Message-Id: <$t.$i@$j>
- XH?M?Message-Id: <$t.$i@$j>
- X
- X############################################################
- X#
- X# REWRITING RULES
- X#
- X
- X
- X###########################
- X# #
- X# Name Canonicalization #
- X# #
- X###########################
- XS3
- X
- X# basic textual canonicalization
- XR<> $@@ turn into magic token
- XR$*<$+>$* $2 basic RFC821/822 parsing
- XR$+ at $+ $1@$2 "at" -> "@" for RFC 822
- XR$*<$*>$* $1$2$3 in case recursive
- X
- X# handle route-addr <@a,@b,@c:user@d>
- XR@$+,$+ @$1:$2 change all "," to ":"
- XR@$+:$+ $@<@$1>:$2 handle <route-addr>
- XR$+:$*;@$+ $@$1:$2;@$3 list syntax
- X
- X# Rewrite address into a domain-based address. Any special mock domain names
- X# (like UUX) should be defined on the CT line and removed (if necessary)
- X# in S4. You can use them in S0 for designated transport mechanisms.
- X
- X# Delimiters with precedence over @. Add yours here.
- X
- X# The @ delimiter. Leave this alone.
- XR$+@$+ $:$1<@$2> focus on domain
- XR$+<$+@$+> $1$2<@$3> move gaze right
- XR$+<@$+> $@$1<@$2> already canonical
- X
- X# Delimiters with precedence below @. Add yours here.
- XR$+^$+ $1!$2 convert ^ to !
- XR$-!$+ $@$2<@$1.UUX> resolve uucp names
- XR$+.!$+ $@$2<@$1> domain.!host
- XR$+!$+ $@$2<@$1> domain!host
- X
- X# % is a low precedence @.
- XR$*%$* $@$>3$1@$2 %->@ and retry
- X
- X############################################################
- X#
- X# RULESET ZERO PREAMBLE
- X#
- X############################################################
- X
- XS0
- X
- X# first make canonical
- XR$*<$*>$* $1$2$3 defocus
- XR$+ $:$>3$1 make canonical
- X
- X# handle special cases.....
- XR@ $#local$:MAILER-DAEMON handle <> form
- XR$*<@[$+]>$* $#ether$@[$2]$:$1@[$2]$3 numeric internet spec
- X
- X# strip local stuff
- XR$*<@$-.$w.$D>$* $1<@$2>$3 thishost.mydom
- XCF_GATEWAYR$*<@$-.$D>$* $1<@$2>$3 mydom
- XR$*<@$-.$w.$=D>$* $1<@$2>$4 thishost.anydom
- XR$*<@$-.$w.$A>$* $1<@$2>$3 thishost.anotherdom
- XR$*<@$-.$A>$* $1<@$2>$3 anotherdom
- XR$*<@$-.$w.$=T>$* $1<@$2>$4 thishost.mockdom
- XCF_GATEWAYR$*<$*$w>$* $1<$2>$3 thishost
- XR$*<$*.>$* $1<$2>$3 drop trailing dot
- XR<@>:$+ $@$>0$1 strip null route, retry
- XR$+<@> $@$>0$1 strip null addr, retry
- X
- X
- X###############################################
- X# Machine dependent part of ruleset zero #
- X###############################################
- X
- X# Preemption: for a host on a known link turn the domain spec into a
- X# mock domain indicating the link. One set of these rules for each of
- X# the F classes listed in the local configuration options.
- X
- XR$*<$*$=E.$D>$* $:$1<$2$3.ETHER>$4 etherhost.mydomain
- XR$*<$*$=E.$=D>$* $:$1<$2$3.ETHER>$5 etherhost.anydomain
- XR$*<$*$=E.$A>$* $:$1<$2$3.ETHER>$4 etherhost.anotherdomain
- XR$*<$*$=E.$=T>$* $:$1<$2$3.ETHER>$5 etherhost.mock-domain
- XR$*<$*$=E>$* $:$1<$2$3.ETHER>$4 etherhost
- X
- X# Designated delivery: use the indicated transport mechanism. One of
- X# these rules for each of the mock domains defined in $=T. You can
- X# remove these if you just want general disposition. HINTS.
- X
- X# Designated delivery:
- XR$*<@$=U.UUX>$* $#uux$@$2$:$1$3 known uucphost
- XR$*<@$=E$+.ETHER>$* $#ether$@$2$:$1@$2$4 known etherhost
- XR$*<@$+.ETHER>$* $#ether$@$2$:$1@$2$3 etherhost
- X
- X# throw out mock domain name now
- XR$*<$*.$=T>$* $1<$2>$4
- X
- X# General disposition of remote mail (comment out all but one). You
- X# might add to this list, if you have other "smarter" mailers. HINTS.
- X
- XR$*<@$->:$+ $#uux$@$2$:$1$3 forward to $2
- XR$*<@$*>$* $#uux$@$2$:$1$3 hand to uucp
- X#R$*<@$*>$* $#uux$@$R$:$1@$2$3 hand to uucp relay
- X#R$*<@$*>$* $#ether$@$R$:$1@$2$3 hand to ether relay
- X#R$*<$*>$* $#error$:unknown address $1$2$3 don't hand anywhere
- X
- X# local delivery
- XR$+ $#local$:$1 user
- X
- X############################################################
- X#
- X# Local and Program Mailer specification
- X#
- X############################################################
- X
- XCF_SVMAILMlocal, P=CF_LOCALMAIL, F=lsDFMhumSU, S=10, R=20, A=rmail $u
- XCF_BSMAILMlocal, P=CF_LOCALMAIL, F=rlsDFMmn, S=10, R=20, A=mail -d $u
- XMprog, P=/bin/sh, F=lsDFMe, S=10, R=20, A=sh -c $u
- X
- XS10
- XR@ MAILER-DAEMON errors to mailer-daemon
- XCF_HIDDENHOSTSR$+<@$+.$j>$* $1<@$j>$3 hide anydom.$j under $j
- X
- XS20
- X
- X############################################################
- X#
- X# UUCP Mailer specification
- X#
- X############################################################
- X
- XMuux, P=/bin/smail, F=sDFMhum, S=14, R=24, M=100000,
- X A=smail -vH$j $h!$u
- X
- XS14
- XR$+<@$=E> $1 user@etherhost -> user
- XR$*<@$+>$* $@$1<@$2>$3 already ok
- XCF_HIDDENHOSTSR$+<@$+.$j>$* $1<@$j>$3 hide anydom.$j under $j
- XR$+ $@$1<@$j> add our full address
- X
- XS24
- X
- X############################################################
- X#
- X# SMTP ethernet mailer
- X#
- X############################################################
- X
- XMether, P=[IPC], F=msDFMuCXP, S=11, R=21, A=IPC $h
- X
- XS11
- XR$*<@$+>$* $@$1<@$2>$3 already ok
- XR$+ $@$1<@$w> add our hostname
- X
- XS21
- X
- X#################################
- X# Final Output Post-rewriting #
- X#################################
- X
- X# This rewrites the internal $=T mock domains into their external form.
- X# The default is to replace the mock domain name with $D.
- X# The last two lines are stock.
- X
- XS4
- XR@ $@ handle <> error addr
- XR$+<@$-.UUX> $2!$1 u@host.UUX => host!u
- XR$*<$*$=T>$* $:$1<$2$D>$4 change local info
- XR$*<$+>$* $1$2$3 defocus
- XR@$+:$+:$+ @$1,$2:$3 <route-addr> canonical
- END_OF_FILE
- if test 8435 -ne `wc -c <'mailer/template.cf'`; then
- echo shar: \"'mailer/template.cf'\" unpacked with wrong size!
- fi
- # end of 'mailer/template.cf'
- fi
- echo shar: End of archive 4 \(of 8\).
- cp /dev/null ark4isdone
- MISSING=""
- for I in 1 2 3 4 5 6 7 8 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 8 archives.
- rm -f ark[1-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
-