Wow, nearly a year since I blogged anything. That’s crazy - I must do better. However, for now at least, I’m back!

Today I’m going to give my first impressions of Mailpile, which is a slightly different take on the problem of handling/storing/interacting with email.

Motivation

Every so often, I get fed up with my email-client-du-jour. I’ve used Kmail, Thunderbird, Evolution, Mutt, and more - all have their pros & cons. Recently I’ve been on Thunderbird, but about two weeks ago it started messing about with not being able load calendars, not storing 2-factor app-passwords properly, and so on. Highly annoying, time for a(nother) change.

Mailpile had been on my radar for a while, but I’d been hesitating, for reasons I’ll make clear shortly. I decided it was time to dive in.

What’s Mailpile?

I guess we should start with the elevator pitch:

Mailpile is an effort to reclaim private communication on the Internet. A project to rescue our personal lives from the proprietary cloud and prevent our conversations from being strip-mined for corporate profit and government surveillance. Mailpile is taking e-mail back.

Pretty good plan, I can get behind that. What does that mean in practice?

Mailpile works by downloading (and optionally deleting) mail from your mail provider, and stashing it on the local machine. Alongside that, it spins up a web interface that’s only available on the local machine (localhost:33411 if you must know) which you use via a browser to interact with Mailpile.

Which is basically POP3 by any other name - mail downloaded locally and then removed, and not accessible outside the machine it’s downloaded to.

A step backwards?

That depends on your viewpoint. Mailpile’s stated goal is privacy, and this definitely aids that goal. However, it comes at a cost - no access from other devices (well, it can be done, by running Mailpile on something like a RaspberryPi), no push notifications to your phone (because you don’t have IMAP-IDLE now, only a web browser), and you need to worry about backups/storage on the Mailpile device (not having to worry about backups is something cloud companies have marketed very well). # Logic design

For myself, I decided this was a good fit for my work mail. I only use one device for work (my laptop), I don’t want to access it out of work hours, and I don’t want to see that stuff on my phone when I’m supposed to be doing family stuff, so fine. I’m still undecided if I’ll use Mailpile for personal mail, but that’s for another day :)

OK, so what’s it like then?

Let me walk you through my first few days with Mailpile…..

Installation

I run Archlinux, so this was a breeze. Install the package, start the systemd service, fire up a tab in Firefox. Sorted.

Connecting my work email account

Worked out of the box - it’s a standard IMAP/TLS setup, so with the right ports and an app-password, we were up and running. I decided to disable server-side deletion for now, in case I decide not to stick with Mailpile. I now had an Inbox.

I also made sure that I had no server-side filters set up. I’m on about 15 internal mailing lists at work, so putting Mailpile to work on sorting that stuff from my Inbox would be a good test.

First hour

Wow, is Mailpile bright! Seriously, my eyes. Pretty, yes, but very colourful - one of my colleagues described it as “childish” which is possibly at little harsh but I take his point. It’s OK for work, which is daytime and so on, but I’m not sure I’d want to look at 2am… some theming support would be great here. Here’s a screenshot:

Frontpage of Mailpile Frontpage of Mailpile

Mailpile (like Gmail) works of tags rather than folders. That works for me, I’ve always felt that mail can belong in multiple categories. Adding tags is easy, deciding things like colour, icon, location on the sidebar, all fine. But what’s this?

Adding a new tag in Mailpile Adding a new tag in Mailpile

Nowhere have I yet found out what the difference between category or attribute is yet. Ah well, so far I’ve been using category and it seems to work OK.

Once I had tags, I wanted filters. As mentioned, I have a lot fo list traffic, and even after just a few mins with Mailpile, it was starting to arrive in my Inbox. Sadly, setting up filters is not well guided. At first I couldn’t figure it out at all. There seemed to be no way to create a filter. Then I discovered (buried in the the GitHub Wiki) that filters can only be created via the console. Interesting, but where’s the console? A little more digging lead me to the keyboard shortcuts, and bingo, a shortcut for a Quake-style console.

From there, I ended up back on the GitHub wiki, but even then the Filters page is very unhelpful. Fortunately, I don’t give up easily, and discovered that the Using Mailpile page had some examples which got me rolling. I then quickly had a bunch of filters set up to deal with list traffic.

Documentation is a major theme here. Mailpile is very powerful, but I frequently found myself either in a randomly-titled part of the wiki, or even picking up tips from old GitHub issues about how to achieve something. This really needs consolidating, or better hinting in the UI.

Second day

This was the day of revelation. I discovered the killer feature - Mailpile does auto-learning per tag. I may be in love.

Let me back up. Auto-learning (often called Bayesian filtering, although there are other methods of learning than just Bayes) is usually how your spam filter works. Feed it mail, and over time it learns what mail looks like spam, and marks it as such. Neat. But here’s the catch - ‘spam’ is just another tag.

I thought of writing a mail client that did that sort of learning on every folder, nearly a decade ago, but I didn’t have the skills to make it happen. Thunderbird had a plugin for it once, but it became unmaintained. Pretty much every other client limits this feature to spam only - and for no good reason!

Why do I care? Well, I mentioned I was on about 15 internal lists, many of which are high-traffic, and maybe only 5% of the traffic on any list is valuable to me. Filtering it all into a folder usually means I end up with 1000 unread mails in that folder, at which point I stop even seeing the interesting ones. With a learning system, that changes.

Once I discovered that Mailpile could do this, I quickly deleted all the list rules I’d created the day before, and set up some auto-learning tags (one of which is “Not Interesting” which is filtered from my Inbox). Now, 4 days later, it’s starting to get that right, and I’m catching interesting mail from mailing lists I’d long since given up on. Once a day I process the “Not Interesting” list for false positives, and mark the rest as read. Nice.

Third day

By day three, I was humming along with basic usage. There were a number of small paper cuts, such as:

  • The threading displayed on the side of a conversation is newest-first, when I’m used to oldest-first for the threading (I still want newest-first for the mailbox sorting)
  • Tagging appears to be per-message, I’d argue it should be per-conversation. I’ve had to repeatedly re-mark an not-interesting thread as not-interesting when a new message was added to the thread
  • The vCard support is missing (known issue though) - my personal email address shows up as “Anonymous” and I can’t fix it :P
  • Some mail appears to go missing - it’s not been tagged as anything, but has also skipped my Inbox, which means if I don’t check “All Mail” from time to time, I miss things. Could be worth a bug report
  • Mobile UI doesn’t show tags, making filtering (or viewing existing filtering) impossible
  • Keyboard shortcuts are not consistent (possibly needs to be configurable) - e.g *-a is “mark all” and then shift-i is “mark read” - thats shfit-8-a-shift-i but the shortcuts don’t recognise A as well as a so you have to release Shift in the middle, and then press it again. It’s a very minor thing, but it irritates me every time I mark mail read :P
  • The Quake-console loses focus for no reason I can discover, meaning halfway through typing a command, I’m suddenly giving keyboard shortcuts and about to reply to a random mail…

But overall, it’s usable - and thanks to the killer auto-learning, it’s bearable.

Writing mail

It’s taking time to get used to writing mail in a browser again. I’m incredibly used to Thunderbirds re-wrap function, and learning to live without it is hard. However, the encryption support is nice (generates a GPG key by default), and Autocrypt is coming too. I can’t find a way to import an existing key (from a previous Enigmail/Autocrypt setup) so I can’t read old encrypted mail, sadly.

I’ll give a special note to search - it’s good. Especially compared to Thunderbird’s search (which is terrible), it’s a breath of fresh air, and makes me much happier to just archive stuff I’m done with, knowing I can find it again later now.

Questions

I am left with some larger questions too:

  • If I enable server-side deletion at a later time, will it delete previously indexed mail, or just new stuff? This matters from a privacy viewpoint, obviously
  • What’s the community size for Mailpile? How easy will it be to get help? (GitHub seems very active, so probably not a worry)
  • What’s the revenue model for the devs? Open source is great, but people deserve fair reward for their effort (and that helps them not burn out and abandon the project)

These last two points matter more for Mailpile than many projects - given that I have to download all my mail locally to use it, I cut myself off from switching back to something like Thunderbird in the future (at least without serious effort in re-uploading the data). I want to know that Mailpile’s future is secure :)

The future?

I like Mailpile. There are many paper cuts, but the core functionality is strong, and there’s a bunch of nice side-features I haven’t mentioned (like using Tor to fetch email content / user avatars / etc). Thought has been put into it, and I’m confident the issues I’ve encountered can be improved.

I want to do more research before I do this for my personal mail. I’ll want to access it out of the house (via a Tor onion site perhaps? or VPN?), and ideally some kind of notification would be good (I note the Discourse web-interface can generate Android notifications, so this much be possible). Overall though, it would be nice to use this for personal mail, if I can get a workflow I’m happy with.

Stay tuned! I’ll write more about this topic, hopefully!