I’m exploring some options to see if it’s viable to self host my email account. Currently I have:
- A home server that I can host the entire email stack but I cannot open the SMTP port there
- An AWS account where I can create a VM with SMTP ports open to the internet and reverse DNS support, also I have a domain and AWS SES configured and approved to send emails
Ideally I would want to send and receive from my home server, but that is not possible, so I’m exploring some alternatives:
For receiving emails:
-
Cheap VM with postfix and my home server with dovecot, essentially forwarding all emails to my home server where I want them to be. I don’t know if this setup works tho.
-
Keep everything in a VM, with the downside that I’ll need to do extra work there as it will have all my data. If possible I don’t want to go that route.
For sending emails:
-
Sending from the same VM receiving emails, and have everything managed
-
Use AWS SES to send emails in my behalf
Any input or opinion is appreciated. I’m currently exploring options, I haven’t made any decisions, so if you have a better alternative feel fee to share.
Thanks!
Just passing along what I’ve read many times: that self hosting email can be difficult. Particularly sending, because the large providers tend to treat email from less known sources with more skepticism (such as by marking as spam), even with properly configured SPF and DKIM.
And if your server is down, you may miss any incoming mail for the duration. I don’t know if other providers would try resending after a period of time if the receiver is unreachable, but I doubt it (just an educated guess).
I love self hosting services but email is something I’ve decided not to touch with a ten foot pole.
It’s harder than a beginner would expect, but also not as bad as everybody says. It’s doable and we shouldn’t discourage everybody from trying it (but don’t use it for anything important until you’re sure it works). Just make sure you set up SPF / DKIM / DMARC and rDNS properly and you’ll most likely be fine. If you’re scared or frustrated you can use a relay for send. Receiving is easy.
Just a quick add: even for my self hosted services, I configure Postfix with Mailgun for SMTP relay for alerts and whatnot just to ensure delivery to my external mail provider.
Edit: a few words for clarity
To be fair, the SMTP RFC (5321) says that senders MUST retry sending upon a failure (source), but it only specifies that they SHOULD have a retry of 30 minutes, and an even weaker recommendation to continue to try for 4-5 days before giving up.