The first question is… why? Why host your own email? The answer for me is control.
Emails are almost considered a foundational part of your digital identity. You need an email to create an account anywhere around the internet. The email is what ties most of your digital identity to your real person. It is paramount that you have full ownership over your own email.
However, emails are notoriously difficult to setup. I was able to build my own email with this resource, but even so, a quick glance through the overview page will cause you to sit down for an afternoon to really understand how different components come together to allow for the simple act of receiving and sending emails. I spent many weeks reading through the entire tutorial to try to grok it. Even though I knew how to host this blog, I must confess that I was really lost throughout this whole tutorial. Emails really are a wholly different beast.
Emails are complicated because it is not one thing, but a collection of software and protocols. There is the mail server that talks with other mail servers via SMTP, and an email client that talks with my mail server via IMAP or POP3. Within the mail server is a database of email addresses, aliases and the associated passwords, and also the directory to store the actual email files. Each of the protocols and functions are governed by specific software. Postfix will handle SMTP stuff. Dovecot is a magical do-it-all software. It handles authentication (by hooking up with the MySQL database), handles the actual email files on disk, and talks with the client via IMAP or POP3. There is also Spamassassin that handles incoming spam emails. Postfix and Dovecot must work together seamlessly for the whole operation to work, and as such their configs are non-trivial.
As if it wasn’t complicated enough, a barebones email service will not work with modern email systems like Gmail, Outlook or any other reputable email service. You have to enable a myriad of verification schemes for your email to be trusted enough to even be received by such such services. These services won’t even allow your mail to be received into the Spam folder if there’s a slight misconfig in your security settings.
It is extremely tempting to just use Gmail. If I really had no time, I would just use a Gmail account and get on with life. But just taking the time to sit down and configure this email service has allowed me to see an email service for what it truly is: a collection of software and protocols. There is nothing mysterious about it, but it is difficult. I do not have to be at the mercy of the terms and conditions of whatever email provider I use. I do not have to relearn their web-interface when they undergo their once-in-a-few-year refresh. I do not have to be constrained by their web interface to do anything (web interfaces are slooooow). Truth be told, most of my gripes with modern email services are their web front-ends. You can just use their IMAP and SMTP addresses and use a local client with these services as the back-end. But the most important part of hosting your own mail is that the email files are safe from the prying eyes of the big data firms.
An alternative would be to use a privacy-focused email service. I have been using Tutanota and its web-based client is extremely slow. Tutanota also doesn’t cache searches, so simple searches will take tens of seconds. Also, my user accounts in various services were disabled because their system has a global flag on all tutanota accounts.
Another popular privacy-oriented email service is ProtonMail. From what I know, Protonmail offers an IMAP option. But given their track-record I would trust them with the same trust I have for Google (none).
The state of email services is really disappointing. However, by creating an email service that is simple enough for my uses, I can guarantee control, privacy and speed.