raphting.dev

Modern email is CRM

Using email for private communication is almost dead. Chat applications are much easier to use securely. End-to-end encryption is usually implemented well and without much confusion for the user. I think it is safe to say that reliably encrypted messaging works best over chat applications.

Modern email is mainly used for B2C communication. Businesses send invoices, subscription confirmations, offers and newsletters. It is basically a log book for the most important interactions with a business. Whenever I need to look up business communication, I search my mailbox archive first. I need my email client to be a content resource manager for email.

For me, this creates an interesting view on how I see my email client. I expect to see communication from businesses, spammers, and friends, in this order. That means archiving, searching and filtering emails come first, then some sort of reasonable spam filtering. The communication with friends is rather short-lived and concerns travel or event tickets, or a file that I rather download than keeping in my email archive forever.

Sovereign, Self-hosted Email

I see all this in the light of email sovereignty. I want to run my own email backend with IMAP (maybe JMAP in the future), SMTP submission, encryption at rest and observable spam filtering that works predictably rather than black-boxy. It puzzles me that when I mark an email as spam with my current mailbox software, the same sender address gets to my inbox again and again.

I need spam filtering to work at the email backend. Filtering rules do not sync between different email clients. Mainly I need to prioritize known senders over all other senders.

What I build to solve this

Here’s what I am working on: An email backend that stores emails encrypted at rest. It serves IMAP (and JMAP in the future) which is powerful enough to do searching and filtering and instructing the email backend which sender addresses I allow, and which I want to block forever.

I call this the “Gatekeeper”. Known senders go straight to the Inbox. Unknown senders go to the “Gatekeeper” folder, which should be reviewed once in a while. When I delete or move an email from there, the sender ends up in the allow list. When I mark a message as spam, I block this sender forever. DKIM is a great helper to verify the authenticity of a sender address.

Currently, even spam ends up in my Inbox and legitimate mails end up in the spam folder. I need to review both folders, with slightly different signal-to-noise ratios. What I want is one “Gatekeeper” folder I can review. It will be a mix of spam and legitimate email. Therefore, once I sorted through the folder, those senders are allowed or blocked forever, and will not show up in the “Gatekeeper” anymore.

Backend only

When I say “email backend”, I indeed speak about something that is not exposed to the public internet. SMTP communication from and to port 25 requires much more careful calibration. I already built a powerful tool as an EU sovereign email gateway. https://p25.dev cannot only send emails on your behalf, it can also receive emails for your domains and forward them to your self-hosted email server. It really solves deliverability issues from self-hosted email instances, and it truly allows for self-hosting emails at home.

I hope what you read about this new “email backend” sounds as exciting to you as it sounds to me! Developing it requires good focus. For something so critical as encrypted email, I don’t use LLM to generate the code. It might look old-fashioned, but I artisanally hand-write it line by line (the same I wrote the p25.dev backend.). It will take a few weeks before a beta version is ready.

In a world full of LLM-based SaaS PoCs, I try to find my own voice and my own standing as an independent software developer writing code for more than half of my life. The software I put out are no PoCs, unless they are clearly marked as such. It is great when people find useful what I build, and I hope you will find p25.dev and the “new email backend” useful for your own sovereign email setup. (I already have a name for the “email backend”. You will read it here first once it can be tested, so make sure to subscribe to my RSS feed on this blog.)

By Raphael Sprenger