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 exam-
     ples of some common use cases. If the use cases described here do not  pre-
     cisely 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-in-
     dex(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  capa-
     ble  of  doing  so. If you don't like color, you can use the --nocolor com-
     mand-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  directory  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) manpage.

SEARCHING YOUR E-MAIL
     After  you  have indexed your mail, you can start searching it. By default,
     the search results are printed on standard output. Alternatively, the  out-
     put 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 parameters 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 pa-
     rameter (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 dis-
     played.

     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 `sum-
     mary' of the first lines of the message  using  the  --summary-len  option,
     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 fA(C)vrier 1815, la vigie de Notre-Dame de la Garde signala le
	    trois-mActs le Pharaon, venant de Smyrne, Trieste et Naples. Comme
	    d'habitude, un pilote cA'tier partit aussitA't du port, rasa le chActeau

     The summary consists of the first n lines of the message with all superflu-
     ous 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 AngstrA<paragraph>m:
	    *$ mu find subject:AngstrA<paragraph>m 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 impor-
     tant 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, because  oth-
     erwise  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 con-
     tacts, 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 program. 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-provided
     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 label:perfor-
     mance #+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  messages;
     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.14.2.

     Copyright A(C) 2008-2026 Dirk-Jan C. Binnema. License GPLv3+: GNU GPL  ver-
     sion  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(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.1.quarterly>

home | help