COHERENT manpages

This page displays the COHERENT manpage for routers [Rules for resolving mail addresses to remote systems].

List of available manpages
Index


routers -- System Administration

Rules for resolving mail addresses to remote systems
/usr/lib/mail/routers

File /usr/lib/mail/routers defines one or more routers. Each router defines
a method by which smail routes mail to a remote system.

Each  entry within  routers names  a router and  sets its  attributes.  The
order of  entries is important, because smail invokes  routers in the order
in which  they appear in this  file.  Each entry consists  of the following
information:

-> The  name of  the router.   This  attribute begins  the definition  of a
   router.  The  name must be  unique, it must  appear flush with  the left
   margin, and must be followed by a single colon `:'.

-> The name of the driver, or program that implements the router.  This can
   be  a command  that is  part of  smail's suite  of utilities  (which are
   contained in  directory /usr/lib/mail), or  can be an  ordinary COHERENT
   command.   If  the  latter, then  the  full  name  of  the command  that
   implements  the driver  is given  with  a cmd  attribute; this  is shown
   below.

-> A  set  of generic  attributes  for the  router.   These attributes  are
   ``generic'' because they can come from  a set that can be applied to any
   router.

-> A  set of  driver-specific  attributes.  These  can be  applied only  to
   routers that use this driver.

To extend an entry across multiple lines, begin successive lines with white
space.

For example,  the following entry gives the attributes  for a director that
reads aliases from a file named /private/usr/lib/aliases:

    # read aliases from a file private to one machine on the network
    private_aliases:
        driver=aliasfile, owner=owner-$user ;
        file=/private/usr/lib/aliases

This  entry  is  named  private_aliases.  It  depends  upon  the  low-level
director-driver  routine named  aliasfile, which is  built into  smail, and
which implements  a general mechanism for looking up  aliases within a data
base.  By  default, the  driver aliasfile reads  file /usr/lib/mail/aliases
(which  is simply  a  file that  contains  ASCII records  in no  particular
order);    this    routers     tells    it    instead    to    read    file
/private/usr/lib/mail/aliases.  (For details  on the  format of  an aliases
file, see the Lexicon entry aliases). Finally, this router tells smail that
if this director discovers an error  while it is processing its input, then
it (smail)  should sends a mail  message to an address  formed by prefixing
the string ``owner-'' onto the name of the alias.

Attributes of a Router

The following  gives the  generic attributes can  be used in  router entry.
Each  attribute is  followed by  its type  (Boolean or  string).  To  set a
string attribute, its name should be  followed by an `=', then the value to
which you  are setting it.   To set a  Boolean attribute, prefix  it with a
`+'; to unset a Boolean attribute, prefix it with a `-'.

always (Boolean)
     A router will  not always find a complete match  for a particular host
     name.  For example,  if a routing data base has  a route to the domain
     amdahl.com but  not to the host  name futatsu.uts.amdahl.com, then the
     routing driver might return the route to amdahl.com.

     In general, smail uses the route that matches the largest ``chunk'' of
     the target host.  However, if you set the attribute always, then smail
     uses  any  match found  by  this  router in  preference  to any  route
     returned by any router that appears below it within routers.

     This attribute  is useful for  hard-wiring a certain  number of routes
     within a small data base.  For example, this is useful for an Internet
     site that is  the gateway for a small number  of UUCP sites within the
     UUCP zone.

driver (string)
     This attribute  gives the set of low-level functions  that do the work
     of routing remote mail.  This attribute is required.

method (string)
transport (string)
     A router  driver can internally  set the transport it  uses to deliver
     mail to a remote site.  If it does not do so, then you must set either
     a method  or a transport attribute,  to specify how the  mail is to be
     delivered.  The attribute  method names the file whose contents relate
     host  names  to  transports.   The  attribute  transport  specifies  a
     particular transport that is defined in file /usr/lib/mail/transports.
     If the file  named in a method attribute does  not contain a match for
     all  hosts, then  smail uses  the transport  named with  the transport
     attribute.  The format of a method file is given in the next section.

Method Files

Method files relates  a set of host names with  the set of transports to be
used to deliver mail to those hosts.  Each entry should have the form:

    hostname transport-name

which  states  that smail  should  use transport-name  to  deliver mail  to
hostname. As  a special case,  if hostname is  the special string  `*', the
entry matches any host.  You should  use this catch-all feature only in the
last entry in a method file.

You can  associate an  entry in  a method file  with a particular  grade of
message.  This  lets you assign each  grade of mail its  own transport; for
example, you may  wish to use non-demand UUCP for  messages with a ``bulk''
or ``junk'' precedence.  To specify a  range of grades, append the range of
grade-letters to the host name,  separated by `/'.  Entries with grades can
be in any of the forms:

    hostname/X transport-name
    hostname/X-* transport-name
    hostname/*-Y transport-name
    hostname/X-Y transport-name

For  a discussion  of  grade letters  and their  correlation with  message-
precedence strings, see the  description of attribute grades in the Lexicon
entry for config  (smail). In the first form, the  transport is used for an
exact match  of the grade letter.   In the second form,  a match requires a
grade a character value of at  least X. In the third, form a match requires
a grade character  value of at most Y. The  final form specifies a range of
grades from character value X to character value Y.

The Default Configuration

The  following gives  the routers  defined in the  default version  of file
/usr/lib/mail/routers that is included with COHERENT.

The  first  router  is named  paths.  It  processes  the  contents of  file
/usr/lib/mail/paths:

    # paths - route using a paths file, like that produced by the pathalias program
    paths:  driver=pathalias,    # general-use paths router
        transport=uux;       # for matches, deliver over UUCP

        file=paths,          # sorted file containing path info
        proto=dbm,           # use a DBM-style data base
        optional,            # ignore if the file does not exist
        -required,           # no required domains
        domain=uucp,         # strip ending ".uucp" before searching

The  command pathalias,  which  this router  uses  to read  file paths,  is
described in  its own Lexicon entry;  as is command uux,  which this router
invokes to transport the files to the remote site.

The  next router,  named uucp_neighbors,  matches  nearby systems  that are
accessible via UUCP:

    # uucp_neighbors - match neighbors accessible over UUCP
    uucp_neighbors:
        driver=uuname,          # use a program which returns neighbors
        transport=uux;

        cmd=/usr/bin/uuname,    # specifically, use the uuname program
        domain=uucp,            # strip ending ".uucp" before searching

Command uuname  is part of  the Taylor UUCP  package that is  included with
COHERENT.  It is described in  its own Lexicon entry.  Under COHERENT, this
command always returns the name of your local host.

The final router describes how to route mail to the ``smart host.'' This is
a system  that knows  how to  access more remote  systems than  your system
does, and that  you trust to handle mail correctly.   smail forwards to the
smart host  all mail that it  does not know how to route,  in the hope that
the smart host will know what to do with it.

    # smart_host - a partically specified smarthost director
    #
    # If the config file attribute smart_path is defined as a path from the
    # local host to a remote host, then host names not matched otherwise will
    # be sent off to the stated remote host.  The config file attribute
    # smart_transport can be used to specify a different transport.
    #
    # If the smart_path attribute is not defined, this router is ignored.
    smart_host:
        driver=smarthost,   # special-case driver
        transport=uux;      # by default deliver over UUCP

        -path,          # use smart_path config file variable?

See Also

Administering COHERENT,
config [smail],
directors,
mail [overview],
smail,
transports

Notes

For  information on  how the  configuration  files directors,  routers, and
transports relate to each other, see the Lexicon entry for directors.

Copyright © 1987, 1988 Ronald S. Karr and Landon Curt Noll.  Copyright
© 1992 Ronald S. Karr.

For  details on  the distribution rights  and restrictions  associated with
this software, see file COPYING, which  is included with the source code to
the smail system; or type the command: smail -bc.