29.3. Sendmail Configuration
Prev | Chapter 29. Electronic Mail | Next

## 29.3. Sendmail Configuration

Contributed by Christopher Shumway.

sendmail(8) is the default MTA which is installed with FreeBSD. Sendmail accepts mail from MUAs and delivers it to the appropriate mailer as defined by its configuration file. Sendmail can also accept network connections and deliver mail to local mailboxes or to another program.

Sendmail uses the following configuration files. This section describes these files in more detail.

Filename | Function
--- | ---
`/etc/mail/access` | Sendmail access database file.
`/etc/mail/aliases` | Mailbox aliases
`/etc/mail/local-host-names` | Lists of hosts Sendmail accepts mail for.
`/etc/mail/mailer.conf` | Mailer program configuration.
`/etc/mail/mailertable` | Mailer delivery table.
`/etc/mail/sendmail.cf` | Sendmail master configuration file.
`/etc/mail/virtusertable` | Virtual users and domain tables.

### 29.3.1. `/etc/mail/access`

This database defines which host(s) or IP addresses have access to the local mail server and what kind of access they have. Hosts can be listed as `OK`, `REJECT`, or `RELAY`, or can be passed to Sendmail's error handling routine with a given mailer error. Hosts that are listed as `OK`, which is the default option, are allowed to send mail to this host as long as the mail's final destination is the local machine. Hosts that are listed as `REJECT` are rejected for all mail connections. Hosts that are listed as `RELAY` are allowed to send mail for any destination using this mail server.

Example 29.1. Configuring the Sendmail Access Database
cyberspammer.com 550 We do not accept mail from spammers FREE.STEALTH.MAILER@ 550 We do not accept mail from spammers another.source.of.spam REJECT okay.cyberspammer.com OK 128.32 RELAY

This example shows five entries. Mail senders that match the left side of the table are affected by the action on the right side of the table. The first two examples give an error code to Sendmail's error handling routine. The message is sent to the remote host when a mail matches the left side of the table. The third entry rejects mail from a specific host on the Internet, `another.source.of.spam`. The fourth entry accepts mail connections from `okay.cyberspammer.com`, which is more specific than the `cyberspammer.com` line above. More specific matches override less exact matches. The last entry allows relaying of email from hosts with an IP address that begins with `128.32`. These hosts can send mail through this mail server that is destined for other mail servers.

Whenever this file is updated, run `make` in `/etc/mail/` to update the database.

### 29.3.2. `/etc/mail/aliases`

This database contains a list of virtual mailboxes that are expanded to other user(s), files, programs, or other aliases. Here are a few examples to illustrate the file format:

Example 29.2. Mail Aliases
root: localuser ftp-bugs: joe,eric,paul bit.bucket: /dev/null procmail: "|/usr/local/bin/procmail"

The mailbox name on the left side of the colon is expanded to the target(s) on the right. The first entry expands the mailbox `root` to the mailbox `localuser`, which is then looked up again in the `aliases` database. If no match is found, the message is delivered to `localuser`. The second entry shows a mail list. Mail to the mailbox `ftp-bugs` is expanded to the three local mailboxes `joe`, `eric`, and `paul`. A remote mailbox could be specified as `<user@example.com>`. The third entry shows how to write mail to a file, in this case `/dev/null`. The last entry demonstrates how to send mail to a program, `/usr/local/bin/procmail`, through a UNIX® pipe.

Whenever this file is updated, run `make` in `/etc/mail/` to update the database.

### 29.3.3. `/etc/mail/local-host-names`

This is a list of hostnames sendmail(8) is to accept as the local host name. Place any domains or hosts that Sendmail will receive mail for. For example, to configure a mail server to accept mail for the domain `example.com` and the host `mail.example.com`, add these entries to `local-host-names`:

example.com mail.example.com

Whenever this file is updated, sendmail(8) needs to be restarted so that it will read the changes.

### 29.3.4. `/etc/mail/sendmail.cf`

This is the master configuration file for Sendmail. It controls the overall behavior of Sendmail, including everything from rewriting email addresses to printing rejection messages to remote mail servers. Accordingly, this configuration file is quite complex. Fortunately, this file rarely needs to be changed for standard mail servers.

The master Sendmail configuration file can be built from m4(1) macros that define the features and behavior of Sendmail. Refer to `/usr/src/contrib/sendmail/cf/README` for some of the details.

Whenever changes to this file are made, Sendmail needs to be restarted for the changes to take effect.

### 29.3.5. `/etc/mail/virtusertable`

The `virtusertable` maps mail addresses for virtual domains and mailboxes to real mailboxes. These mailboxes can be local, remote, aliases defined in `/etc/mail/aliases`, or files.

Example 29.3. Example Virtual Domain Mail Map
root@example.com root postmaster@example.com postmaster@noc.example.net @example.com joe

The above example contains a mapping for the domain `example.com`. This file is processed in a first match order. The first item maps `<root@example.com>` to the local mailbox `root`. The second entry maps `<postmaster@example.com>` to the mailbox `postmaster` on the host `noc.example.net`. Finally, if nothing from `example.com` has matched so far, it will match the last mapping, which matches every other mail message addressed to someone at `example.com` to the local mailbox `joe`.

Prev | Up | Next
29.2. Using Electronic Mail | Home | 29.4. Changing the Mail Transfer Agent

This, and other documents, can be downloaded from http://ftp.FreeBSD.org/pub/FreeBSD/doc/

For questions about FreeBSD, read the documentation before contacting <questions@FreeBSD.org>.
For questions about this documentation, e-mail <doc@FreeBSD.org>.