Not having to manage an email server is awesome, thank you Mailgun. I am currently integrating with Digital Ocean and ran into some documentation confusion with DNS records, especially when trying to configure for a subdomain.
Note that all links to Digital Ocean are using my referral link.
If you are setting up your account directly against your domain, then things are a bit easier (and the instructions work a little more as expected). If you are setting up against a subdomain, skim this section as the subdomain instructions are a bit different.
I wanted to provide my view of how to get things configured should the shorthand editor in Digital Ocean change between now and when you are reading me.
This is what the Zone file looks like to confirm mydomain.com for sending and receiving emails using Mailgun.
$ORIGIN mydomain.com. $TTL 1800 mydomain.com. IN SOA ns1.digitalocean.com. hostmaster.mydomain.com. 123412341234 10800 3600 604800 1800 mydomain.com. 1800 IN NS ns1.digitalocean.com. mydomain.com. 1800 IN NS ns2.digitalocean.com. mydomain.com. 1800 IN NS ns3.digitalocean.com. mydomain.com. 1800 IN A 10.20.30.40 mydomain.com. 1800 IN MX 10 mxa.mailgun.org. mydomain.com. 1800 IN MX 10 mxb.mailgun.org. mydomain.com. 1800 IN TXT “v=spf1 include:mailgun.org ~all” k1._domainkey.mydomain.com. 1800 IN TXT “k=rsa; p=ABC1234+DEF/aSDF@!#$/FWAEF” email.mydomain.com. 1800 IN CNAME mailgun.org.
Please note that 10.20.30.40 is the IP address of your droplet and NOT that provided by mailgun.
If you want to keep your primary domain free and clear from Mailgun, you might consider setting up a subdomain to route all email through.
Please note that in this example I have NOT configured the MX records, and you will not be able to receive emails. This is because at the moment Digital Ocean does not directly support subdomain MX records. If you do configure your MX records, your account will still show as active, but the MX records will not be configured as you expect in Mailgun.
This is what the Zone file looks like to confirm mydomain.ca with a sub domain of mg.mydomain.ca for sending emails using Mailgun.
$ORIGIN mydomain.ca. $TTL 1800 mydomain.ca. IN SOA ns1.digitalocean.com. hostmaster.mydomain.ca. 123412341234 10800 3600 604800 1800 mydomain.ca. 1800 IN NS ns1.digitalocean.com. mydomain.ca. 1800 IN NS ns2.digitalocean.com. mydomain.ca. 1800 IN NS ns3.digitalocean.com. mg.mydomain.ca. 1800 IN A 220.127.116.11 mydomain.ca. 1800 IN A 10.20.30.40 mg.mydomain.ca. 1800 IN TXT “v=spf1 include:mailgun.org ~all” pic._domainkey.mg.mydomain.ca. 1800 IN TXT “k=rsa; p=MIGfMA0GCSqGSASDFASDFASDFBiQKBgQC+v78XOweoD+JGrE8STwHLQaxX310gDHAgK2IaJ/TEGZ4GS5xr/sb/AxX+crzEkMDp9e58PASDFASDFASDFASDFASDFQ9r4I/ni3LDC+ORkBzzmy3syU7UKCN3fRKPba4d8fvIE/GvqTGnuJuwDeLZ8lJfIfwIDAQAB” email.mg.mydomain.ca. 1800 IN CNAME mailgun.org.
Here’s what you need to change for your specific configuration
If you wish to receive emails from mg.mydomain.com, then you have a little bit more work to do.
First, you will need to create an entirely new domain for your subdomain in Digital Ocean
The IP address of 18.104.22.168 should that from Mailgun and NOT your droplet’s IP. Here is what the records will look like in editor.
In the above the 22.214.171.124 IP address is the one provided by Mailgun, and NOT your DigitalOcean droplet. Once those settings propagate you should be able to receive emails from @mg.mydomain.com.
Do not copy and paste anything from this post, and instead use the values provided by Mailgun.