The sendmail configuration that ships with FreeBSD is designed 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/mail/sendmail.cf
manually
is an advanced topic. sendmail version 8 generates config files
via m4(1) preprocessing, where the actual configuration
occurs on a higher abstraction level. The m4(1)
configuration files can be found under
/usr/src/usr.sbin/sendmail/cf
.
If you did not install your system with full sources, the sendmail configuration set has been broken out into a separate source distribution tarball. Assuming you have your FreeBSD source code CDROM mounted, do:
#
cd /cdrom/src
#
cat scontrib.?? | tar xzf - -C /usr/src/contrib/sendmail
This extracts to only a few hundred kilobytes. The file
README
in the cf
directory can serve as a basic introduction to m4(1)
configuration.
The best way to support UUCP delivery is to use the
mailertable
feature. This creates a database
that sendmail can use to make routing decisions.
First, you have to create your .mc
file. The directory
/usr/src/usr.sbin/sendmail/cf/cf
contains 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
#
cp foo.cf /etc/mail/sendmail.cf
A typical .mc
file might look
like:
VERSIONID(`Your version number
') OSTYPE(bsd4.4) FEATURE(accept_unresolvable_domains) FEATURE(nocanonify) FEATURE(mailertable, `hash -o /etc/mail/mailertable') define(`UUCP_RELAY',your.uucp.relay
) define(`UUCP_MAX_SIZE', 200000) define(`confDONT_PROBE_INTERFACES') MAILER(local) MAILER(smtp) MAILER(uucp) Cwyour.alias.host.name
Cwyouruucpnodename.UUCP
The lines containing
accept_unresolvable_domains
,
nocanonify
, and
confDONT_PROBE_INTERFACES
features will
prevent any usage of the DNS during mail delivery. The
UUCP_RELAY
clause is needed to support UUCP
delivery. 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 an
/etc/mail/mailertable
file. If you have
only one link to the outside that is used for all your mails,
the following file will suffice:
#
# makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable
. uucp-dom:your.uucp.relay
A more complex example might look like this:
# # makemap hash /etc/mail/mailertable.db < /etc/mail/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:
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 use. The command line to accomplish
this is best placed as a comment at the top of the mailertable
file.
You always have to execute this command each time you change
your mailertable
file.
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 3,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 Ctrl+D.
%
sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter <ruleset> <address>>
3,0 foo@example.com
canonify input: foo @ example . com ... parse returns: $# uucp-dom $@your.uucp.relay
$: foo < @ example . com . >>
^D
All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/
Questions that are not answered by the
documentation may be
sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.