Mutt 1.10 Release Notes

Note: this is a review of some of the more interesting features in this release. For a complete list of changes please be sure to read the UPDATING file.

This release is less visual than 1.9, so I'm not including screen shots. If you find these extra notes useful (or not), feel free to let me know.

Mailbox Performance Improvements

Maildir/Mh were changed to use dynamic sized hash tables when handling reopens and new mail checks. The existing sizes did not scale for huge mailboxes, leading to bad performance.

Mbox was changed to use unlocked I/O for input (when available). Since Mutt is not multi-threaded, there was no need to use the locked versions. This should result in faster mbox loading, especially when the mailbox is already cached.

The IMAP fetch flag update code was made a bit more intelligent. After a sync, flag updates that we just sent no longer cause a reopen, which should make the sync visibly faster.

PGP and S/MIME key specification

The past few releases have seen more and more configuration variables where your PGP or S/MIME key can be specified. For the common case where someone has a single dual purpose (encryption + signing) key, this is unnecessarily complicated.

This release attempts to simplify with $pgp_default_key (new) and $smime_default_key (modified), which are used for both encryption and signing.

$postpone_encrypt, $pgp_self_encrypt, and $smime_self_encrypt now use the above "default_key" configuration variables. Additionally, $pgp_self_encrypt and $smime_self_encrypt now default to set, so if you specify the "default_key", your emails will be self-encrypted without any other configuration. This works both in classic mode and for GPGME.

If you have a separate sign-only key, this should be specified with $pgp_sign_as and $smime_sign_as (new).

Change-Folder Mailbox Suggestion Order

$change_folder_next affects the order in which <change-folder> suggests mailboxes with new mail.

The default behavior (unset), always scans the mailboxes list from the beginning and suggests the first mailbox with new mail. When set, the scan will take place starting at the currently open mailbox.

Running a Command When New Mail is Detected

$new_mail_command specifies a command that will be run when new mail is detected: either in the currently open folder or in the mailboxes list.

Searching Editor Menu History

<history-search>, by default bound to ctrl-r, provide a simple way to search back through history. Unlike in bash, you have to type the search text first, and then hit ctrl-r. A single match will autocomplete, while more than more match will pop up a menu of choices.

Prompting for a Missing Attachment

$abort_noattach_regexp specifies a regular expression to match against your message contents. If it matches, and there are no attachments, Mutt will use the quadoption $abort_noattach to determine whether to abort, or prompt to abort, sending the message.

Libidn2 Support

Mutt can now be compiled against libidn2 (versions 2.0.0 and later). We're using the libidn1 compatibility layer, so it's pretty much a straight drop-in. However, this was added late in the development cycle, so please let us know if you encounter any issues!

Error Message History

If you miss an error/informational message that appeared on the bottom, you can now use the <error-history> function to view a list of the last few messages in the pager. This function is not bound by default, but can also be invoked by typing ":exec error-history".

The number of message displayed is controlled by $error_history, and defaults to 30.

Echoing Messages

I added this feature to scratch my own itch. I have several macros that save messages to various folders. Once in a while, I'm not sure which one I just invoked, and then have to look around to find where the message went.

The syntax is a bit awkward, but the echo command allows you to put a message at the end of the macro. See the link for an example.

Because it is a command, you can also put it directly in a file that is being sourced, or in your muttrc. Note, however, that the echo also sleeps for $sleep_time seconds.

IMAP Poll Timeout for $imap_idle

This is just a minor note, but $imap_poll_timeout now applies for $imap_idle connections now too. This may help a few more people with "freezing on suspend/resume" issues.