Migrating email from Proton Mail to MXRoute

Sat Oct 01 2022

With an estimated 320 billion emails sent and received in 2021, using the right email provider is critical. Which is why I recently made a big change.

Migrating email from Proton Mail to MXRoute
Disclaimer: I am not affiliated with any of the brands or products in this blog post, and all opinions in this article are my own.

This blog post is about my decision to migrate my personal email away from Proton Mail to an email provider called MXRoute. It explains my rationale, some of my learnings over the past few years with Proton Mail, and some tips and tricks if you're considering a similar migration.

Proton Mail

I have been a happy Proton Mail customer since 2020, first signing up for their free tier in October before converting to a paid plan so I could use a custom domain with a Black Friday promo code a month later. The first year cost me $39, rising to $48 when it renewed a year later.

Proton Mail has built a reputation as a secure, private email provider. They recently rebranded to just Proton to reflect the broad range of products they now offer - cloud storage, a VPN and calendar.

Email is an inherently insecure communication method, and attempting to secure it comes at a cost - in this case, both financial and convenience. While I have a strong preference to keep my email as secure and private as possible, I'm also clear about my threat model - I'm not an investigative journalist, activist or other individual demanding the zero-trust security model that Proton provides for fear of harassment or worse.

There were ultimately a few reasons I decided to begin my search for a new email provider:

  1. Proton's product offering was diverging away from email towards other product areas that added no value to me, yet I was paying for as part of my subscription under their new pricing model;
  2. Due to their zero-trust security model, you cannot access your emails via simple IMAP and SMTP, but have to use the Proton Bridge on desktop clients, and a separate Proton Mail app on mobile clients - particularly on mobile, it was frustrating to not have all my emails in one place;
  3. My Proton plan limits me to a single custom domain and upgrading to a plan that supports more would cost more money - increasingly I wanted the ability to add multiple domains (see the SimpleLogin section later).

Knowing that my annual renewal is just a couple of months away, I decided to review my options.

The second issue above, the requirement to use a separate mobile client, was my biggest daily gripe. In looking for solutions to that I considered self-hosting a Proton Bridge instance that my mobile clients could connect to, and in the course of that research stumbled upon a GitHub issue.

I'll let you make up your own mind about how that's being handled (still unresolved at the time of writing this), but for me it just highlighted how my core email workflow was not well aligned with the approach that Proton is taking.

I do want to be clear - I love what Proton are doing and I would have no hesitation recommending them to people who truly need secure, private email. But, after 2 years, I had come to realize it's not the right fit for me.

Choosing an email provider

While I prefer to self-host as many of the core services we use as possible, email is often held as an example of one that nowadays just isn't practical to self-host.

Self-Hosted Podcast: Adventurous Build (Episode 53)

This week I was invited to join Self-Hosted show hosts Chris Fisher and Alex Kretzschmar to talk about my experience with self-hosting  in the RV.

Self-Hosted Podcast: Adventurous Build (Episode 53)

Like it or not, email has converted to a highly centralized model with several big players (Google's Gmail and Microsoft's Outlook) dominating the field. While technically spinning up a self-hosted mail server is fairly trivial, the reality is that without extreme care and constant attention there's a good chance your emails will end up in spam - and even with all that work, there's still no guarantee!

So I turned to the self-hosted community to investigate my options. My requirements were:

  1. Avoid big tech companies who at best will just further centralize email, and at worst will actively mine your email for advertising purposes;
  2. Support multiple custom domains;
  3. Allow direct use of IMAP and SMTP - and hence regular email clients.

Several options arose, with the top contenders being Mailfence, Fastmail and MXRoute.

Mailfence

At first glance, Mailfence appears to offer the impossible - managed, encrypted emails with regular IMAP and SMTP access. However, not all is quite as it first appears - while they do offer encrypted email support, this is done via their web interface and is not supported via IMAP (well, unless you handle all the PGP yourself, which my mobile client doesn't support).

And while their cheapest €2.50/month tier includes a custom domain, I was put off by the restrictive number of aliases they support (10) - it just seems like an unnecessary restriction.

While it's not for me, I do really like the fact that they openly talk about their threat model - what Mailfence is good for, and what it's not. Certainly an option to investigate if you're considering a new provider and your requirements aren't the same as mine.

Fastmail

One of the most popular options seemed to be Fastmail, and people I spoke with are generally very happy with them. They certainly checked a lot of my requirements, although to use a custom domain with them requires bumping up from the $3/month Basic plan to the $5/month Standard plan. It's also not clear from their website whether they only allow a single domain or multiple within that.

In the end I ruled them out for two reasons. First, the lack of clarity around number of custom domains, but secondly and more importantly, alignment - as with Proton, their value proposition is about broadening their product range beyond email to calendars, contacts and more. I just want email.

MXRoute

MXRoute was launched by Jarland Donnell and Ryan Arp back in 2013 as a low-cost, no-frills alternative to the big providers like Google's Gmail product.

MXRoute is not like other email providers.

First, it's an unashamedly technical product. Don't expect a beginner-friendly, carefully-crafted UI that will hold your hand through the setup process. Instead, it's targeted squarely at technical users who are comfortable configuring DNS records, and managing low-level aspects of email hosting. Fine by me!

Second, they have a no-bullshit approach to their product. For example, they have a policy of absolutely no refunds. But they also have a policy of no trial periods either, and an almost non-existent pre-sales process:

It has been noticed by many, and to their frustration, that we make it difficult (if not impossible) to reach out for a presales conversation. The truth is, this is intentional....This to say, if you’re on the fence and talking to us is the only way you’ll consider purchasing MXroute, you are on a path with a nearly 0% conversion rate.

While this felt a little abrasive at first, the more I read, the more I understood. Email hosting is a cost-sensitive business, and to keep costs low they need to minimize overheads - particularly support. If you can't figure things out yourself based on their documentation, you're going to cost them more than they make so they'd simply rather not have you as a customer.

In return, they offer a single focus - email deliverability - and to help ensure this, they have a brutally strict policy against marketing emails:

Do you allow marketing emails?No and please go away.

I think what stood out to me most though was their pricing model. Because it's a technical product, they charge for things that cost them money on a technical basis. For example, storage costs money so you have to pay more if you want more storage, but custom domains, mailboxes and aliases are essentially zero-cost to them, so they're unlimited (within reason) to the customer.

As I researched more, reading all their documentation, FAQs, reviews and forum posts from the owner on LowEndTalk, it became clear to me that MXRoute was exactly what I wanted - a low-cost, no-frills, no-BS, highly focused email provider run as a small operation for technical users.

I was sold - I signed up for an account, followed the instructions in the onboarding email, and within no time at all had an account set up. Once I had the mailboxes configured, I switched DNS over so I'd begin receiving emails.

Migrating emails with imapsync

I decided to go all-in with MXRoute, and that meant migrating my existing emails over. As well as my Proton Mail account, I also have an old Gmail account that I haven't used for 2 years, but nonetheless has old archived email in that I still occasionally need to refer to. I wanted to migrate both of these email accounts over to MXRoute.

The MXRoute documentation directed me towards some software called imapsync, and after reading through the documentation it was simple to get started. I began by importing my Gmail account, using the following command:

imapsync --gmail1 --user1 <my_gmail_address> --passfile1 /path/to/gmail-password.txt --host2 <mxroute_mail_host> --user2 <my_email_address> --passfile2 /path/to/mxroute-password.txt

To make that work I had to configure IMAP access for Gmail and create a temporary app password. The imapsync documentation gives guidance on how to do this.

For whatever reason, I did find that the program kept exiting early on MacOS, so I ended up using the gilleslamiral/imapsync Docker image and running it on my Linux server that way. This worked out great because migrating all my emails took over 12 hours, so by running it on the server I didn't have to leave my laptop running overnight.

Migrating my Proton emails over was a similarly simple affair, with two caveats:

  1. Because the only IMAP access available is via the Proton Bridge, I had to run this locally on my MacBook Pro where Proton Bridge was running;
  2. Proton creates an All Mail virtual folder which essentially replicates all your email so I excluded this from the migration.

My final imapsync command was:

imapsync --host1 127.0.0.1 --port1 1143 --user1 <my_email_address> --passfile1 /path/to/proton-password.txt --host2 <mxroute_mail_server> --user2 <my_email_address> --passfile2 /path/to/mxroute-password.txt --automap --exclude "All Mail" --folderlast "Archive"

I had the same issue with the script sometimes exiting early, but it picks up from where it left off and my Proton mailbox is fairly small (~200MB) so this transfer was much quicker.

Downgrading Proton Mail

As far as I can tell, there's no way to tell Proton not to auto-renew your plan. Instead, the only way I could find to avoid paying for another year was to downgrade my account to the free plan.

Important: Do not downgrade your Proton plan until you're completely finished!

I almost made a big mistake here. Keen to make sure I didn't forget to downgrade the Proton account, I did it as soon as I had migrated my emails. What I hadn't realized is that free Proton accounts don't have access to either Proton Bridge or the Proton Import / Export Tool.

Fortunately I had already migrated my emails, but I had been hoping to do an archive export as well. Once you downgrade your plan it happens with immediate effect and there's no going back - your remaining balance is returned to you as account credits, so the only option would be to sign up for another year!

No more SimpleLogin

For almost 2 years I've been using a product called SimpleLogin. This acts as an email gateway, allowing me to very quickly and easily configure a large number of email aliases and point them all back at a single mailbox. A big advantage of SimpleLogin is that not only can you receive emails from these aliases, but you can also send them too

For example, I give any company I deal with a unique email address - e.g. amazon@mydomain.com. If that company decides to start spamming me, I can simply block that alias, and if my email address is leaked, not only can I see which alias was leaked (and hence which company), but I can also shut the alias off and stop the spam. Plus, it prevents (or makes it more difficult to try) correlating my identity using my email address against multiple data sources.

SimpleLogin offers a hosted product for $4/month or $30/year, and some Proton plans now include it for free since it was acquired by them earlier this year, but I chose the free, self-hosted option.

In the time I've been using SimpleLogin, I've learned several things:

  1. I've only had to block one alias, and that's only rejected 8 emails in the past 8 months (BART EZRider in California will not stop emailing me to tell me my credit card has expired - yes, I know, and you're not having my new one!);
  2. I very rarely need to send from one of these aliases (I typically give real people my main email address), but when I do it often fails since outbound mail from SimpleLogin comes from my VPS whose IP address is rejected by Google (and probably others);
  3. I get zero unsolicited email on my custom domain. Literally zero. I have SimpleLogin set up to automatically create an alias when it receives a new email (essentially a curated catch-all) and I haven't received a single piece of email from a company I didn't sign up for;
  4. The way SimpleLogin works it has to rewrite the From email address (e.g. "GitHub - noreply at github.com") on inbound mail, and for some reason this really bugs me. It just makes skimming through my inbox much harder to read.

With MXRoute I now had an SMTP server I could use to solve issue #2 above, but when I looked at the pros and cons of SimpleLogin, I decided it wasn't adding much value to me. As I said with Proton earlier, I think SimpleLogin is a great product and for a lot of people I'm sure it adds a lot of value. Just not for me.

So instead I simply created a catch-all on my custom domain on MXRoute, and all email lands there. On the very rare occasion I need to send email from one of my aliases, it's a trivially quick operation to create a new identity and send from that.

MXRoute offers good configurability of mail filtering rules using Spam Assassin so if I do find I start getting spam, I can configure the rules myself - e.g. trivially blocking one or more inbound email addresses or senders.

Summary

It's been about a week since I made this transition, and so far I'm really impressed. Out of curiosity, I jumped onto the MXRoute chat and support system (which runs on Matrix - very cool!) and was impressed to see Jarland (the owner) active and engaged on there.

MXRoute absolutely isn't the right choice for everyone, and they're very up-front about that. But if, like me, you're technically inclined and want a no-frills, highly-configurable, fairly priced email provider with an unashamedly narrow focus on email deliverability above all else, I would recommend checking them out.

Photo by Brett Jordan on Unsplash

Previous postWe have electricity!Next postWinter plans 2022