Five years ago, I started work on OfflineIMAP. I couldn’t find any mail reader that offered good IMAP support and a good feature set. Rather than write my own mail reader, I simply wrote OfflineIMAP and used it with mutt. OfflineIMAP does a bi-directional sync between an IMAP server and local mailboxes. This lets you work offline, and also speeds up reading since each new message doesn’t have to be downloaded from the network on the spot.
I kept hoping that OfflineIMAP would become obsolete soon, as mail readers got better. Back in 2004, two years after writing OfflineIMAP, I looked at mail readers. In 2005, after some more frustrations with mail readers, I wrote a comparison. I wound up sticking with mutt and OfflineIMAP each time.
I’ve gone out looking at mail readers again. Here’s what I’ve found.
Overall a nice reader, KMail has almost every feature and setting I want. It has “disconnected IMAP” folders, which download every new message in folders to the local disk as part of the routine mail checking. It then caches local changes and syncs them to the remote on the next mail check. This boosts interactive performance and permits offline operation — very similar to OfflineIMAP. KMail has keyboard shortcuts for most things, and keyboard shortcuts can be added or changed for most other things as well.
KMail also integrates with the KDE calendar and addressbook, which I already use. That’s nice, too.
I have two big gripes about it though.
Back in 2004, I noticed that KMail crashes a lot. By 2005, it was worse. Sadly, KMail still has a tendency to crash. I’ve seen an average of 1-2 crashes per day, due to SIGFPE, SIGSEGV, and I think also SIGILL. This doesn’t make me happy at all. Especially to see that it’s no better on that in three years. Just don’t try emptying trash while your mailbox is being synced, for one thing….
Gripe #2 is that there is absolutely no way to select a different alternative in a multipart message without using the mouse. Simply no way using the keyboard. It’s also cumbersome, though possible, to view attachments using the keyboard — you have to press Enter to open the message in its own window, then tab to the attachment.
KMail also sometimes works a bit sluggishly — for instance, when you delete a message, you first see strikethrough through it, then it disappears. It doesn’t feel very “snappy”.
Evolution has a decent core. It is easy to get set up and has an extensive set of keyboard shortcuts. It does IMAP downloading and syncing like Kmail, and it does it by default. It doesn’t offer all that much flexibility in configuration, but probably enough.
Here’s my gripe. There is no way for it to show a total message count next to each folder in the folder list. It will show an unread message count, but not a total message count. You have to click on each folder individually to see a total message count. I can’t figure out why this is missing from Evolution. It’s one of the main benefits to switching from mutt, and so I didn’t bother looking at Evolution any more past there.
Thunderbird / Icedove
By default, it isn’t all that capable of a mail reader. There aren’t that many configuration options, and the keyboard shortcuts — while existing for most things — are cumbersome.
The Nostalgy extension helps with the keyboard shortcuts significantly. You still can’t change some of them (Ctrl-L for forward, anyone) — at least not without an extremely cumbersome process involving editing text files.
Thunderbird can do automatic IMAP downloading and syncing like KMail and Evolution, but for some inexplicible reason, only for your INBOX. In fact, Thunderbird won’t even check for mail in folders other than INBOX unless you set an undocumented configuration option. It seems to assume that nobody does server-side mail filtering.
If you want IMAP downloading for offline use or performance, you have to manually invoke a download operation. There is a Sync on Arrival extension, but it isn’t compatible with Thunderbird 2.0. From reading comments online, there are a lot of people frustrated about that.
So Thunderbird strikes out as well.
mutt + OfflineIMAP
The good thing about this combination is performace. mutt is extremely fast, and OfflineIMAP works faster than anything else for IMAP downloading. mutt is also far more configurable than anything else.
There are some annoyances about mutt.
#1 on that list is the lack of a folder list. There is just no way to see a list of folders along with new or total message counts. You can press c, Enter to go to the next folder with unread mail, which is something, but not enough. There have been numerous abortive projects over the years to address this, but for whatever reason, mutt itself doesn’t have this yet. Probably the most promising current project is this one.
#2 is HTML mail. I don’t mind the lack of default support for HTML mail. That’s to be expected. There are some things that do bug me involving viewing HTML mail. First off, sometimes people attach graphics to messages that also have an HTML component. Viewing these graphics doesn’t represent a security risk, but mutt doesn’t make them available to a browser for viewing — you have to manually save them if you want to view them. Also, you normally don’t want to load graphics from the Internet for HTML mail. The only way to accomplish that with mutt is to set your browser to lynx or something; just using Firefox to view a HTML component will load all of that.
#3 is handling of embedded URLs. xterms can pass mouse clicks, and it would be nice if mutt made URLs clickable like other mail readers do.
#4 is the IMAP support. No support for caching, fragile, etc. That’s why I use OfflineIMAP. That works, but it’s a hassle.
#5 is printing. Printouts from mutt just spew the text of the message at the printer. No page numbers, formatting, nothing. muttprint makes that situation a bit better, but the integration is flaky and weird.
I’m not sure what I’ll do. None of these are really where I want them to be, though mutt and KMail are probably the closest.