You’ve probably heard the warning about how running your own email server is difficult. For many years I’ve ran my own email server, and it is definitely anything but difficult. Spamassassin cleans up the spam, rspamd does the outbound filtering to make sure no accounts have been compromised and are sending spam. I’ve seen people mention the real argument against self-hosting your email is not the fact the email part itself (spam filtering, delivery) is difficult, but setting up the server itself is. Yet again, this is not the case as dozens of systems like iRedMail, Mailcow (Dockerized), Mailinabox, and more all exist and are either free or very cheap.
In my opinion, the hardest part people struggle with is email delivery, specifically not getting dropped by the big 3 email providers (Gmail, Outlook, Yahoo) spam filters. If you attempt to send any email from a residential IP address or any IP that’s on a blacklist, your email will almost always hit the spam filter, making delivery extremely difficult.
While delivery is important, it’s a problem that’s been solved many times over. Specifically, all email servers let you use a outbound relay, one of the popular relays ones being Amazon Simple Email Service (SES), which is also incredibly cheap. In the case of my email server, while it’s colocated and has a dedicated IP address assigned to just email, I don’t send enough emails to warm the IP address up so it’ll be trusted by spam filters and reach the inbox. In my case, a relay like SES, Mailchannels, or Mailcheap is incredibly attractive as they’ve already warmed up the IP addresses and the onboarding process is simple.
If I had to list a Pro/Con for utilizing an email relay, here’s where my head is at:
- Legitimate email is going to hit the inbox
- IPs are warmed up already
- Simple setup of the relay itself
- Systems like SES have a dead-simple onboarding process
- DKIM available with one click of a button (SES)
- There’s usually a cost associated with it (eg, SES is 10c per 1000 outbound emails)
- You run the risk of being disabled by the relay if your system is compromised and sends out spam
- You’re not warming up your own IP addresses
- There’s a cost to run your own mail server (domain, server itself)
In my list, I want to focus on the cons and explain why it’s a con and if there’s a mitigating factor to it, starting with #1:
In most cases, the business you’re using the relay from (eg. Amazon SES) is going to charge a fee for sending emails. This is normal, and in the case of SES which I use, they bill 10 cents per 1,000 outbound emails which is incredibly cheap. I’ll personally never send more than 100 emails per month and Amazon doesn’t take the time to bill you until there is enough to make it worth it. For the past months I’ve been using SES, the only bill I received was when I had incurred $1 in charges. I don’t think they would’ve billed me it either in normal situations, but because I had to renew a domain at the upcoming billing cycle, I’m assuming their system just tacked on that charge as well. Needless to say, if you’ll only send around 1,000 emails or less per year, you could be paying only 10 cents to have them sent.
#2: It should go without saying, but if your account is compromised on your email server and used to send out spam, the relay will terminate your access very quickly to protect their IP reputation. In order to counter this, I personally run rspamd and have all my outbound be passed through it first. It takes some tuning which you can find online, but it’s a very effective way to kill of outbound spam and notify you of it quickly.
#3: You’re not going to be warming up your IP addresses for spending, but, like the other two cons there is a mitigating factor on this one! If you have multiple domains you’re going to be sending from, assign your primary on the relay and use the secondary as the warmup domain, used for things you don’t care if it hits the inbox 100% of the time. That’s an approach I’m taking myself, so if I ever want to disband from the relay, by the time I’m ready to do so my IPs should be fairly warmed up. I follow the SendGrid IP Warmup guideline on the secondary domain whenever possible.
#4: You’re going to have some monthly recurring costs associated with running your own email, and thanks to the incredibly cheap price of servers and domains, it won’t be very much either! You can run your own email server on a VPS at DigitalOcean, Linode, Vultr or even Amazon Lightsail for around $5 per month. The $5 you spend monthly gives you more than enough resources to run an email server and website on it, depending on how you configure your system. Lastly, you’re looking at a annual renewal cost for your custom domain name. For me, I’ve use the .com domain of this very blog, so it comes in at $15 per year with taxes included by my registrar. If you went with the DigitalOcean approach, for example, that would be $60 per year for the VPS and $15 per year for the domain, making it $75 per year in total. Comparing this to GSuite which charges you $7/user/mo in Canada, even with a single user you’re still ahead. GSuite would be $84 per year for one person, if you’re a family of four who want email, that means it’s $28/month or $336 per year for GSuite email hosting. Additionally, the entire stack like GSuite providers (drive, docs, sheets, forms, etc) have many open-source counterparts that are free, like NextCloud replaces that your GSuite Drive.
All-in-all, it’s an affordable approach to running your own email server and I’d recommend this to anyone who wants to take back their privacy & control — starting with their email.