For many people who are uncomfortable with Gmail, the reasonable option would be something like Proton, Tuta, or one of the other privacy providers that have spent the last few years advertising to exactly this feeling. These privacy providers are built around encrypted mailbox storage, and their business model does not depend on your data. That does not mean every email sent to an outside provider is automatically end-to-end encrypted by default, but it is still a substantially different privacy model.
If this were the Privacy and Reliability Stack series, I would be telling you all about how I switched to one of them. But this is the Autonomous Stack series. To live up to the name of the series, leaving one internet landlord for a better internet landlord did not feel like sovereigntymaxxing.
Many paid email providers will host your own domain, and even though having your first you@yournamehere.com address feels like independence, the domain is the most portable part. The mailbox part is less so. When you use any email provider, your mail lives on their drives, and getting it out means some form of export, only to import it somewhere else again. And you had better hope they do not lose it or decide you cannot access it anymore. Proton and Tuta both support custom domains, but that does not make the mailbox itself portable in the same way as the domain.
I had twenty-one years of email that I did not want to lose, or keep migrating whenever the "better landlord" did landlord things. And the landlords keep expanding. Private mail now comes with a drive, a VPN, a password manager and, as of late, AI assistants. You are not just choosing an inbox. You are being sold an ecosystem, which is exactly the kind of codependency I am wary of.
But I am not going to pretend this is not the best available choice for many people, nor recommend that people do as I do. This series comes with an implicit "Do Not Try This At Home" warning, and I'm going to FA just to FO and tell you about it. However, as unreasonable as I was willing to be, there was one aspect holding me back from fully hosting my own mail infrastructure.
As the story goes, email is the great survivor: an open, federated protocol that has outlasted decades of attempts to replace it. It is the one corner of the internet where anyone can, in principle, run their own server and reach everyone else's. On paper, that is. In practice, deliverability has become heavily mediated. Reputation systems now sit in front of every large inbox and decide whose mail is allowed to land, and those systems are opaque by design.
A new sending domain or IP starts without an established reputation. Its mail can be deferred, filed as spam, or refused, and the decision-making systems behind those outcomes are not public. Good configuration matters, and so do protocols such as SPF, DKIM, and DMARC, but they are no guarantee your mail will be delivered. You can do everything right and still not be trusted.
This asymmetry is a genuinely hard problem: any system that made it easier for independent operators to send mail would also make it easier for spammers. It also just happens that this very asymmetry favours the incumbents. This bothers me because the protocol did not fail, but the ecosystem was captured. But it is not a hill I was willing to die on at this stage of the project.
A common refrain in digital sovereignty debates is that "sovereignty is not autarky." Put differently: you can make your own choices without isolating yourself. Email as a protocol is not broken; I can receive email to my heart's content. Sending email reliably, though, would have taken a lot of effort and a lot of pain. So I split the task along that line.
I kept the mailbox.
It runs on my own server. I chose software called Stalwart: a single program, written in Rust, that handles receiving, filtering, and storing email all at once. The traditional way is to bolt three separate pieces of software together. For my small deployment, Stalwart is one service to run and one storage setup to back up, and I like Rust, so I was willing to risk it with a newer piece of software.
For sending mail, I found an external mail service called Migadu. My mail server hands outgoing messages to it, and Migadu sends them through established mail infrastructure rather than through a fresh server IP I would have to operate and build trust around myself. Migadu is a full mail host, but I only need SMTP delivery from them. They seemed reliable, and the price worked especially well for my use case. The plan does come with a strict daily limit, but I rarely send more than ten emails per day.
Finally, if I am ever unhappy with Migadu, switching to another relay should be much easier than moving the mailbox itself. My outbound mail still passes through a company, but I think of them less as landlords and more like the post office. One day, I may decide I no longer need friends or hobbies and tackle the complexity of sending mail myself. But until that day comes, trading off complexity for dependence seems to be worth it.
The actual migration from Gmail and the Stalwart setup were still plenty of work. I will not bore you with the details, but I ended up duplicating half my mail and had to write a script to fix it. It also took some time to rebuild my filters and folder structure (I will write about this later in the series) and it took me months of tweaking things to figure out why some emails appeared on my mobile app but not on my desktop. (Spoiler alert: It turned out to be a Thunderbird quirk.)
I now own my mail, but I still cannot be trusted to send it. Yet this was a major milestone: the Autonomous Stack has now become a load-bearing part of my life.
This is part of the Autonomous Stack series, documenting my migration from proprietary services to self-hosted infrastructure.
Previously: Laying the First Stones.
Next: Something about Monitoring, probably.