Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
MU EASY(7)	       Miscellaneous Information Manual		    MU EASY(7)

NAME
       mu-easy - a quick introduction to mu

DESCRIPTION
       mu  is  a  set  of  tools for dealing with e-mail messages in Maildirs.
       There are many options, which are all described in the  man  pages  for
       the  various sub-commands. This man pages jumps over all	of the details
       and gives examples of some common use cases. If the use cases described
       here do not precisely do	what you want, please check the	more extensive
       information in the man page about the sub-command you are using --  for
       example,	the mu-index(1)	or mu-find(1) man pages.

       NOTE:  the  index command (and therefore, the ones that depend on that,
       such as find), require that you store your mail in the  Maildir-format.
       If you don't do so, you can still use the other commands, but you won't
       be able to index/search your mail.

       By  default,  mu	 uses colorized	output when it thinks your terminal is
       capable of doing	so. If you don't like color, you can use the --nocolor
       command-line option, or set the NO_COLOR	environment variable  to  non-
       empty.

SETTING	THINGS UP
       The first time you run the mu commands, you need	to initialize it. This
       is done with the	init command.

	      $	mu init

       This  uses  the	defaults  (see mu-init(1) for details on how to	change
       that).

INDEXING YOUR E-MAIL
       Before you can search e-mails, you'll first need	to index them:

	      $	mu index

       The process can take a few minutes, depending on	the amount of mail you
       have, the speed of your computer, hard  drive  etc.  Usually,  indexing
       should be able to reach a speed of a few	hundred	messages per second.

       mu  index  guesses  the	top-level Maildir to do	its job; if it guesses
       wrong, you can use the --maildir	option to specify the top-level	direc-
       tory that should	be processed. See the mu-index(1) man  page  for  more
       details.

       Normally,  mu  index  visits  all  the  directories under the top-level
       Maildir;	however, you can exclude certain directories (say, the `trash'
       or `spam' folders) by creating a	file called .noindex in	the directory.
       When mu sees such a file, it will exclude this directory	and  its  sub-
       directories  from indexing.  Also see .noupdate in the mu-index(1) man-
       page.

SEARCHING YOUR E-MAIL
       After you have indexed your mail, you can start searching  it.  By  de-
       fault,  the  search  results  are  printed on standard output. Alterna-
       tively, the output can take the form of Maildir with symbolic links  to
       the  found  messages. This enables integration with e-mail clients; see
       the mu-find(1) man page for details, the	syntax of the  search  parame-
       ters and	so on. Here, we	just give some examples	for common cases.

       You can use the mu fields command to get	information about all possible
       fields and flags.

       First,  let's search for	all messages sent to Julius (Caesar) regarding
       fruit:

	      $	mu find	t:julius fruit

       This should return something like:

	      2008-07-31T21:57:25 EEST John Milton <jm@example.com> Fere libenter homines id quod volunt credunt

       This means there	is a message to	`julius' with `fruit' somewhere	in the
       message.	 In this case, it's a message from John	Milton.	Note that  the
       date format depends on your the language/locale you are using.

       How  do	we know	that the message was sent to Julius Caesar? Well, it's
       not visible from	the results above, because the default fields that are
       shown are date/sender/subject. However, we can change  this  using  the
       --fields	parameter (try mu fields to see	all the	details):

	      $	mu find	--fields="t s" t:julius	fruit

       In  other  words, display the `To:'-field (t) and the subject (s). This
       should return something like:
	      Julius Caesar <jc@example.com> Fere libenter homines id quod volunt credunt

       This is the same	message	found before, only with	some different	fields
       displayed.

       By  default,  mu	uses the logical AND for the search parameters -- that
       is, it displays messages	that match all the parameters. However,	we can
       use logical OR as well:

	      $	mu find	t:julius OR f:socrates

       In other	words, display messages	that are either	sent to	Julius	Caesar
       or are from Socrates. This could	return something like:

	      2008-07-31T21:57:25 EEST Socrates	<soc@example.com> cool stuff
	      2008-07-31T21:57:25 EEST John Milton <jm@example.com> Fere libenter homines id quod volunt credunt

       What  if	 we want to see	some of	the body of the	message? You can get a
       `summary' of the	first lines of the message using the --summary-len op-
       tion, which will	`summarize' the	first n	lines of the message:

	      $	mu find	--summary-len=3	napoleon m:/archive

	      1970-01-01T02:00:00 EET Napoleon Bonaparte <nb@example.com> rock on dude
	      Summary: Le 24 fvrier 1815, la vigie de Notre-Dame de la Garde signala le
	      trois-mts	le Pharaon, venant de Smyrne, Trieste et Naples. Comme
	      d'habitude, un pilote ctier partit aussitt du port, rasa le chteau

       The summary consists of the first n lines of the	message	with  all  su-
       perfluous whitespace removed.

       Also  note  the	m:/archive  parameter in the query. This means that we
       only match messages in a	maildir	called '/archive'.

MORE QUERIES
       Let's list a few	more queries that may be interesting; please note that
       searches	for message flags, priority and	date ranges are	only available
       in mu version 0.9 or later.

       Get all important messages which	are signed:
	      *$ mu find flag:signed prio:high *

       Get all messages	from Jim without an attachment:
	      *$ mu find from:jim AND NOT flag:attach*

       Get all messages	where Jack is in one of	the contact fields:
	      *$ mu find contact:jack*

       This uses the special contact: pseudo-field which matches (from,	to, cc
       and bcc).

       Get all messages	in the Sent Items folder about yoghurt:
	      *$mu find	maildir:'/Sent Items' yoghurt*

       Note how	we need	to quote search	terms that include spaces.

       Get all unread messages where the subject mentions ngstrm:
	      *$ mu find subject:ngstrm	flag:unread*

       which is	equivalent to:
	      *$ mu find subject:angstrom flag:unread*

       because does mu is case-insensitive and accent-insensitive.

       Get all unread messages between March 2002 and August 2003  about  some
       bird (or	a Swedish rock band):
	      *$ mu find date:20020301..20030831 nightingale flag:unread*

       Get all messages	received today:
	      *$ mu find date:today..now*

       Get all messages	we got in the last two weeks about emacs:
	      *$ mu find date:2w..now emacs*

       Another powerful	feature	(since 0.9.6) are wildcard searches, where you
       can  search  for	 the last n characters in a word. For example, you can
       search for:
	      *$ mu find 'subject:soc*'*

       and get mails about soccer, Socrates, society, and so  on.  Note,  it's
       important to quote the search query, otherwise the shell	will interpret
       the `*'.

       You  can	also search for	messages with a	certain	attachment using their
       filename, for example:

	      *$ mu find 'file:pic*'*

       will get	you all	messages with an attachment starting with `pic'.

       If you want to find attachments with a certain MIME-type, you  can  use
       the following:

       Get all messages	with PDF attachments:
	      *$ mu find mime:application/pdf*

       or even:

       Get all messages	with image attachments:
	      *$ mu find 'mime:image/*'*

       Note  that (1) the `*' wildcard can only	be used	as the rightmost thing
       in a search query, and (2) that you need	to quote the search term,  be-
       cause  otherwise	your shell will	interpret the `*' (expanding it	to all
       files in	the current directory -- probably not what you want).

DISPLAYING MESSAGES
       We might	also want to display the  complete  messages  instead  of  the
       header  information.  This can be done using mu view command. Note that
       this command does not use the database; you simply provide it the  path
       to a message.

       Therefore,  if  you  want  to display some message from a search	query,
       you'll need its path. To	get the	path (think *l*ocation)	for our	 first
       example we can use:

	      $	mu find	--fields="l" t:julius fruit

       And we'll get something like:
	      /home/someuser/Maildir/archive/cur/1266188485_0.6850.cthulhu:2,

       We can now display this message:

	      $	mu view	/home/someuser/Maildir/archive/cur/1266188485_0.6850.cthulhu:2,
	      From: John Milton	<jm@example.com>
	      To: Julius Caesar	<jc@example.com>
	      Subject: Fere libenter homines id	quod volunt credunt
	      Date: 2008-07-31T21:57:25	EEST

	      OF Mans First Disobedience, and the Fruit
	      Of that Forbidden	Tree, whose mortal taste
	      Brought Death into the World, and	all our	woe,
	      [...]

FINDING	CONTACTS
       While  mu  find	searches  for messages,	there is also mu cfind to find
       contacts, that is, names	+ addresses. Without any search	expression, mu
       cfind lists all of your contacts.

	      $	mu cfind julius

       will find all contacts with `julius' in either name or e-mail  address.
       Note that mu cfind accepts a regular expression (as per pcre(3)).

       mu  cfind also supports a --format=-parameter, which sets the output to
       some specific format, so	the results can	be imported into another  pro-
       gram. For example, to export your contact information to	a mutt address
       book file, you can use something	like:

	      $	mu cfind --format=mutt-alias > ~/mutt-aliases

       Then, you can use them in mutt if you add something like	source ~/mutt-
       aliases to your muttrc.

LABELING MESSAGES
       It  is  possible	to associate labels with messages. These are user-pro-
       vided strings you can search for. They are a  bit  different  from  the
       other  search fields, since labels are not intrinsic parts of messages,
       so removing your	message	database, and  then  re-indexing  won't	 bring
       back your labels.

       For  that reason, you can export	labels to a file and later import them
       again (see mu-labels(1))

       Some examples:

	      #	label optimization-related messages with a label optimization
	      $	mu label update	--labels=+performance "subject:performance or subject:optimization or subject:profiling"

       Now, we can search for  such  messages:	#+begin_example	 mu  find  la-
       bel:performance #+end_example>

       You can also remove labels, for instance: #+begin_example

       $ mu label update --labels=-performance "from:bill" #+end_example>

       There's	also  mu  label	 clear to remove all labels from matching mes-
       sages; and the the mutating label subcommands (update,  clear,  import)
       accept  a  --dry-run  option  for just printing what they would change,
       without actually	changing anything.

       mu-labels(1) has	all the	details.

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

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

SEE ALSO
       mu(1), mu-init(1), mu-index(1), mu-find(1),  mu-mfind(1),  mu-mkdir(1),
       mu-view(1), mu-extract(1) mu-labels(1)

								    MU EASY(7)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=mu-easy&sektion=7&manpath=FreeBSD+Ports+15.0.quarterly>

home | help