checksendmail(8) verify sendmail address transformations.


checksendmail [-a ] [-d ] [-b ] [-C ] [-b sendmail_binary ] [-l log_file ] [-r resolve ] [-T test.address ]


The checksendmail program is a perl script that aids the testing of sendmail(8)'s various configuration files. checksendmail passes typical addresses (supplied in input files) through sendmail and prints the results of the resolution and transformation routines.

The input files contain a list of addresses, one per line. For example:

[email protected]

The input file can contain comments started with a # and blank lines.


Show aliasing of local addresses in mail address resolution phase of testing
Precede each address translation line with ruleset sequence summary
Use the sendmail configuration file instead of the default /etc/ file.
-b sendmail_binary
Use the specified sendmail_binary as the path to invoke sendmail (instead of /usr/sbin/sendmail )
-l log_file
Log sendmail address test mode debugging output to log_file
-r resolve
Use resolve as the input file for the addresses to be used for mail resolving. Defaults to address.resolve
-T test.address
Use test.address as the single address to test. Cannot be used in conjunction with file setting flags.


The following command will pass the addresses in address.resolve through sendmail using the configuration information in

example% cat address.resolve
[email protected]
example% checksendmail -C
system:               current dir: /tmp/Checksendmail
resolve file: address.resolve
sendmail binary: /usr/sbin/sendmail     sendmail version: 8.9.3
config file: /etc/           config file version: V8/Berkeley
Mail address resolution
user                        --(ether )-->  user[rmtc]
user@site                   --(ether )-->  user@site[rmtc]
[email protected]               --(ether )-->  [email protected][rmtc]
`To' address transformations for mailer ether:
user                        ---->  user
user@site                   ---->  user@site
[email protected]               ---->  [email protected]
`From' address transformations for mailer ether:
user                        ---->  user
user@site                   ---->  user
[email protected]               ---->  user

The first section of the output shows how the addresses in the input files are resolved by sendmail(8). Consider the following output line:

"[email protected] --(ether )--> [email protected][rmtc]"

The input address
[email protected] resolves to use the ether mailer. That mailer is directed to send the mail to to the user [email protected] at site rmtc (as indicated in the square brackets).

The two later sections of output show how the addresses specified as the To and From address are transformed in the text of the headers. In the example above, the To addresses are untouched. The From addresses, however, all lose their machine information on the way through the mailer:

"user@site             ----> user"

This may be desirable when using a configuration file on a
workstation which is to be hidden as a mailhost from the rest of the network.

The following is a set of addresses used at one site for the purposes of testing address resolution. Comments after the addresses detail why particular addresses are present:

Standard trivial address
qualified at one level
[email protected]
qualified at two levels
[email protected]
qualified all the way
local but specified as uucp
a workstation (normally delivered locally, though)
[email protected]
same but more qualified
[email protected]
same but fully qualified
same but specified as uucp
Backward compatibility tests
[email protected]
Superior domain testing
[email protected]
more qualified, but unknown
[email protected]
more qualified and known
name in faraway domain
[email protected]
unknown machine in faraway domain
[email protected]
local machine, far away domain
far away machine
apparently local but unknown machine
[email protected]
Standard trivial address
[email protected]
fully qualified but unknown machine
[email protected]
standard, known, really far away domain
[email protected]
standard, unknown, really far away domain
Single level uucp
Double level uucp
[email protected]@bar.dom
Trickier address
[email protected]
Mixed uucp/domain
[email protected]
Mixed double uucp/domain


Note that checksendmail is a perl script. If your site does not have perl(1), it can be obtained via anonymous ftp from

sendmail requires that the user have access to directory specified by the OQ parameter in the configuration file (normally /usr/spool/mqueue ) checksendmail verifies that the user has access to this directory before allowing the test to continue.


Gene Kim
Rob Kolstad
Jeff Polk

Modified by Robert Harker