Sendmail version 8 ….

November 20, 2010

On the Internet, sendmail is the most popular UNIX based implementation of the Simple Mail Transfer Protocol (SMTP) for transmitting e-mail. When a sendmail server receives e-mail, it attempts to deliver the mail to the intended recipient immediately and, if the recipient is not present, it queues messages for later delivery. However, because it does not provide a mailbox facility and for other reasons, other software such as a POP3 or Internet Message Access Protocol server are also needed. Most Internet service providers (ISPs) provide both an SMTP server (such as sendmail) and a POP or IMAP server.A commercial version of sendmail, called Sendmail, includes a POP3 server and other enhancements to the basic open source sendmail. It also comes in a version that can be installed on a Windows NT operating systems platform.

sendmail (8) is the default Mail Transfer Agent (MTA) in FreeBSD and UNIX. 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

28.3.1 /etc/mail/access

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.

Example 28-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

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.

28.3.2 /etc/mail/aliases

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:

Example 28-2. 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® pipe.

When this file is updated, you need to run make in /etc/mail/ to update the database.

28.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 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.

28.3.4 /etc/mail/sendmail.cf

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.

28.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 28-3. Example Virtual Domain Mail Map

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.

The current version of sendmail is 8.14.4 version. You can download the source and compile it in UNIX by using the make command and alter some of the makefile in the branch tree. The main source of information is the configuration file in sendmail , where it states all the configuration of the sendmail. Here is the sendmail open source website:-



Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: