Mu Cheatsheet

Mu Cheatsheet

Here are some tips for using mu. If you want to know more, please refer to the mu man pages. For a quick warm-up, there's also the mu-easy man-page.

Indexing your mail

$ mu index

If mu did not guess the right Maildir, you can set it explicitly:

$ mu index --maildir=~/MyMaildir

Excluding directories from indexing

If you want to exclude certain directories from being indexed (for example, directories with spam-messages), put a file called .noindex in the directory to exlude, and it will be ignored when indexing (including its children)

Finding messages

After you have indexed your messages, you can search them. Here are some examples. Also note the --threads argument to get a threaded display of the messages, and --nocolor if you don't want to see color.

messages about Helsinki (in message body, subject, sender, …)

$ mu find Helsinki

messages to Jack with subject jellyfish containing the word tumbleweed

$ mu find to:Jack subject:jellyfish tumbleweed

Note the implicit AND between search terms.

messages between 2 kilobytes and a 2Mb, written in December 2009 with an attachment from Bill

$ mu find size:2k..2m date:20091201..20093112 flag:attach from:bill

messages about apples OR oranges

$ mu find apples OR oranges

There is also AND, but there is an implicit AND if you leave it out. You can use brackets for the precendence, but in the shell make sure to quote them:

$ mu find '(' apples OR oranges ')' AND pears

messages about yoghurt in the Sent Items folder (note the quoting):

$ mu find maildir:'/Sent Items' yoghurt

unread messages about things starting with 'soc' (soccer, society, socrates, …)

$ mu find 'subject:soc*' flag:unread

Note, the '*' only works at the end of a search term, and you need to quote it or the shell will interpret it before mu sees it. (searching using the '*' wildcard is available since mu 0.9.6)

finding messages with images as attachment

$ mu find 'mime:image/*'

(since mu version 0.9.8)

finding messages with 'milk' in one of its text parts (such as text-based attachments):

$ mu find embed:milk

(since mu version 0.9.8)

finding all your messages

$ mu find ""

(since mu version 0.9.7)

Finding contacts

Contacts (names + email addresses) are cached separately, and can be searched with mu cfind (after your messages have been indexed):

all contacts with 'john' in either name or e-mail address

$ mu cfind john

mu cfind takes a regular expression for matching.

You can export the contact information to a number of formats for use in e-mail clients. For example:

export all your contacts to the mutt addressbook format

$ mu cfind --format=mutt-alias

Other formats are: plain, mutt-ab, wl (Wanderlust), org-contact, bbdb and csv (comma-separated values).

Retrieving attachments from messages

You can retrieve attachments from messages using mu extract, which takes a message file as an argument. Without any other arguments, it displays the MIME-parts of the message. You can then get specific attachments:

$ mu extract --parts=3,4 my-msg-file

will get you parts 3 and 4. You can also extract files based on their name:

$ mu extract my-msg-file '.*\.jpg'

The second argument is a case-insensitive regular expression, and the command will extract any files matching the pattern – in the example, all .jpg-files.

Do not confuse the '.*' regular expression in mu extract (and mu cfind) with the '*' wildcard in mu find.

Integration with mail clients

The mu-find man page contains examples for mutt and wanderlust. And since version 0.9.8, mu includes its own e-mail client for emacs, mu4e.

Viewing specific messages

You can view message contents with mu view; it does not use the database and simply takes a message file as it's argument:

$ mu view ~/Maildir/inbox/cur/message24

You can use --summary to get a summary of the message contents instead of the whole thing.

Further processing of matched messages

If you need to process the results of your queries with some other program, you can return the results as a list of absolute paths to the messages found:

For example, to get the number of lines in all your messages mentioning banana, you could use something like:

$ mu find --exec='wc -l'

Note that we use 'l', so the returned message paths will be quoted. This is useful if you have maildirs with spaces in their names.

For further processing, also the --format=(xml|sexp) can be useful. For example,

$ mu find --format=xml pancake

will give you a list of pancake-related messages in XML-format.

© 2011-2014 Dirk-Jan C. Binnema