sendmail(8) is the default Mail Transfer Agent (MTA) in FreeBSD. sendmail's job is to accept mail from Mail User Agents (MUA) and deliver it to the appropriate mailer as defined by its configuration file. sendmail can also accept network connections and deliver mail to local mailboxes or deliver it to another program.
sendmail uses the following configuration files:
| 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 |
The access database defines what 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, RELAY or simply
passed to sendmail's error
handling routine with a given mailer error. Hosts that
are listed as OK, which is the default,
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 have the RELAY
option for their hostname are allowed to send mail for any
destination through this mail server.
In this example we have five entries. Mail senders that
match the left hand 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 printed to the remote
host when a mail matches the left hand side of the table.
The next entry rejects mail from a specific host on the
Internet, another.source.of.spam. The next
entry accepts mail connections from a host okay.cyberspammer.com, which is
more exact than the cyberspammer.com line above.
More specific matches override less exact matches. The last
entry allows relaying of electronic mail from hosts with an
IP address that begins with 128.32. These
hosts would be able to send mail through this mail server
that are destined for other mail servers.
When this file is updated, you need to run
make in /etc/mail/
to update the database.
The aliases database contains a list of virtual mailboxes
that are expanded to other user(s), files, programs or other
aliases. Here are a few examples that can be used in
/etc/mail/aliases:
The file format is simple; the mailbox name on the left
side of the colon is expanded to the target(s) on the right.
The first example expands the mailbox
root to the mailbox
localuser, which is then looked up again
in the aliases database. If no match is found, then the
message is delivered to the local user
localuser. The next example shows a
mail list. Mail to the mailbox ftp-bugs
is expanded to the three local mailboxes
joe, eric, and
paul. Note that a remote mailbox could
be specified as <user@example.com>. The next
example shows writing mail to a file, in this case
/dev/null. The last example shows
sending mail to a program, in this case the mail message is
written to the standard input of
/usr/local/bin/procmail through a UNIX®
pipe.
When this file is updated, you need to run
make in /etc/mail/
to update the database.
This is a list of hostnames sendmail(8) is to accept
as the local host name. Place any domains or hosts that
sendmail is to be receiving mail
for. For example, if this mail server was to accept mail for
the domain example.com and
the host mail.example.com, its
local-host-names might look something
like this:
When this file is updated, sendmail(8) needs to be restarted to read the changes.
sendmail's master configuration
file, sendmail.cf controls the overall
behavior of sendmail, including
everything from rewriting e-mail addresses to printing rejection
messages to remote mail servers. Naturally, with such a diverse
role, this configuration file is quite complex and its details
are a bit out of the scope of this section. 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.
Please see
/usr/src/contrib/sendmail/cf/README for
some of the details.
When changes to this file are made, sendmail needs to be restarted for the changes to take effect.
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.
In the above example, we have a mapping for a domain
example.com. This file
is processed in a first match order down the file. The first
item maps <root@example.com> to the local mailbox
root. The next 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. This will
be mapped to the local mailbox
joe.
This, and other documents, can be downloaded from ftp://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>.