*nix Tip of the $TIME_PERIOD: mutt

Posted Fri 15 August 2008 11:21 under category tips

Hello readers; it's been a while, hasn't it? It's summer, and, like many people, I'm a slacker. Anyway, I thought that today, I'd talk to you a little about the program that I've been using for a lot of my mail recently: mutt. mutt is a console mail-client. I know, I know, I should get myself out of the 80's. Well, I've found it to be much faster and more powerful than any GUI client I've ever used. I'm not going to go into much detail about the basics; there are are lots of good guides/tutorials on the Internet.

However, I do think I'll share some of my configuration tips, and some helpful hints that I've gotten along the way. My main .muttrc file can be found here. I'll explain some of the neater sections as we go along.

The first section deals with my mailboxes. I use a Maildir-format store on this particular server (if you're still using mbox, I feel sorry for you). Well, I suppose it's technically Maildir++. But whatever. So a decent portion of that first section enables Maildir usage. I then set the display to be threaded with the line set sort=thread. I just find it easier to follow a threaded discussion than to try and pick out the individual messages, although some people violently disagree with me; well, they're not the ones writing this post. :-) Finally, I tell mutt which mailboxes to monitor (I've trimmed this list because, well, you really don't care about all of my gazillions of mailboxes).

The next section is some pretty straightforward keybindings. Since I'm using maildirs, I change the way that I change folders to enable default browsing of mailboxes (as opposed to directories), and I add some keys for PGP.

Next up: colors. I like color. It often makes it easier to read things. Well, perhaps coloring smilies differently from text is a little excessive... Much of this list comes from various sources on the Internet, so props to all of the people who came before me.

Then I set some headers. By default, mutt shows full message headers, which is way more information than I give a damn about. I set some sane defaults here. Incidentally, if you are in a message in mutt and want to view full headers, just press h. It took me a while to figure that out, even though it's pretty intuitive when you think about it. This section also contains one of my favorite lines: set mime_forward. This particular line came to me from one Michael Vrable (not to be confused with Mike Vrable). What this line does is cause forwarded messages to be sent as MIME attachments instead of quoted inline. This is sometimes a bit more annoying when forwarding plain-text messages, but, unfortunately, many silly people now send HTML messages. Not only that, but some people send only HTML messages (no plain-text part at all!), so when you forward these with the usual mutt mimetype of text/plain, graphical clients get confused. So, yeah, mime_forward is very useful.

Finally, I include some other files. The first file is for mailing lists (mutt can mark them as mailing lists, and properly handle reply/reply-all) via the subscribe command, the second one (gpg.rc) sets up GnuPG, and the third one is for mutt aliases.

Oh yeah, and I set mutt to auto-pgp-sign everything, because I'm that kind of a guy. Below, enjoy some screenshots of my actual mail setup.

Mailbox List Message View Full Headers