---
name: "checksendmail"
section: "8"
platform: "linux"
package: "sendmail-base"
version: "8.18.1-6"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/checksendmail"
---

# checksendmail(8)

verify sendmail address transformations.

## NAME

**checksendmail** – verify sendmail address transformations.

## SYNOPSIS

**checksendmail** \[**-a**\] \[**-d**\] \[**-b**\] \[**-C** *file.cf*\] \[**-b** *sendmail\_binary*\] \[**-l** *log\_file*\] \[**-r** *resolve*\] \[**-T** *test.address*\]

## DESCRIPTION

The **checksendmail** program is a perl script that aids the testing of [sendmail(8)](/sendmail/8.md)'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:

```
user
user@site
user@site.com
```

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

## OPTIONS

- **-a**

  Show aliasing of local addresses in mail address resolution phase of testing

- **-d**

  Precede each address translation line with ruleset sequence summary

- **-C** *file.cf*

  Use the sendmail configuration file *file.cf* instead of the default */etc/sendmail.cf* 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.

## EXAMPLES

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

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

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

```
user@site.com	--(ether )-->  user@site.com[rmtc]
```

The input address *user@site.com* resolves to use the *ether* mailer.  That mailer is directed to send the mail to to the user *user@site.com* 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:

- user

  Standard trivial address

- user@rmtc

  qualified at one level

- user@rmtc.central

  qualified at two levels

- user@rmtc.central.sun.com

  qualified all the way

- rmtc!user

  local but specified as uucp

- user@summit

  a workstation (normally delivered locally, though)

- user@summit.central

  same but more qualified

- user@summit.central.sun.com

  same but fully qualified

- summit!user

  same but specified as uucp

- user@prisma

  Backward compatibility tests

- user@prisma.com

  - prisma!user

  - user@central

  Superior domain testing

- user@machine.central

  more qualified, but unknown

- user@summit.central

  more qualified and known

- user@eng

  name in faraway domain

- user@machine.eng

  unknown machine in faraway domain

- user@summit.eng

  local machine, far away domain

- user@hoback

  far away machine

- user@machine

  apparently local but unknown machine

- user@sun.com

  Standard trivial address

- user@machine.dom.sun.com

  fully qualified but unknown machine

- user@foo.com

  standard, known, really far away domain

- user@foo.dom

  standard, unknown, really far away domain

- site!user

  Single level uucp

- site1!site2!user

  Double level uucp

- user@foo.dom@bar.dom

  Trickier address

- site!user@foo.dom

  Mixed uucp/domain

- site!user@uunet.uu.net

  Mixed double uucp/domain

## NOTES

Note that **checksendmail** is a perl script.  If your site does not have [perl(1)](/perl/1.md), it can be obtained via anonymous ftp from *ftp.uu.net*.

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.

## AUTHORS

```
Gene Kim
Rob Kolstad
Jeff Polk
```

Modified by Robert Harker

## SEE ALSO

[sendmail(8)](/sendmail/8.md)
