Many years ago when I was doing Lotus Notes and Domino I hosted my own email. The world and the internet was an easier and simpler place. No TLS, no DKIM, no DMARC and almost no spam. Over the years that changed and running and hosting email for me and my family on the family domain became a real chore. I startet charging people and we moved to a commercial Gmail but as it kept increasing in price we looked for other options. In 2023 we all moved to separate Microsoft 365 Family accounts and I added the Forward Email service in front. Instead of charging people they had their own accounts and on Forward Email I could forward email on a per person basis. In theory nice – there is just one problem.
Microsoft 365 Family is really crappy. Crappy service, no custom domain option meaning although you can pseudo-send from your custom domain address once you’ve verified the address there is no DKIM making some email end up in spam. I know Microsoft have commercial accounts with all these features but that would mean paying a premium again. Something had to change.
So last year I started to investigate self hosting again. I started looking into commercial offerings but they are all really expensive once you add a custom domain and a few users. So I made the move – to self hosting. Again.
And how happy I’ve been. Beyond not subsidizing Microsoft, the services are much better and quite easy to host, and with Forward Email in front the others in my family continue to stay in The Matrix. I’ve unplugged myself and my family.
So what’s my setup? Email arrives on Forward Email so that’s where the MX’es point. They do spam checks and does SMTP relay to my server. On my own Ubuntu server I only allow SMTP connections from the published IP’s from Forward Email so not brute force attacks are seen (I started out without IP whitelisting and saw many credential stuffing attempts per day), so I only have valid connections. I still run OpenDKIM, ClamAV and the SpamHaus free DNS checks on my server. Outbound all email is relayed through Forward Email so I have a perfect no-spam score as they maintain and protect the reputation of the IP’s. I sign myself with OpenDKIM but did see some rejection based on IP reputation from my hosting provider so relaying is a perfect option. It also means I could even run the server at home without any problems.
On the server I run Dovecot for IMAP, Sieve (filter by rules etc.) and for submission and Let’s Encrypt provides certs for everything.
All in all it’s a perfect setup and just works. It feels good taking responsibility for my own email again. It has for sure been a learning journey but having ChatGPT help out has made it possible.
The worst part has been creating a solid backup strategy. Worst only because it includes different types of storage, getting it of the server, scheduling etc. but not too bad at the end of the day. I use a script that uses dovecot copy, gzipping and gpg encrypting and then sending to my own storage over Tailscale and to AWS S3. The S3 part is changing soon for Hetzner in the EU.
All the steps are reproducible with Ansible (another learning journey) so moving server is totally doble and have been tested.
With this setup I get far less spam than on Microsoft, it’s better and it’s cheaper. I pay $3 per month for Forward Email (split with the family) and then a flat €5 per month fee for a virtual server on Contabo. And I could even move the server back home if I wanted.
So you can easily host your own email. Liberate yourself.