Recently, I decided to revamp my email setup. I don’t have too much going on with email, but it’s such an important method of communication that I needed to get it under control. I’m going to put together a several-post guide explaining my reasoning, technical details, and my new email process.
All posts in this series (they will be linked here as the posts go up):
- Part 1: My basic setup
- Part 2: OfflineIMAP
- Part 3: notmuch
- Part 4: alot and khard
- Part 5: msmtp
- Part 6: Wrap-up
I’ll be sharing config and usage tips along the way. I haven’t seen an in-depth tutorial to getting all these tools working together, so that’s one of my goals with this series.
I have three email accounts that I use regularly. Each account duplicates some things – I have three inboxes, three archive folders, etc. Email clients take different approaches to showing mail from multiple accounts. Some, like Thunderbird, include an option to view “Unified folders” – i.e., all of your inboxes go together into one, etc. Others, like Evolution, prefer to keep things separate.
I pride myself on having a minimal email workflow:
- Stuff comes in. I don’t want it to come in very often, so I like to only check once an hour.
- If it’s actionable, I take a note of it outside my email system
- Optionally, I leave the message in my Inbox to be replied to later
- When I’m done with the message, it gets archived. I will search to find it again later.
- I get some email that I never want to see again (notifications, etc). That gets deleted.
With three separate email accounts to handle this, though, it’s easy to miss things or to let email pile up in the Inbox (“I’ll take care of that later”). I decided I needed a system that would keep me a bit more accountable to myself. And logging into each account via webmail separately? Not an option. For me, this came with a change in the technical details of how I handle email.
The new setup: Basic email process
As I’m about to describe below, I aggregate all my email into one place now (I am aware that it’s three accounts – my setup will use the correct “from” address when replying to mail, for example).
- All email is funneled into one inbox. I only check once an hour.
- As soon as it comes to me, I’m going to get it out of the inbox in one of three ways:
- Email I never want to see again is deleted directly (if applicable, I’ll unsubscribe first)
- Email I want to keep, but is not actionable, is archived
- Email I need to do something with (reply, finish a task, etc) is tagged “todo”.
After this, my inbox is empty.
When I’m done with a todo item, I archive it.
The new setup: Tools
My home server (this would work on a remote VPS as well) uses OfflineIMAP to fetch mail from all my accounts once an hour. They go into a folder structure:
notmuch is an email indexer and tagger. It’s used to create a searchable database of mails and to allow you to arbitrarily tag emails with different keywords.
After OfflineIMAP is finished pulling new email from the server, notmuch runs to make sure the mail database is up to date. Then, I use Syncthing to sync my mail collection and database to my home and work computers.
alot and khard
These are the programs I see and interface with in my process.
alot is an email client. It is specifically made for reading and working with databases created by notmuch. See the picture above to see alot in its full glory.
khard is a contacts manager which reads CardDav-generated contact databases. alot can use khard to autofill email addresses from your addressbook when you write a new message. Like my emails, my contacts are also synced from my server to my home and work computers.
I run alot, khard, and msmtp (below) locally on my work and home computers.
msmtp is a command line tool which sends out mail through your SMTP server. After you write the email in alot, msmtp handles the actual sending process.
Coming up next
I’ll dive into how I set up and configured OfflineIMAP on my home server.