Setting up email in Mastodon using an external SMTP server

This is how I got Mastodon to use an external SMTP server to deliver outgoing mail.

I received lots of errors such as ”WARN: Net::SMTPFatalError: 550 Bad HELO – Host impersonating domain name [hingst.net]”, which resulted in zero emails being sent. I solved it by adding my server’s IP to a TXT record for my domain (in the DNS settings at my domain provider), looking something like,

v=spf1 a mx ip4:123.123.123.123 ~all

so that we let that server send mail through our domain name. Then we add this to the .env.production file on the Mastodon server:

SMTP_SERVER=smtp.example.com
SMTP_PORT=465
SMTP_LOGIN=mastodon@example.com
SMTP_PASSWORD=long_password
SMTP_AUTH_METHOD=plain
SMTP_SSL=true
SMTP_ENABLE_STARTTLS_AUTO=true
SMTP_OPENSSL_VERIFY_MODE=none
SMTP_FROM_ADDRESS=mastodon@example.com
SMTP_DELIVERY_METHOD=smtp
SMTP_DOMAIN=localhost

After reloading the Mastodon services it should work.

systemctl restart mastodon-sidekiq
systemctl reload mastodon-web

Done!

This setup worked for me. Might not work for you.

At first I thought SMTP_DOMAIN should be set to the same domain that the Mastodon instance is on (in my case SMTP_DOMAIN=hingst.net), but that did not work. I instead had to set it to localhost, which resulted in all my emails coming through and not ending up in spam 🙂

Edits:
2022-12-20: Clarified the TXT record part

Lämna en kommentar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *