Due to the popularity of Gmail, Google Apps, Outlook.com, Yahoo! Mail & a myriad of other providers, many cloud-server users mistakenly fail to install a mail server, initially. However, humans are not the only ones that send electronic mail. If fact, many Linux server applications also need to send email.
A Message Transfer Agent, or Mail Transfer Agent, transfers electronic mail messages from one computer to another. An MTA implements both the client (sending) and server (receiving) portions of the Simple Mail Transfer Protocol (SMTP).
Another popular MTA is Postfix, but users that do not require a full-fledged mail server prefer the Exim send-only mail server because it is lightweight, compared to other MTAs. Thus, Exim is a good choice for WordPress installations or server-monitoring apps that need to send email notifications.
This guide assumes that you have already:
- Set your droplet's hostname and Fully Qualified Domain Name (FQDN). See Setting the Hostname & Fully Qualified Domain Name (FQDN) on Ubuntu 12.04;
- Created the necessary DNS records. See How to Set Up a Host Name with DigitalOcean; and
- Created an
SPF record
. See How To use an SPF Record to Prevent Spoofing & Improve E-mail Reliability.
First, you want to update the software packages already on your server; by executing:
sudo apt-get update && sudo apt-get -y upgrade && sudo apt-get -y dist-upgrade && sudo apt-get -y autoremove
Then, to install Exim and its dependencies, execute:
sudo apt-get -y install exim4
To configure Exim for your environment, execute:
sudo dpkg-reconfigure exim4-config
and configure everything according to your needs. If you ever need to modify any of your settings, simply re-run the configuration wizard.
The first configuration window you encounter will ask you to select the "mail server configuration type that best meets your needs." If not already highlighted, use the arrow keys on your keyboard to select internet site; mail is sent and received directly using SMTP
:
Next, tap the Tab
key (to highlight <Ok>
) and press Enter
.
The next configuration window you'll encounter will ask that you enter your system's fully qualified domain name (FQDN) in the mail name
configuration screen. Type (obviously, substituting hostname
, yourdomain
& tld
with your own values):
hostname.yourdomain.tld
Next, tap the Tab
key (to highlight <Ok>
) and press Enter
.
The ensuing configuration window will ask you to decide on which interfaces you would like Exim
to "listen." Enter:
127.0.0.1
Note: DigitalOcean anticipates IPv6 support in the near future; at which time, you may want to instruct Exim
to listen on both 127.0.0.1; ::1
.
Next, tap the Tab
key (to highlight <Ok>
) and press Enter
.
The configuration prompt that follows will ask that you enter all of the destinations for which Exim
should accept mail. List your:
- FQDN;
- local hostname;
localhost.localdomain
;localhost
Next, tap the Tab
key (to highlight <Ok>
) and press Enter
.
Advanced configurations beyond the scope of this article allow you to use Exim
as a relay mail server. In the next screen, leave the relay mail
field blank.
Tap the Tab
key (to highlight <Ok>
) and press Enter
.
The subsequent screen is a follow-up to the relay-mail-server option. Leave this window blank and tap the Tab
key (to highlight <Ok>
) and press Enter
.
Select No when asked whether to keep DNS queries to a minimum.
Make sure that <No>
is highlighted and press Enter
.
In the window that follows, choose whichever mail delivery method you'd like for incoming mail; although the Maildir format
can make handling individual, locally-delivered mail messages easier:
Next, tap the Tab
key (to highlight <Ok>
) and press Enter
.
In the ensuing prompt, choose the (default) unsplit
configuration file, by selecting No
.
Make sure that <No>
is highlighted and press Enter
.
In the last configuration window, you'll be asked to specify postmaster mail recipients, enter (substituting you
, yourdomain
& tld
with your own values):
root [email protected]
Note: Make sure that, in addition to root
, you enter at least one external email address (choose one that you check frequently).
Send a test email, to make sure everything is configured correctly, by issuing the following command: (substituting [email protected]
for a valid, external email address):
echo "This is a test." | mail -s Testing [email protected]
Note: You may need check the recipient's SPAM folder, in the event that the SPF record
is not configured correctly.
As always, if you need help with the steps outlined in this How-To, look to the DigitalOcean Community for assistance by posing your question(s), below.