“All mail clients suck. This one just sucks less.” (Michael R. Elkins, author of mutt)
How true …
My email setup is somewhat historically grown and involved – I started out with an account on a German mailbox network, and in order to use that under Linux, I had to have a gateway between that mailbox network and RFC822 mail. That meant having an email system and a news server on my home box. (This was about ten years ago.) Three years later, I signed up with INKA e.V. to have email and news delivered via UUCP – which also meant having a complete email system. I used to use mutt for years on my home box to read the mail as it was delivered to my local user account.
When I got my PowerBook, that changed – I did not want to replicate this email setup on my notebook (I do not even know whether UUCP will work under MacOS X); instead, I wanted to use my Linux box as a mail server, and access it from my notebook via IMAP. I also wanted to replicate all my emails (about 1.7GB in 800 mailboxes, collected over ten years) via IMAP. Since replication and offline mode is officially supported in IMAP, that should be possible. I just had to find a piece of software that would let me do that …
This turned out more difficult than I imagined.
I tried Mozilla Thunderbird, and while it supports offline mode, it has to be enabled individually for each and every folder. Not good.
Next came Mail.app, which is included in MacOS X. Its support for offline mode is good (one checkbox, and it synchronizes every mailbox; plus, different accounts can be taken offline and online individually.) It also downloaded all of my email without a hitch. Unfortunately, it turned out to be rather buggy: It would occasionally forget that it had moved a mailbox to a new place, and complain that it couldn’t find it. The upgrade to 10.3.8 broke it completely; it started to open so many connections to my email server that the server shut down, presuming that the client was caught in a loop. I also couldn’t get it to work with the Courier IMAP server on which one of my accounts resides; Courier uses . as a path separator and groups all mailboxes as subfolders of INBOX, and that didn’t seem to go over well with Mail.app.
There’s also Mulberry, which I used a couple of years ago at work under Windows, and which is supposed to support IMAP quite well. I realized that there’s a MacOS X version available, so I gave it a try. It is written using Carbon, so it doesn’t follow the usual OSX interface guidelines very well; it has a rather quaint feel. The latest stable release is a couple of years old, so I tried a recent beta that was already quite stable. Unfortunately, synchronisation is quite buggy on mulberry as well: I sometimes wouldn’t be able to apply local changes to the remote IMAP server, and had to disable the synchronisation of local changes completely in the end. The interface also takes some getting used to, and you cannot take accounts online and offline individually.
I also tried Eudora, which is rather popular at my current employer. The configuration and use of Eudora was completely incomprehensible to me – yes, I did not read the manual, but I could not even get far enough with it to find out whether it supports the features I need. It’s considerably different from all other mail clients I tried.
Well, where did I end up in the end? You probably guessed it already: mutt – with the help of a couple of other tools.
Mutt by itself is just a mail reader – it does have IMAP support for reading mails online, but it does not support offline operation and synchronisation between a local and a remote store, and it cannot send email without an external program. After all, mutt is a unix program, and the philosophy is “one tool for one job". Mutt is a mail reader, not a mail synchronizer or a mail sender. There are other tools for those jobs.
The most powerful IMAP synchronizer I could find was Offlineimap. Offlineimap is very peculiar at first glance: The homepage lives on a gopher server (the link above is to a gopher-http gateway; the gopher itself is also directly accessible.) Version control for the source code is done using GNU arch. It is written in Python. But despite those peculiarities, it is very powerful, very easy to configure and fast. Some drawbacks: It cannot add folders on the IMAP server (but if you add a folder on the IMAP server, it will synchronize that to a local folder.) And mucking about with the synchronization info can be very dangerous to your email: I once failed to delete all the synchronization info before a configuration change, and offlineimap proceeded to delete my INBOX on the IMAP server. D’oh! Deleting all the synchronization info is OK, though, and will not lead to mail loss.
For sending email, I use msmtp, an SMTP client that was developed for use with mutt. It connects directly to the remote SMTP server (with SSL and TLS and authentification and all that, and support for several accounts) and delivers your mail.
Several accounts can be configured in mutt via hooks that change the personal info (From header, signature files, mail server) according to the current folder. I’m still tweaking my mutt setup, but it looks promising. And hopefully, I’ll soon be able to read emails in a useful fashion again.