---
name: "mu"
section: "1"
platform: "linux"
package: "maildir-utils"
version: "1.12.9-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/mu"
---

# mu(1)

a set of tools to deal with Maildirs and message files, in particular to index and search e-mail messages.

## NAME

mu - a set of tools to deal with Maildirs and message files, in particular to index and search e-mail messages.

## SYNOPSIS

**mu** \[*COMMON-OPTIONS*\] \[\[*COMMAND*\] \[*COMMAND-OPTIONS*\]\]

For information about the common options, see **COMMON OPTIONS**.

## DESCRIPTION

**mu** is the general command that shows help about the specific commands:

- —

  **add**:  add specific messages to the database.

- —

  **cfind**: find contacts

- —

  **extract**: extract attachments and other MIME-parts

- —

  **find**: find messages in the database

- —

  **help**: get help for some command

- —

  **index**: (re)index the messages in a Maildir

- —

  **info**: show information about the **mu** database

- —

  **init**: initialize the **mu** database

- —

  **mkdir**: create a new Maildir

- —

  **remove**: remove specific messages from the database

- —

  **server**: start a server process (for `mu4e`-internal use)

- —

  **view**: view a specific message

Each of the commands have their own manpage **mu-\<command\>**.

**mu** is a set of tools for dealing with Maildirs and the e-mail messages in them.

**mu**'s main purpose 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 (this is called \`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.

**mu** can be used from the command line or can be integrated with various e-mail clients.

This manpage gives a general overview of the available commands (**index**, **find**, etc.); each **mu** command has its own man-page as well.

## COLORS

Some **mu** commands support colorized output, and do so by default when writing to a TTY (roughly, to a screen). When not writing to a TTY, for instance when redirection the output to a file or using a pipe, the default is to **not** show output.

If you don no want colors, you can use **--nocolor**.

If you want colors even when it is not the default, use **--nocolor=false**.

## ENCODING

**mu**'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**, **view**, **extract** is always encoded according to the current locale.

The same is true for **find** and **cfind**, with some exceptions, where the output is always UTF-8, regardless of the locale:

- —

  For **cfind** 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.

- —

  For **find** the output is encoded according the locale for **--format=plain** (the default), and UTF-8 for all other formats.

## DATABASE AND FILE

The **index**, **find**, and **cfind** commands work with the database, while the other ones work on individual mail files. Hence, running **view**, **mkdir** and **extract** does not require the **mu** database.

## LOGGING

**mu** logs to the standard logging location, which is either the systemd journal, **syslog** or a log file (by default, *~/.cache/mu/mu.log*), depending on your \*system's setup; the first that appears to be working is used.

When using a log file, 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.

## COMMON OPTIONS

### -d, --debug

Makes **mu** generate extra debug information, useful for debugging the program itself. Debug information goes to the standard logging location; see [**mu**(1)](/mu/1.md).

### -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.

### --log-stderr

Causes **mu** to not output log messages to standard error, in addition to sending them to the standard logging location.

### --nocolor

Do not use ANSI colors. The environment variable **NO\_COLOR** can be used as an alternative to **--nocolor**.

### -V, --version

Prints **mu** version and copyright information.

### -h, --help

Lists the various command line options.

## EXIT CODE

This command returns 0 upon successful completion, or a non-zero exit code otherwise.

- 0\.

  success

- 2\.

  no matches found. Try a different query

- 11\.

  database schema mismatch. You need to re-initialize **mu**, see [**mu-init**(1)](/mu-init/1.md)

- 19\.

  failed to acquire lock. Some other program has exclusive access to the **mu** database

- 99\.

  caught an exception

## REPORTING BUGS

Please report bugs at *https://github.com/djcb/mu/issues*.

## AUTHOR

Dirk-Jan C. Binnema \<djcb@djcbsoftware.nl\>

## COPYRIGHT

This manpage is part of **mu** 1.12.9.

Copyright © 2008-2025 Dirk-Jan C. Binnema. License GPLv3+: GNU GPL version 3 or later *https://gnu.org/licenses/gpl.html*. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.

## SEE ALSO

[**mu-add**(1)](/mu-add/1.md), [**mu-cfind**(1)](/mu-cfind/1.md), [**mu-extract**(1)](/mu-extract/1.md), [**mu-find**(1)](/mu-find/1.md), [**mu-help**(1)](/mu-help/1.md), [**mu-index**(1)](/mu-index/1.md), [**mu-info**(1)](/mu-info/1.md), [**mu-init**(1)](/mu-init/1.md), [**mu-mkdir**(1)](/mu-mkdir/1.md), [**mu-remove**(1)](/mu-remove/1.md), [**mu-server**(1)](/mu-server/1.md), [**mu-view**(1)](/mu-view/1.md), [**mu-query**(7)](/mu-query/7.md), [**mu-easy**(1)](/mu-easy/1.md)
