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.
$ssl_verify_partial_chains enables the X509_V_FLAG_PARTIAL_CHAIN flag for OpenSSL certificate verification. This allows a certificate to be validated without trusting the entire chain: an intermediate or leaf certificate in the trusted store is enough to validate the cert.
When set, a (s)kip choice is added to the certificate
prompt:
By selecting
(s)kip, an intermediate or leaf node further down the
chain can be saved to the
$certificate_file using the (a)ccept always
choice.
Note this option is only available for OpenSSL and requires version 1.0.2b or newer.
The redrawing engine was rearchitected, allowing for a couple user visible improvements.
The first improvement is multi-line prompts:
The second improvement is the ability to process redraws while
inside the line editor. Rather than the whole screen becoming
distorted until after the prompt is exited, the screen will be
reflowed and redrawn:
The compose menu header labels and Security status can now be colored. This is controlled by the "color compose header" and "color compose security_{encrypt|sign|both|none}" commands:
color compose header green default color compose security_none red default
$header_color_partial changes how "color header" matches are applied. If unset, the default, matches will color the entire header. When set, only the matched string will be colored. This, for example, allows just header labels to be colored:
set header_color_partial color header default green '^[^[:blank:]:]*:' color hdrdefault yellow default
By default, Mutt will not add consecutively repeating commands to the history ring. When $history_remove_dups is set, Mutt will also scan and remove duplicate entries from the entire ring when adding a new entry.
Header downloading was revamped to support out of order and missing MSNs in the results. This is an uncommon but legal scenario, which previously could result in mutt hanging while downloading headers.
As a result of these improvements, body caching cleanup should be faster. Performance may be acceptable enough to leave $message_cache_clean set all the time.
$imap_poll_timeout controls how long Mutt will wait when polling a mailbox until timing out and closing the connection. The default is 15 seconds.
The new configuration variables $pgp_self_encrypt and $smime_self_encrypt enable adding your own key when sending an encrypted PGP or S/MIME message. $pgp_self_encrypt_as and $smime_self_encrypt_as specify the key to add.
$postpone_encrypt previously checked the value of $postpone_encrypt_as, but this doesn't support users of both PGP and S/MIME well. $postpone_encrypt will now check the $pgp_self_encrypt_as and $smime_self_encrypt_as configuration variables first, falling back to $postpone_encrypt_as if they are unset.
$forward_attribution_intro and $forward_attribution_trailer can now be used to customize the (previously hardcoded) attribution messages when including a forwarded message in the body.
Sometimes it is useful to select messages based on their immediate parent or children. ~<(PATTERN) and ~>(PATTERN) do this. The PATTERN is matched against a message's immediate parent or children, respectively.
So for example, ~<(~P) will match replies to your messages, while ~>(~P) will match messages that you replied to. !~<(~A) will match root messages in a thread, while !~>(~A) will match leaf messages.
Like the ~(PATTERN) operator, messages must be sorted by thread for the operator to work.
Sometimes the encrypted part of a message is nested, or sometimes an encrypted message may be attached. Previously, mutt would decrypt and show the nested content in the pager, but the atttachment menu would not show any of the nested parts. This made it tricky to save or operate on any of those parts.
Here is 1.8.3 with a nested encrypted message:
And here is 1.9.0 with the same message:
When creating a new attachment, Mutt consults the mime.types file to determine the correct MIME type. If the attachment's extension isn't found, or if the attachment doesn't have an extension, $mime_type_query_command can be used to specify a program to run to determine the MIME type. Two suggested programs are "xdg-mime query filetype" or "file -bi".
To run the command before (or instead of) the mime.types file lookup, $mime_type_query_first should be set. Mutt will then only consult the mime.types file if the query command does not output a MIME type.