|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: D T
Length: 15463 (0x3c67)
Types: TextFile
Names: »DBM-Guide«
└─⟦9ae75bfbd⟧ Bits:30007242 EUUGD3: Starter Kit
└─⟦bfebc70e2⟧ »EurOpenD3/mail/sendmail-5.65b+IDA-1.4.3.tar.Z«
└─⟦f9e35cd84⟧
└─⟦this⟧ »sendmail/ida/cf/DBM-Guide«
THE CARE AND FEEDING OF DBM DATABASES FOR THE IDA PACKAGE.
The power of the IDA package derives mainly from its use of DBM databases
which can be looked up during the processing of mail.
The DBM databases are set up to map a KEY into a VALUE. In our descriptions
below we shall always presume that the source for building the database is
organized in the format:
VALUE KEY [KEY] ...
This is usually the most convenient format. However the output of the
pathalias program has a different format. Notice that sendmail always
converts the key to lower case before doing a database lookup.
The dbm command is sufficiently versatile to be able to handle either of
these source formats.
We start with an overview of the various tables.
MAILERTABLE: This is probably the first table you will wish to define. By
default, mail directed to one of the PSEUDONYMs is processed by the
LOCAL mailer, mail addressed to 'user@host.UUCP' is sent out by the UUCP
mailer (but only if 'host' is a UUCP neighbor), mail to
'user@full.domain.name' is sent out with the TCP mailer. There is no
default provision for handling mail to .BITNET hosts, to UUCP hosts which
are not neighbors, etc.
The MAILERTABLE allows this default processing to be changed for specific
domains or classes of domains.
The KEY in each entry is a domain name, or a partial domain name
(beginning with a dot). The VALUE is a MAILER/DOMAIN pair, in any of the
formats 'MAILER,domain' or 'MAILER:domain' or 'MAILER!domain'. The
choice of the separator (',' or ':' or '!') affects how the name address
is processed after mailer selection.
Example 1. I have a UUCP neighbor 'denali'. But this host is also on
the network, and has in Internet mail name of 'math.niu.edu'. Since it
is more efficient to use the network, I can insert the entry:
TCP,math.niu.edu denali.UUCP
in my MAILERTABLE. That way mail addressed via UUCP can actually be
delivered via TCP.
MAILERTABLE can also be used to deliver BITNET mail. I can install the
entry
TCP,UICVM.UIC.EDU .BITNET
in the table. Then any mail which matches the .BITNET - that is, any
mail to a 'host.BITNET' destination is forwarded to the nearby BITNET
gateway, UICVM.UIC.EDU.
uunet.uu.net is an Internet host. Thus by default mail to there is
processed by the TCP mailer. But with the entry
TCP-U,uunet.uu.net uunet.uu.net
mail will be transmitted with the TCP-U mailer. This is still a TCP
mailer, but it is designed to provide UUCP format addresses. This is
appropriate for uunet which is a major UUCP forwarder.
The various mailers which can be selected by MAILERTABLE entries include
the TCP mailer, the UUCP mailer, the TCP-U mailer just mentioned, the
TCP-A mailer which uses strict RFC822 source routes, the UUCP-A mailer
which uses UUCP transport but formats addresses in Internet style. The
local mailer could also be selected.
In selecting a mailer, the mailer pair may be separated by any of ',' or
':' or '!'. There significance is in the way the address is modified.
If ',' is used, the recipient address is sent to the mailer unchanged.
If a '!' is used, the recipient host is first removed from the recipient
address before forwarding via the mailer. The '!' is appropriate for the
UUCP and LOCAL mailers which expect the recipient host to have been
removed. The use of ':' is somewhere between these two. The recipient
host is removed, but only if there are additional hosts in a mailing
path.
It is also possible to specify the MAILER-domain pair as just a ':'.
This has the special meaning of forcing mailer selection to fail. Such
entries are useful in conjunction with PATHTABLE, discussed next.
*********** IMPORTANT NOTE ****************
It is important that host names in the MAILER:HOST pair be the OFFICIAL
host name. Thus,
TCP,math.niu.edu denali.UUCP
is correct.
TCP,math denali.UUCP
is incorrect, even if 'niu.edu' is my local domain. Likewise, when I
use the UUCP-A mailer to send Internet format mail via UUCP to our
Geology department, the record
UUCP-A!earth geol.niu.edu
is correct. However
UUCP-A!earth.UUCP geol.niu.edu
would be incorrect. This is because 'earth' is the official name of this
UUCP host, whereas 'earth.UUCP' is not the host name, but an internet-like
mailname sometimes used for the host.
PATHTABLE
This table is useful for rerouting mail. Usually it is constructed from
the UUCP map, using the pathalias command.
The PATHTABLE is searched when the first attempt at selecting a mailer
has failed. Thus I can have an entry:
VALUE KEY
seismo!%s@uunet.uu.net seismo
Suppose then that I have mail for 'user@seismo.UUCP'. Since 'seismo' is
not a UUCP neighbor, the first attempt at finding a mailer fails. Then a
PATHTABLE lookup is performed. The domain name 'seismo' is used to
lookup the table, and 'user' is sprintf-ed through the value, to yield an
address 'seismo!user@uunet.uu.net'. Note that 'user' could actually be a
long bang path in this. Note also that UUCP addresses are special for
PATHTABLE, in that the '.UUCP' is not part of the key. The special
treatment derives from the history of the pathalias command for preparing
UUCP maps.
However the PATHTABLE is not restricted to UUCP mail. I could use an
entry
%s@UICVM.UIC.EDU .BITNET
as an alternate way of routing BITNET mail via UICVM. Since the key
begins with a '.', the original domain is not removed. Thus
'user@host.BITNET' is converted into something like
'user@host.BITNET@UICVM.UIC.EDU' except that the internal reformatting
associated with PATHTABLE lookups will convert this to the RFC822 source
route '@UICVM.UIC.EDU:user@host.BITNET'.
*********** IMPORTANT NOTE ****************
It is essential that PATHTABLE entries, other than simple UUCP node names,
use the fully qualified names, since - except for the addition of '.UUCP'
to uucp hosts, the addresses coming from PATHTABLE are not subject to
later qualification.
For entries generated from the UUCP maps with the pathalias command, this
will not be a problem, for they are already in the correct format. But
if you manually add extra entries you must see that they too (except for
simple UUCP names) are fully qualified.
VALUE KEY
uunet.uu.net!seismo%s seismo
or
seismo%s@uunet.uu.net seismo
is alright, because uunet.uu.net is fully qualified.
uxc!uunet%s uunet.uu.net
is alright, since uxc is a simple UUCP name. But if I want to use
TCP to send mail to my UUCP neighbor 'denali', I must use
%s@math.niu.edu denali
not
%s@math denali
since 'math' is not fully qualified.
DOMAINTABLE
This table is used to fully qualify domain names.
The domain qualification process uses both the name server and the domain
table. Thus if I send mail to 'person@niucs1' the name server lookup
first attempts to append my default domain (from /etc/resolv.conf) of
'niu.edu' forming the domain 'niucs1.niu.edu'. Since there is a CNAME
record in the domain database mapping this to the canonical name of
'mp.cs.niu.edu', that becomes the fully qualified domain name used.
Similarly, if I try sending mail to 'person@math' the domain is
tentatively qualified with 'niu.edu', and since 'math.niu.edu' is a valid
name known to the name server this becomes the fully qualified name.
If, however, I send mail to 'person@chem' this procedure fails. The name
'chem.niu.edu' does have records in the domain database. But the records
are only MX records, and the lowest preference is to this host. Since
MX records of preference >= that of the local host must be discarded, it
looks to the name server lookup as if 'chem.niu.edu' is an invalid name.
This the name is not properly qualified.
The solution is a DOMAINTABLE entry
chem.niu.edu chem
This entry maps the key 'chem' into its fully qualified version, so that
the correct fully qualified name is still found. Actually I prefer to
use a table entry of
chem.niu.edu chem chem.niu.edu
Here the key 'chem.niu.edu' is useful if sendmail wants to be sure that
'chem.niu.edu' is a valid fully qualified name. As mentioned above, the
name server lookup will not validate the domain, so a DOMAINTABLE lookup
must be used.
Mail coming into my machine from the 'chem.niu.edu' machine arrives via
UUCP. In fact 'chem.niu.edu' has a UUCP name of 'socrates'. The sender
address on this mail will be in the form 'socrate!person'. Because I
used BANGIMPLIESUUCP in my setup, the domain is converted to
'socrate.UUCP'. I use the DOMAINTABLE entries:
chem.niu.edu socrate.UUCP socrates.UUCP socrate socrates
Thus the address 'socrate.UUCP' is automatically converted to its
Internet equivalent of 'chem.niu.edu' before it leaves sendmail.
Note that I include both 'socrate.UUCP' and 'socrates.UUCP' as keys. The
actual machine name is 'socrates' but much UUCP software truncates names
to 7 characters. For safety I use both versions. I also include
'socrate' and 'socrates' without the '.UUCP' so that if I ever stop using
BANGIMPLIESUUCP correct qualification will still occur.
As a general rule, you should only have entries in DOMAINTABLE for direct
UUCP connections, and for local machines (machines within your domain).
There may be special local circumstances which would cause you to add a
few additional entries. You do not need to qualify every domain in the
world.
UUCPXTABLE
This table is used to convert full domain names into UUCP names. For
example I use an entry
socrates chem.niu.edu
This is used to convert the name 'chem.niu.edu' into the corresponding
UUCP name of 'socrates'. The idea is that the host should always be
known as 'chem.niu.edu' when Internet format addresses are preferred,
such as with the TCP mailer. But when UUCP format addresses are
preferred, as with the UUCP mailer, it is better to use the UUCP name.
As a general guide, whenever there is a DOMAINTABLE entry to convert your
UUCP neighbor's name into a full domain name, there should be a
corresponding UUCPXTABLE entry so that the UUCP name is still used with
the UUCP mailer.
DECNETXTABLE
This is used for DECNET mail. Its use is somewhat analogous to the use
of UUCPXTABLE for UUCP mail. See Sendmail.mc for more information.
GENERICFROM
This table only effects addresses on the 'From:' header line. If, for
example, I had an entry:
Neil-Rickert@cs.niu.edu rickert
then mail sent out by 'rickert' would have its 'From:' line read as
'From: Neil-Rickert@cs.niu.edu'.
Note that the program 'xalparse' allows a single source file 'xaliases' to
be used to build both the ALIASES and the GENERICFROM databases.
NOTES ON MX-GATEWAYING.
A number of hosts do not have direct Internet connections, but use Internet
style addresses, and have mail reach them with the aid of an MX domain
record and a forwarding gateway machine. These notes give some approaches to
using this setup.
If you are not Internet connected, but use UUCP to forward mail to an MX
gatewaying machine, try using UUCP-A as the RELAY_MAILER. Beyond setting
up the relaying mailer and host there is little for you to do, for most of
the setup must be handled on the gateway machine.
The rest of these note apply to the gateway machine.
There are two problems to consider. We must forward received mail to the
machine for which we gateway. And we must send mail from that machine onto
the network. We consider the problems separately.
Handling incoming mail from Internet:
Firstly you will want to ensure that there is an MX record in
the domain database, making your host the lowest preference mail
exchanger for the host. As an example, my host (mp.cs.niu.edu)
provides MX gatewaying for the domain 'art.niu.edu'.
Next decide which mailer to use for the domain. In the case of
'art.niu.edu', they are able to handle Internet addresses, so I
use the UUCP-A mailer which uses UUCP transport, but Internet
style addresses. The connecting machine is 'laotzu.art.niu.edu' and
has a UUCP name of 'laotzu'. I use the following entry in my
mailer table:
UUCP-A!laotzu art.niu.edu
This causes mail to be forwarded via the UUCP-A mailer. If there were
an MX record for addresses *.art.niu.edu I would also include an
entry
UUCP-A,laotzu .art.niu.edu
which would forward all such mail (addressed to 'host.art.niu.edu')
for 'laotzu' to handle.
If the domain does not understand Internet style addresses, you should
use the UUCP mailer, instead of the UUCP-A mailer. In this case it is
also a good idea to include a UUCPXTABLE entry
laotzu art.niu.edu
The has the effect of translating the Internet name into a UUCP name,
so that the domain (art.niu.edu) does not even need to deal with
Internet format addresses on incoming mail. In fact if you have such
a UUCPXTABLE entry you don't need a MAILERTABLE entry, for the
UUCPXTABLE entry will already select the UUCP mailer for you.
Another approach is to handle the forwarding purely with PATHTABLE. If
there is a PATHTABLE entry with KEY = 'art.niu.edu' and
VALUE = 'laotzu!%s', mail to this domain should be handled correctly.
This works because, since your host has the lowest MX preference, the
first attempt to find a mailer fails and the PATHTABLE is consulted.
This approach is particularly attractive if you do MX forwarding for
many domains. The advantage is that those domains can manage their
own PATHTABLE entries by submitting UUCP MAPS to the UUCP MAP project
(uucpmap@rutgers.edu). Of course this assumes you keep up to date
maps and run pathalias regularly to build your PATHTABLE.
Handling outgoing mail to the Internet:
This depends on how the domain handles its own addresses. It
will need to be set up to use a relay mailer and relay all
Internet format mail to your host. The best solution is for the
host to format its outgoing addresses in Internet style. In that
case you need do nothing. For example, in the case of 'art.niu.edu',
the machine currently is a Sun work station. It uses the 'smartuucp'
mailer as its relay mailer, but the mailer definition has been altered
to remove the 'U' flag so that pure Internet style addresses are used.
This works partly because I use the version of 'rmail' in 'ida/aux'
for my rmail, and run it suid to root. This version of 'rmail' does
not get confused when given internet style addresses.
If, however, 'laotzu' was unable to handle Internet style addresses
at all for its own domain name, I would include a DOMAINTABLE entry
art.niu.edu laotzu.UUCP laotzu
Then incoming mail from laotzu would automatically have its address
converted (by DOMAINTABLE) to Internet format before sending it out
to Internet.
----
Neil Rickert <rickert@cs.niu.edu>