Stolen from the FAQ.
The sendmail configuration that ships with FreeBSD is suited for sites that connect directly to the Internet. Sites that wish to exchange their mail via UUCP must install another sendmail configuration file.
Tweaking /etc/sendmail.cf
manually is considered
something for purists. Sendmail version 8 comes with a
new approach of generating config files via some m4
preprocessing, where the actual hand-crafted configuration
is on a higher abstraction level. You should use the
configuration files under
/usr/src/usr.sbin/sendmail/cf
If you did not install your system with full sources, the sendmail config stuff has been broken out into a separate source distribution tarball just for you. Assuming you have your CD-ROM mounted, do:
cd /usr/src tar -xvzf /cdrom/dists/src/ssmailcf.aa
Do not panic, this is only a few hundred kilobytes in size.
The file README
in the cf
directory can
serve as a basic introduction to m4 configuration.
For UUCP delivery, you are best advised to use the mailertable feature. This constitutes a database that sendmail can use to base its routing decision upon.
First, you have to create your .mc
file. The
directory /usr/src/usr.sbin/sendmail/cf/cf
is the
home of these files. Look around, there are already a few
examples. Assuming you have named your file foo.mc
,
all you need to do in order to convert it into a valid
sendmail.cf
is:
cd /usr/src/usr.sbin/sendmail/cf/cf make foo.cf
If you don't have a /usr/obj
hiearchy, then:
cp foo.cf /etc/sendmail.cf
Otherwise:
cp /usr/obj/`pwd`/foo.cf /etc/sendmail.cf
A typical .mc
file might look like:
include(`../m4/cf.m4') VERSIONID(`Your version number') OSTYPE(bsd4.4) FEATURE(nodns) FEATURE(nocanonify) FEATURE(mailertable) define(`UUCP_RELAY', your.uucp.relay) define(`UUCP_MAX_SIZE', 200000) MAILER(local) MAILER(smtp) MAILER(uucp) Cw your.alias.host.name Cw youruucpnodename.UUCP
The nodns and nocanonify features will prevent any usage of the DNS during mail delivery. The UUCP_RELAY clause is needed for bizarre reasons, do not ask. Simply put an Internet hostname there that is able to handle .UUCP pseudo-domain addresses; most likely, you will enter the mail relay of your ISP there.
Once you have this, you need this file called
/etc/mailertable
. A typical example of this
gender again:
# # makemap hash /etc/mailertable.db < /etc/mailertable # horus.interface-business.de uucp-dom:horus .interface-business.de uucp-dom:if-bus interface-business.de uucp-dom:if-bus .heep.sax.de smtp8:%1 horus.UUCP uucp-dom:horus if-bus.UUCP uucp-dom:if-bus . uucp-dom:sax
As you can see, this is part of a real-life file. The first
three lines handle special cases where domain-addressed mail
should not be sent out to the default route, but instead to
some UUCP neighbor in order to ``shortcut'' the delivery
path. The next line handles mail to the local Ethernet
domain that can be delivered using SMTP. Finally, the UUCP
neighbors are mentioned in the .UUCP pseudo-domain notation,
to allow for a ``uucp-neighbor!recipient'' override of the
default rules. The last line is always a single dot, matching
everything else, with UUCP delivery to a UUCP neighbor that
serves as your universal mail gateway to the world. All of
the node names behind the uucp-dom:
keyword must
be valid UUCP neighbors, as you can verify using the
command uuname
.
As a reminder that this file needs to be converted into a DBM database file before being usable, the command line to accomplish this is best placed as a comment at the top of the mailertable. You always have to execute this command each time you change your mailertable.
Final hint: if you are uncertain whether some particular
mail routing would work, remember the -bt
option to
sendmail. It starts sendmail in address test mode;
simply enter ``0 '', followed by the address you wish to
test for the mail routing. The last line tells you the used
internal mail agent, the destination host this agent will be
called with, and the (possibly translated) address. Leave
this mode by typing Control-D.
j@uriah 191% sendmail -bt ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter <ruleset> <address> > 0 foo@interface-business.de rewrite: ruleset 0 input: foo @ interface-business . de ... rewrite: ruleset 0 returns: $# uucp-dom $@ if-bus $: foo \ < @ interface-business . de > > ^D j@uriah 192%