Email relay using mailgun

Configuring Mailgun as a mail relay allows Postfix to forward emails destined for remote delivery.

Connect to your instance using SSH

Install the Postfix Mail Transport Agent. When prompted, accept the default choices for domain names but select the Local Only configuration.

apt-get update && apt-get install postfix libsasl2-modules -y

Modify the Postfix configuration options. Postfix configuration options are set in the main.cf file. Open the file with the text editor of your choice:

nano /etc/postfix/main.cf

If they exist, comment out the following lines:

# default_transport = error
# relay_transport = error

Add the Mailgun SMTP service by adding the following line to the end of the file:

relayhost = [smtp.mailgun.org]:2525

Note: You must use port 2525, as port 25 is not allowed on any plan.

Next, add the following lines to enforce SSL/TLS support and to configure STMP authentication for these requests.

A simple access and security layer (SASL) module handle authentication in the Postfix configuration. Add the following lines to the end of the file:

smtp_tls_security_level = encrypt
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous

Save your changes and close the file.

Generate the SASL password map:

touch /etc/postfix/sasl_passwd

Use the postmap utility to generate a .db file:

postmap /etc/postfix/sasl_passwd
ls -l /etc/postfix/sasl_passwd*

Next, remove the file containing your credentials as it is no longer needed:

rm /etc/postfix/sasl_passwd

Set the permissions on your .db file:

chmod 600 /etc/postfix/sasl_passwd.db
ls -la /etc/postfix/sasl_passwd.db

Finally, reload your configuration to load the modified parameters:

/etc/init.d/postfix restart

Test your configuration. Install the mailx or mailutils package and test your configuration.

apt-get install mailutils -y

Send a test message:

echo 'Test passed.' | mail -s Test-Email [email protected]

Look in your systems logs for a status line containing status and the successful server response code (250):

tail -n 5 /var/log/syslog

For more detailed examples and information about many other topics including tracking and routing messages, read the Mailgun documentation.

Still need help? Contact Us Contact Us