A mail transport agent that combines advanced capabilities with easy configuration.
Forcing Delivery to a Remote System via UUCP or SMTP

Without use of any of the optional DBM tables, sendmail+IDA delivers mail via the DEFAULT_MAILER (and possibly RELAY_HOST and RELAY_MAILER) in the m4 file used to generate It is easily possible to override this behavior through entries in the domaintable or uucpxtable.

Forcing mail to be transferred via UUCP

In an ideal world (from the Internet perspective), all hosts have records in the Domain Name Service (DNS) and will send mail with fully qualified domain names.

If you happen to talk via UUCP to such a site, you can force mail to go through the point-to-point direct UUCP connection rather than through your default mailer by essentially 'undomainizing' their hostname through the uucpxtable. The result is that sendmail will then determine (via UUCPNODES in the m4 file) that you are directly connected to the remote system and will queue the mail for delivery with UUCP.

# (in the uucpxtable)
# un-domainize to force UUCP delivery

Preventing mail from being delivered via UUCP

The opposite condition also occurs. Frequently, systems may have a number of direct UUCP connections that are used infrequently or that are not as reliable and always available as the default mailer or relay host.

For example, in the Seattle area there are a number of systems that exchange the various Linux distributions via anonymous uucp when the distributions are released. These systems talk UUCP only when necessary, so it is generally faster and more reliable to send mail through multiple very reliable hops and common (and always available) relay hosts rather than through unreliable direct point-to-point UUCP links.

It is easily possible to prevent UUCP delivery of mail to a host that you are directly connected to. If the remote system is domainized, you can add an entry in the domaintable that will fully domainize the hostname, and prevent a match by the UUCPNODES line in the m4 file. The result is generally that mail will go via the relay_mailer and relay_host (or default_mailer).

# (in domaintable)
# prevent mail delivery via uucp to a neighbor uucp_neighbor
Running the Sendmail Queue on Demand

To process queued messages immediately, merely type '/usr/lib/runq' which will invoke sendmail with the appropriate options to cause sendmail to run through the queue of pending jobs immediately rather than waiting for the next scheduled run.

Building and testing

  • cd to $LIBDIR/CF (generally /usr/local/lib/mail/CF)

  • copy the example.m4 file to yourhostname.m4

  • edit it to do the right thing (set your relay, hostname,pseudonymns, etc.)

  • 'make'

  • test that dude...

    /usr/lib/sendmail -bt
    at the '>' prompt, try:
    "3,0 me"
    "3,0 my-uucp-neighbor!foo"
    "3,0 me@mynode.mydomain"
    "3,0 mynode!me"
    (all should “do the right thing” hopefully)

  • put it into place as /etc/

start up sendmail as a daemon

/usr/lib/sendmail -bd -q1h

put the above line in the /etc/rc.local file so sendmailstarts up routinely when the system boots.

Reporting Mail Statistics

Sendmail comes with a utility called 'mailstats' that reads a file called /usr/local/lib/mail/ file and reports the number of messages and number of bytes transferred by each of the mailers used in the file. This file must be created by the local administrator manually for sendmail logging to occur. The running totals are cleared by removing and recreating the file. One way is to do the following:

cp /dev/null /usr/local/lib/mail/

Probably the best way to do quality reporting regarding who uses mail and how much volume passes to, from, and through the local system is to turn on mail debugging with syslogd. Generally, this means running the /etc/syslogd daemon from your system startup file with a line in /etc/syslog.conf that looks something like the following:

mail.debug /usr/adm/syslog.mail

The file does not grow enough to be a concern. If you use mail.debug and get any medium to high mail volume, the syslog output can get quite large. Output files from syslogd generally need to be rotated or purged on a routine basis from cron.

There are a number of commonly available utilities that can summarize the output of mail logging from syslog. One of the more well known utilities is the file that is distributed with the sendmail+IDA sources.


Geek Guide
The DevOps Toolbox

Tools and Technologies for Scale and Reliability
by Linux Journal Editor Bill Childers

Get your free copy today

Sponsored by IBM

8 Signs You're Beyond Cron

Scheduling Crontabs With an Enterprise Scheduler
On Demand
Moderated by Linux Journal Contributor Mike Diehl

Sign up now

Sponsored by Skybot