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.
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
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
:
root: localuser ftp-bugs: joe,eric,paul bit.bucket: /dev/null procmail: "|/usr/local/bin/procmail"
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 simply 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(R) 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:
example.com mail.example.com
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.
root@example.com root postmaster@example.com postmaster@noc.example.net @example.com joe
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
.
All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/
Questions that are not answered by the
documentation may be
sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.