I started my self-hosting journey a few years ago, and the rule for the services I host is that if it works on my end, it works, period. My email service was the only entity that ever broke that rule. When I set it up, I hoped to get the same win I got from my other projects. It seemed to hold up for a few days, but when I actually used it, it dawned on me that successfully setting up a mail server isn’t the same as getting email delivered. This made me realize why I wouldn’t be self-hosting email again.
Running the server was the easy part
Everything worked until I started relying on it
It took me far less time than I expected to get my Mailcow running on a small VPS. Once I had pointed my MX record at the server, I used Let’s Encrypt to set up TLS, then I added an SPF record (this was something every guide preached). In a single afternoon, mail was flowing between my own accounts. I sent a test from my phone and another from my laptop; both arrived on my phone. At this point, I was convinced email was perfectly set up.
For a few days, it seemed to hold up well. Even looking through the logs, I saw messages accepted and handed off successfully. For every other service I self-host, that’s all the confirmation I need that everything is fine. After all, before hosting email, I had hosted Jellyfin, Nextcloud, Vaultwarden, and a host of other services. Each time, I watched them boot, confirmed they worked, and moved on to other things.
However, for email, the moment of realization came when I tried using it like a real inbox. I replied to a friend’s message, and days later, there was no response. I searched through spam and the typical folders where emails disappear, but there was nothing. Although my reply left my server, it never appeared in the recipient’s inbox.
I had discovered the difference between a mail server that works and an actually usable email account. They are two sides of the same coin.
Trust can’t be self-hosted
A working server still has to earn everyone else’s confidence
When I decided to self-host my mail server, I had no clue that SPF, DKIM, and DMARC don’t deliver your emails. They are email authentication standards that prove you are who you say you are. Even after the receiving server confirms these checks, it may still decide your email has no place in the inbox. Authentication and trust are needed for reliable email delivery, and authentication was the only one I truly controlled.
Trust is a reputation largely built outside your server. A fresh VPS or a residential IP generally has no reputation. It may even be impossible to send outbound mail on port 25 on some ISPs. Setting up reverse DNS often requires opening a support ticket and hoping the person handling it understands. The difference between my setup and established email providers is that they send mail from IP ranges that have years of established sending history. They usually have teams that monitor it around the clock, with the primary goal of maintaining their reputation.
Understanding this asymmetry is the whole story of why email is the one thing I will never host, at least not again:
|
Self-hosting most services |
Self-hosting email |
|---|---|
|
Success depends on your server |
Success depends on other people’s servers too |
|
Mostly affects only you |
Affects everyone you’re trying to reach |
|
Easy to verify locally |
Real success is inbox delivery, not local logs |
|
Problems stay inside your network |
Reputation is decided somewhere you can’t see |
It started becoming clear why I never got a response to the email I sent to my friend. Sadly, this wasn’t a bug I could fix. A server elsewhere had decided it didn’t trust my server yet.
Email isn’t a hobby
One fix, one new responsibility
Once I had discovered the importance of reputation, I tried to fix things. First, I needed to see which recipients were dropping my messages, so I started parsing XML DMARC reports. I also took several weeks to meticulously warm up my fresh IP address by slowly sending email batches to friends whom I could call to rescue the messages from their spam folders. While each of these seemed to help, they also became activities that I needed to keep doing.
Tasks such as renewing certificates, maintaining DKIM keys, and occasionally adjusting spam-scoring rules when legitimate senders get flagged made the activity list larger than I had expected. I also had to check logs regularly, since I didn’t want to risk rebuilding my reputation from scratch if my server were compromised.
This was a growing stack of management that the rest of my home lab never demanded. I host my photos on Immich, and if the service is down for a week, the worst case is a couple of days without access to my photos. I can always fix Nextcloud whenever I have time after a bad update. A bad weekend for your email service isn’t very forgiving. No one who emails me knows or cares if my server is having a day off. It needed too much babysitting, and that took away the fun of self-hosting.
Email is the only exception I’m happy to make
It finally clicked why people warn against self-hosting email. However, I still keep my domain. I only route mail through third parties. While still maintaining my own address and domain, I avoid most of the reputation-related trouble. You could use services such as Proton Mail and PurelyMail if you are weighing the same tradeoff to keep your domain without battling deliverability.
I’m still a homelabber, but I have drawn a line. I’ll never host a mail server again.