Will's avatar

⬅️ See more posts

Using aerc as my daily email client

22 October 2024 (3 minute read)

🔮 This post is also available via Gemini.

technology

TL;DR (can I see your setup?): see this note.

I’ve now been exclusively using aerc for my day-to-day email workflows for a few months. This has been my first proper foray into using terminal-based mail clients as I never fully got around to trying other ones, such as Mutt (and NeoMutt), but had recently read good things about aerc in various threads and wanted to give it a go. From what I read, it seemed to be modern and actively developed, with a good ecosystem, and with a focus on being user-friendly and extensible.

I’ve always generally preferred using local mail clients (such as Apple Mail and Thunderbird) over web-based interfaces. At the same time, I also like minimalist setups and being able to easily configure and extend software with configuration files and adjacent tools.

What I quickly learned about aerc is that this latter point is a key feature of the software. Whilst it is fully capable of operating by itself (with direct SMTP/IMAP support), it also adheres brilliantly to the UNIX philosophy of being a small, modular tool that does its job well and that can be easily combined with other related tools in order to provide even richer capabilities.

During the first few weeks of use, I experimented with different approaches and configurations. There was definitely a bit of a learning curve for me. I started with plain aerc and gradually added additional bits to the setup as things became more familiar. As of today, my setup includes:

  • aerc: the email client;
  • vdirsyncer: for syncing contacts;
  • khard: for reading and searching locally-synced contacts, and for powering autocompletion in aerc;
  • mbsync: for syncing email to a local Maildir;
  • notmuch: for organising and searching a locally-synced Maildir and for searching and organising within aerc.

I’ve documented my technical setup on a dedicated note, as it’s probably a little too much to include directly in this post.

The outcome of all of this is now a mail system that is available offline and that is highly suited to my workflows across personal and professional lives. It’s also super fast: notmuch makes finding mail by content, metadata, and tags really convenient (and precise) and more useful than the traditional folder-based approach.

I also get direct image-rendering, HTML-viewing (kinda) and composing via filters and converters that leverage Pandoc, threading, combined “mailboxes”, and much more. I backup my Maildir using Syncthing so that I don’t need to pull down entire IMAP folders again when setting up a new device.

A useful side-effect of local mail and contacts are that I can also use the individual tools independently or as part of separate scripts in order to quickly look up a specific email or contact, or edit or create new data.

One small hurdle was that the macOS aerc binaries distributed via Homebrew were not compiled with notmuch support. I was keen to use aerc’s notmuch backend in my workflow, and so I ended up compiling aerc from source using the notmuch headers (that are installable via Homebrew). Again, I document this process in the note.

I know I will continue tinkering with the setup (and I look forward to continuing to get inspiration from others in the community), but I’ve become really happy with my setup so far. As someone who spends a substantial part of their day in front of a terminal (which I use for various things, including notes, thought-mapping, task management, coding, and – now – email), it was a natural fit. Checking mail is now a terminal tab-switch away, and then everything gets out of my way to let me continue my work without distraction.

✉️ You can reply to this post via email.

📲 Subscribe to updates

If you would like to read more posts like this, then you can subscribe via RSS.