Offline email with aerc and vsync2023-02-14 on adnano.co
aerc is a pretty good email client for the terminal. I use aerc almost every day to read emails, review patches, and participate in mailing lists. Unfortunately, aerc's IMAP implementation requires you to always be online to view messages. Every time a message is opened, it is fetched from the IMAP server before being displayed. This incurs a small but noticeable delay. aerc can also be slow to start as it must fetch the message list from the server on startup.
Fortunately, we can take advantage of aerc's Maildir support to read email offline. This makes starting up aerc and opening messages a breeze. We can then use another tool to keep our maildir in sync with the IMAP server.
vsync is a tool that syncs your mail to a local directory in Maildir++ format. It is simple to configure and easy to use. For example, my configuration looks something like this:
[Personal] local = "~/mail" remote = "imap.example.net" user = "email@example.com" password = "..."
The password can also be retrieved with a command if you are using a password manager.
After configuration, run
vsync once to fetch mail from the IMAP server and
populate the maildir.
Now that we have a maildir, we need to configure aerc to read mail from it.
Thankfully, this is easy to do by updating
[Personal] source = maildirpp://~/mail check-mail = 30s check-mail-cmd = vsync outgoing = smtps+plain://firstname.lastname@example.org # ...
This tells aerc to read from the maildir and to run
vsync every 30 seconds to
sync new mail. Eventually, running
vsync periodically won't be necessary as
support for running it as a daemon is planned. aerc will continue to send
messages using SMTP.