Recent changes to Mutt
Major changes since Mutt 1.4
============================
IMAP
----
- $imap_check_subscribed will fetch the set of subscribed folders from
your server on connection.
- IMAP server-side simple string search using '=' instead of '~'.
('=' also provides local simple string search.)
- IMAP IDLE support and $imap_idle
- <rename-mailbox> function
Encryption
----------
- S/MIME support. Please see contrib/smime.rc for suggested settings.
- GPGME support via $crypt_use_gpgme
- Ability to encrypt postponed messages. See $postpone_encrypt and
$postpone_encrypt_as.
- GnuPG fingerprints are used internally when possible.
- $crypt_opportunistic_encrypt automatically enables/disables encryption
based on message recipients.
Character set support
---------------------
- IDNA support. Options $idn_decode and $idn_encode control whether
mutt will decode and encode international domains using IDNA.
- SMTPUTF8 support. Support for utf-8 domains without IDNA encoding.
To use this, unset idn_encode.
- $assumed_charset, $attach_charset, $ignore_linear_white_space
Other changes
-------------
- Header caching for IMAP and Maildir. See $header_cache for more details.
- Internal ESMTP relay support. See $smtp_url.
- $mail_check_recent controls whether all unread mail or only new mail
since the last mailbox visit will be reported as new
- Support for saving history across sessions. See $save_history,
$history_file.
- More search patterns:
- thread patterns. Use ~(...) to match all threads that
contain a message that matches ...
- ~l matches all known lists, ~u only subscribed.
- ~$ pattern matches unreferenced messages.
- ~V pattern matches cryptographically verified messages.
- Improved flowed text support: $reflow_text, $reflow_wrap,
$reflow_space_quotes.
- $braille_friendly option will place the cursor at the beginning of
the current line in menus.
- Full large file support.
- Terminal status-line (TS) support, a.k.a. xterm title. see the
following variables: $ts_enabled, $ts_icon_format, $ts_status_format
- Generic spam detection: new configuration commands: 'spam' and
'nospam', new options: $spam_separator, new expando: %H (for
$index_format), new pattern: ~H pattern
- New command line options:
- -A command line option for alias expansion.
- -D will print the value of all variables.
- -E command line option to edit draft and include files.
- -Q queries configuration variables
- New functions:
- you can edit threads via <break-thread> and <link-threads>
- <buffy-list> lists mailboxes with new mail.
- <what-key> displays the keycode for a key press.
- <next-new-then-unread> and <previous-new-then-unread>
- <tag-prefix-cond> and <cond-end>
- $resume_draft_files and $resume_edited_draft files control how
draft files are processed.
- $narrow_tree makes the thread tree narrower.
- new and changed hooks: reply-hook, send2-hook. crypt-hook can be
specified multiple times for the same regexp.
- The $alternates option has turned into the 'alternates' command.
- mime_lookup command specifies a list of MIME types that should not
be treated according to their mailcap entry
Visible changes since Mutt 1.2
==============================
Folder formats and folder access
--------------------------------
- Better mh support: Mutt now supports .mh_sequences files.
Currently, the "unseen", "flagged", and "replied" sequences are
used to store mutt flags (the names are configurable using the
$mh_seq_unseen, $mh_seq_flagged, and $mh_seq_replied configuration
variables). As a side effect, messages in MH folders are no longer
rewritten upon status changes.
- The "trashed" flag is supported for maildir folders. See
$maildir_trash.
- POP folder support. You can now access a POP mailbox just like an
IMAP folder (with obvious restrictions due to the protocol).
- URL syntax for remote folders. You can pass things like
pop://account@host and imap://account@host/folder as arguments for
the -f command line flag.
- STARTTLS support. If $ssl_starttls is set (the default), mutt
will attempt to use STARTTLS on servers advertising that
capability.
- $preconnect. If set, a shell command to be executed if mutt fails
to establish a connection to the server. This is useful for
setting up secure connections; see the muttrc(5) for details.
- $tunnel. Use a pipe to a command instead of a raw socket. See
muttrc(5) for details. (Basically, it's another way for setting
up secure connections.)
- More new IMAP/POP-related variables (see muttrc(5) for details):
$connect_timeout, $imap_authenticators, $imap_delim_chars,
$imap_peek, $pop_authenticators, $pop_auth_try_all,
$pop_checkinterval, $pop_delete, $pop_reconnect, $use_ipv6.
- The following IMAP/POP-related variables are gone:
$imap_checkinterval, $imap_cramkey, $pop_port.
- There's a new imap-fetch-mail function, which forces a check for
new messages on an IMAP server.
- The new-mailbox function was renamed to create-mailbox, and is
bound to C instead of n by default.
Character set support
---------------------
- Mutt now uses the iconv interface for character set conversions.
This means that you need either a very modern libc, or Bruno
Haible's libiconv, which is available from
<http://www.gnu.org/software/libiconv/>.
- With sufficiently recent versions of ncurses and slang, mutt works
properly in utf-8 locales.
- On sufficiently modern systems, the $charset variable's value is
automatically derived from the locale you use. (Note, however,
that manually setting it to a value which is compatible with your
locale doesn't do any harm.)
- $send_charset is a colon-separated list of character sets now,
defaulting to us-ascii:iso-8859-1:utf-8.
- charset-hook defines aliases for character sets encountered in
messages (say, someone tags his messages with latin15 when he
means iso-8859-15), iconv-hook defines local names for character
sets (for systems which don't know about MIME names; see
contrib/iconv for sample configuration snippets).
- The change-charset function is gone. Use edit-type (C-e on the
compose menu) instead.
- The recode-attachment function is gone.
Other changes
-------------
- New and improved threading code from Daniel Eisenbud. See also
$duplicate_threads, $hide_missing, $thread_received.
- ANSI colors in the builtin pager are now controlled by a variable
$allow_ansi, and are turned OFF by default. The colorization of
attachment markers (and PGP output messages) in the pager is done
a bit different, and more difficult to cheat. In particular, it's
not possible to consistently trick two instances of mutt which
were started at different points of time.
- There's a $wrapmargin variable which gives users some control over
mutt's wrapping in the pager, and in the text/plain; format=flowed
handler. The default value of this variable is 0.
- There's a new variable $compose_format for the compose screen's
status line. You can now include the message's approximate
on-the-wire size.
- The attachment menu knows about collapsing now: Using
collapse-parts (bound to "v" by default), you can collapse and
uncollapse parts of the attachment tree. This function is also
available from the pager when invoked from the attachment tree.
Normally, the recvattach menu will start uncollapsed. However,
with the new $digest_collapse option (which is set by default),
the individual messages contained in digests will be displayed
collapsed. (That is, there's one line per message.)
- Using $display_filter, you can specify a command which filters
messages before they are displayed.
- Using message-hook, you can execute mutt configuration commands
before a message is displayed (or formatted before replying).
- If you don't want that mutt moves flagged messages to your mbox,
set $keep_flagged.
- Setting the $pgp_ignore_subkeys variable will cause mutt to ignore
OpenPGP. This option is set by default, and it's suggested that
you leave it.
- $pgp_sign_micalg has gone. Mutt now automatically determines what
MIC algorithm was used for a particular signature.
- If $pgp_good_sign is set, then a PGP signature is only considered
verified if the output from $pgp_verify_command matches this
regular expression. It's suggested that you set this variable to
the typical text message output by PGP (or GPG, or whatever)
produces when it encounters a good signature.
- There's a new function, check-traditional-pgp, which is bound to
esc-P by default. It'll check whether a text parts of a message
contain PGP encrypted or signed material, and possibly adjust
content types.
- $print_split. If this option is set, $print_command run
separately for each message you print. Useful with enscript(1)'s
mail printing mode.
- $sig_on_top. Include the signature before any quoted or forwarded
text. WARNING: use of this option may provoke flames.
- $text_flowed. When set, mutt will generate text/plain attachments
with the format=flowed parameter. In order to properly produce
such messages, you'll need an appropriate editor mode. Note that
the $indent_string option is ignored with flowed text.
- $to_chars has grown: Mailing list messages are now tagged with an
L in the index. If you want the old behaviour back, add this to
your .muttrc: set to_chars=" +TCF "
- New emacs-like functions in the line editor: backward-word (M-b),
capitalize-word (M-c), downcase-word (M-l), upcase-word (M-u),
forward-word (M-f), kill-eow (M-d), tranpose-chars (unbound).
transpose-chars is unbound by default because external query
occupies C-t. Suggested alternative binding:
bind editor "\e\t" complete-query
bind editor "\Ct" transpose-chars
- mailto URL support: You can pass a mailto URL to mutt on the
command line.
Major changes since 1.1
-----------------------
- There is a new variable $fcc_clear. When set, FCCs are not
affected by PGP encryption or signatures.
- Tommi Komulainen <Tommi.Komulainen@iki.fi> has contributed SSL
support for mutt's IMAP client code.
- The message-related commands on the attachment menu have been
rewritten. Changes include dropping the forward_attachment
option, applying the mime_forward quad-option to the attachment
menu, and adding a mime_forward_rest quad-option. Additionally,
the message-related commands are now supposed to work on subparts
of PGP/MIME messages, and from the pager when invoked from the
attachment menu on a message/rfc822 body part.
Note that the resend-message function now works from the
attachment menu. You can use this to comfortably resend a message
which was included with a bounce message as a message/rfc822 body
part.
Major changes since 1.0
-----------------------
- The semantics of the "lists" command has changed. Basically, it
only affects the list-reply function now. To get the same mailing
list behaviour as with 1.0, use "subscribe" instead.
- The old edit-message command has been split into two commands,
edit-message and resend-message.
With edit-message (bound to e by default), mutt makes a copy of
the raw message, and gives you the possibility to manipulate it
with your favorite editor. This is ideal for fixing messed-up MIME
headers and the like.
After you have left the editor, the edited version of the message
is copied back to the current folder, and the original message is
marked for deletion.
With resend-message (bound to ESC e by default), mutt takes the
current message as a template for a new message. This function is
best described as "recall from arbitrary folders". Note that the
amount of headers included here depends on the value of the weed
option.
- There is a new option $delete_untag. Former mutt versions used to
untag messages when you save them, but leave them tagged when you
mark them for deletion. $delete_untag controls _both_ cases,
leading to more uniform behaviour.
- The $weed option applies to the decode-save and decode-copy
functions. Think of these functions as something along the lines
of "print to file".
- The master source of the configuration option reference has been
moved from the SGML document into special comments in init.h.
"makedoc" is used to extract this information into a new,
documented global Muttrc, into the SGML manual, and into a new
manual page describing muttrc, muttrc (5).
This way, _all_ options will automatically get minimal
documentation, with correct default values. :-)
For details, see doc/devel-notes.txt.
- While the manual was under inspection, hopefully most of the
recent changes to mutt were documented. Also, documentation on
some not-so-recent things such as mixmaster and PGP support was
added or improved.
- The $in_reply_to configuration variable is gone. The In-Reply-To
header currently only contains the message-id of the message to
which the reply refers. This is to make sure that this header is
correctly formatted.
- There is a new variable named $pgp_getkeys_command. It's invoked
before mutt invokes PGP in a way which may require public keys.
The %r format string expands to an e-mail address corresponding to
that key. The command given in $pgp_getkeys_command could, for
instance, query a key server and add public keys to your key ring.
See also http://home.pages.de/~roessler/pkspxy-0.1.tar.gz for a
possible application of this with the traditional PGP versions.
- RFC 2231 is (at least partially) implemented. Additionally, there
is an option named $rfc2047_parameters. When it's set, mutt will
decode RFC2047-encoded MIME parameters.
- Various IMAP-related fixes and patches. This includes the ability
to use IMAP folders for postponed messages, improved IMAP folder
browsing, tab completion for IMAP folders, etc.
- A new variable $from is added. See the manual for details.
- The various weeding options are gone. You have one global option,
$weed, now which can be influenced using configuration commands,
or using the display-toggle-weed function (this used to be
display-headers!). This option is applied when forwarding,
replying, or printing messages. Essentially, this means that you
have some "WYSIWIG-like" behaviour with respect to message header
weeding.
- The PGP configuration interface was completely redone. Please
read doc/PGP-Notes.txt before installing this version on any
production system.
Major changes since 0.95
------------------------
- We call it 1.0 now.
- Adding $in_reply_to, but with a different default which is safe
and should not trigger rfc2047 encoding. Please don't use %n,
localized dates or similar things with this format.
- Added $bounce_delivered; this is a back-port from unstable. See
the manual for details.
- The $in_reply_to configuration variable is gone. The In-Reply-To
header currently only contains the message-id of the message to
which the reply refers. This is to make sure that this header is
correctly formatted.
- Mutt was affected by the so-called "pine remote exploit". We have
implemented a work-around we believe to be safe. See
README.SECURITY and the mailcap_sanitize option for details, and
check your mailcap files for insecure entries.
- The use_mailcap option has gone. Instead, we now have
implicit_autoview. See the manual for details.
- We have more translations than ever before. Supported languages
now include cs, de, es, fr, it, nl, pl, ru, uk. And en, as usual.
- Mutt now uses version 0.12 of the "regex" library instead of rx.
This library is believed to be far more stable than rx. See
INSTALL for details.
- The annoying "maildir erratic behaviour" bug could finally be
tracked down and fixed as of 0.95.6.
- There were some major improvements with the IMAP code. It should
work rather correctly against most common IMAP servers now.
Major changes since 0.93
------------------------
- i18n support of various kinds: Mutt now comes with character set
definitions, so it is able to convert character sets you encounter
in e-mail messagese to your local display's character set as
defined by the $charset configuration variable. This includes a
poorly-tested UTF-8 decoder.
Additionally, mutt includes GNU gettext support, so you can make
it speak your own language. To use this, just set the environment
variable "LANG" appropriately.
(For a list of currently supported languages, have a look at the
po files in the po subdirectory.)
- There is support for the POP3 "last" command for just fetching the
latest unread messages from your POP server. To enable use of
this feature, set the $pop_last configuration option.
- The IMAP code's handling of server-side EXPUNGE messages was
fixed, so mutt should now be able to cope with concurrent access
to IMAP folders. This is, e.g., supported by the CMU and MS
Exchange IMAP servers.
- mh_sequences support was _dropped_. The reason is, on the one
hand, a major re-write of the mh and maildir folder
resynchronization code, and the fact that there is no locking
protocol defined for this file. If you want to use
one-file-per-message folders, you should better rely on maildir.
- The new patterns ~g and ~G in the pattern language match PGP
signed and encrypted messages, respectively.
- The $smileys configuration variable defines exceptions from the
quote-detecting regular expressions. This can be used to
correctly handle lines beginning with smileys such as ":-)" -
these lines were detected as quoted text by the old code.
- You can now edit messages in your mail folders.
The function 'edit' (default 'e') will make a copy of the
current message and you can edit the message. After editing is
complete, you are taken to the Compose menu. You can further
modify the message here or re-send it. Note that the message is
re-sent to the original recipients (similar to `bounce-message')
unless you have changed the recipients in the Compose menu (or the
editor).
You can also write the edited message back to any mail folder
using the write-fcc function (default w). Remember that you are
working with a copy and the original message is not affected.
- new command 'unhdr_order'
`unhdr_order *' will clear all previous headers from the order
list, thus removing the header order effects set by the
system-wide startup file (via `hdr_order')
- You can now attach message(s) to an outgoing message. Use the
attach-message function (default 'A') from the Compose menu;
specify the folder to open and tag the messages you want to
attach.
- You can now collapse a thread.
collapse-thread (default ESC v) toggles the collapsed state of the
current thread.
collapse-all (default ESC V) toggles the collapsed state of all
threads in the folder.
When a collapsed thread received new messages, it is automatically
uncollapsed. Also, when you display the first message in the
collapsed thread, it is automatically uncollapsed.
The variables $collapse_unread and $uncollapse_jump can be used to
fine-tune this feature.
Note: Collapsing a thread displays only the first message in the
thread and hides the others. This is useful when threads contain
so many messages that you can only see a handful of threads on the
screen. See %M in ``$index_format''. For example, you could use
"%?M?(#%03M)&(%4l)?" in ``$index_format'' to optionally display
the number of hidden messages if the thread is collapsed.
- The syntax for function keys in key bindings and macro definitions
has changed: Instead of "fN", you have to use "<fN>" now. This
is more consistent with the syntax for the other special keys like
"<up>", "<down>", and so on.
- You can now use function names in macros. The syntax is <function-name>
Example:
macro index z "v<down><down><first-entry><down><save-entry>"
push "<first-entry><display-message>"
Note that the function has to be a valid function for the menu when
the macro is _executed_. If not, the literal string of characters is
used as usual. Also, if you enter a string <...> which is NOT a Mutt
function like <vikas>, the literal string of characters is used as
usual.
Keep in mind that macros are evaluated at runtime, and so the
current menu could change _during_ the execution of a macro. Be sure
to use functions that make sense for the menu at that point in the
macro's execution.
- new command 'exec'.
You can now use the 'exec' command to execute any internal function
in Mutt. You can also execute functions in this fashion even if they
are not bound to any key.
Also, the 'exec' command has command completion so that
:exec <TAB><TAB>
will cycle thru all the commands for that menu.
If you type something that is not found in the current menu, the
generic menu is used for completion.
The 'exec' command accepts multiple arguments each with its own
command-completion.
For example:
:exec first-entry display-message ....
Similar to macros, keep in mind that the sequence of functions are
evaluated at runtime, and so the current menu could change _during_
the execution of a sequence of functions. Be sure to use functions
that make sense for the menu _at that point_ in the execution.
- improved command and variable completion.
Pressing <TAB>, on the command-line now cycles through all possible
matches of the command (or variable) based on what you have typed so
far. When all matches have been cycled through, your original input
(that started the completion) is restored. Pressing <TAB> again
repeats the cycle.
Note that variable completion is done only when appropriate (for the
following commands: set, reset, unset, toggle). Also, when entering
a 'set' command, the possible prefixes to the variable name (no,
inv, ?, &) are honored. This makes it possible to do something like
:set inv<TAB><TAB>
to cycle through the possible matches.
When you press <TAB> without entering any text, Mutt cycles through
all possible matches (commands or variables, as appropriate)
- you can now use special keys in a key _sequence_. Special keys are
<Home>, <End>, <PageUp>, etc.
Example:
macro attach s "<Home>~/<End>" "Pre-pend ~/ when saving attachments"
- You can now specify an optional description for your macros.
Usage: macro menu key sequence [ description ]
The specified description is listed on the help screen.
Example:
macro index "^\cb" "|urlview\n" "call urlview to extract URLs"
- We have a new set of functions decrypt-{save,copy}. They strip off
the initial layer of PGP/MIME encryption. For "classical"
application/pgp messages, they are equivalent to the decode
functions, for unencrypted messages they fall back to the normal
save functions.
- new variable $forward_decrypt. See the manual for details.
- The build-time "hidden host" option has gone. Use the
$hidden_host configuration variable instead.
- Unknown major MIME types are recognized properly.
- new variables $attach_split (boolean, default set) and $attach_sep
(string, default "\n")
If $attach_split is unset, when operating (saving, printing, piping,
etc) on a list of tagged attachments, Mutt will concatenate the
attachments and will operate on them as a single attachment. The
`$attach_sep' separator is added after each attachment. When set
(default), Mutt will operate on the attachments one by one.
- An option $write_bcc controls whether or not the Bcc header is
written out to the mail transport agent or not. Exim users may
wish to use this.
- The compose menu tries to detect and smoothly handle changes to
attached files. Additionally, you can use the update-encoding
function to update an attachment's encoding.
- On the compose menu, you can generate a "private" copy of an
attached file using the get-attachment function.
- sendmail's exit values are properly interpreted, so you will no
longer get a "no such file or directory" error when sending mail
to a non-existing local user.
- The variable $attach_format controls the look of the compose and
attach menus.
- The file browser permits you to view files before selecting them.
- Bug fixes of all kinds. Look at the ChangeLog file for details.
- The configuration files now go to a directory determined by the
--sysconfdir parameter to the configure script. The default is
${prefix}/etc. (The install target of the top-level Makefile will
take care of your old site-global configuration file and
automagically move it to the new place.)
- new variable $mh_purge (boolean, default unset)
When unset, mutt will mimic mh's behaviour and rename deleted
messages to ,<old file name> in mh folders instead of really
deleting them. If the variable is set, the message files will
simply be deleted.
- new variable $forward_weed (boolean, default set)
When set, this decode-forwarding a message will weed the message's
header. (That's the current behaviour.)
Major changes since 0.91.1
--------------------------
- additional format for $hdr_format
%L displays the total size of all visible messages in a
limited view
%<fmt> displays current time using strftime(fmt)
- additional operators to the pattern matching lanauge:
~B<pattern> finds pattern anywhere in the message (more
efficient than ~h %s | ~b %s
~z<size> finds messages of size <size>
E.g.
~z<10k #finds messages smaller than 10KB
~z>10k #finds messages larger than 10KB
~z10k #finds messages exactly 10KB in length
- the $hdr_format variable is renamed to $index_format
$hdr_format is still accepted for backwards compatibility
- new variable $folder_format to display entries in the 'browser' menu.
- new variable $followup_to to control generation of Mail-Followup-To
field. You can edit this field and Mutt will not overwrite it.
- new variable $sendmail_wait
Specifies the number of seconds to wait for the ``sendmail'' process
to finish before giving up and putting delivery in the background.
Mutt interprets the value of this variable as follows:
>0 number of seconds to wait for sendmail to finish before continuing
0 wait forever for sendmail to finish
<0 always put sendmail in the background without waiting
Note that if you specify a value other than 0, the output of the child
process will be put in a temporary file. If there is some error, you
will be informed as to where to find the output.
- Variable $sendmail_bounce has been removed. Mutt now passes all
recipients on the command line for normal sending.
- new variable $query_command
Adds support for querying an external database for email addresses.
- The $forward_decode variable has been removed. This has been split into 2
variables
$forward_decode - used when $mime_fwd is not set
$mime_forward_decode - used when $mime_fwd is set
- new variable $wrap_search. This controls whether searches wrap around the
end of the mailbox.
When set, searches will wrap around the first (or last) message. When
unset, searches will not wrap
- New command 'reset' to reset variables to their default compile-time
definitions. When used with special keyword 'all', all variables are
reset to their default values. When used with the 'set' command and the
variable name prefixed with '&', this has the same behaviour as the
'reset' command.
Eg.
reset move
reset all
set &move
set &all
- Function key names used in muttrc need to be enclosed in <>.
Function keys can be used in macros also.
Eg.
macro index Y *<PageUp>
bind index <down> next-entry
- You can now delete a message's attachments by pressing 'd' (delete-entry)
on the attachment in the attachment menu.
- You can now color index menu entries using the pattern matching language.
The 'uncolor' command resets the entry to its default color. The '*'
token can be used to reset all index entries to their default colors.
Eg.
color index blue white ~fvikas
color index red white ~z>100k
uncolor index ~fvikas
uncolor index *
- mailboxes specified in save-hooks can be %-expanded using $header_format
- the default save mailbox no longer looks at defined `lists'. To get the
old behaviour, use
save-hook ~l %B
- optional strings in format strings have been extended to allow for an
`else' clause. the new syntax is:
%?<testchar>?<if-string>&<else-string>?
or if no `else' clause is desired (backwards compatibility):
%?<testchar>?<if-string>?
- If new mail is delivered to a folder when Mutt is displaying a limited
view of the folder, it is added to the limited view only if it satisfies
the current limit criteria.
- the <Tab> key on the command-line now completes commands and variable
names. The longest non-ambiguous part is put on the command-line.
Entering additional text and using <Tab> will perform completion again.
Last updated on April 3, 2016 by kevin8t8.
URL:<http://www.mutt.org/changes.html>