OfflineIMAP, mutt, PieTTY

November 22, 2012

This is just going to be a rundown of my e-mail set up. Prepare for some obscure software.


Gmail is a great service. It's the service that made everyone wake up and realize that storage shouldn't be measured in MB, even for free accounts. That and free IMAP is just fantastic (by the way, don't use POP3).

Unfortunately, its interface is rather slow, especially when you switch labels a lot or you want to mark as read/delete many messages. Furthermore, Gmail throttles incoming mail when you receive too much but it only shows the messages' received time, not the sent time (this was incredibly confusing until I figured out what was going on). There's also a minor annoyance in not being able to use GPG, but I can live without that.


mutt is a fairly popular ncurses e-mail client. Also, it has a resoundingly true motto: "All mail clients suck. This one just sucks less."

You can use mutt with Gmail by just setting your spoolfile to the Gmail IMAP server. For about 30 seconds. After becoming infuriated with the slowness, you'll realize that you really want to download the e-mail locally and use mutt normally.

fetchmail, getmail, procmail, fdm

The usual process for this is to use one of fetchmail or getmail to download your mail, procmail to sort it, and then mutt to read it. This is a somewhat involved process.

For a while, I used fdm which acts like a combination of getmail and procmail. It's simple to configure and use, but there were two problems. First, rules for sorting mail are defined on my machine so when I don't have access to it and am using the Gmail web interface, all my mail is just in the inbox. More importantly, I wanted Gmail's filtering interface. Or, rather, an interface where I can look a what my sorting rule is going to do before it does it.


OfflineIMAP solves my problem. It does a two-way sync between local maildirs and the IMAP server. When new mail arrives, Gmail filters it and OfflineIMAP downloads it into the right directory. When I mark it as read or delete it, OfflineIMAP deletes it on the IMAP server.

Documentation is... not fantastic. On the other hand, it's written in Python and it has a -u blinkenlights flag, so who cares. Oh, by the way, is the old website.


Sometimes, I find myself on my Windows machine. Often, I find myself using PuTTY and wishing I could click links. There are a few forks of PuTTY that do this: PuTTYtray and KiTTY at least. PuTTYtray was nice until Windows 7 made me stop caring about things being in the tray and KiTTY just seems a bit bloated.

PieTTY's website seems scary at first, but the actual software defaults to English (I haven't even figured out how to change the UI to Chinese). It does what I want and not a whole lot more.

I had a small issue with the mutt thread lines, though. mutt threads

At first, I thought changing PieTTY's charset (Window > Translation) to UTF-8 would fix it, but it wasn't enough. I also had to uncheck "treat CJK ambiguous characters as wide". mutt threads

And thus, the real purpose of my post is revealed: to remind myself how to set up my next Windows machine with PieTTY.