v08i067: Smail, release 2.3, Part01/05

sources-request at mirror.UUCP sources-request at mirror.UUCP
Wed Feb 18 10:24:15 AEST 1987


Submitted by:  Larry Auton <lda at clyde.att.com>
Mod.sources: Volume 8, Issue 67
Archive-name: smail2/Part01

#! /bin/sh
# This is a shell archive.  Remove anything before this line,
# then unpack it by saving it in a file and typing "sh file".
# If all goes well, you will see the message "End of shell archive."
# Contents:  doc src doc/Contacts doc/Domains doc/Flow.Diagram
#   doc/Install doc/Read.Me doc/Registry doc/Trouble doc/aliases.8
#   doc/lcasep.8 doc/pathproc.8 src/Makefile
# Wrapped by rs at mirror on Mon Feb  9 17:09:55 1987
PATH=/bin:/usr/bin:/usr/ucb; export PATH
if test ! -d 'doc' ; then
    echo shar: creating directory "'doc'"
    mkdir 'doc'
fi
if test ! -d 'src' ; then
    echo shar: creating directory "'src'"
    mkdir 'src'
fi
echo shar: extracting "'doc/Contacts'" '(713 characters)'
if test -f 'doc/Contacts' ; then 
  echo shar: will not over-write existing file "'doc/Contacts'"
else
sed 's/^X//' >doc/Contacts <<'@//E*O*F doc/Contacts//'
X		Contact Information
X
XWe strongly encourage electronic mail for queries, updates, and
Xapplications.  This cuts down on our costs, and we can pass those
Xsavings along to you.  We currently do not have a telephone number
Xfor queries, although we hope to have one in the near future.  If
Xyou are unable to send and receive electronic mail, you will have
Xto wait until we are prepared for telephone calls or postal mail.
X
XFor queries:	uucp-query at Stargate.COM		cbosgd!stargate!uucp-query
X
XFor updates:	uucpmap at Stargate.COM		cbosgd!stargate!uucpmap
X
XFor problems:	uucp-problem at Stargate.COM	cbosgd!stargate!uucp-problem
X
XTo register:	registry at Stargate.COM		cbosgd!stargate!registry
X#
X#@(#)Contacts	2.1 smail 12/14/86
X#
@//E*O*F doc/Contacts//
if test 713 -ne "`wc -c <'doc/Contacts'`"; then
    echo shar: error transmitting "'doc/Contacts'" '(should have been 713 characters)'
fi
fi # end of overwriting check
echo shar: extracting "'doc/Domains'" '(8824 characters)'
if test -f 'doc/Domains' ; then 
  echo shar: will not over-write existing file "'doc/Domains'"
else
sed 's/^X//' >doc/Domains <<'@//E*O*F doc/Domains//'
X 	      WHAT YOU NEED TO KNOW ABOUT PATHALIAS
X	   AND WHAT PATHALIAS NEEDS TO KNOW ABOUT YOU
X			       or
X		   HOW PATHALIAS MAKES DOMAINS
X
X		        Christopher Seiwald
X
XThis note describes the host connectivity data and domain data
Xneeded to effect UUCP domain-style address routing.  This
Xdescribes mostly the domain data, but also discusses how to
Xdistribute connectivity data.  Look elsewhere for a discussion of
Xdomains.
X
XBriefly, the connectivity data (what's in mod.map) connects
Xall hosts in the UUCP network into one big directed graph, and
Xthe domain data superimposes a domain tree onto that graph.
XPathalias converts these two sets of data into a routing database
Xwhich smail/rmail, a UUCP mail routing program, uses.
X
X1.  Domains and Gateways for UUCP
X
XFor domains in the UUCP zone, the top of a subdomain is all
Xgateway hosts for that domain; the top of the UUCP zone will
Xprobably be nearly a hundred hosts.  As a transition aid, we
Xalso consider an individual host at the bottom of the domain tree a
Xsubdomain "host.UUCP", with one gateway and no further subdomains.  
X(We expect to phase this out eventually.)
X
XA gateway host for a domain must do four things:
X	I)	Pass mail bound for that domain to the
X		appropriate host.
X	II)	Pass mail bound for outside that domain to a
X		gateway in the parent domain.
X	III)	Pass mail bound for a subdomain to a gateway of
X		that subdomain.
X	IV)	Recognise the domain!user address syntax.
X
Xsmail/rmail already provides (IV).  With the data described here,
Xpushed through pathalias, smail/rmail can then provide (I)-(III).
X
X2.  The Zone Registry
X
XFor any sizeable zone, one gateway host supports the zone registry.
XFor other zones, such as BITNET, CSNET, DDN, etc., registries are
Xsupported, using conventions appropriate to those zones.  Contact
Xelectronic mail addresses are supported for queries, and updates to
Xconfiguration information may also be handled via mail.  In the UUCP
Xzone, the id's "uucpmap at cbosgd.ATT.COM" and "domains at cbosgd.ATT.COM"
Xserve to collect the connectivity and domain data, respectively, for
Xthat zone.
X
XThe registry for a zone speaks for that zone, communicating
Xchiefly with its peers, the registry of the parent domain, and
Xthe registries of the subdomains.
X
X3.  Functions of Domain Data
X
XEach gateway for a domain must map the domain-style names into
Xthe UUCP host names for all hosts of the domain.  This host name
Xmapping provides (I) above.
X
XEach gateway for a domain knows a) at least one gateway for each
Ximmediate subdomain, and b) at least one gateway host of the
Xparent domain.  This provides (II) and (III) above.
X
XFor consistency across the gateways of a domain, each gateway for
Xthe domain should know a) ALL gateways for each immediate
Xsubdomain; and b) ALL gateways for the parent domain.  Pathalias
Xwill pick the closest. In this way, one single database can
Xdescribe the domain structure for all gateways on a domain,
Xwithout variations for each gateway. 
X
XIn order to aid routing and avoid overloading the parent gateway,
Xgateways should also know most gateways for peer level domains.
XThis information is also provided by the map and used by pathalias.
XWhen a new peer domain is created, traffic can be routed through the
Xparent (which must be updated immediately) until information about
Xthe peer can be propagated.
X
XAdditionally, a gateway could know about domains more than one
Xlevel above or below it so that mail doesn't stop for address
Xresolution at every gateway along its path.
X
X4.  Format of Domain Data
X
X4.1  Host Name List
X
XThe host name list aliases the domain style address of a host to
Xthe UUCP host name.  The pathalias input format is:
X
X		uucp-name .domain-name[, ...]
X
XThe .UUCP suffix is implicit in the uucp-name (smail/rmail does
Xthis), and is not needed.
XUpper/lower case doesn't matter in a dotted domain name.
XExamples:
X	
X		ihnp4 = .ATT.COM
X		ucbvax = .Berkeley.EDU
X		cbosgd = .osgd.cb.att.com, .cbosgd.att.com
X
XMight produce from pathalias:
X
X		ihnp4			mtxinu!ihnp4!%s
X		.ihnp4.ATT.COM		mtxinu!ihnp4!%s
X		ucbvax			ucbvax!%s
X		.Berkeley.EDU		ucbvax!%s
X		cbosgd			cbosgd!%s
X		.osgd.cb.att.com	cbosgd!%s
X		.cbosgd.att.com		cbosgd!%s
X
XA single host may have more than one domain style address; in
Xfact, a host may be in several domains at once.  However, each
Xhost must have a single primary location in the domain tree,
Xand other addresses should be viewed as transition aids.  For
Xexample, cbosgd might be known as cbosgd, cbosgd.UUCP,
Xcbosgd.ATT.UUCP, cbosgd.btl.csnet, and cbosgd.ATT.COM, but
Xthe primary name is the one in the organizational domain (COM)
Xwhich applies to all networks, and the others are temporary
Xnames for upward compatibility only.
X
X4.2  Domain Gateway List
X
XThe domain gateway list aliases the domain style address of a
Xdomain to the UUCP host name of the closest gateway of that
Xdomain.  This involves a trick in pathalias, and employs a
Xextra network name domain-gw.  The pathalias input format is:
X
X		domain-gw .domain-name
X
XAgain, the .UUCP suffix is implicit in the uucp-name, and is
Xnot needed.  
XExamples:
X
X		decwrl .DEC.COM
X		decuac .DEC.COM
X
X		cbosgd .ATT.COM
X		clyde .ATT.COM
X
XMight generate from pathalias:
X
X		.DEC.COM	seismo!decuac!%s
X		.ATT.COM	cbosgd!%s
X
XNote that pathalias chooses the closest host from inside the {}'s.
XThe (DEAD)'s prevent pathalias from following along the mock network
Xcalled "domain-gw".
X
X5.  Distribution of Domain Data
X
XA zone registry maintains a Host Name List (in the format of 4.1
Xabove) of all hosts within its domain and a Domain Gateway List
X(in the format of 4.2 above) of all gateways of the domain.
X
XUp: A registry collects the Domain Gateway List from the registry
Xof each of its subdomains, and transmits to the registry of its
Xparent domain its own Domain Gateway List and, if it chooses, the
XDomain Gateway Lists of some or all of its subdomains.  Whether
Xit includes lists from its subdomains depends on how important it
Xconsiders them to the parent domain.
X
XDown: Similarly, a registry collects the Domain Gateway List from
Xthe registry of its parent domain, and transmits to the registry
Xof each of its subdomains its Domain Gateway List and the Domain
XGateway List of its parent domain.  Note that the Domain Gateway
XList of the parent domain may include lists from the parent's
Xother subdomains.
X
XA registry may decide not to use the parent domain's Domain
XGateway List or not to transmit it to its subdomains' registries.
X(This should be done only with the consent of the subdomains.) In
Xthis case, the registry must introduce a domain gateway alias for
Xall top level domains, to ensure that all the mail gets delivered.
X
XAcross: a registry transmits to each of the gateways of its
Xdomain its Host Name List, its Domain Gateway List, and collected
XDomain Gateway Lists.  The registry also transmits to each normal
Xhost (one gateway, no subdomains) of its domain its Domain
XGateway List.
X
XTogether, "up," "down," and "across" insure that each gateway has
Xthe Host Name List for its domain, and the Domain Gateway List of
Xits own domain and at least its parent domain and subdomains.
X"Up" and "across" will probably take place on demand by mail.
X"Down" will probably be broadcast via netnews on a regular
Xschedule.  In particular, the second level information for the UUCP
Xzone (one entry per organization) and the complete top level domain
Xinformation make up the postings to mod.map.
X
X6.  Distribution of Connectivity Data
X
XThe distribution of connectivity data will probably follow the
Xpath of domain data: registries passing connectivity data up,
Xdown, and across the domain tree, with the exception that the
Xconnectivity within a third (or lower) level domain will be
Xdiscouraged from leaving the domain, so the data the UUCP zone
Xregistry distributes will include only the first and second
Xlevel gateways.  Local information about internal subdomains and
Xmachines of organizations should not be included in globally
Xpublished information, but rather distributed locally as needed.
X
X7.  Various Notes
X
XThe following are examples of data that should be joined together
Xas input to pathalias.
X
X	Parent Domain Gateway List
X	Parent Connectivity Data
X	This Level Domain Gateway List
X	This Level Host Name List
X	This Level Connectivity Data
X	Collected Subdomains' Domain Gateway Lists
X	Collected Subdomains' Connectivity Data
X	Private Additions
X	Alias for "this host"
X
XThis note does not describe the inclusion of private additions to
Xthe domain or connectivity data.
X
XBecause domain names intermix with host names (and the .UUCP
Xsuffix is implicit), you can address hosts known at your gateway
Xas "uucp-host.UUCP".  We discourage this, because the address is 
Xthen particular to the sender's location.
X
X
X		/+\
X5/1/85		+\	chris at cbosgd.att.com
X		\+/
X
X[Updated 5/9/86 by Mark Horton.]
X#
X#@(#)Domains	2.1 smail 12/14/86
X#
@//E*O*F doc/Domains//
if test 8824 -ne "`wc -c <'doc/Domains'`"; then
    echo shar: error transmitting "'doc/Domains'" '(should have been 8824 characters)'
fi
fi # end of overwriting check
echo shar: extracting "'doc/Flow.Diagram'" '(2664 characters)'
if test -f 'doc/Flow.Diagram' ; then 
  echo shar: will not over-write existing file "'doc/Flow.Diagram'"
else
sed 's/^X//' >doc/Flow.Diagram <<'@//E*O*F doc/Flow.Diagram//'
Xvanilla 4.2BSD mail flow
X
XLOCAL   /bin/mail ----                           -- /bin/mail -- LOCAL
X                      \                        / 
X                       ----------- sendmail --
X                      /          /             \
XLOCAL   Mail ---------          /                -- uux -------- REMOTE
X                               /
XREMOTE  /bin/rmail ------------
X
X==========================
X
Xsmail 4.2BSD mail flow
X
XLOCAL   /bin/mail                          -- /bin/mail -- LOCAL
X                 \                        /
X                  ------------ sendmail --
X                 /          /             \
XLOCAL   Mail ---          /                -- /bin/smail -
X                         /  (non-bang)                    \
XREMOTE  /bin/rmail ------                                  \
X                          \  (bang)                          \
X		           ------------------------------------- uux REMOTE
X
X==========================
X
Xvanilla SVR2 mail flow
X
X		mail	is "/usr/src/cmd/mail.c"
X		rmail	is linked to mail
X
XLOCAL	mail  ------------\              /--------------------- LOCAL
X		           \            /
XLOCAL	mailx ----> mail ---+----------+
X		           /            \
XREMOTE	rmail ------------/              \-- uux -------------- REMOTE
X
X==========================
X
XModified SVR2 mail flow using SENDMAIL
X
XDefinitions of changed/renamed programs
X
X		mail	is "svbinmail.c"
X		lmail	is "/usr/src/cmd/mail.c"
X		rmail	is linked to smail
X
XLOCAL	mail  ------------\                /-- lmail ---------- LOCAL
X		           \              /
X                            +--sendmail--+
X		           /              \
XLOCAL	mailx --- mail ---/                \-- smail -- uux --- REMOTE
X
X
X                                               /-- lmail ------ LOCAL
X                                              /
X                                /--sendmail--+
X                               /              \
X                              /                \- smail - uux - REMOTE
X                             / (domain | LOCAL)
XREMOTE  rmail --------------+
X                             \ (bang)
X                              \
X                               \------------------ uux -------- REMOTE
X
X==========================
X
XModified SVR2 mail flow without SENDMAIL
X
XLOCAL	mail  ------------\                /-- lmail ---------- LOCAL
X		           \              /
X                            +-- rmail ---+
X		           /    /         \
XLOCAL	mailx --- mail ---/    /           \-- uux ----------- REMOTE
X                              /
X                             /
XREMOTE	--------------------+
X
X#
X# @(#)Flow.Diagram	2.1 smail 12/14/86
X#
@//E*O*F doc/Flow.Diagram//
if test 2664 -ne "`wc -c <'doc/Flow.Diagram'`"; then
    echo shar: error transmitting "'doc/Flow.Diagram'" '(should have been 2664 characters)'
fi
fi # end of overwriting check
echo shar: extracting "'doc/Install'" '(2180 characters)'
if test -f 'doc/Install' ; then 
  echo shar: will not over-write existing file "'doc/Install'"
else
sed 's/^X//' >doc/Install <<'@//E*O*F doc/Install//'
XThere are three system types on which smail can be installed.
X
X	(1) Berkeley with sendmail
X	(2) System V with sendmail
X	(3) System V without sendmail
X
X	Note: if you have a System III or V7 derived system, you
X	can probably treat it like (3).  We have not tested smail
X	on such a system.
X
XThe installation will vary slightly for each system type.
X
XFor all systems you first have to create a 'paths' database.
XSee paths(8) for details on the file's format.  Then
Xcopy it to /usr/lib/uucp/paths.
X
XNext, edit "defs.h" to configure smail to suit your situation.
X
XHere are step by step installation instructions for each system type.
X
X(1) For a berkeley system with sendmail, the steps are:
X
X	$ make
X
X	$ cp smail /bin/smail
X
X	$ sh make.cf.sh
X		<answer the questions it asks>
X
X	$ mv /usr/lib/sendmail.cf /usr/lib/OLDsendmail.cf
X
X	$ cp sendmail.cf /usr/lib/sendmail.cf
X
X	$ /usr/lib/sendmail -bz
X
X	$ mv /bin/rmail /bin/OLDrmail
X
X	$ ln /bin/smail /bin/rmail
X
X(2) For a System V system with sendmail, the steps are:
X
X	$ make
X
X	$ cp smail /bin/smail
X
X	$ ln /bin/mail /bin/lmail
X
X	$ sh make.cf.sh
X		<answer the questions it asks>
X
X	$ mv /usr/lib/sendmail.cf /usr/lib/OLDsendmail.cf
X
X	$ cp sendmail.cf /usr/lib/sendmail.cf
X
X	$ /usr/lib/sendmail -bz
X
X	$ rm /bin/mail # (Remember, you still have it in /bin/lmail.)
X
X	$ mv svbinmail /bin/mail
X
X	$ mv /bin/rmail /bin/OLDrmail
X
X	$ ln /bin/smail /bin/rmail
X
X	Note: some implementations of sendmail don't work when the 'U'
X	flag is set in the definition of the local mailer (a line that
X	begins with "Mlocal" in the generated sendmail.cf).  If you try
X	to send mail from a local user to a local user, a message comes
X	out that says "No '!' in UUCP! (user)" - and the mail fails.
X	If this happens take the 'U' flag out of the sendmail.cf.
X
X	[ the >'s are secondary prompts from the shell,
X	  and ^M is 'carat' 'M', not 'control-M' ]
X
X	$ ed sendmail.cf <<!
X	> /^Mlocal/s/SU/S/
X	> w
X	> q
X	> !
X
X(3) For a System V system without sendmail, the steps are:
X
X	$ make
X
X	$ cp smail /bin/smail
X
X	$ mv /bin/mail /bin/lmail
X
X	$ mv svbinmail /bin/mail
X
X	$ mv /bin/rmail /bin/OLDrmail
X
X	$ ln /bin/smail /bin/rmail
X
XYou're done.
X
X#
X# @(#)Install	2.1 smail 12/14/86
X#
@//E*O*F doc/Install//
if test 2180 -ne "`wc -c <'doc/Install'`"; then
    echo shar: error transmitting "'doc/Install'" '(should have been 2180 characters)'
fi
fi # end of overwriting check
echo shar: extracting "'doc/Read.Me'" '(7522 characters)'
if test -f 'doc/Read.Me' ; then 
  echo shar: will not over-write existing file "'doc/Read.Me'"
else
sed 's/^X//' >doc/Read.Me <<'@//E*O*F doc/Read.Me//'
X		READ ME - Updated 2/6/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 at 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 (contact
X  sources-request at mirror.TMC.COM or mirror!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 at 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
XInstallation Instructions:
X
X  Save your /bin/rmail and /usr/lib/sendmail.cf somewhere safe, in case
X  of disaster.  If you already have a /bin/smail or /usr/lib/uucp/paths,
X  you might want to save them too.
X
X  If you have the logging turned on, you should arrange that something
X  out of crontab erases the logs regularly, or your disk may fill up.
X  One line per message is created in /usr/lib/uucp/mail.log.  If you
X  log full messages, they get put in /tmp/mail.log.  (Note that full
X  message logging is considered anti-social if you use it to snoop;
X  it is recommended that this feature only be used if you are running
X  software that you don't completely trust, so you can reproduce any
X  problem that might turn up.)
X
X  Now see the file Install for step by step instructions.
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 at 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.1 smail 12/14/86
X#
@//E*O*F doc/Read.Me//
if test 7522 -ne "`wc -c <'doc/Read.Me'`"; then
    echo shar: error transmitting "'doc/Read.Me'" '(should have been 7522 characters)'
fi
fi # end of overwriting check
echo shar: extracting "'doc/Registry'" '(11417 characters)'
if test -f 'doc/Registry' ; then 
  echo shar: will not over-write existing file "'doc/Registry'"
else
sed 's/^X//' >doc/Registry <<'@//E*O*F doc/Registry//'
X			UUCP Zone Registry
X			     2/6/87
X
XTo use smail, or other software supporting domain addresses, you need
Xto have a domain name registered in the domain tree.  This name must be
Xunique in the world, and must be registered with the appropriate
Xregistry.  Your domain must also have a forwarder from DDN (also
Xcalled ARPANET and MILNET).
X
XIf your primary network affiliation is with CSNET, BITNET, or DDN,
Xyour organization may already have a domain name.  If you are not
Xon one of these networks, you can join the UUCP Zone to get your
Xorganization name registered.
X
X		History and Structure
X
XThe exact structure of the domain tree is evolving.  In 1984, the top
Xlevels were network names (ARPA, CSNET, BITNET, UUCP, and so on) and
Xthe second levels were hosts.  The problem with this structure is that
Xmachines connected to several networks have several names, and it's
Xdifficult for users to predict the address of someone without knowing
Xtheir network connections.
X
XIn 1986, the domain tree in the USA has three major top level domains:
XCOM for companies, EDU for educational institutions, and GOV for
Xgovernment entities.  Three other top level names exist: MIL, NET, ORG,
Xbut are somewhat specialized.  For the most part, countries other than
Xthe USA are using the ISO 3166 2 letter abbreviation for their country
Xas a top level.
X
XExamples include US for USA, AU for Australia, JP for Japan, NL for
XNetherlands.  Abbreviations that are not ISO 3166 include CAN for
XCanada and and UK for the United Kingdom.
X
XOne way of looking at the domain tree is that the top level is always
Xthe country, where COM, EDU, and GOV are three pretend "countries" all
Xlocated in the USA.  (This isn't quite strictly true, since some Canadian
Xorganizations are registering under EDU or COM, intending to also register
Xunder CAN later.)
X
XThe second level is generally the name of the organization, using the
Xshortest possible abbreviation that is clear and unique, thus ATT, DEC,
XIBM, HP, etc.  The choice of exact name is up to the organization, and
Xlonger names, such as Berkeley.EDU or Tektronix.COM are perfectly
Xacceptable.  Just remember that people must type the name, as well as
Xsee it displayed.
X
XNot all countries use the second level for the organization.  In
Xparticular, Australia and Britain have set up second level domains
XAC.UK and OZ.AU for their academic communities, and put the
Xorganization at the third level.
X
XThe third and subsequent levels, if used, should be organizational
Xunits within the organization.  Try to keep the number of levels to a
Xminimum, since people have to type the names.  More than four total
Xlevels (country, org, ou1, and ou2) should rarely be needed.  The
Xactual organizational units to be used are up to you, for example, they
Xmight be departments, or they might be machine names.  For example,
XStargate has names like Base.Stargate.COM, where COM means a company,
XStargate is the organization (company) name, and Base is the name of
Xthe machine within Stargate.  A larger example:  AT&T is using names
Xlike cbpavo.MIS.OH.ATT.COM, where COM means AT&T is a company, ATT is
Xthe organization, OH means Ohio, MIS stands for Medical Information
XSystems, and cbpavo is a computer in the MIS project.
X
XA "zone" is a registry of domains kept by a particular organization.  A
Xzone registry is "authoritative", that is, the master copy of the
Xregistry is kept by the zone organization, and this copy is, by
Xdefinition, always up-to-date.  Copies of this registry may be
Xdistributed to other places and kept in caches, but these caches are
Xnot authoritative because they may be out of date.  An authoritative
Xanswer is required for certain decisions, such as "this mail cannot be
Xdelivered because there is no such domain", or "the name you have
Xchosen is available and is now assigned uniquely to you."
X
XIn the USA, there are currently four zones: DDN (formerly called the
XARPANET), CSNET, BITNET, and UUCP.  These zones all share the top level
Xdomains COM, EDU, GOV, etc.  The top level domains are administered by
Xthe DDN (Defense Data Network) NIC (Network Information Center) at SRI
X(SRI, Inc, formerly Stanford Research Institute, in Menlo Park, CA.)
XThe CSNET, BITNET, and UUCP registries serve as a go-between to avoid
Xswamping the NIC with individual registrations.  It is possible for an
Xorganization to be members of more than one of these networks, in which
Xcase they register with each network, using the same name on all
Xnetworks.
X
XThe UUCP Project keeps a registry of members of the UUCP Zone.  This
Xregistry is different than the UUCP map, although the registry is posted
Xwith the UUCP map.  The UUCP Zone registry consists only of organizations
Xwhich are members of the UUCP Zone.  To become a member, it is
Xnecessary to explicitly join, just as one joins CSNET or BITNET.  Just
Xbeing reachable via a bang path does not imply membership, nor does
Xappearance in the UUCP map.
X
XTo join the UUCP Zone, it is necessary to apply for membership.  This
Xinvolves paying low annual membership dues to the project, deciding how to
Xstructure your domain and where to put it into the global domain tree,
Xinstalling software such as smail, finding a forwarder, and doing some
Xelectronic paperwork.  Please contact us at one of these addresses and
Xask for the membership kit; it will contain up-to-date information on
Xjoining, including the fee structure, information about forwarders,
Xinformation about 3rd level domain "parks", and forms to fill out.
X
XSee the "Contact Information" below for instructions to contact us;
Xplease use the "query" address for the initial query.
X
X		Organizational Registry
X
XIf you are registering your organization in the UUCP zone, you are in
Xeffect creating another zone registry for your organization.  Any
Xsubdomains of your organizational domain must be registered with you.
X(You need not keep us informed of all your subdomains, just the gateways.)
X
XFor the time being, unless you are ready to start organizing the machines
Xin your organization, don't worry about this.  You can just set things up
Xto handle your one machine (or more if you like).  Just keep in mind that
Xyour machine is but one machine in your organization, so you should be
Xplanning to have an address like fred at compsci.BigCorp.COM (where "fred" is
Xa login name on machine "compsci" owned by organization "BigCorp") rather
Xthan fred at BigCorp.COM.
X
XFor example, if you are the first host in the University of North Dakota to
Xjoin, you are creating a subdomain UND.EDU (for example.)  Your host might
Xhave a name like undvax.UND.EDU.  When other machines are joined in later,
Xthey will also register under UND.EDU, for example, cs3b20.UND.EDU.
XAll subdomains of UND (this may mean all hosts in the UND domain) are
Xregistered with the UND.EDU registry.  Unless you create a campus organization
Xspecifically to run this registry, this means you are the UND.EDU registry.
XIt is your job to keep track of everybody in the registry, hand out names
Xfor subdomains, make sure there are no duplicates (you have to make sure there
Xaren't two machines called cs3b2.UND.EDU, for example) and know who to
Xcontact if a problem arises.  You have created the UND Zone, which is
Xsimilar to the UUCP Zone, but one level further down in the heirarchy.
X
XAt some point, you may decide that you want more layers of subdomains in
Xyour zone.  For example, if the CS, Math, and Stat departments at UND all
Xwant to manage their own zones, you might use names like vax.CS.UND.EDU,
X3b20.Math.UND.EDU, and so on.  The UND Zone has delegated its naming
Xauthority to the CS Zone, the Math Zone, and so on.  The root delegates
Xto COM, COM delegates to UUCP, UUCP delegates to UND, UND delegates to CS.
X
XNote that the names are given in upper or mixed case, but the exact
Xcase doesn't matter, since the software ignores it.  We recommend that
Xyou choose your capitalization to look nice when printed.
X
XNote also that "vax", "3b20", and the like are terrible host names,
Xbecause sooner or later you'll have more than one vax, or more than
Xone 3b20, and the names will be confusing.  We recommend organizational
Xnames, based on the department or project the machine is used for.
XOf course, in order to keep the names reasonably short and to avoid
Xduplicating names in the heirarchy, some compromise will be needed.
XFor example, csvax.CS.UND.EDU is redundant, but RISC.CS.UND.EDU might
Xbe a good name for the computer used by the RISC project in the CS
Xdepartment.
X
X		Notes:
X
XOrganizations are encouraged to eventually support two kinds of electronic
Xmail addresses:
X
X(1) Login name on machine: a string which is understood on a particular
X    machine, combined with a fully qualified domain name of a machine.
X    The string is often, although not always, a login name.
X    Example:
X	mrh at cbosgd.ATT.COM
X
X(2) Personal name in organization: a string which is the name of a person,
X    understood by all gateway machines.
X    Example:
X	Mark.R.Horton at ATT.COM
X    This allows mail to be sent without knowing the full address
X    of the recipient, only their name and company.  Implementations
X    should be as forgiving as possible of errors in the personal name.
X    For example, if possible, as many of the following as possible
X    should be accepted:
X	mark.r.horton at att.com	(ignore case)
X	m.r.horton at ATT.COM	(accept initials)
X	mark.horton at ATT.COM	(don't require initials)
X	mark.randolph.horton at ATT.COM
X	m.horton at ATT.COM	(if not ambiguous)
X	horton at ATT.COM		(if not ambiguous)
X	mark.horton.sr at ATT.COM	(allow generational qualifier)
X
XHowever, it's perfectly fine to just support just one style.
XSince the login name style (1) is easy to support, you may prefer to
Xjust handle that one, especially at first.  Style (1) is by far the
Xmost commonly used method as this is written.
X
XPlease note that you should support both RFC 976 and the documents
Xit refers to, in particular RFC 822 and RFC 920.  This means, for
Xexample:
X
X(a) The name "postmaster" on all machines visible to the outside
X    should be forwarded to the technical contact.  This can be
X    easily done with an alias in /usr/lib/aliases, if your site
X    runs sendmail or smail 2.0.  Please be sure to also support
X    Postmaster, PostMaster, and POSTMASTER, if you use sendmail.
X
X(b) Your machine should not alter valid RFC 822 headers, such as
X    From:, of mail it generates or forwards.  Many machines running
X    sendmail have a bug which adds uucpname! to the front of such
X    addresses.  Installing smail will fix the bug, because mail
X    passed through the machine is not passed through sendmail.
X    We hope to make a fix to sendmail available, also, at a
X    later date.
X
X		Contact Information
X
XWe strongly encourage electronic mail for queries, updates, and
Xapplications.  This cuts down on our costs, and we can pass those
Xsavings along to you.  We currently do not have a telephone number
Xfor queries, although we hope to have one in the near future.  If
Xyou are unable to send and receive electronic mail, you will have
Xto wait until we are prepared for telephone calls or postal mail.
X
XFor queries:	uucp-query at Stargate.COM		cbosgd!stargate!uucp-query
X
XFor updates:	uucpmap at Stargate.COM		cbosgd!stargate!uucpmap
X
XFor problems:	uucp-problem at Stargate.COM	cbosgd!stargate!uucp-problem
X
XTo register:	registry at Stargate.COM		cbosgd!stargate!registry
X
XUUCP host "stargate" can also be reached via uiucdcs or cbatt.
X#
X#@(#)Registry	2.1 smail 12/14/86
X#
@//E*O*F doc/Registry//
if test 11417 -ne "`wc -c <'doc/Registry'`"; then
    echo shar: error transmitting "'doc/Registry'" '(should have been 11417 characters)'
fi
fi # end of overwriting check
echo shar: extracting "'doc/Trouble'" '(10836 characters)'
if test -f 'doc/Trouble' ; then 
  echo shar: will not over-write existing file "'doc/Trouble'"
else
sed 's/^X//' >doc/Trouble <<'@//E*O*F doc/Trouble//'
X		Common Problems and Recommended Solutions
X
X			Updated 12/14/86
X
X(1) The configuration shell script smail.cf.sh insists that
XI give it another domain that I'm authoritative for, but we
Xdon't have anything to give it.
X
X    This is a common problem for small companies that only
X    have one machine, or for organizations that are originally
X    registering in COM/EDU/GOV and were never known in UUCP.
X
X    The shell script is somewhat simple - it really should let
X    you just hit RETURN here.  But you can go ahead and follow
X    the examples anyway, and it shouldn't hurt anything.
X
X    For example, if you're FOOBAR.COM:
X	Enter This Host's Name:
X	foobar
X	Enter This Host's Official Domain:
X	COM
X	Enter Any Equivalent Domain Classes:
X	foobar
X	Enter Any Domains For Which This Host Is An Authority:
X	foobar.UUCP
X    The first two lines mean that you are user at foobar.COM (the two
X    entries strung together.)  The second one means you also
X    understand what to do with user at foobar, which isn't really
X    legal but may tend to crop up from time to time.  The last
X    means you also understand user at foobar.UUCP, which is important
X    for upward compatibility since that's commonly generated by
X    other systems, by netnews software, and the like.
X
X(2) I can send mail to others OK, but sometimes when they send mail
Xto me or I send mail to others on my machine, it doesn't work.
XIt says "couldn't resolve myhost.mydom!user".
X
X    This is probably a configuration problem.  Look in defs.h to see
X    how you have MYDOM set.  It comes distributed as ".UUCP", but
X    you probably want to change this to the answer to the "Enter This
X    Host's Official Domain" question above.  If you don't run sendmail,
X    this is the only way smail has of knowing your host name.
X    (We really should have smail read this in from a file, for future
X    3rd party binary distributions, but so far we haven't.)
X
X(3) Mail isn't getting through sometimes, and since I just installed
Xthis new software, I suspect it.  Or, I see munged header lines, and
XI don't know who is doing it.
X
X    If you aren't sure where the mail is getting dropped (remember, UUCP
X    is an unreliable transport mechanism, so lots of things could be going
X    wrong) here's a trick we sometimes use to find out what's going on.
X	mv /bin/rmail /bin/realrmail
X
X	cat > /bin/rmail
X	#! /bin/sh
X	umask 0
X	LF=/usr/spool/uucp/rmail.log
X	cat > /tmp/rm$$
X	echo " " >> $LF
X	date >> $LF
X	echo rmail $* >> $LF
X	cat /tmp/rm$$ >> $LF
X	realrmail $* < /tmp/rm$$
X	st=$?
X	rm /tmp/rm$$
X	exit $st
X	^D
X	chmod 755 /bin/rmail
X    
X    This will keep a very verbose log of all incoming traffic into your
X    machine in LF, including the text as it arrived on your machine, and
X    the arguments to rmail.  You can tell whether it was broken when it
X    arrived or if you broke it, and you can reproduce the mail by editing
X    out the message (into, say, /tmp/msg) and running
X	realrmail args < /tmp/msg
X    using the args as they appear in the file.
X
X    Some words of warning.  (a) These files can get big very fast if you
X    process much traffic through your machine, so be sure to clean them
X    out often.  (b) This saves everything, including the message body.
X    It is unethical to browse such logs unless a specific problem has
X    arisen which requires you to check the log.  This is one reason why
X    it's kept in /usr/spool/uucp, if you have a hidden directory on your
X    system that's even better.  (c) This extra set of file copies adds
X    overhead to your machine, so don't run this unless you suspect you
X    have a problem, and then take it out when you trust things again.
X
X    There is a RECORD option in the code which is similar, but this
X    option saves the mail at a later stage, so you lose some information
X    about how it arrived on your machine.
X
X(4) I don't understand how to set up subdomain of my domain.
X
X    There are two ways to do this.  The easiest is just by recognizing
X    the subdomain host by their UUCP name.  If you are the gateway for
X    domain FOO.COM, then any mail through your sendmail to bar.FOO.COM
X    or to bar.myname.FOO.COM (where "myname" is your hosts's name) will
X    be treated as if it were bar.UUCP, so if the name "bar" is in your
X    path file, you're all set.  The disadvantage to this is that if you
X    want to create a subdomain whose name conflicts with a public name,
X    it won't work.  If you want to disable this code, look for "mydom"
X    in the sendmail.cf.
X
X    A perhaps cleaner way is to explicitly put the subdomains into the
X    pathalias database.  Thus, if you have a.FOO.COM, b.FOO.COM, p.b.FOO.COM,
X    x.myname.FOO.COM, and y.myname.FOO.COM, you could include this in
X    your local pathalias input:
X	aname	.a.FOO.COM
X	bname	.b.FOO.COM
X	pname	.p.b.FOO.COM
X	xname	.x.myname.FOO.COM
X	yname	.y.myname.FOO.COM
X    In each case, "aname" is the UUCP name for host "a", etc.  This
X    sort of says "aname and a.FOO.COM are the same host."  This
X    description says that you have subdomains x and y under your host,
X    that there are peer subdomains a and b, and that you know about
X    a subdomain of b called p.  Other subdomains of a and b that
X    are not mentioned here will be routed through aname or bname as
X    gateways.  The only reason to mention p here would be if we have
X    a direct link and want to avoid routing through bname.  If you
X    do this, you have less strict requirements about name uniqueness:
X    aname, bname, pname, xname, and yname must still be unique, and
X    a.FOO.COM, b.FOO.COM, p.b.FOO.COM, x.myname.FOO.COM, and
X    y.myname.FOO.COM must also be unique (ignoring case, so that
X    two different hosts a.foo.com and A.FOO.COM conflict.)  In
X    particular, this means that if you have a local host with a name
X    that isn't unique, say "bilbo", you can safely create a subdomain
X    "bilbo.myname.FOO.COM", but you'll still have a problem if the
X    UUCP name of the host is "bilbo".  You may be able to make this
X    partly work using the pathalias "private" notation, but we advise
X    you to change the UUCP name to something unique.
X
X(5) When another host in my domain sends mail to a third host in my
X    domain, it seems to get routed through the gateway even though
X    my host knows how to route directly.
X
X    For example, suppose you have gateway cbosgd.att.com, and other
X    machines foo.att.com and bar.att.com.  Smail is installed on all
X    three machines.  But when a user on foo sends to user at bar.att.com,
X    the mail is routed via cbosgd.  Sometimes, you may even see this
X    happen for mail on foo to foo.
X
X    There are two solutions.  The first is to make sure that foo knows
X    that bar.att.com is the same as bar (where "bar" is the uucp name.)
X    Include lines in the local pathalias input files like
X	foo	.foo.att.com
X	bar	.bar.att.com
X	cbosgd	.cbosgd.att.com
X    
X    The second solution is to declare foo to be a gateway for your
X    subdomain, e.g.
X	foo	.att.com
X    This will handle all mail to att.com locally on foo instead of
X    routing it through cbosgd.  (It also means you'd better be sure
X    to keep the routing tables on foo as up to date as on cbosgd.)
X
X    The first method is strongly recommended for everyone.  The second
X    is appropriate only for well maintained and supported hosts.
X    Either should handle the problem.
X
X(6) Mail to some domains isn't working.  For example, if I type
X
X	smail -d USER at LLL-MFE.ARPA
X    
X    It says:
X
X	resolve: parse address 'USER at LLL-MFE.ARPA' = 'USER' @ 'LLL-MFE.ARPA' (DOMAIN)
X	getpath: looking for '.LLL-MFE.ARPA'
X	getpath: looking for 'LLL-MFE.ARPA'
X	getpath: looking for '.ARPA'
X	getpath: looking for 'ARPA'
X	route 'LLL-MFE.ARPA' failed
X	resolve failed 'USER at LLL-MFE.ARPA' = 'USER' @ 'LLL-MFE.ARPA' (DOMAIN)
X
X    There is a .arpa line in the pathalias database that looks like:
X
X	.arpa	ihnp4!akgua!gatech!seismo!%s
X
X    Chances are the pathalias database is out of order.  Remember
X    to run it through "sort -f" before storing it.
X
X(7) People on the ARPANET are complaining about us sending them mail
X    from FOO.COM when we aren't on the ARPANET.
X
X    Politely ask them to upgrade their mail system to support MX
X    records, as required by RFC's 973 and 974.
X
X    If you have a COM, EDU, or GOV name confirmed by the UUCP Zone, and
X    you have a working forwarder, you have an officially allocated name
X    which you are entitled to use.
X
X    However, do understand that the old way of handling things on the
X    ARPANET was to open a connection directly to the destination host
X    and send the mail via SMTP.  Many hosts assume that a name ending
X    in ARPA, COM, etc implies being on the ARPANET, and handle mail
X    this way.  (4.3BSD still does this.)  The above RFC's, approved in
X    January 1986, say that mailers are supposed to check for an MX
X    record, which says that mail for one domain should be delivered to
X    a different host to be forwarded.  As of December, 1986, many
X    ARPANET hosts still have mailers that understand MX, and the
X    standard UNIX and TOPS 20 mailers don't support it.  So politely
X    urge them to find whoever supports their mailer and get it upgraded
X    to support MX.  (Berkeley has a version of sendmail that supports
X    it, but it isn't in 4.3BSD.  An MX supporting sendmail can be found
X    on ucbarpa.Berkeley.EDU by logging in as anonymous and retrieving
X    pub/4.3/sendmail.MX.tar.  The file is 1.26MB.  The latest MMDF also
X    supports it.)  In the meantime, tell whoever is trying to send you
X    mail that mail to user at foo.COM (for example) can be sent to
X    foo.COM!user at seismo.CSS.GOV.
X
X(8) My System V machine with sendmail produces the error message
X    "No ! in UUCP!" when I send local mail.
X
X    This is a bug in older versions of sendmail.  If you have the
X    source to sendmail, make the following change to deliver.c to
X    fix the problem:
X
X
X    *** deliver.c.stock
X    --- deliver.c
X    ***************
X    *** 1016,1022
X      		expand("$g", buf, &buf[sizeof buf - 1], CurEnv);
X      		bang = index(buf, '!');
X      		if (bang == NULL)
X    ! 			syserr("No ! in UUCP! (%s)", buf);
X      		else
X      		{
X      			*bang++ = '\0';
X
X    --- 1016,1022 -----
X      		expand("$g", buf, &buf[sizeof buf - 1], CurEnv);
X      		bang = index(buf, '!');
X      		if (bang == NULL)
X    ! 			return;
X      		else
X      		{
X      			*bang++ = '\0';
X
X    If you do not have source to sendmail, a workaround is to edit
X    /usr/lib/sendmail.cf (or template.cf before you run make.cf.sh.)
X    Find the line beginning "Mlocal", and remove the "U" on that line.
X    This has an undesirable side effect, in that the From_ line will
X    be in a format not understood by mailx, but since most mailx replies
X    use the From: line, this should be a minor problem.
X
X#
X# @(#)Trouble	2.1 smail 12/16/86
X# [Edited by MRH 12/14/86]
X#
@//E*O*F doc/Trouble//
if test 10836 -ne "`wc -c <'doc/Trouble'`"; then
    echo shar: error transmitting "'doc/Trouble'" '(should have been 10836 characters)'
fi
fi # end of overwriting check
echo shar: extracting "'doc/aliases.8'" '(4445 characters)'
if test -f 'doc/aliases.8' ; then 
  echo shar: will not over-write existing file "'doc/aliases.8'"
else
sed 's/^X//' >doc/aliases.8 <<'@//E*O*F doc/aliases.8//'
X.TH ALIASES 8
X.tr ~
X.SH NAME
Xaliases \- alias file for smail
X.SH DESCRIPTION
XThis file is used by
X.I smail
Xonly if
X.I SENDMAIL
Xis
X.I not defined.
XIf
X.I SENDMAIL
Xis defined, then
X.I sendmail
Xdoes all of the aliasing for the host.
X.PP
XThis file contains a list of aliases for
Xlocal users or mailing lists.
XThe format of each alias is
X.sp
X.ce
Xalias_name~recip_name1~recip_name2~...
X.sp
XAn attempt has been made to remain compatible with
X.I sendmail
Xalias file format, though the syntax is much more format free than
X.I sendmail.
XAs distributed,
X.I case differences are ignored
Xwhen comparing names to aliases.
XOnly alias names which resolve to the local host are recognized, and are
Xstored in their local form.
XLines which start with a white~space are continuation lines.
XParenthesised strings are taken as comments (no nesting),
Xas is anything after a '#' (as in
X.IR /bin/sh ).
XHere are some examples:
X.sp
X.nf
X# this whole line is a comment
X#
X# These are equivalent definitions
X
Xalias_name      recip1 recip2 recip3
X
Xalias_name:     recip1, recip2 , recip3
X
Xalias_name      recip1 recip2
X                recip3
X
Xalias_name      recip1  # Recip1's name
X                recip2  # Recip2's name
X                recip3  # Recip3's name
X
Xalias_name      recip1 (Recp1's name) recip2 (Recp2's name)
X                recip3 (Recp3's name)
X
Xalias_name at thishost     recip1 recip2 recip3
X
Xalias_name at thisdomain   recip1 recip2 recip3
X
Xthishost!alias_name     recip1 recip2 recip3
X
Xthisdomain!alias_name   recip1 recip2 recip3
X.fi
X.PP
XMailing lists are easily handled by two forms of file inclusion.
XThe first form is the same as is supported by
X.I sendmail
X.sp
X.ce
Xmylist	:include:/usr/lib/ml/mylist
X.sp
XIn this example, each entry in
X.I /usr/lib/ml/mylist
Xwould be added to the alias for
X.I mylist.
XThe second form is unique to
X.I smail.
XIt allows the
X.I aliases
Xfile to include other
X.I aliases
Xfiles.
X.sp
X.ce
X:include:/usr/lib/ml/more-aliases
X.sp
XThis would include the file
X.I /usr/lib/ml/more-aliases
Xas a regular alias file.
XThis makes it easier to maintain groups of aliases that
Xchange frequently, such as the list of netnews moderators.
X.PP
XAll aliases are recursive, so care
Xmust be taken in their definition.
X.I smail
Xaliasing attempts to prevent infinite loops, and to
Xdo what was intended by the user.  For example, the alias:
X.sp
X.ce
Xmylogin~mypc!mylogin~mylogin
X.sp
XExpands to
X.sp
X.ce
Xmypc!mylogin mylogin
X.sp
Xeven though the second occurrence of
X.I mylogin
Xmatches the alias name.
X.sp
XBoth forms of file inclusion are recursive, too,
Xso watch out for nesting include files.  They
Xmay lead to infinite loops.
X.PP
XWhile the cost of parsing an alias file is usually negligible,
Xit's wise to take savings anywhere savings
Xcan be found.  Therefore, it's worth mentioning
X.IR smail 's
Xparsing strategy.
X.I smail
Xwill try to get by with doing as little work
Xas possible when aliasing.  If on a particular
Xinvocation of
X.I smail,
Xnone of the recipent addresses are local,
X(i.e., not potential aliases)
Xthen the
X.I aliases
Xfile won't even be read.  Similarly,
Xwhen an
X.I aliases
Xfile is read, it does not expand any of the :include: files
Xuntil they are referenced.  Thus, in the alias (above) for
X.I mylist,
Xthe file
X.I :include:/usr/lib/ml/mylist
Xwould not be opened and read (parsed) unless
Xmail was sent to
X.I mylist.
XWise use of :include: files can greatly
Xincrease the efficiency of the alias utility.
XIt's not clear exactly where the
X.I break-even
Xpoint is when deciding to use an  :include: file in an alias,
Xversus having all of the recipents listed on the line;
Xbut if a mailing list is large (whatever that means)
Xit is wise to use the :include: feature to save on
Xparsing costs.  Note that this discussion only applies to the
Xfirst form of file inclusion, since reading an
X.I aliases
Xfile constitutes a reference to :include: files of the second form.
X.PP
XThere is another form of aliasing which works with the alias capability.
XThis is called
X.I per user forwarding.
XFor a given user name, if there is no alias for the user
Xthen, if the file
X.I ~user/.forward
Xexists, then its contents will be treated as an alias for
Xthe user.  The syntax is the same as that of the
Xrecipient lists in the alias file described above.
X.PP
XOne difference between
X.I smail
Xand
X.I sendmail
Xis that
X.I smail
Xdoesn't handle stuff like mail to files
Xor command execution.
X.SH SEE ALSO
Xsmail(8), paths(8), pathproc(8)
X.SH VERSION
X@(#)aliases.8	2.2 smail 1/28/87
@//E*O*F doc/aliases.8//
if test 4445 -ne "`wc -c <'doc/aliases.8'`"; then
    echo shar: error transmitting "'doc/aliases.8'" '(should have been 4445 characters)'
fi
fi # end of overwriting check
echo shar: extracting "'doc/lcasep.8'" '(741 characters)'
if test -f 'doc/lcasep.8' ; then 
  echo shar: will not over-write existing file "'doc/lcasep.8'"
else
sed 's/^X//' >doc/lcasep.8 <<'@//E*O*F doc/lcasep.8//'
X.TH LCASEP 8
X.tr ~
X.SH NAME
Xlcasep \- convert first field to lower case
X.SH SYNOPSIS
X.B lcasep
X[ -f infile ] [ -o outfile ]
X.SH DESCRIPTION
X.I Lcasep
Xconverts all upper case characters
Xin the first field of each input line to lower case
Xand writes the line to its output.  By default,
X.I lcasep
Xreads from the standard input and writes to the standard output.
XFields are delimited by a tab (ascii~0x9) character.
XIt is used in preparation for sorting
X.IR smail "'s"
X.I paths
Xdatabase.  There is a bug in
X.I sort -f
Xthat causes non-alphanumeric keys to be sorted incorrectly.
XConversion before sorting avoids this bug.
X.SH SEE ALSO
Xpathalias - by Peter Honeyman
X.br
Xsmail(8), paths(8), pathproc(8)
X.SH VERSION
X@(#)lcasep.8	2.1 smail 12/14/86
@//E*O*F doc/lcasep.8//
if test 741 -ne "`wc -c <'doc/lcasep.8'`"; then
    echo shar: error transmitting "'doc/lcasep.8'" '(should have been 741 characters)'
fi
fi # end of overwriting check
echo shar: extracting "'doc/pathproc.8'" '(891 characters)'
if test -f 'doc/pathproc.8' ; then 
  echo shar: will not over-write existing file "'doc/pathproc.8'"
else
sed 's/^X//' >doc/pathproc.8 <<'@//E*O*F doc/pathproc.8//'
X.TH PATHPROC 8
X.SH NAME
Xpathproc \- pathalias post\-processor for smail routing database
X.SH DESCRIPTION
X.I Pathproc
Xtakes lines of the form
X.sp
X.ce
X\fIroute_cost	key	route\fP
X.sp
Xas produced by
X.I pathalias -c
Xand converts it to the form
X.sp
X.ce
X\fI key	route	cost\fP
X.sp
Xas described in
X.IR paths (8).
XOn the input, the
X.I route_cost
Xis
X.IR pathalias "'s"
Xtotal cost for the route.
XOn the output, the
X.I cost
Xis the cost for the
X.I first segment
Xof the route.
XThis represents the cost, to the local host,
Xof passing the mail to its neighbor.
X.PP
XThe output is sorted by
X.I key
Xin ascending order.
X.SH EXAMPLE
XHere's an example of how you might use
X.I pathproc:
X.sp
X.in+3
Xpathalias -c \fImap_files\fP | pathproc > newpaths
X.br
Xmv newpaths /usr/lib/uucp/paths
X.in
X.sp
X.SH SEE ALSO
Xpathalias - by Peter Honeyman
X.br
Xsmail(8), lcasep(8), paths(8)
X.SH VERSION
X@(#)pathproc.8	2.1 smail 12/14/86
@//E*O*F doc/pathproc.8//
if test 891 -ne "`wc -c <'doc/pathproc.8'`"; then
    echo shar: error transmitting "'doc/pathproc.8'" '(should have been 891 characters)'
fi
fi # end of overwriting check
echo shar: extracting "'src/Makefile'" '(743 characters)'
if test -f 'src/Makefile' ; then 
  echo shar: will not over-write existing file "'src/Makefile'"
else
sed 's/^X//' >src/Makefile <<'@//E*O*F src/Makefile//'
X# Makefile for smail (not a installation makefile)
X
X# @(#)Makefile	2.2 (smail) 1/16/87
X
XCFLAGS	=	-O
X#
X# System V Release 2.0 sites can use -lmalloc for a faster malloc
X#
X#LIBS	=	-lmalloc
X
XOBJECTS =	main.o map.o resolve.o deliver.o misc.o alias.o headers.o getpath.o getopt.o
X
Xall: smail svbinmail lcasep pathproc
X
Xsmail:		$(OBJECTS)
X		cc $(CFLAGS) $(OBJECTS) -o smail $(LIBS)
X
X$(OBJECTS):	defs.h
X		cc $(CFLAGS) -c $<
X
Xsvbinmail:	svbinmail.c defs.h
X		cc $(CFLAGS) svbinmail.c -o svbinmail
X
Xlcasep:		lcasep.c
X		cc $(CFLAGS) lcasep.c -o lcasep
X
Xpathproc: pathproc.sh
X	cp pathproc.sh pathproc
X	chmod 755 pathproc
X
Xinstall: all
X	@echo read doc/Install
X
Xclean:
X	rm -f *.o *.ln a.out core
X
Xclobber: clean
X	rm -f smail rmail lcasep pathproc svbinmail
@//E*O*F src/Makefile//
if test 743 -ne "`wc -c <'src/Makefile'`"; then
    echo shar: error transmitting "'src/Makefile'" '(should have been 743 characters)'
fi
fi # end of overwriting check
echo shar: "End of shell archive."
exit 0



More information about the Mod.sources mailing list