Table of Contents
Mutt supports several of optional features which can be enabled or disabled at compile-time by giving the configure script certain arguments. These are listed in the “Optional features” section of the configure --help output.
Which features are enabled or disabled can later be determined from the
output of mutt -v
. If a compile option starts with
“+” it is enabled and disabled if prefixed with
“-”. For example, if Mutt was compiled using GnuTLS for
encrypted communication instead of OpenSSL, mutt -v
would contain:
-USE_SSL_OPENSSL +USE_SSL_GNUTLS
Mutt may also be “patched” to support smaller features.
These patches should add a free-form string to the end Mutt's version string.
Running mutt -v
might show:
patch-1.6.2.sidebar.20160709
Mutt optionally supports the IMAP, POP3 and SMTP protocols which require
to access servers using URLs. The canonical syntax for specifying URLs
in Mutt is (an item enclosed in []
means it is
optional and may be omitted):
proto[s]://[username[:password]@]server[:port][/path]
proto is the communication protocol:
imap
for IMAP, pop
for POP3 and
smtp
for SMTP. If “s” for “secure
communication” is appended, Mutt will attempt to establish an
encrypted communication using SSL or TLS.
Since all protocols supported by Mutt support/require authentication,
login credentials may be specified in the URL. This has the advantage
that multiple IMAP, POP3 or SMTP servers may be specified (which isn't
possible using, for example, $imap_user). The username may contain the
“@” symbol being used by many mail systems as part of the
login name. The special characters “/”
(%2F
), “:” (%3A
) and
“%” (%25
) have to be URL-encoded in
usernames using the %
-notation.
A password can be given, too but is not recommended if the URL is specified in a configuration file on disk.
If no port number is given, Mutt will use the system's default for the
given protocol (usually consulting /etc/services
).
The optional path is only relevant for IMAP and ignored elsewhere.
If Mutt is compiled with IMAP, POP3 and/or SMTP support, it can also be compiled with support for SSL or TLS using either OpenSSL or GnuTLS ( by running the configure script with the --enable-ssl=... option for OpenSSL or --enable-gnutls=... for GnuTLS). Mutt can then attempt to encrypt communication with remote servers if these protocols are suffixed with “s” for “secure communication”.
If Mutt is compiled with POP3 support (by running the configure script with the --enable-pop flag), it has the ability to work with mailboxes located on a remote POP3 server and fetch mail for local browsing.
Remote POP3 servers can be accessed using URLs with the
pop
protocol for unencrypted and
pops
for encrypted communication, see Section 1.3, “URL Syntax” for details.
Polling for new mail is more expensive over POP3 than locally. For this reason the frequency at which Mutt will check for mail remotely can be controlled by the $pop_checkinterval variable, which defaults to every 60 seconds.
POP is read-only which doesn't allow for some features like editing messages or changing flags. However, using Section 7.1, “Header Caching” and Section 7.2, “Body Caching” Mutt simulates the new/old/read flags as well as flagged and replied. Mutt applies some logic on top of remote messages but cannot change them so that modifications of flags are lost when messages are downloaded from the POP server (either by Mutt or other tools).
Another way to access your POP3 mail is the
<fetch-mail>
function (default: G). It allows
to connect to $pop_host, fetch all your
new mail and place it in the local $spoolfile. After this point, Mutt runs
exactly as if the mail had always been local.
If you only need to fetch all messages to a local mailbox you should
consider using a specialized program, such as
fetchmail(1)
, getmail(1)
or
similar.
If Mutt was compiled with IMAP support (by running the configure script with the --enable-imap flag), it has the ability to work with folders located on a remote IMAP server.
You can access the remote inbox by selecting the folder by its URL (see
Section 1.3, “URL Syntax” for details) using the
imap
or imaps
protocol.
Alternatively, a pine-compatible notation is also supported, i.e.
{[username@]imapserver[:port][/ssl]}path/to/folder
Note that not all servers use “/” as the hierarchy separator. Mutt should correctly notice which separator is being used by the server and convert paths accordingly.
When browsing folders on an IMAP server, you can toggle whether to look at only the folders you are subscribed to, or all folders with the toggle-subscribed command. See also the $imap_list_subscribed variable.
Polling for new mail on an IMAP server can cause noticeable delays. So, you'll want to carefully tune the $mail_check and $timeout variables. Reasonable values are:
set mail_check=90 set timeout=15
with relatively good results even over slow modem lines.
Note that if you are using mbox as the mail store on UW servers prior to v12.250, the server has been reported to disconnect a client if another client selects the same folder.
As of version 1.2, Mutt supports browsing mailboxes on an IMAP server. This is mostly the same as the local file browser, with the following differences:
In lieu of file permissions, Mutt displays the string “IMAP”, possibly followed by the symbol “+”, indicating that the entry contains both messages and subfolders. On Cyrus-like servers folders will often contain both messages and subfolders.
For the case where an entry can contain both messages and subfolders,
the selection key (bound to enter
by default) will
choose to descend into the subfolder view. If you wish to view the
messages in that folder, you must use view-file
instead (bound to space
by default).
You can create, delete and rename mailboxes with the
<create-mailbox>
,
<delete-mailbox>
, and
<rename-mailbox>
commands (default bindings:
C
, d
and r
,
respectively). You may also <subscribe>
and
<unsubscribe>
to mailboxes (normally these are
bound to s
and u
, respectively).
Mutt supports four authentication methods with IMAP servers: SASL, GSSAPI, CRAM-MD5, and LOGIN (there is a patch by Grant Edwards to add NTLM authentication for you poor exchange users out there, but it has yet to be integrated into the main tree). There is also support for the pseudo-protocol ANONYMOUS, which allows you to log in to a public IMAP server without having an account. To use ANONYMOUS, simply make your username blank or “anonymous”.
SASL is a special super-authenticator, which selects among several protocols (including GSSAPI, CRAM-MD5, ANONYMOUS, and DIGEST-MD5) the most secure method available on your host and the server. Using some of these methods (including DIGEST-MD5 and possibly GSSAPI), your entire session will be encrypted and invisible to those teeming network snoops. It is the best option if you have it. To use it, you must have the Cyrus SASL library installed on your system and compile Mutt with the --with-sasl flag.
Mutt will try whichever methods are compiled in and available on the server, in the following order: SASL, ANONYMOUS, GSSAPI, CRAM-MD5, LOGIN.
There are a few variables which control authentication:
$imap_user - controls the username
under which you request authentication on the IMAP server, for all
authenticators. This is overridden by an explicit username in the
mailbox path (i.e. by using a mailbox name of the form
{user@host}
).
$imap_pass - a password which you may preset, used by all authentication methods where a password is needed.
$imap_authenticators - a colon-delimited list of IMAP authentication methods to try, in the order you wish to try them. If specified, this overrides Mutt's default (attempt everything, in the order listed above).
Besides supporting traditional mail delivery through a
sendmail-compatible program, Mutt supports delivery through SMTP if it
was configured and built with --enable-smtp
.
If the configuration variable $smtp_url is set, Mutt will contact the given SMTP server to deliver messages; if it is unset, Mutt will use the program specified by $sendmail.
For details on the URL syntax, please see Section 1.3, “URL Syntax”.
The built-in SMTP support supports encryption (the
smtps
protocol using SSL or TLS) as well as SMTP
authentication using SASL. The authentication mechanisms for SASL are
specified in $smtp_authenticators defaulting to
an empty list which makes Mutt try all available methods from
most-secure to least-secure.
Usage:
account-hook
regexp
command
If you happen to have accounts on multiple IMAP, POP and/or SMTP servers, you may find managing all the authentication settings inconvenient and error-prone. The account-hook command may help. This hook works like folder-hook but is invoked whenever Mutt needs to access a remote mailbox (including inside the folder browser), not just when you open the mailbox. This includes (for example) polling for new mail, storing Fcc messages and saving messages to a folder. As a consequence, account-hook should only be used to set connection-related settings such as passwords or tunnel commands but not settings such as sender address or name (because in general it should be considered unpredictable which account-hook was last used).
Some examples:
account-hook . 'unset imap_user; unset imap_pass; unset tunnel' account-hook imap://host1/ 'set imap_user=me1 imap_pass=foo' account-hook imap://host2/ 'set tunnel="ssh host2 /usr/libexec/imapd"' account-hook smtp://user@host3/ 'set tunnel="ssh host3 /usr/libexec/smtpd"'
To manage multiple accounts with, for example, different values of $record or sender addresses, folder-hook has to be be used together with the mailboxes command.
Example 6.2. Managing multiple accounts
mailboxes imap://user@host1/INBOX folder-hook imap://user@host1/ 'set folder=imap://host1/ ; set record=+INBOX/Sent' mailboxes imap://user@host2/INBOX folder-hook imap://user@host2/ 'set folder=imap://host2/ ; set record=+INBOX/Sent'
In example Example 6.2, “Managing multiple accounts” the folders are defined using mailboxes so Mutt polls them for new mail. Each folder-hook triggers when one mailbox below each IMAP account is opened and sets $folder to the account's root folder. Next, it sets $record to the INBOX/Sent folder below the newly set $folder. Please notice that the value the “+” mailbox shortcut refers to depends on the current value of $folder and therefore has to be set separately per account. Setting other values like $from or $signature is analogous to setting $record.
Mutt contains two types of local caching: (1) the so-called “header caching” and (2) the so-called “body caching” which are both described in this section.
Header caching is optional as it depends on external libraries, body caching is always enabled if Mutt is compiled with POP and/or IMAP support as these use it (body caching requires no external library).
Mutt provides optional support for caching message headers for the following types of folders: IMAP, POP, Maildir and MH. Header caching greatly speeds up opening large folders because for remote folders, headers usually only need to be downloaded once. For Maildir and MH, reading the headers from a single file is much faster than looking at possibly thousands of single files (since Maildir and MH use one file per message.)
Header caching can be enabled via the configure script and the --enable-hcache option. It's not turned on by default because external database libraries are required: one of tokyocabinet, qdbm, gdbm or bdb must be present.
If enabled, $header_cache can be used to either point to a file or a directory. If set to point to a file, one database file for all folders will be used (which may result in lower performance), but one file per folder if it points to a directory.
Both cache methods can be combined using the same directory for storage (and for IMAP/POP even provide meaningful file names) which simplifies manual maintenance tasks.
In addition to caching message headers only, Mutt can also cache whole message bodies. This results in faster display of messages for POP and IMAP folders because messages usually have to be downloaded only once.
For configuration, the variable $message_cachedir must point to a directory. There, Mutt will create a hierarchy of subdirectories named like the account and mailbox path the cache is for.
For using both, header and body caching, $header_cache and $message_cachedir can be safely set to the same value.
In a header or body cache directory, Mutt creates a directory hierarchy
named like: proto:user@hostname
where
proto
is either “pop” or
“imap.” Within there, for each folder, Mutt stores messages
in single files and header caches in files with the
“.hcache” extension. All files can be removed as needed if
the consumed disk space becomes an issue as Mutt will silently fetch
missing items again. Pathnames are always stored in UTF-8 encoding.
For Maildir and MH, the header cache files are named after the MD5 checksum of the path.
Mutt does not (yet) support maintenance features for header cache database files so that files have to be removed in case they grow too big. It depends on the database library used for header caching whether disk space freed by removing messages is re-used.
For body caches, Mutt can keep the local cache in sync with the remote mailbox if the $message_cache_clean variable is set. Cleaning means to remove messages from the cache which are no longer present in the mailbox which only happens when other mail clients or instances of Mutt using a different body cache location delete messages (Mutt itself removes deleted messages from the cache when syncing a mailbox). As cleaning can take a noticeable amount of time, it should not be set in general but only occasionally.
Mutt supports the “Name <user@host>” address syntax
for reading and writing messages, the older “user@host
(Name)” syntax is only supported when reading messages. The
--enable-exact-address switch can be given to
configure to build it with write-support for the latter
syntax. EXACT_ADDRESS
in the output of mutt
-v
indicates whether it's supported.
You may also have compiled Mutt to co-operate with Mixmaster, an anonymous remailer. Mixmaster permits you to send your messages anonymously using a chain of remailers. Mixmaster support in Mutt is for mixmaster version 2.04 or later.
To use it, you'll have to obey certain restrictions. Most important,
you cannot use the Cc
and Bcc
headers. To tell Mutt to use mixmaster, you have to select a remailer
chain, using the mix function on the compose menu.
The chain selection screen is divided into two parts. In the (larger) upper part, you get a list of remailers you may use. In the lower part, you see the currently selected chain of remailers.
You can navigate in the chain using the
<chain-prev>
and
<chain-next>
functions, which are by default
bound to the left and right arrows and to the h
and
l
keys (think vi keyboard bindings). To insert a
remailer at the current chain position, use the
<insert>
function. To append a remailer behind
the current chain position, use <select-entry>
or <append>
. You can also delete entries from
the chain, using the corresponding function. Finally, to abandon your
changes, leave the menu, or <accept>
them
pressing (by default) the Return
key.
Note that different remailers do have different capabilities, indicated in the %c entry of the remailer menu lines (see $mix_entry_format). Most important is the “middleman” capability, indicated by a capital “M”: This means that the remailer in question cannot be used as the final element of a chain, but will only forward messages to other mixmaster remailers. For details on the other capabilities, please have a look at the mixmaster documentation.
To check if Mutt supports “Compress Folders”, look for “+USE_COMPRESSED” in the mutt version. See: Section 1.1, “Enabling/Disabling Features”.
Dependencies:
mutt-1.6.2
This patch is part of the NeoMutt Project.
The Compressed Folder patch allows Mutt to read mailbox files that are compressed. But it isn't limited to compressed files. It works well with encrypted files, too. In fact, if you can create a program/script to convert to and from your format, then Mutt can read it.
The patch adds three hooks to Mutt: open-hook
,
close-hook
and append-hook
. They
define commands to: uncompress a file; compress a file; append
messages to an already compressed file.
There are some examples of both compressed and encrypted files, later. For now, the documentation will just concentrate on compressed files.
open-hook
pattern
shell-command
close-hook
pattern
shell-command
append-hook
pattern
shell-command
The shell-command must contain two placeholders for filenames:
%f
and %t
. These represent
“from” and “to” filenames. It's a good idea to
put quotes around these placeholders.
If you need the exact string “%f” or “%t” in your command, simply double up the “%” character, e.g. “%%f” or “%%t”.
Table 6.1. Not all Hooks are Required
Open | Close | Append | Effect | Useful if |
---|---|---|---|---|
Open | - | - | Folder is readonly | The folder is just a backup |
Open | Close | - | Folder is read/write, but the entire folder must be written if anything is changed | Your compression format doesn't support appending |
Open | Close | Append | Folder is read/write and emails can be efficiently added to the end | Your compression format supports appending |
Open | - | Append | Folder is readonly, but can be appended to | You want to store emails, but never change them |
The command:
should return a non-zero exit status on failure
should not delete any files
open-hook regexp shell-command
If Mutt is unable to open a file, it then looks for
open-hook
that matches the filename.
If your compression program doesn't have a well-defined extension,
then you can use .
as the regexp.
close-hook regexp shell-command
When Mutt has finished with a compressed mail folder, it will look
for a matching close-hook
to recompress the file.
This hook is optional.
If the folder has not been modifed, the
close-hook
will not be called.
append-hook regexp shell-command
When Mutt wants to append an email to a compressed mail folder, it
will look for a matching append-hook
.
This hook is optional.
Using the append-hook
will save time, but
Mutt won't be able to determine the type of the mail folder
inside the compressed file.
Mutt will assume the type to be that of
the $mbox_type
variable. Mutt also uses
this type for temporary files.
Mutt will only use the append-hook
for existing files.
The close-hook
will be used for empty, or missing files.
append-hook '\.gz$' "gzip -c '%t' >> '%f'"
Mutt wants to append an email to a folder, “example.gz”,
that it opened with open-hook
Mutt has an append-hook
whose regexp matches
the filename: \.gz$
Mutt knows the mailbox type from the $mbox
variable
Mutt uses the command gzip -c
to append to an existing compressed file
Mutt assumes that an empty file is not compressed. In this situation, unset $save_empty, so that the compressed file will be removed if you delete all of the messages.
Encrypted files are decrypted into temporary files which are stored in the $tmpdir directory. This could be a security risk.
# Example Mutt config file for the 'compressed folders' feature. # This feature adds three hooks to Mutt which allow it to # work with compressed, or encrypted, mailboxes. # The hooks are of the form: # open-hook regexp "shell-command" # close-hook regexp "shell-command" # append-hook regexp "shell-command" # The 'append-hook' is optional. # Hander for gzip compressed mailboxes open-hook '\.gz$' "gzip -cd '%f' > '%t'" close-hook '\.gz$' "gzip -c '%t' > '%f'" append-hook '\.gz$' "gzip -c '%t' >> '%f'" # Hander for bzip2 compressed mailboxes open-hook '\.bz2$' "bzip2 -cd '%f' > '%t'" close-hook '\.bz2$' "bzip2 -c '%t' > '%f'" append-hook '\.bz2$' "bzip2 -c '%t' >> '%f'" # Hander for xz compressed mailboxes open-hook '\.xz$' "xz -cd '%f' > '%t'" close-hook '\.xz$' "xz -c '%t' > '%f'" append-hook '\.xz$' "xz -c '%t' >> '%f'" # Hander for pgp encrypted mailboxes # PGP does not support appending to an encrypted file open-hook '\.pgp$' "pgp -f < '%f' > '%t'" close-hook '\.pgp$' "pgp -fe YourPgpUserIdOrKeyId < '%t' > '%f'" # Hander for gpg encrypted mailboxes # gpg does not support appending to an encrypted file open-hook '\.gpg$' "gpg --decrypt < '%f' > '%t'" close-hook '\.gpg$' "gpg --encrypt --recipient YourGpgUserIdOrKeyId < '%t' > '%f'" # vim: syntax=muttrc
The Compressed Folder hooks cannot deal with filenames that contains quotes/apostrophes.
Roland Rosenfeld <roland@spinnaker.de>
Alain Penders <Alain@Finale-Dev.com>
Christoph “Myon” Berg <myon@debian.org>
Evgeni Golov <evgeni@debian.org>
Richard Russon <rich@flatcap.org>
To check if Mutt supports “Conditional Dates”, look for “patch-cond-date” in the mutt version. See: Section 1.2, “Mutt Patches”.
Dependencies:
mutt-1.6.2
This patch is part of the NeoMutt Project.
The “cond-date” patch allows you to construct $index_format expressions based on the age of the email.
Mutt's default $index_format
displays email dates in the
form: abbreviated-month day-of-month — “Jan 14”.
The format is configurable but only per-mailbox. This patch allows you to configure the display depending on the age of the email.
Table 6.2. Potential Formatting Scheme
Email Sent | Format | Example |
---|---|---|
Today | %H:%M | 13:23 |
This Month | %a %d | Thu 17 |
This Year | %b %d | Dec 10 |
Older than 1 Year | %m/%y | 06/14 |
For an explanation of the date formatting strings, see
strftime(3).
By carefully picking your formats, the dates can remain unambiguous and compact.
Mutt's conditional format strings have the form: (whitespace introduced for clarity)
%? TEST ? TRUE & FALSE ?
The examples below use the test “%[” — the date of the message in the local timezone. They will also work with “%(” — the local time that the message arrived.
The date tests are of the form:
%[nX? TRUE & FALSE ?
“n” is an optional count (defaults to 1 if missing)
“X” is the time period
Table 6.4. Example Date Tests
Test | Meaning |
---|---|
%[y | This year |
%[1y | This year |
%[6m | In the last 6 months |
%[w | This week |
%[d | Today |
%[4H | In the last 4 hours |
We start with a one-condition test.
Table 6.5. Example 1
Test | Date Range | Format String | Example |
---|---|---|---|
%[1m | This month | %[%b %d] | Dec 10 |
Older | %[%Y-%m-%d] | 2015-04-23 |
The $index_format string would contain:
%?[1m?%[%b %d]&%[%Y-%m-%d]?
Reparsed a little, for clarity, you can see the test condition and the two format strings.
%?[1m? & ? %[%b %d] %[%Y-%m-%d]
This example contains three test conditions and four date formats.
Table 6.6. Example 2
Test | Date Range | Format String | Example |
---|---|---|---|
%[d | Today | %[%H:%M ] | 12:34 |
%[m | This month | %[%a %d] | Thu 12 |
%[y | This year | %[%b %d] | Dec 10 |
Older | %[%m/%y ] | 06/15 |
The $index_format string would contain:
%<[y?%<[m?%<[d?%[%H:%M ]&%[%a %d]>&%[%b %d]>&%[%m/%y ]>
Reparsed a little, for clarity, you can see the test conditions and the four format strings.
%<[y? &%[%m/%y ]> Older %<[m? &%[%b %d]> This year %<[d? &%[%a %d]> This month %[%H:%M ] Today
This a another view of the same example, with some whitespace for clarity.
%<[y? %<[m? %<[d? AAA & BBB > & CCC > & DDD >
AAA = %[%H:%M ]
BBB = %[%a %d]
CCC = %[%b %d]
DDD = %[%m/%y ]
The “cond-date” patch doesn't have any config of its own. It modifies the behavior of the format strings.
# Example Mutt config file for the 'index-color' feature. # # The default index_format is: # '%4C %Z %{%b %d} %-15.15L (%?l?%4l&%4c?) %s' # # We replace the date field '%{%b %d}', giving: set index_format='%4C %Z %<[y?%<[m?%<[d?%[%H:%M ]&%[%a %d]>&%[%b %d]>&%[%m/%y ]> %-15.15L (%?l?%4l&%4c?) %s' # Test Date Range Format String Example # -------------------------------------------- # %[d Today %[%H:%M ] 12:34 # %[m This month %[%a %d] Thu 12 # %[y This year %[%b %d] Dec 10 # - Older %[%m/%y ] 06/15 # vim: syntax=muttrc
strftime(3)
Date parsing doesn't quite do what you expect.
“1w” doesn't mean the “in the last 7 days”, but
“this week”. This doesn't match
the normal Mutt behaviour: for example ~d>1w
means emails dated in the last 7 days.
Aaron Schrab <aaron@schrab.com>
Eric Davis <edavis@insanum.com>
Richard Russon <rich@flatcap.org>
To check if Mutt supports “fmemopen”, look for “patch-fmemopen” in the mutt version. See: Section 1.2, “Mutt Patches”.
Dependencies:
mutt-1.6.2
open_memstream()
, fmemopen()
from glibc
This patch is part of the NeoMutt Project.
The “fmemopen” patch speeds up some searches.
This patch changes a few places where Mutt creates temporary files. It replaces them with in-memory buffers. This should improve the performance when searching the header or body using the $thorough_search option.
There are no user-configurable parts.
This patch depends on open_memstream()
and
fmemopen()
. They are provided by glibc. Without
them, Mutt will simply create temporary files.
fmemopen(3)
Julius Plenz <plenz@cis.fu-berlin.de>
Richard Russon <rich@flatcap.org>
To check if Mutt supports “ifdef”, look for “patch-ifdef” in the mutt version. See: Section 1.2, “Mutt Patches”.
Dependencies:
mutt-1.6.2
This patch is part of the NeoMutt Project.
The “ifdef” patch introduces three new commands to Mutt and allow you to share one config file between versions of Mutt that may have different features compiled in.
ifdef symbol config-command [args...] # If a symbol is defined ifndef symbol config-command [args...] # If a symbol is not defined finish # Finish reading the current file
Here a symbol can be a $variable, <function>, command or compile-time symbol, such as “USE_IMAP”.
finish
is particularly useful when combined with
ifndef
. e.g.
# Sidebar config file
ifndef USE_SIDEBAR finish
# Example Mutt config file for the 'ifdef' feature. # This feature introduces three useful commands which allow you to share # one config file between versions of Mutt that may have different # features compiled in. # ifdef symbol config-command [args...] # ifndef symbol config-command [args...] # finish # The 'ifdef' command tests whether Mutt understands the name of # a variable, function, command or compile-time symbol. # If it does, then it executes a config command. # The 'ifndef' command tests whether a symbol does NOT exist. # The 'finish' command tells Mutt to stop reading current config file. # If the 'trash' variable exists, set it. ifdef trash 'set trash=~/Mail/trash' # If the 'tag-pattern' function exists, bind a key to it. ifdef tag-pattern 'bind index <F6> tag-pattern' # If the 'imap-fetch-mail' command exists, read my IMAP config. ifdef imap-fetch-mail 'source ~/.mutt/imap.rc' # If the compile-time symbol 'USE_SIDEBAR' does not exist, then # stop reading the current config file. ifndef USE_SIDEBAR finish # vim: syntax=muttrc
Cedric Duval <cedricduval@free.fr>
Matteo F. Vescovi <mfvescovi@gmail.com>
Richard Russon <rich@flatcap.org>
To check if Mutt supports “Index Color”, look for “patch-index-color” in the mutt version. See: Section 1.2, “Mutt Patches”.
Dependencies:
mutt-1.6.2
This patch is part of the NeoMutt Project.
The “index-color” patch allows you to specify colors for individual parts of the email index. e.g. Subject, Author, Flags.
First choose which part of the index you'd like to color. Then, if needed, pick a pattern to match.
Note: The pattern does not have to refer to the object you wish to color. e.g.
color index_author red default "~smutt"
The author appears red when the subject (~s) contains “mutt”.
All the colors default to default
, i.e. unset.
The index objects can be themed using the color
command.
Some objects require a pattern.
color index-object foreground background color index-object foreground background pattern
Table 6.7. Index Colors
Object | Pattern | Highlights |
---|---|---|
index | yes | Entire index line |
index_author | yes | Author name, %A %a %F %L %n |
index_collapsed | no | Number of messages in a collapsed thread, %M |
index_date | no | Date field |
index_flags | yes | Message flags, %S %Z |
index_label | no | Message label, %y %Y |
index_number | no | Message number, %C |
index_size | no | Message size, %c %l |
index_subject | yes | Subject, %s |
# Example Mutt config file for the 'index-color' feature. # Entire index line color index white black '.*' # Author name, %A %a %F %L %n # Give the author column a dark grey background color index_author default color234 '.*' # Highlight a particular from (~f) color index_author brightyellow color234 '~fRay Charles' # Message flags, %S %Z # Highlight the flags for flagged (~F) emails color index_flags default red '~F' # Subject, %s # Look for a particular subject (~s) color index_subject brightcyan default '~s\(closes #[0-9]+\)' # Number of messages in a collapsed thread, %M color index_collapsed default brightblue # Date field color index_date green default # Message label, %y %Y color index_label default brightgreen # Message number, %C color index_number red default # Message size, %c %l color index_size cyan default # vim: syntax=muttrc
Christian Aichinger <Greek0@gmx.net>
Christoph “Myon” Berg <myon@debian.org>
Elimar Riesebieter <riesebie@lxtec.de>
Eric Davis <edavis@insanum.com>
Vladimir Marek <Vladimir.Marek@oracle.com>
Richard Russon <rich@flatcap.org>
To check if Mutt supports “Initials”, look for “patch-initials” in the mutt version. See: Section 1.2, “Mutt Patches”.
Dependencies:
mutt-1.6.2
This patch is part of the NeoMutt Project.
The “initials” patch adds an expando (%I) for an author's initials.
The index panel displays a list of emails. Its layout is controlled by the $index_format variable. Using this expando saves space in the index panel. This can be useful if you are regularly working with a small set of people.
This patch has no config of its own. It adds an expando which can be used in the $index_format variable.
# Example Mutt config file for the 'initials' patch. # The 'initials' patch has no config of its own. # It adds an expando for an author's initials, # which can be used in the 'index_format' variable. # The default 'index_format' is: set index_format='%4C %Z %{%b %d} %-15.15L (%?l?%4l&%4c?) %s' # Where %L represents the author/recipient # This might look like: # 1 + Nov 17 David Bowie Changesbowie ( 689) # 2 ! Nov 17 Stevie Nicks Rumours ( 555) # 3 + Nov 16 Jimi Hendrix Voodoo Child ( 263) # 4 + Nov 16 Debbie Harry Parallel Lines ( 540) # Using the %I expando: set index_format='%4C %Z %{%b %d} %I (%?l?%4l&%4c?) %s' # This might look like: # 1 + Nov 17 DB Changesbowie ( 689) # 2 ! Nov 17 SN Rumours ( 555) # 3 + Nov 16 JH Voodoo Child ( 263) # 4 + Nov 16 DH Parallel Lines ( 540) # vim: syntax=muttrc
Vsevolod Volkov <vvv@mutt.org.ua>
Richard Russon <rich@flatcap.org>
To check if Mutt supports “Keywords”, look for “patch-keywords” in the mutt version. See: Section 1.2, “Mutt Patches”.
Dependencies:
mutt-1.6.2
This patch is part of the NeoMutt Project.
Unify label/keyword handling.
Since x-labels were added to mutt in 2000, a number of other approaches to what we now call “tagging” have also emerged. One of them was even made standard in RFC 2822. This update unifies the handling of all these strategies.
We start by changing mutt's internal keyword storage from a single string which may contain whitespace to a list of discrete keywords. This has advantages for keyword completion as well as for portabilty among varying "standards" for keyword storage. This may represent a significant change for existing mutt users who have set x-labels containing spaces, and should be regarded with suspicion. The advantages are significant, though.
Next we allow mutt to parse keywords into this internal list from any of the following headers: X-Label (freeform), X-Keywords (space-delimited), X-Mozilla-Keys (space-delimited), and Keywords (RFC 2822, comma-space-delimited). Mutt remembers which headers it sourced keywords from, and can rewrite those headers when saving messages for compatibility with the mailer of origin.
(X-Label was specified as freeform text by mutt, its only known implementation. X-Labels have been used both as a “tagging” device, probably with space delimiting, and as a “memo” field, where space-delimited parsing would ruin the semantics of the memo. By default mutt will not split X-Labels at all. Set $xlabel_delimiter if your needs vary.)
Finally we add two booleans: $keywords_legacy=true and $keywords_standard=FALSE. When $keywords_legacy is true, mutt will always save keyword to whatever original header it came from. When $keywords_standard=true, mutt will save to the Keywords: header. If both are true mutt saves to both; if neither is true, mutt saves only to legacy headers to avoid complete loss of keywords.
Overall this represents convergence path for all competing labelling/tagging/keywording systems toward one that is specified by RFC.
You can change or delete the X-Label: field within Mutt using the edit-label command, bound to the y key by default. This works for tagged messages, too.
Table 6.8. Keywords Variables
Name | Type | Default |
---|---|---|
keywords_legacy | boolean | yes |
keywords_standard | boolean | no |
xlabel_delimiter | string | (empty) |
Table 6.9. Keyword Functions
Menus | Default Key | Function | Description |
---|---|---|---|
index,pager | y | <edit-label> | add, change, or delete a message's label |
# This is a complete list of keywords-related configuration. # -------------------------------------------------------------------------- # VARIABLES - shown with their default values # -------------------------------------------------------------------------- # Should Mutt save the keywords to whatever keyword it came from? set keywords_legacy = yes # Should Mutt use the "Keywords:" header? set keywords_standard = no # How should the keywords be separated? set xlabel_delimiter = "" # -------------------------------------------------------------------------- # FUNCTIONS - shown with an example mapping # -------------------------------------------------------------------------- # Bind 'y' to edit labels/keywords bind index,pager y edit-label # -------------------------------------------------------------------------- # vim: syntax=muttrc
David Champion <dgc@uchicago.edu>
Richard Russon <rich@flatcap.org>
To check if Mutt supports “limit-current-thread”, look for “patch-limit-current-thread” in the mutt version. See: Section 1.2, “Mutt Patches”.
Dependencies:
mutt-1.6.2
This patch is part of the NeoMutt Project.
This patch adds a new way of using the
Limit Command.
The <limit-current-thread>
function restricts the view to just the current thread.
Setting the limit (the l
key) to
“all” will restore the full email list.
Table 6.11. Limit-Current-Thread Functions
Menus | Default Key | Function | Description |
---|---|---|---|
index | <Esc>L | <limit-current-thread> | Limit view to current thread |
# Example Mutt config file for the 'limit-current-thread' patch. # Limit view to current thread bind index <esc>L limit-current-thread # vim: syntax=muttrc
David Sterba <dsterba@suse.cz>
Richard Russon <rich@flatcap.org>
To check if Mutt supports “lmdb”, look for “patch-lmdb” in the mutt version. See: Section 1.2, “Mutt Patches”.
Dependencies:
mutt-1.6.2
This patch is part of the NeoMutt Project.
This patch adds support for using LMDB as a storage backend for Mutt's header cache (hcache). It is enabled at configure time with the --with-lmdb=<path> switch.
Pietro Cerutti <gahr@gahr.ch>
Jan-Piet Mens <jp@mens.de>
To check if Mutt supports “Nested If”, look for “patch-nested-if” in the mutt version. See: Section 1.2, “Mutt Patches”.
Dependencies:
mutt-1.6.2
This patch is part of the NeoMutt Project.
Mutt's format strings can contain embedded if-then-else conditions. They are of the form:
%?VAR?TRUE&FALSE?
If the variable “VAR” has a value greater than zero, print the “TRUE” string, otherwise print the “FALSE” string.
e.g. %?S?Size: %S&Empty?
Which can be read as:
if (%S > 0) {
print "Size: %S"
} else {
print "Empty"
}
These conditions are useful, but in Mutt they cannot be nested
within one another. This patch uses the notation
%<VAR?TRUE&FALSE>
and allows them to be nested.
The %<...>
notation was used to format the
current local time. but that's not really very useful since mutt
has no means of refreshing the screen periodically.
A simple nested condition might be: (Some whitespace has been introduced for clarity)
%<x? %<y? XY & X > & %<y? Y & NONE > > Conditions %<y? XY & X > x>0 XY x>0,y>0 X x>0,y=0
%<x? %<y? XY & X > & %<y? Y & NONE > > Conditions %<y? Y & NONE > x=0 Y x=0,y>0 NONE x=0,y=0
Equivalent to:
if (x > 0) {
if (y > 0) {
print 'XY'
} else {
print 'X'
}
} else {
if (y > 0) {
print 'Y'
} else {
print 'NONE'
}
}
Examples:
set index_format='%4C %Z %{%b %d} %-25.25n %s%> %<M?%M Msgs &%<l?%l Lines&%c Bytes>>'
if a thread is folded
display the number of messages (%M)
else if we know how many lines in the message
display lines in message (%l)
else
display the size of the message in bytes (%c)
set index_format='%4C %Z %{%b %d} %-25.25n %<M?[%M] %s&%s%* %<l?%l&%c>>'
if a thread is folded
display the number of messages (%M)
display the subject (%s)
else if we know how many lines in the message
display lines in message (%l)
else
display the size of the message in bytes (%c)
The “nested-if” patch doesn't have any config of its own. It modifies the behavior of the format strings.
# Example Mutt config file for the 'nested-if' feature. # This patch uses the format: '%<VAR?TRUE&FALSE>' for conditional # format strings that can be nested. # Example 1 # if a thread is folded # display the number of messages (%M) # else if we know how many lines in the message # display lines in message (%l) # else display the size of the message in bytes (%c) set index_format='%4C %Z %{%b %d} %-25.25n %s%> %<M?%M Msgs &%<l?%l Lines&%c Bytes>>' # Example 2 # if a thread is folded # display the number of messages (%M) # display the subject (%s) # else if we know how many lines in the message # display lines in message (%l) # else # display the size of the message in bytes (%c) set index_format='%4C %Z %{%b %d} %-25.25n %<M?[%M] %s&%s%* %<l?%l&%c>>' # vim: syntax=muttrc
David Champion <dgc@uchicago.edu>
Richard Russon <rich@flatcap.org>
To check if Mutt supports “new-mail”, look for “patch-new-mail” in the mutt version. See: Section 1.2, “Mutt Patches”.
Dependencies:
mutt-1.6.2
This patch is part of the NeoMutt Project.
This patch enables the new_mail_command setting, which can be used to execute a custom script (e.g., a notification handler) upon receiving a new mail.
The command string can contain expandos, such as %f
for the folder name. For a complete list, see:
$status_format.
For example in Linux you can use (most distributions already provide notify-send):
set new_mail_command="notify-send --icon='/home/santiago/Pictures/mutt.png' 'New Email in %f' '%n new messages, %u unread.' &"
And in OS X you will need to install a command line interface for Notification Center, for example terminal-notifier:
set new_mail_command="terminal-notifier -title '%v' -subtitle 'New Mail in %f' -message '%n new messages, %u unread.' -activate 'com.apple.Terminal'"
# Example Mutt config file for the 'new-mail-command' patch. # -------------------------------------------------------------------------- # VARIABLES - shown with their default values # -------------------------------------------------------------------------- # Set the command you want mutt to execute upon the receipt of a new email set new_mail_command = "" # Linux example: # set new_command="notify-send --icon='/home/santiago/Pictures/mutt.png' 'New Email in %f' '%n new messages, %u unread.' &" # OS X example: # set new_mail_command="terminal-notifier -title '%v' -subtitle 'New Mail in %f' -message '%n new messages, %u unread.' -activate 'com.apple.Terminal'" # -------------------------------------------------------------------------- # vim: syntax=muttrc
Yoshiki Vazquez-Baeza <yoshiki@ucsd.edu>
Santiago Torres-Arias <santiago@nyu.edu>
Richard Russon <rich@flatcap.org>
To check if Mutt supports “NNTP”, look for “+USE_NNTP” in the mutt version. See: Section 1.1, “Enabling/Disabling Features”.
Dependencies:
mutt-1.6.2
This patch is part of the NeoMutt Project.
Reading news via NNTP
If compiled with --enable-nntp option, Mutt can
read news from news server via NNTP. You can open a newsgroup with
function ``change-newsgroup'' (default: ``i''). Default news server
can be obtained from $NNTPSERVER
environment
variable or from /etc/nntpserver
file. Like other
news readers, info about subscribed newsgroups is saved in file by
$newsrc variable. The variable $news_cache_dir can be used to point
to a directory. Mutt will create a hierarchy of subdirectories named
like the account and newsgroup the cache is for. Also the hierarchy
is used to store header cache if Mutt was compiled with header cache support.
Table 6.13. NNTP Variables
Name | Type | Default |
---|---|---|
ask_follow_up | boolean | no |
ask_x_comment_to | boolean | no |
catchup_newsgroup | quad | ask-yes |
followup_to_poster | quad | ask-yes |
group_index_format | string | %4C %M%N %5s %-45.45f %d |
inews | string | (empty) |
mime_subject | boolean | yes |
newsgroups_charset | string | utf-8 |
newsrc | string | ~/.newsrc |
news_cache_dir | string | ~/.mutt |
news_server | string | (empty) |
nntp_authenticators | string | (empty) |
nntp_context | number | 1000 |
nntp_listgroup | boolean | yes |
nntp_load_description | boolean | yes |
nntp_pass | string | (empty) |
nntp_poll | number | 60 |
nntp_user | string | (empty) |
post_moderated | quad | ask-yes |
save_unsubscribed | boolean | no |
show_new_news | boolean | yes |
show_only_unread | boolean | no |
x_comment_to | boolean | no |
Table 6.14. NNTP Functions
Menus | Default Key | Function | Description |
---|---|---|---|
browser,index | y | <catchup> | mark all articles in newsgroup as read |
index,pager | i | <change-newsgroup> | open a different newsgroup |
pager | X | <change-vfolder> | open a different virtual folder |
compose | o | <edit-followup-to> | edit the Followup-To field |
compose | N | <edit-newsgroups> | edit the newsgroups list |
compose | x | <edit-x-comment-to> | edit the X-Comment-To field |
pager | + | <entire-thread> | read entire thread of the current message |
attachment,index,pager | F | <followup-message> | followup to newsgroup |
pager | ` | <modify-labels> | modify (notmuch) tags |
index,pager | P | <post-message> | post message to newsgroup |
browser | g | <reload-active> | load list of all newsgroups from NNTP server |
browser | s | <subscribe> | subscribe to current mbox (IMAP/NNTP only) |
browser | S | <subscribe-pattern> | subscribe to newsgroups matching a pattern |
browser | Y | <uncatchup> | mark all articles in newsgroup as unread |
browser | u | <unsubscribe> | unsubscribe from current mbox (IMAP/NNTP only) |
browser | U | <unsubscribe-pattern> | unsubscribe from newsgroups matching a pattern |
index,pager | Alt-i | <change-newsgroup-readonly> | open a different newsgroup in read only mode |
attachment,index,pager | Alt-F | <forward-to-group> | forward to newsgroup |
index | (none) | <get-children> | get all children of the current message |
index | Alt-G | <get-parent> | get parent of the current message |
index,pager | (none) | <imap-fetch-mail> | force retrieval of mail from IMAP server |
index,pager | (none) | <imap-logout-all> | logout from all IMAP servers |
pager | (none) | <modify-labels-then-hide> | modify labeld and then hide message |
index | (none) | <reconstruct-thread> | reconstruct thread containing current message |
pager | Alt-X | <vfolder-from-query> | generate virtual folder from query |
index | Ctrl-G | <get-message> | get message with Message-Id |
# This is a complete list of nntp configuration. # -------------------------------------------------------------------------- # VARIABLES - shown with their default values # -------------------------------------------------------------------------- set ask_follow_up = no set ask_x_comment_to = no set catchup_newsgroup = ask-yes set followup_to_poster = ask-yes set group_index_format = '%4C %M%N %5s %-45.45f %d' set inews = '' set mime_subject = yes set newsgroups_charset = utf-8 set newsrc = '~/.newsrc' set news_cache_dir = '~/.mutt' set news_server = '' set nntp_authenticators = '' set nntp_context = 1000 set nntp_listgroup = yes set nntp_load_description = yes set nntp_pass = '' set nntp_poll = 60 set nntp_user = '' set post_moderated = ask-yes set save_unsubscribed = no set show_new_news = yes set show_only_unread = no set x_comment_to = no # -------------------------------------------------------------------------- # FUNCTIONS - shown with an example mapping # -------------------------------------------------------------------------- # mark all articles in newsgroup as read bind browser,index y catchup # open a different newsgroup bind index,pager i change-newsgroup # open a different virtual folder bind pager X change-vfolder # edit the Followup-To field bind compose o edit-followup-to # edit the newsgroups list bind compose N edit-newsgroups # edit the X-Comment-To field bind compose x edit-x-comment-to # read entire thread of the current message bind pager + entire-thread # followup to newsgroup bind attachment,index,pager F followup-message # modify (notmuch) tags bind pager ` modify-labels # post message to newsgroup bind index,pager P post-message # load list of all newsgroups from NNTP server bind browser g reload-active # subscribe to current mbox (IMAP/NNTP only) bind browser s subscribe # subscribe to newsgroups matching a pattern bind browser S subscribe-pattern # mark all articles in newsgroup as unread bind browser Y uncatchup # unsubscribe from current mbox (IMAP/NNTP only) bind browser u unsubscribe # unsubscribe from newsgroups matching a pattern bind browser U unsubscribe-pattern # open a different newsgroup in read only mode bind index,pager \ei change-newsgroup-readonly # forward to newsgroup bind attachment,index,pager \eF forward-to-group # get all children of the current message # bind index ??? get-children # get parent of the current message bind index \eG get-parent # force retrieval of mail from IMAP server # bind index,pager ??? imap-fetch-mail # logout from all IMAP servers # bind index,pager ??? imap-logout-all # modify labeld and then hide message # bind pager ??? modify-labels-then-hide # reconstruct thread containing current message # bind index ??? reconstruct-thread # generate virtual folder from query bind pager \eX vfolder-from-query # get message with Message-Id bind index \CG get-message # -------------------------------------------------------------------------- # vim: syntax=muttrc
Vsevolod Volkov <vvv@mutt.org.ua>
Felix von Leitner <leitner@fefe.de>
Richard Russon <rich@flatcap.org>
To check if Mutt supports “Notmuch”, look for “+USE_NOTMUCH” in the mutt version. See: Section 1.1, “Enabling/Disabling Features”.
Dependencies:
mutt-1.6.2
Notmuch libraries
This patch is part of the NeoMutt Project.
Table 6.15. Notmuch Variables
Name | Type | Default |
---|---|---|
nm_db_limit | number | 0 |
nm_default_uri | string | (empty) |
nm_exclude_tags | string | (empty) |
nm_hidden_tags | string | unread,draft,flagged,passed,replied,attachment,signed,encrypted |
nm_open_timeout | number | 5 |
nm_query_type | string | messages |
nm_record | boolean | no |
nm_record_tags | string | (empty) |
nm_unread_tag | string | unread |
vfolder_format | string | %6n(%6N) %f |
virtual_spoolfile | boolean | no |
Table 6.16. Notmuch Functions
Menus | Default Key | Function | Description |
---|---|---|---|
index,pager | X | <change-vfolder> | open a different virtual folder |
index,pager | + | <entire-thread> | read entire thread of the current message |
index,pager | ` | <modify-labels> | modify (notmuch) tags |
index,pager | (none) | <modify-labels-then-hide> | modify labels and then hide message |
index,pager | (none) | <sidebar-toggle-virtual> | toggle between mailboxes and virtual mailboxes |
index,pager | Alt-X | <vfolder-from-query> | generate virtual folder from query |
virtual-mailboxes
description
notmuch-URI
{
description
notmuch-URI
...}tag-transforms
tag
transformed-string
{
tag
transformed-string
...}tag-formats
tag
format-string
{
tag
format-string
...}
Adds these to index-color patch:
Table 6.17. Index Colors
Object | Pattern | Highlights |
---|---|---|
index_tag | yes | an individual message tag, %G, uses tag name |
index_tags | no | the transformed message tags, %g |
# This is a complete list of notmuch-related configuration. # -------------------------------------------------------------------------- # VARIABLES - shown with their default values # -------------------------------------------------------------------------- # This variable specifies notmuch query limit. set nm_db_limit = 0 # This variable specifies the default Notmuch database in format: # notmuch://<absolute path> set nm_default_uri = "" # The messages tagged with these tags are excluded and not loaded # from notmuch DB to mutt unless specified explicitly. set nm_exclude_tags = "" # This variable specifies private notmuch tags which should not be printed # on screen (index, pager). set nm_hidden_tags = "unread,draft,flagged,passed,replied,attachment,signed,encrypted" # This option specifies timeout for Notmuch database. Default is 5 seconds. set nm_open_timeout = 5 # This variable specifies notmuch query type, supported types: 'threads' and # 'messages'. set nm_query_type = messages # Add messages stored to the mutt record (see $record in the mutt docs) # also to notmuch DB. set nm_record = no # Tags that should be removed or added to the to the messages stored in the mutt record. set nm_record_tags = "" # This variable specifies notmuch tag which is used for unread messages. set nm_unread_tag = unread # This variable allows you to customize the file browser display for virtual # folders to your personal taste. set vfolder_format = "%6n(%6N) %f" # When set, mutt will use the first virtual mailbox (see virtual-mailboxes) # as a spoolfile. set virtual_spoolfile = no # -------------------------------------------------------------------------- # FUNCTIONS - shown with an example mapping # -------------------------------------------------------------------------- # open a different virtual folder bind index,pager X change-vfolder # read entire thread of the current message bind index,pager + entire-thread # modify (notmuch) tags bind index,pager ` modify-labels # generate virtual folder from query bind index,pager \eX vfolder-from-query # modify labels and then hide message # bind index,pager ??? modify-labels-then-hide # toggle between mailboxes and virtual mailboxes # bind index,pager ??? sidebar-toggle-virtual # -------------------------------------------------------------------------- # COMMANDS - shown with an example # -------------------------------------------------------------------------- # virtual-mailboxes description notmuch-URI { description notmuch-URI ...} # virtual-mailboxes "Climbing" "notmuch://?query=climbing" # Replace some tags with icons # tag-transforms tag transformed-string { tag transformed-string ...} # tag-transforms "inbox" "i" \ # "unread" "u" \ # "replied" "↻ " \ # "sent" "➥ " \ # "todo" "T" \ # "deleted" "DEL" \ # "invites" "CAL" # See README.notmuch for an explanation # tag-formats tag format-string { tag format-string ...} # tag-formats "inbox" "GI" \ # "unread" "GU" \ # "replied" "GR" \ # "sent" "GS" \ # "todo" "Gt" \ # "deleted" "GD" \ # "invites" "Gi" # set index_format='4C %S %[%y.%m.%d] %-18.18n %?GU?%GU& ? %?GR?%GR& ? %?GI?%GI& ? %s' # -------------------------------------------------------------------------- # COLORS - some unpleasant examples are given # -------------------------------------------------------------------------- # These symbols are added to the index-color patch: # an individual message tag, %G, uses tag name # this symbol uses a pattern color index_tag red white "inbox" # the transformed message tags, %g # this symbol does not use a pattern color index_tags green default # -------------------------------------------------------------------------- # vim: syntax=muttrc
Karel Zak <kzak@redhat.com>
Chris Mason <clm@fb.com>
Christoph Rissner <cri@visotech.at>
David Riebenbauer <davrieb@liegesta.at>
David Sterba <dsterba@suse.cz>
David Wilson <dw@botanicus.net>
Don Zickus <dzickus@redhat.com>
Eric Davis <edavis@insanum.com>
Jan Synacek <jsynacek@redhat.com>
Jeremiah C. Foster <jeremiah@jeremiahfoster.com>
Josh Poimboeuf <jpoimboe@redhat.com>
Kirill A. Shutemov <kirill@shutemov.name>
Luke Macken <lmacken@redhat.com>
Mantas Mikulėnas <grawity@gmail.com>
Patrick Brisbin <pbrisbin@gmail.com>
Philippe Le Brouster <plb@nebkha.net>
Raghavendra D Prabhu <rprabhu@wnohang.net>
Sami Farin <hvtaifwkbgefbaei@gmail.com>
Stefan Assmann <sassmann@kpanic.de>
Stefan Kuhn <p_regius@gmx.ch>
Tim Stoakes <tim@stoakes.net>
Vladimir Marek <Vladimir.Marek@oracle.com>
Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
Richard Russon <rich@flatcap.org>
To check if Mutt supports “Progress Bar”, look for “patch-progress” in the mutt version. See: Section 1.2, “Mutt Patches”.
Dependencies:
mutt-1.6.2
This patch is part of the NeoMutt Project.
The “progress” patch shows a visual progress bar on slow tasks, such as indexing a large folder over the net.
# Example Mutt config file for the 'progress' patch. # The 'progress' patch provides clear visual feedback for # slow tasks, such as indexing a large folder over the net. # Set the color of the progress bar # White text on a red background color progress white red # vim: syntax=muttrc
Rocco Rutte <pdmef@gmx.net>
Vincent Lefevre <vincent@vinc17.org>
Stefan Kuhn <wuodan@hispeed.ch>
Karel Zak <kzak@redhat.com>
Richard Russon <rich@flatcap.org>
To check if Mutt supports “Quasi-Delete”, look for “patch-quasi-delete” in the mutt version. See: Section 1.2, “Mutt Patches”.
Dependencies:
mutt-1.6.2
This patch is part of the NeoMutt Project.
The “quasi-delete” function marks an email that should be hidden from the index, but NOT deleted.
On its own, this patch isn't very useful. It forms a useful part of the notmuch plugin.
Table 6.19. Quasi-Delete Functions
Menus | Default Key | Function | Description |
---|---|---|---|
index,pager | (none) | <quasi-delete> | delete from mutt, don't touch on disk |
# Example Mutt config file for the 'quasi-delete' feature. # The 'quasi-delete' function marks an email that should be hidden # from the index, but NOT deleted. bind index,pager Q quasi-delete # vim: syntax=muttrc
Karel Zak <kzak@redhat.com>
Richard Russon <rich@flatcap.org>
To check if Mutt supports “Sidebar”, look for “+USE_SIDEBAR” in the mutt version. See: Section 1.1, “Enabling/Disabling Features”.
Dependencies:
mutt-1.6.2
This patch is part of the NeoMutt Project.
The Sidebar shows a list of all your mailboxes. The list can be turned on and off, it can be themed and the list style can be configured.
This part of the manual is a reference guide. If you want a simple introduction with examples see the Sidebar Howto. If you just want to get started, you could use the sample Sidebar muttrc.
Table 6.20. Sidebar Variables
Name | Type | Default |
---|---|---|
sidebar_delim_chars | string | /. |
sidebar_divider_char | string | | |
sidebar_folder_indent | boolean | no |
sidebar_format | string | %B%* %n |
sidebar_indent_string | string | (two spaces) |
sidebar_new_mail_only | boolean | no |
sidebar_next_new_wrap | boolean | no |
sidebar_short_path | boolean | no |
sidebar_sort_method | enum | unsorted |
sidebar_visible | boolean | no |
sidebar_whitelist | list | (empty) |
sidebar_width | number | 20 |
For more details, and examples, about the $sidebar_format
,
see the Sidebar Intro.
Sidebar adds the following functions to Mutt. By default, none of them are bound to keys.
Table 6.21. Sidebar Functions
Menus | Function | Description |
---|---|---|
index,pager | <sidebar-next> | Move the highlight to next mailbox |
index,pager | <sidebar-next-new> | Move the highlight to next mailbox with new mail |
index,pager | <sidebar-open> | Open highlighted mailbox |
index,pager | <sidebar-page-down> | Scroll the Sidebar down 1 page |
index,pager | <sidebar-page-up> | Scroll the Sidebar up 1 page |
index,pager | <sidebar-prev> | Move the highlight to previous mailbox |
index,pager | <sidebar-prev-new> | Move the highlight to previous mailbox with new mail |
index,pager | <sidebar-toggle-visible> | Make the Sidebar (in)visible |
Table 6.22. Sidebar Colors
Name | Default Color | Description |
---|---|---|
sidebar_divider | default | The dividing line between the Sidebar and the Index/Pager panels |
sidebar_flagged | default | Mailboxes containing flagged mail |
sidebar_highlight | underline | Cursor to select a mailbox |
sidebar_indicator | mutt indicator | The mailbox open in the Index panel |
sidebar_new | default | Mailboxes containing new mail |
sidebar_spoolfile | default | Mailbox that receives incoming mail |
If the sidebar_indicator
color isn't set, then the default Mutt
indicator color will be used (the color used in the index panel).
Table 6.23. Sidebar Sort
Sort | Description |
---|---|
alpha | Alphabetically by path |
count | Total number of messages |
flagged | Number of flagged messages |
name | Alphabetically by path |
new | Number of new messages |
path | Alphabetically by path |
unsorted | Order of the mailboxes command |
# This is a complete list of sidebar-related configuration. # -------------------------------------------------------------------------- # VARIABLES - shown with their default values # -------------------------------------------------------------------------- # Should the Sidebar be shown? set sidebar_visible = no # How wide should the Sidebar be in screen columns? # Note: Some characters, e.g. Chinese, take up two columns each. set sidebar_width = 20 # Should the mailbox paths be abbreviated? set sidebar_short_path = no # When abbreviating mailbox path names, use any of these characters as path # separators. Only the part after the last separators will be shown. # For file folders '/' is good. For IMAP folders, often '.' is useful. set sidebar_delim_chars = '/.' # If the mailbox path is abbreviated, should it be indented? set sidebar_folder_indent = no # Indent mailbox paths with this string. set sidebar_indent_string = ' ' # Make the Sidebar only display mailboxes that contain new, or flagged, # mail. set sidebar_new_mail_only = no # Any mailboxes that are whitelisted will always be visible, even if the # sidebar_new_mail_only option is enabled. sidebar_whitelist '/home/user/mailbox1' sidebar_whitelist '/home/user/mailbox2' # When searching for mailboxes containing new mail, should the search wrap # around when it reaches the end of the list? set sidebar_next_new_wrap = no # The character to use as the divider between the Sidebar and the other Mutt # panels. # Note: Only the first character of this string is used. set sidebar_divider_char = '|' # Display the Sidebar mailboxes using this format string. set sidebar_format = '%B%* %n' # If you want to display more information, this is a useful format: set mail_check_stats set sidebar_format = '%B%?F? [%F]?%* %?N?%N/?%S' # Sort the mailboxes in the Sidebar using this method: # count - total number of messages # flagged - number of flagged messages # new - number of new messages # path - mailbox path # unsorted - order of the mailboxes command set sidebar_sort_method = 'unsorted' # -------------------------------------------------------------------------- # FUNCTIONS - shown with an example mapping # -------------------------------------------------------------------------- # Move the highlight to the previous mailbox bind index,pager \Cp sidebar-prev # Move the highlight to the next mailbox bind index,pager \Cn sidebar-next # Open the highlighted mailbox bind index,pager \Co sidebar-open # Move the highlight to the previous page # This is useful if you have a LOT of mailboxes. bind index,pager <F3> sidebar-page-up # Move the highlight to the next page # This is useful if you have a LOT of mailboxes. bind index,pager <F4> sidebar-page-down # Move the highlight to the previous mailbox containing new, or flagged, # mail. bind index,pager <F5> sidebar-prev-new # Move the highlight to the next mailbox containing new, or flagged, mail. bind index,pager <F6> sidebar-next-new # Toggle the visibility of the Sidebar. bind index,pager B sidebar-toggle-visible # -------------------------------------------------------------------------- # COLORS - some unpleasant examples are given # -------------------------------------------------------------------------- # Note: All color operations are of the form: # color OBJECT FOREGROUND BACKGROUND # Color of the current, open, mailbox # Note: This is a general Mutt option which colors all selected items. color indicator cyan black # Color of the highlighted, but not open, mailbox. color sidebar_highlight black color8 # Color of the divider separating the Sidebar from Mutt panels color sidebar_divider color8 black # Color to give mailboxes containing flagged mail color sidebar_flagged red black # Color to give mailboxes containing new mail color sidebar_new green black # -------------------------------------------------------------------------- # vim: syntax=muttrc
Justin Hibbits <jrh29@po.cwru.edu>
Thomer M. Gil <mutt@thomer.com>
David Sterba <dsterba@suse.cz>
Evgeni Golov <evgeni@debian.org>
Fabian Groffen <grobian@gentoo.org>
Jason DeTiberus <jdetiber@redhat.com>
Stefan Assmann <sassmann@kpanic.de>
Steve Kemp <steve@steve.org.uk>
Terry Chan <tchan@lunar-linux.org>
Tyler Earnest <tylere@rne.st>
Richard Russon <rich@flatcap.org>
To check if Mutt supports “skip-quoted”, look for “patch-skip-quoted” in the mutt version. See: Section 1.2, “Mutt Patches”.
Dependencies:
mutt-1.6.2
This patch is part of the NeoMutt Project.
When viewing an email, the
<skip-to-quoted>
function (by default the
S
key) will scroll past any quoted text.
Sometimes, a little context is useful.
By setting the $skip_quoted_offset
variable, you
can select how much of the quoted text is left visible.
# Example Mutt config file for the 'skip-quoted' patch. # The 'S' (skip-quoted) command scrolls the pager past the quoted text (usually # indented with '> '. Setting 'skip_quoted_offset' leaves some lines of quoted # text on screen for context. # Show three quoted lines before the reply set skip_quoted_offset = 3 # vim: syntax=muttrc
David Sterba <dsterba@suse.cz>
Richard Russon <rich@flatcap.org>
To check if Mutt supports “smime-encrypt-self”, look for “patch-smime-encrypt-self” in the mutt version. See: Section 1.2, “Mutt Patches”.
Dependencies:
mutt-1.6.2
This patch is part of the NeoMutt Project.
Once you encrypt an email to someone you cannot read it. This is good for security, but bad for record-keeping. If you wanted to keep a copy of an encrypted email you could set $fcc_clear.
A better option is to enable $smime_encrypt_self, then set $smime_default_key to your personal S/MIME key id.
set smime_encrypt_self = yes set smime_default_key = bb345e23.0
# This is a complete list of smime-encrypt-self-related configuration. # -------------------------------------------------------------------------- # VARIABLES - shown with their default values # -------------------------------------------------------------------------- # Save a copy of outgoing email, encrypted to yourself set smime_encrypt_self = "no" # vim: syntax=muttrc
Omen Wild <omen@mandarb.com>
Richard Russon <rich@flatcap.org>
To check if Mutt supports “Status Color”, look for “patch-status-color” in the mutt version. See: Section 1.2, “Mutt Patches”.
Dependencies:
mutt-1.6.2
This patch is part of the NeoMutt Project.
The “status-color” patch allows you to theme different parts of the status bar (also when it's used by the index).
Unlike normal color commands, color status
can now
take up to 2 extra parameters (regex, num).
color
status
foreground
background
[
regex
[
num
]]
With zero parameters, Mutt will set the default color for the entire status bar.
With one parameter, Mutt will only color the parts matching the regex.
With two parameters, Mutt will only color the num'th sub-match of the regex.
# Example Mutt config file for the 'status-color' patch. # The 'status-color' patch allows you to theme different parts of # the status bar (also when it's used by the index). # For the examples below, set some defaults set status_format='-%r-Mutt: %f [Msgs:%?M?%M/?%m%?n? New:%n?%?o? Old:%o?%?d? Del:%d?%?F? Flag:%F?%?t? Tag:%t?%?p? Post:%p?%?b? Inc:%b?%?l? %l?]---(%s/%S)-%>-(%P)---' set index_format='%4C %Z %{%b %d} %-15.15L (%?l?%4l&%4c?) %s' set sort=threads set sort_aux=last-date-received # 'status color' can take up to 2 extra parameters # color status foreground background [ regex [ num ]] # 0 extra parameters # Set the default color for the entire status line color status blue white # 1 extra parameter # Set the color for a matching pattern # color status foreground background regexp # Highlight New, Deleted, or Flagged emails color status brightred white '(New|Del|Flag):[0-9]+' # Highlight mailbox ordering if it's different from the default # First, highlight anything (*/*) color status brightred default '\([^)]+/[^)]+\)' # Then override the color for one specfic case color status default default '\(threads/last-date-received\)' # 2 extra parameters # Set the color for the nth submatch of a pattern # color status foreground background regexp num # Highlight the contents of the []s but not the [] themselves color status red default '\[([^]]+)\]' 1 # The '1' refers to the first regex submatch, which is the inner # part in ()s # Highlight the mailbox color status brightwhite default 'Mutt: ([^ ]+)' 1 # Search for 'Mutt: ' but only highlight what comes after it # vim: syntax=muttrc
David Sterba <dsterba@suse.cz>
Thomas Glanzmann <thomas@glanzmann.de>
Kirill A. Shutemov <kirill@shutemov.name>
Richard Russon <rich@flatcap.org>
To check if Mutt supports “TLS-SNI”, look for “patch-tls-sni” in the mutt version. See: Section 1.2, “Mutt Patches”.
Dependencies:
mutt-1.6.2
OpenSSL
This patch is part of the NeoMutt Project.
The “TLS-SNI” patch adds support for TLS virtual hosting. If your mail server doesn't support this everything will still work normally.
TLS supports sending the expected server hostname during the handshake, via the SNI extension. This can be used to select a server certificate to issue to the client, permitting virtual-hosting without requiring multiple IP addresses.
This has been tested against Exim 4.80, which optionally logs SNI and can perform vhosting.
To verify TLS SNI support by a server, you can use:
openssl s_client -host <imap server> -port <port> -tls1 -servername <imap server>
Jeremy Katz <katzj@linuxpower.org>
Phil Pennock <mutt-dev@spodhuis.demon.nl>
Richard Russon <rich@flatcap.org>
To check if Mutt supports “Trash Folder”, look for “patch-trash” in the mutt version. See: Section 1.2, “Mutt Patches”.
If IMAP is enabled, this patch will use it
Dependencies:
mutt-1.6.2
IMAP support
This patch is part of the NeoMutt Project.
In Mutt, when you “delete” an email it is first marked deleted. The email isn't really gone until <sync-mailbox> is called. This happens when the user leaves the folder, or the function is called manually.
After <sync-mailbox>
has been called the email is gone forever.
The $trash variable defines a folder in which to keep old emails. As before, first you mark emails for deletion. When <sync-mailbox> is called the emails are moved to the trash folder.
The $trash
path can be either a full directory,
or be relative to the $folder
variable, like the mailboxes
command.
Emails deleted from the trash folder are gone forever.
Table 6.28. Trash Functions
Menus | Default Key | Function | Description |
---|---|---|---|
index,pager | (none) | <purge-message> | really delete the current entry, bypassing the trash folder |
# Example Mutt config file for the 'trash' feature. # This feature defines a new 'trash' folder. # When mail is deleted it will be moved to this folder. # Folder in which to put deleted emails set trash='+Trash' set trash='/home/flatcap/Mail/Trash' # The default delete key 'd' will move an email to the 'trash' folder # Bind 'D' to REALLY delete an email bind index D purge-message # Note: Deleting emails from the 'trash' folder will REALLY delete them. # vim: syntax=muttrc
Cedric Duval <cedricduval@free.fr>
Benjamin Kuperman <kuperman@acm.org>
Paul Miller <paul@voltar.org>
Richard Russon <rich@flatcap.org>