Mail Readers Still Stink

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.

34 thoughts on “Mail Readers Still Stink

  1. OfflineIMAP (remote->local maildir) + dovecot (local maildir->local imap) + gnus (with nnimap running dovecot from a command line). Rocks for me. Well, mostly. The article counts are approximate. And expiration is tricky to wrap your head around. Performace? Well, on a fast enough machine… But the agent/offline reading is great for news and remote imap servers. Good spam filter integration.

    Plus, your wonderful OfflineIMAP lets me transparently mirror my mailstore between three different places. No single point of failure. Wonderful.

  2. After using Evolution I went to mutt, to Thunderbird (terrible), to Gmail. (Excluding a brief fling with on OS X)

    I would call mutt the best of the whole rotten bunch, though I don’t hate Gmail or Mail clients seem to be very hard to get right for some reason. That or we geeks are just far too picky.

  3. Hi!

    I tried few of mail readers starting with pine, next to Kmail, mutt, Evolution, but none of them satisfied me as much as Claws-mail. It is much more stable than Evolution and can handle without out any problem my old mail archive :-)

    Highly recommended ;)


    1. I tried Claws, but its disconnected support is just not up to snuff on its own. It can display messages offline, but doesn’t cache changes to them (deletes, etc.)

      If it could work with Maildirs, it would be great with OfflineIMAP.

      (I suppose it could work with OfflineIMAP’s IMAP-to-IMAP support with a local IMAP server)

  4. I have been using wanderlust for emacs for a few years now. It suppports:

    + disconnect operation
    + mouse-free operation
    + In debian (wl and wl-beta)
    + very configurable

    The lame parts are:

    + a bit sluggish on large inboxes
    + emacs is single threaded, so you can’t do anything else while mail is synchronizing
    + configuring it requires a lot of looking things up in the manual

    Anyway, it stinks, but maybe it stinks less:

    1. I’m also a very happy user of wanderlust (after having used mutt for years). What prompted me to switch was folder list, highly customizable, integrated in emacs (which I used from mutt anyway), and loads, loads of other features, plugins, etc.

      I’d also point it that it solves most issues the original author mentioned in mutt: #1 (folder list), #2 (HTML email, wl can use w3m, although mutt can be configured to use an external program too), #3 (click can open url in a browser), #4 (pretty good imap support), #5 (acceptable printing, in mutt try muttprint).

      I don’t find wl too sluggish on large mailbox, unless you use Maildir/mbox’s directly. Don’t. Use some local IMAP server to access it (I use dovecot).

      wanderlust is really wonderful, as long as you like (or don’t hate) emacs. I haven’t found anything better yet, so I highly recommend trying it.

      1. Interesting. I once tried mutt with imap to localhost and found it much slower than direct mailbox/maildir. I don’t recall if I used dovecot or uw-imapd; and also perhaps I didn’t give the imap server the chance to generate its caches.

        Currently I’m very happy with offlineimap + mutt (or ssh + mutt). I also use Sylpheed on occasion, when I want to open attached word documents in OpenOffice, and don’t want to wait 3 minutes for offlineimap to sync my imap mailbox to get the new email.

  5. You’re right, most e-mail clients suck. Just wanted to say thanks though, OfflineIMAP is great, even though I just use it for mail backup.

    Keep up the good work!

  6. wrt sidebars for mutt, I’m quite happy with buffy, packaged in Debian. It shows all sort of statistics for mail folders, allows you to sort the list by various criteria and it runs mutt on the folder when double clicking on it.

  7. by the way, mutt does do IMAP header and body caching. see $header_cache and $message_cachedir. It does not have a true offline mode, but it’s fairly speedy with the caches.

  8. Does KMail work now with OfflineIMAP, or do your comments refer to the »disconnected IMAP« mode only? I seem to remember that KMail had problems with OfflineIMAP’s syncing to Maildirs, so you had to use a local IMAP server instead. (This setup is what I use here, but I wouldn’t mind getting rid of the local IMAP server.)

    1. I was referring to KMail’s disconnected IMAP folder type only.

      I haven’t tried it with OfflineIMAP (yet).

      I keep trying to get rid of OfflineIMAP, but just can’t quite yet. Sigh.

  9. Regarding offline IMAP folders for Thunderbird other than the Inbox, have you tried right clicking on a mail folder in Thunderbird, clicking properties, and seeing the Offline tab?

  10. I have the opposite problem – no IMAP service. I really don’t like POP3, as it ties my mail to a single machine. But my ISP oesn’t offer IMAP, and I’ve yet to find a free (or reasonably priced) IMAP provider. Any suggestions? (If I had IMAP, then I could start worrying about which was the best IMAP mail client :-))

    1. You might try one of the free online IMAP providers, or set yourself up an inexpensive account on some place like dreamhost.

      If you have ssh access to a machine, you can install a local imap binary and run it via OfflineIMAP’s preauth tunnel mode.

      1. I don’t usually plug my own code, but I wrote urlscan to solve the problems with urlview — including this one. You might want to give it a try.

        1. Argh, this was supposed to be a reply to the urlview comment. I find the posting interface lacking in context. :-)

    1. I have tried urlview, but the problem is that it loses context. In one of these annoying messages from this or that place I bought something from once, I want to pick out the unsubscribe link. Difficult to do in a pageful of 3-line links.

  11. a big thing for me is speed. Lots of mail folders, lots of messages in some of them (largest is ~200,000 messages IIRC).

    Just about everything gets sluggish at some point… Evolution is the only mailer I’ve found that opens the folder in reasonable time.

    With my patch to offlineimap (which i’m cleaning up and benchmarking)… it works quite fast for everything…

    Although Evolution is the weakest link… it has a tendency to corrupt its indexes and use gobs of memory.

  12. KMail does not have to crash! Just try to limit the sizes of your mailboxes. That normally keeps it from crashing too often.

    I think KMail is the best (!) email client available on any platform! (I am able to ignore the crashes though…)

    Back when I was using Ubuntu I remember that Evolution crashed at least twice every day. That was one of the things that made me move over to KUbuntu and KMail.

  13. To print email from mutt, I first pipe the message through [b]a2ps[/b]. a2ps has an email mode which does a nice job in formatting the message. In my [i].muttrc[/i] file, I have the following command:

    [code]set print_cmd=”a2ps -2 –left-footer=’Printed by Mutt’ -g -Email -o – | lpr -h -Pps”[/code]

  14. Mulberry is going open source. They need all the support they can get. Please. Help them. There is nothing else like it. I got it for free when I was in school and after that I couldn’t use anything else. I actually paid for it, even for use on linux. It’s the only commercial software I’ve ever purchased for personal use on an open source platform.

    There is an SVN repo up now but thus far releases have only been for win32 and mac.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.