mu - a set of tools to deal with Maildirs and message files, in particular to
index and search e-mail messages.
In alphabetical order:
general mu command
add specific messages to the database
mu cfind [options] [<regexp>]
mu extract [options] <file> [<parts>] [<regexp>]
extract attachments and other MIME-parts
mu find [options] <search expression>
mu index [options]
(re)index the messages in a Maildir
mu mkdir [options] <dir> [<dirs>]
create a new Maildir
mu remove [options]
remove specific messages from the database
mu script [options]
run a mu (Guile) script
mu server [options]
start a server process (for mu4e
mu view <file> [<files>]
view a specific message
is a set of tools for dealing with Maildirs and the e-mail messages in
's main function is to enable searching of e-mail messages. It does so
by periodically scanning a Maildir directory tree and analyzing the e-mail
messages found ('indexing'). The results of this analysis are stored in a
database, which can then be queried.
In addition to indexing and searching, mu
also offers functionality for
viewing messages, extracting attachments and creating maildirs, and searching
and exporting contact information.
can be used from the command line or can be integrated with various
This manpage gives a general overview of the available commands ( index
, etc.); each mu
command has its own man-page as well.
offers the following commands:
- for indexing (analyzing) the contents of your Maildirs, and
storing the information in a database. See mu-index(1)
- for finding messages in your database, using certain search
parameters. See mu-find(1)
- for finding contacts (names + e-mail addresses) matching a
certain expression, and exporting the results in various formats for use
in other programs. mu-cfind(1)
- for displaying e-mail messages. See mu-view(1)
- for creating Maildirs. See mu-mkdir(1)
- for extract MIME-parts (such as attachments) from messages.
sub-commands support colorized output, and do so by default. If
you don't want colors, you can use --nocolor
Currently, mu find
, mu view
, mu cfind
and mu extract
's output is in the current locale, with the exceptions of the output
specifically meant for output to UTF8-encoded files. In practice, this means
that the output of commands index
always encoded according to the current locale.
The same is true for find
, with some exceptions, where
the output is always UTF-8, regardless of the locale.
the exception is --format=bbdb
. This is hard-coded to
UTF-8, and as such specified in the output-file, so emacs/bbdb can handle it
correctly without guessing.
the output is encoded according the locale for
(the default), and UTF-8 for all other formats (
Commands mu index
work with the
database, while the other ones work on invidual mail files. Hence, running
does not require the mu database.
The various commands are discussed in more detail in their own separate
man-pages; here the general options are discussed.
offers several general options that apply to all commands, including
without any command.
- causes mu to use an alternative directory to store
and read its database and logs. By default, mu uses whatever the
MU_HOME environment variable is set to; if it is not set,
~/.mu is used.
- -d, --debug
- makes mu generate extra debug information, useful
for debugging the program itself. By default, debug information goes to
the log file, ~/.mu/log/mu.log. It can safely be deleted when
mu is not running. When running with --debug option, the log
file can grow rather quickly. See the note on logging below.
- -q, --quiet
- causes mu not to output informational messages and
progress information to standard output, but only to the log file. Error
messages will still be sent to standard error. Note that mu
index is much faster with --quiet, so it is
recommended you use this option when using mu from scripts etc.
- causes mu to not output log messages to
standard error, in addition to sending them to the log file.
- -v, --version
- prints mu version and copyright information.
- -h, --help
- lists the various command line options, while
--help-index, --help-find and --help-all list only
the options for respectively the specified command or for all commands.
The various mu subcommands typically exit with 0 (zero) upon success, and
non-zero when some error occurred. The table lists the various error codes.
exit code | error
1 | MU_ERROR
2 | MU_ERROR_IN_PARAMETERS
3 | MU_ERROR_INTERNAL
4 | MU_ERROR_NO_MATCHES
11 | MU_ERROR_XAPIAN
13 | MU_ERROR_XAPIAN_QUERY
14 | MU_ERROR_XAPIAN_DIR_NOT_ACCESSIBLE
15 | MU_ERROR_XAPIAN_NOT_UP_TO_DATE
16 | MU_ERROR_XAPIAN_MISSING_DATA
17 | MU_ERROR_XAPIAN_CORRUPTION
18 | MU_ERROR_XAPIAN_CANNOT_GET_WRITELOCK
30 | MU_ERROR_GMIME
50 | MU_ERROR_CONTACTS
51 | MU_ERROR_CONTACTS_CANNOT_RETRIEVE
70 | MU_ERROR_FILE
71 | MU_ERROR_FILE_INVALID_NAME
72 | MU_ERROR_FILE_CANNOT_LINK
73 | MU_ERROR_FILE_CANNOT_OPEN
74 | MU_ERROR_FILE_CANNOT_READ
75 | MU_ERROR_FILE_CANNOT_CREATE
76 | MU_ERROR_FILE_CANNOT_MKDIR
77 | MU_ERROR_FILE_STAT_FAILED
78 | MU_ERROR_FILE_READDIR_FAILED
79 | MU_ERROR_FILE_INVALID_SOURCE
Please report bugs if you find them: https://github.com/djcb/mu/issues
Dirk-Jan C. Binnema <firstname.lastname@example.org>
mu-index(1) mu-find(1) mu-cfind(1) mu-mkdir(1) mu-view(1) mu-extract(1)
mu-easy(1) mu-bookmarks(5) mu-query(7)