- home of pizzacode

The Mutt Mailer

mutt patches
contact Info

The mutt mailer is my favorite e-mail program. It's a text-based mailer which has good support for PGP, mailing lists, and many other excellent features. It is about as configurable and extensible as a mail program could be.

This page is devoted to mutt, primarily patches that I've written for mutt, which are explained below.

Mutt Patches

I have written some patches for mutt to fix some small annoyances.

pgp-send menu patch

The semantics of the pgp-send menu are unintuitive in the default mutt. The menu normally looks like this:

PGP (e)ncrypt, (s)ign, sign (a)s, (b)oth, or (f)orget it?

The problem with the semantics of the menu are that in order to go from some pgp options to others, you must first (f)orget it, or else you will not get what you want. For example:

  1. the user selects (b)oth, to both sign and encrypt the message
  2. the user decides that the message should only be signed
  3. the user selects (s)ign, since signing is all that is desired
  4. nothing changes

The problem here is that most of these options are additive, which is not clear from the menu. So if you have selected (s)ign, and subsequently select (e)ncrypt, you get the equivalent of having selected (b)oth. To get the desired results in our example, the user must first (f)orget it and then select (s)ign. The menu options don't really make this clear, and do not correspond to intuitive behavior.

My pgp-send menu patch fixes this behavior. It also renames (f)orget it to the (IMO) more aesthetic (c)lear, which I think more succinctly describes what the option does: it clears any previously selected PGP options. (f)orget it might be mistaken to mean "throw this e-mail away" by an unfamiliar user.

patch for 1.4.x: patch-1.4.0.ddm.crypt-menu.1
patch for 1.5.x: patch-1.5.4.ddm.pgp-send-menu.1

At the time of this writing, these patches apply to all later versions of mutt in their series. The latest 1.4.x release is 1.4.1, and the latest 1.5.x release is 1.5.4 at this time.

pgp-auto-decode patch

Another annoyance I have with the default mutt is its support for ascii-armored plain-text PGP messages, also known as "traditional PGP" messages. There are two methods by which a PGP message may be sent, of which this is the original. The newer method uses MIME attachments to separate PGP signatures and/or encrypted messages from any plain-text message bodies. Mutt will automatically detect and decode these newer style PGP messages, but forces the user to manually decode the older style PGP messages.

By default, mutt provides the key sequence esc-P (capital P) to perform this function. Being required to use this key sequence may not seem like a big deal, but if you make substantial use of traditional PGP messages, it soon becomes an annoying hindrance. In addition to requiring extra unnecessary key strokes, another problem arises from the fact that once you leave a mailbox, mutt no longer remembers that a message which you have checked is a PGP message.

So, lets say you read a traditional PGP message, and initially decide not to respond to it. You change folders to read other new mail. You then decide that you have a response to that message after all. Without re-viewing the message (you know what it says, so there's no need to), you hit reply from the index. What you get is your editor, with the ascii-armored encrypted mail in it. Not terribly useful for purposes of replying to quoted sections of the mail. You must now quit the editor, abort the message, manually re-decode the message, and start over.

There is really no reason for this. Mutt already has all of the code to check for and decode these messages for you, so that the user should never need to do it manually. My pgp-auto-decode patch makes mutt handle these messages transparently, just as it would for PGP/MIME messages.

There are two versions of the patch. The patch for mutt 1.4.x does this automatically, all the time. However, there are cases (such as message operations involving large numbers of tagged messages) when this will cause a substantial slow-down. If you don't use PGP, or never receive traditional PGP messages, this slow-down is unnecessary. So for the mutt 1.5.x version of the patch, I introduced a configuration variable to allow the user to turn this feature on or off. To turn it on, include set pgp_auto_decode=yes in your .muttrc file.

patch for 1.4.x: patch-1.4.0.ddm.pgp-always-check-traditional.2
patch for 1.5.3: patch-1.5.3.ddm.pgp-auto-decode.1
patch for 1.5.4: patch-1.5.4.ddm.pgp-auto-decode.1
patch for 1.5.6: patch-1.5.6.ddm.pgp-auto-decode.1 (submitted by Christoph Berg. Thanks!)

Note that some basic changes to the PGP code between versions 1.5.3 and 1.5.4 require a new version of the patch. The 1.5.6 version of the patch is submitted by Christoph Berg. He notes that it also should apply to the release. If you are using the release, using this version may (or may not) also fix some strange behavior reported involving messages erroneously being marked with the K flag (indicating they have PGP keys attached). Make sure you download the version appropriate for your version of mutt.

SourceForge Logo