I am very happy to finally be able to talk a little about the pet project I’ve been hacking on for the past months while backpacking through Australia - https://maskwire.com, and the email service that I always wanted but didn’t exist.
How I’m using email today
I’m not going to talk about reinventing email into some chat messenger or something like that. On the contrary - I think email is great the way it is and I like using it.
But because of spam and usage of my own domain, I developed a pretty efficient strategy to combat spam, by using one-time-use email addresses. In the beginning, I just used stuff like “[email protected]” where *@davemail.io is a wildcard email address that resolves to my main email. Worked great!
I liked this so much that I built my own service that would generate one-time-use emails, but as things go - time to market took way too long and by the time I was ready to launch there were already heaps of other services from Mozilla and more notably, Apple.
As the next iteration, I switched to Fastmail’s “Masked Email” feature, which now spits out a random email address whenever I need one. I liked this system enough that I built a bunch of tools around it: An iOS app, a CLI, a WASM based NPM package among others. So far so good.
I now have a barrage of different domains that are all managed through Cloudflare and Fastmail.
What I am not happy with
In short - email clients. Each client has different capabilities and different quirks, and don’t even get me started on support for wildcard/catch-all emails. It’s garbage.
Ever received an email on [email protected] and want to reply from it? Yeah, you can’t. You gotta open the web interface and if you’re lucky, the service you use supports replying from it (Fastmail does, sometimes). Otherwise - open your client settings, add a new alias for [email protected], and only then can you reply from it.
Swipe actions are another one of my gripes. Sometimes swiping an email in a client like Apple Mail deletes it, sometimes it archives it. Sometimes you can configure it, sometimes you can’t. In Gmail or Samsung Mail you can’t; emails always go to trash. Great.
What if I click on a “contact developer” link in an app? Apple Mail will open with a compose window that has my main email address selected with no option to generate a new custom address just for that case (unless you use Apple’s Hide My Email feature).
Apple Mail, while great, also has the quirk of downloading everything on an IMAP server, so in my case about 50,000 accumulated emails - whoops.
There is so much inconsistency and quirks, it’s just not very productive.
Building the email service I always wanted
Step by step I fixed issues like those mentioned above for myself, but if I have these issues, others may too. So the idea slowly transformed from “a service that generates one-time-use emails” to a service that works on every device and instead enables advanced (sometimes niche) functionality that email clients just can’t provide.
Maskwire works as a transparent IMAP/SMTP server acting in the middle, communicating 1:1 with an upstream server (relaying client commands directly to the provider), but contains a custom message rewriting and remapping engine.
I want to reply from [email protected]? Now I just reply to the email that I received on it in Apple Mail without thinking about it and let Maskwire handle sending that email out from [email protected] again.
I keep deleting emails accidentally by swiping them? Well that’s fixed now too, Maskwire can just rewrite the “move to Trash” command into a “move to Archive” command.
I click on a “contact developer” link and Apple Mail comes up with a compose dialog? I don’t need to care about selecting the correct sender, Maskwire will just rewrite it from [email protected] to [email protected] when the email gets sent out.
Email inbox getting too big? Also no problem, I set up a filter in Maskwire and now only the last 1 month of messages in my archive is getting synchronized to the client, independent of their settings.
I’ve been chipping away on Maskwire and using it on my actual emails for the past weeks while fixing quirks and expanding functionality and I’m very happy that it’s now in a state where I can more openly talk about it and ask people to try it.
What about security? Doesn’t this sound like a recipe for disaster and hacking?
I went through different iterations of different security designs and landed on one that has been the most bulletproof. You still need to provide IMAP/SMTP credentials of your upstream provider (in my case Fastmail) to Maskwire, but upon account creation, Maskwire generates an RSA2048 keypair that is encrypted with the user’s Maskwire.com password.
The public key is then used to encrypt the upstream IMAP/SMTP credentials, which means that Maskwire literally has no way to decrypt those without the password of the private key, which it doesn’t possess.
Instead, when the user authenticates with the Maskwire IMAP/SMTP server, the password used for authenticating will be used to decrypt the private key, which will then decrypt upstream credentials to establish a session, then wiped from memory. Once the user logs out, the system is locked again.
If the user doesn’t login with their email client, Maskwire can’t login either.
Maskwire is open for early beta now
I’ve been using it for a while on my own emails and it’s working great for my use case, but as the only user I’m sure there will be quite a few bugs and things that won’t work yet.
I’d like to open signups to a broader audience and am looking for users willing to try something new. You can sign up at https://maskwire.com - what you will need are IMAP/SMTP credentials and an email provider that you’re using with your own domains.
Please also join the Maskwire Discord, so we can discuss features, bugs and more: https://discord.gg/8QkduyQf8V