2010-01-06 20:40:46 +01:00
|
|
|
.TH MU 1 "January 2010" "User Manuals"
|
2010-01-17 13:03:15 +01:00
|
|
|
|
2010-01-01 19:45:33 +01:00
|
|
|
.SH NAME
|
2010-01-17 13:03:15 +01:00
|
|
|
|
2010-01-01 19:45:33 +01:00
|
|
|
mu \- index and search the contents of e-mail messages stored in Maildirs
|
|
|
|
|
|
|
|
.SH SYNOPSIS
|
2010-01-17 13:03:15 +01:00
|
|
|
|
|
|
|
.B mu index [options]
|
|
|
|
|
|
|
|
.B mu find [options] <search expression>
|
|
|
|
|
|
|
|
.B mu mkdir [options] <dir> [<dirs>]
|
2010-01-01 19:45:33 +01:00
|
|
|
|
|
|
|
.SH DESCRIPTION
|
2010-01-17 13:03:15 +01:00
|
|
|
|
|
|
|
\fBmu\fR is a set of tools for indexing and searching e-mail messages stored
|
|
|
|
in Maildirs. It does so by recursively scanning a Maildir directory tree and
|
2010-01-04 19:21:33 +01:00
|
|
|
analyzing the e-mail messages found. The results of this analysis are then
|
2010-01-17 13:03:15 +01:00
|
|
|
stored in a database, which can then be queried for specific messages.
|
2010-01-04 19:21:33 +01:00
|
|
|
|
2010-01-17 13:03:15 +01:00
|
|
|
\fBmu\fR can be used from the command line or can be integrated with e-mail
|
|
|
|
clients. This manpage has some examples.
|
2010-01-04 19:21:33 +01:00
|
|
|
|
2010-01-17 13:03:15 +01:00
|
|
|
The various tools are available as commands for a single \fBmu\fR executable.
|
2010-01-01 19:45:33 +01:00
|
|
|
|
2010-01-06 20:40:46 +01:00
|
|
|
.SH GENERAL OPTIONS
|
2010-01-17 13:03:15 +01:00
|
|
|
|
|
|
|
\fBmu\fR offers a number of general options that apply to all commands:
|
2010-01-06 20:40:46 +01:00
|
|
|
|
|
|
|
.TP
|
|
|
|
\fB\-a\fR, \fB\-\-muhome\fR causes \fBmu\fR to use an alternative directory to
|
2010-01-17 13:03:15 +01:00
|
|
|
store and read its database and logs. By default, \fI~/.mu\fR is used.
|
2010-01-06 20:40:46 +01:00
|
|
|
|
|
|
|
.TP
|
|
|
|
\fB\-d\fR, \fB\-\-debug\fR makes \fBmu\fR generate extra debug information,
|
2010-01-17 13:03:15 +01:00
|
|
|
useful for debugging the program itself. By default, debug information goes to
|
|
|
|
the log file, \fI~/.mu/mu.log\fR. It can safely be deleted when \fBmu\fR is
|
|
|
|
not running.
|
2010-01-06 20:40:46 +01:00
|
|
|
|
|
|
|
.TP
|
|
|
|
\fB\-q\fR, \fB\-\-quiet\fR causes \fBmu\fR not to output informational
|
2010-01-17 13:03:15 +01:00
|
|
|
messages and progress information to standard output, but only to the log
|
|
|
|
file. Error messages will still be sent to standard error. Note that \fBmu
|
|
|
|
index\fR is \fBmuch\fR faster with \fB\-\-quiet\fR, so it is recommended you
|
|
|
|
use this option when using \fBmu\fR from scripts etc.
|
2010-01-06 20:40:46 +01:00
|
|
|
|
|
|
|
.TP
|
|
|
|
\fB\-e\fR, \fB\-\-log-stderr\fR causes \fBmu\fR not to output all log messages
|
|
|
|
to standard error, in addition to sending them to the log file.
|
|
|
|
|
|
|
|
.TP
|
|
|
|
\fB\-v\fR, \fB\-\-version\fR outputs the \fBmu\fR-version and copyright
|
|
|
|
information.
|
|
|
|
|
|
|
|
.TP
|
|
|
|
\fB\-h\fR, \fB\-\-help\fR list the various command line options, while
|
|
|
|
\fB\-\-help\-index\fR, \fB\-\-help\-find\fR and \fB\-\-help\-all\fR list only
|
|
|
|
the options for one command, or all of the commands.
|
|
|
|
|
|
|
|
|
2010-01-01 19:45:33 +01:00
|
|
|
.SH COMMANDS
|
2010-01-17 13:03:15 +01:00
|
|
|
|
2010-01-08 19:56:50 +01:00
|
|
|
\fBmu\fR offers the following commands:
|
2010-01-04 19:21:33 +01:00
|
|
|
|
2010-01-01 19:45:33 +01:00
|
|
|
.TP
|
|
|
|
\fBindex\fR
|
|
|
|
for indexing (analyzing) the contents of your Maildirs, and storing the
|
|
|
|
information in a database
|
|
|
|
|
|
|
|
.TP
|
|
|
|
\fBfind\fR
|
|
|
|
for finding messages in your database, using certain search parameters (see
|
|
|
|
below for details). You can use \fBquery\fR and \fBsearch\fR as synonyms for
|
|
|
|
\fBfind\fR.
|
|
|
|
|
2010-01-04 19:21:33 +01:00
|
|
|
.TP
|
|
|
|
\fBmkdir\fR
|
|
|
|
for creating Maildirs.
|
2010-01-01 19:45:33 +01:00
|
|
|
|
|
|
|
.SH THE INDEX COMMAND
|
2010-01-17 13:03:15 +01:00
|
|
|
|
2010-01-01 19:45:33 +01:00
|
|
|
Using the
|
|
|
|
.B index
|
|
|
|
command, you can index your Maildir directories, and store the information in
|
|
|
|
a Xapian database.
|
|
|
|
|
|
|
|
.B index
|
|
|
|
understands Maildirs as defined by Dan Bernstein for qmail(7). It also
|
|
|
|
understands recursive Maildirs (Maildirs within Maildirs), and the
|
|
|
|
VFAT-version of Maildir, as used by Tinymail/Modest.
|
|
|
|
|
|
|
|
E-mail messages which are not stored in something that looks like a Maildir
|
2010-01-06 20:40:46 +01:00
|
|
|
leaf directory (\fIcur\fR and \fInew\fR) are ignored.
|
2010-01-01 19:45:33 +01:00
|
|
|
|
|
|
|
Currently, symlinks are not followed.
|
|
|
|
|
2010-01-04 19:21:33 +01:00
|
|
|
If there is a file called
|
2010-01-01 19:45:33 +01:00
|
|
|
.B .noindex
|
|
|
|
in a directory, the contents of that directory and any of its subdirectories
|
|
|
|
will be ignored. This can be useful to exclude certain directories from the
|
|
|
|
indexing process, for example directories with spam-messages.
|
|
|
|
|
|
|
|
The first run of
|
|
|
|
.B mu index
|
2010-01-04 19:21:33 +01:00
|
|
|
may take a few minutes if you have a lot of mail (ten thousands of messages).
|
2010-01-06 20:40:46 +01:00
|
|
|
Fortunately, such a full scan needs to be done only once, after that it
|
|
|
|
suffices to index the changes, which goes much faster. Also note that a
|
|
|
|
substantial amount of the time goes to printing the progress information; if
|
|
|
|
you turn that off (with \fB\-q\fR or \fB\-\-quiet\fR), it goes a lot faster.
|
2010-01-01 19:45:33 +01:00
|
|
|
|
2010-01-08 19:56:50 +01:00
|
|
|
Phase two of the indexing-process is the removal of messages from the database
|
|
|
|
for which there is no longer a corresponding file in the Maildir. If you do
|
|
|
|
not want this, you can use \fB\-u\fR, \fB\-\-nocleanup\fR.
|
|
|
|
|
2010-01-01 19:45:33 +01:00
|
|
|
.SS Indexing options
|
|
|
|
|
|
|
|
.TP
|
2010-01-06 20:40:46 +01:00
|
|
|
\fB\-m\fR, \fB\-\-maildir\fR=\fI<maildir>\fR starts searching
|
2010-01-04 19:21:33 +01:00
|
|
|
at\fI<maildir>\fR. By default,
|
2010-01-08 19:56:50 +01:00
|
|
|
\fBmu\fR uses whatever the
|
2010-01-01 19:45:33 +01:00
|
|
|
.B MAILDIR
|
2010-01-04 19:21:33 +01:00
|
|
|
environment variable is set to; if that is not set, it tries
|
2010-01-01 19:45:33 +01:00
|
|
|
.B ~/Maildir
|
2010-01-04 19:21:33 +01:00
|
|
|
\.
|
|
|
|
|
2010-01-01 19:45:33 +01:00
|
|
|
.TP
|
|
|
|
\fB\-r\fR, \fB\-\-reindex\fR
|
|
|
|
re-index all mails, even ones that are already in the database.
|
|
|
|
|
2010-01-06 20:40:46 +01:00
|
|
|
.T
|
2010-01-08 19:56:50 +01:00
|
|
|
\fB\-u\fR, \fB\-\-nocleanup\fR disables the database cleanup that
|
|
|
|
\fBmu\fR does by default after indexing.
|
|
|
|
|
2010-01-04 19:21:33 +01:00
|
|
|
|
|
|
|
.TP
|
|
|
|
|
2010-01-01 19:45:33 +01:00
|
|
|
.B NOTE:
|
|
|
|
It is probably not a good idea to run multiple instances of
|
|
|
|
.B mu index
|
|
|
|
concurrently. No data loss should occur, but one or more of the instances may
|
|
|
|
experience errors due to database locks.
|
|
|
|
|
|
|
|
Also note that, before indexing is completed, searches for messages may fail,
|
|
|
|
even if they have already been indexed, as some of the esssential database
|
|
|
|
information will only be written in batches during the indexing process.
|
|
|
|
|
|
|
|
.SH THE FIND COMMAND
|
|
|
|
|
|
|
|
The
|
|
|
|
.B find
|
2010-01-06 20:40:46 +01:00
|
|
|
command starts a search for messages in the database that match the search
|
2010-01-16 14:26:28 +01:00
|
|
|
pattern. Currently, the maximum number of matches for any query is 10,000
|
|
|
|
messages.
|
|
|
|
|
|
|
|
The search pattern is taken as a command line parameter. If the search
|
|
|
|
parameter consists of multiple parts (multiple command line parameters) they
|
|
|
|
are treated as if there were a logical \fBAND\fR between them.
|
2010-01-06 20:40:46 +01:00
|
|
|
|
|
|
|
If you want to make your own constructions (using \fBAND\fR, \fBOR\fR,
|
|
|
|
\fBNOT\fR etc., you have to put quote them so \fBmu\fR can consider them as a
|
|
|
|
unit.
|
|
|
|
|
|
|
|
\fBmu\fR relies on the Xapian database for its searching capabilities, so it
|
|
|
|
offers all the search functionality that Xapian offers; please refer to:
|
|
|
|
|
2010-01-16 14:26:28 +01:00
|
|
|
\fIhttp://xapian.org/docs/queryparser.html\fR
|
|
|
|
|
|
|
|
The basic way to search a message is to type some words matching it, as you
|
|
|
|
would do in a search engine on the internet, ie.
|
|
|
|
|
|
|
|
.nf
|
|
|
|
mu find monkey banana
|
|
|
|
.fi
|
|
|
|
|
|
|
|
will find all message that have both 'monkey' and 'banana'. Matching is
|
|
|
|
case-insensitive and somewhat intelligent, in that it tries to recognize
|
|
|
|
various forms of a word (such as plulars); this is all courtesy of Xapina.
|
|
|
|
|
|
|
|
\fBmu\fR also recognizes prefixes for specific fields in a messages; for
|
|
|
|
example:
|
|
|
|
|
|
|
|
.nf
|
|
|
|
mu find subject:penguin
|
|
|
|
.fi
|
|
|
|
|
|
|
|
to find messages with have the word \fBpenguin\fR in the subject field. You
|
|
|
|
can abbreviate \fBsubject:\fR to just \fBs:\fR. Here is the full table of the
|
|
|
|
search fields and their abbreviations:
|
|
|
|
|
|
|
|
.nf
|
|
|
|
cc,c CC (Carbon-Copy) recipient
|
|
|
|
from,f message sender
|
|
|
|
path,p full path to the message
|
|
|
|
subject,s message subject
|
|
|
|
to,t To: recipient
|
|
|
|
.fi
|
|
|
|
|
|
|
|
|
|
|
|
.SS Find options
|
2010-01-17 13:03:15 +01:00
|
|
|
|
|
|
|
The \fBfind\fR-command has various options that influence the way \fBmu\fR
|
|
|
|
displays the results. If you don't specify anything, the defaults are
|
|
|
|
\fI\-\-fields="d f s"\fR, \fI\-\-sortfield=date\fR and \fI\-\-descending\fR.
|
2010-01-16 14:26:28 +01:00
|
|
|
|
|
|
|
.TP
|
|
|
|
\fB\-f\fR, \fB\-\-fields\fR=\fI<fields>\fR
|
|
|
|
specifies a string that determines which fields are shown in the output. This
|
|
|
|
string consists of a number of characters (such as 's' for subject or 'f' for
|
|
|
|
from), which will replace with the actual field in the output. Fields that are
|
|
|
|
not known will be output as-is, allowing for some simple formatting.
|
|
|
|
|
|
|
|
For example:
|
|
|
|
.nf
|
|
|
|
mu find subject:snow --fields "d f s"
|
|
|
|
.fi
|
|
|
|
would list the date, subject and sender of all messages with 'snow' in the
|
|
|
|
their subject.
|
|
|
|
|
|
|
|
The table of replacement characters is superset of the list mentions for
|
|
|
|
search parameters:
|
|
|
|
|
|
|
|
.nf
|
|
|
|
c CC (Carbon-Copy) recipient
|
|
|
|
d the sent-date of the message
|
|
|
|
f message sender (From:)
|
|
|
|
F message flags
|
|
|
|
p full path to the message
|
|
|
|
P message priority (high, normal, low)
|
|
|
|
s message subject
|
|
|
|
t To: recipient
|
|
|
|
.fi
|
|
|
|
|
|
|
|
The message-flags output is a string, consisting of zero or more of the
|
|
|
|
following characters.
|
|
|
|
|
|
|
|
.nf
|
|
|
|
D Draft Message
|
|
|
|
F Flagged
|
|
|
|
N New message (in new/ Maildir)
|
|
|
|
P Passed ('Handled')
|
|
|
|
R Replied
|
|
|
|
S Seen
|
|
|
|
T Marked for deletion
|
|
|
|
a Has attachment
|
|
|
|
s Signed message
|
|
|
|
x Encrypted message
|
|
|
|
.fi
|
|
|
|
|
|
|
|
Note that these are theoretical flags, which may or may not be actually in
|
|
|
|
use.
|
|
|
|
|
|
|
|
.TP
|
|
|
|
\fB\-s\fR, \fB\-\-sortfield\fR \fR=\fI<field>\fR and \fB\-z\fR, \fB\-\-descending\fR
|
|
|
|
specifies the field to sort the search results by, and the direction. The
|
|
|
|
following fields are supported:
|
|
|
|
|
|
|
|
.nf
|
|
|
|
cc,c CC (Carbon-Copy) recipient
|
|
|
|
date,d message sent date
|
|
|
|
from,f message sender
|
|
|
|
path,p full path to the message
|
|
|
|
prio,P message priority
|
|
|
|
subject,s message subject
|
|
|
|
to,t To:-recipient
|
|
|
|
.fi
|
|
|
|
|
|
|
|
Thus, for example, to sort messages by date, you could specify:
|
|
|
|
|
|
|
|
.nf
|
|
|
|
mu find fahrrad --fields "d f s" --sortfield=date --descending
|
|
|
|
.fi
|
|
|
|
|
|
|
|
Note, if you specify a sortfield, by default, they are sorted in descending
|
|
|
|
order (e.g., from lowest to highest). This is usually a good choice, but for
|
|
|
|
dates it may be more useful to sort in the opposite direction.
|
|
|
|
|
|
|
|
.TP
|
|
|
|
\fB\-x\fR, \fB\-\-xquery\fR
|
|
|
|
shows the Xapian query corresponding to your search terms. This is mostly
|
|
|
|
useful for debugging.
|
|
|
|
|
|
|
|
.TP
|
|
|
|
\fB\-l\fR, \fB\-\-linksdir\fR \fR=\fI<dir>\fR and \fB\-c\fR, \fB\-\-clearlinks\fR
|
|
|
|
output the results as a maildir with symbolic links to the found
|
|
|
|
messages. This enables easy integration with mail-clients (see below for more
|
|
|
|
information). \fBmu\fR will create the maildir if it does not exist yet.
|
|
|
|
|
|
|
|
If you specify \fB\-\-clearlinks\fR, all existing symlinks will be cleared
|
|
|
|
from the target maildir; this allows for re-use of the same directory. An
|
|
|
|
alternative would be to delete the target directory before, but this has a big
|
|
|
|
chance of accidentaly removing something that should not be removed.
|
2010-01-06 20:40:46 +01:00
|
|
|
|
2010-01-16 14:26:28 +01:00
|
|
|
.nf
|
|
|
|
mu find grolsch --linksdir=~/Maildir/search --clearlinks
|
|
|
|
.fi
|
|
|
|
|
|
|
|
will store links to found messages in \fI~/Maildir/search\fR. If the directory
|
|
|
|
does not exist yet, it will be created.
|
|
|
|
|
|
|
|
Note: when \fBmu\fR creates a Maildir for these links, it automatically
|
|
|
|
inserts a \fI.noindex\fR file, to exclude the directory from \fBmu
|
|
|
|
index\fR.
|
2010-01-06 20:40:46 +01:00
|
|
|
|
2010-01-16 14:26:28 +01:00
|
|
|
.SH Integrating mu find with mail clients
|
2010-01-01 19:45:33 +01:00
|
|
|
|
2010-01-16 14:26:28 +01:00
|
|
|
.TP
|
|
|
|
|
|
|
|
\fBmutt\fR
|
|
|
|
For \fBmutt\fR you can use the following in your \fImuttrc\fR; pressing the F8
|
|
|
|
key will start a search, and F9 will take you to the results.
|
2010-01-01 19:45:33 +01:00
|
|
|
|
|
|
|
.nf
|
2010-01-17 13:03:15 +01:00
|
|
|
###### mutt macros for mu
|
2010-01-16 14:26:28 +01:00
|
|
|
macro index <F8> "<shell-escape>mu find -c -l ~/Maildir/search " "mu find"
|
|
|
|
macro index <F9> "<change-folder-readonly>~/Maildir/search" "display mu find
|
|
|
|
results"
|
2010-01-17 13:03:15 +01:00
|
|
|
#######
|
2010-01-16 14:26:28 +01:00
|
|
|
.fi
|
|
|
|
|
|
|
|
|
|
|
|
.TP
|
|
|
|
|
|
|
|
\fBWanderlust\fR
|
|
|
|
If you use Wanderlust for \fBemacs\fR, the following definitons can be used;
|
|
|
|
typing 'Q' will start a query.
|
|
|
|
|
|
|
|
.nf
|
2010-01-17 13:03:15 +01:00
|
|
|
;;;;;;; mu integration for Wanderlust
|
2010-01-16 14:26:28 +01:00
|
|
|
(defvar mu-wl-mu-program "mu")
|
|
|
|
(defvar mu-wl-search-folder "search")
|
|
|
|
|
|
|
|
(defun mu-wl-search ()
|
|
|
|
"search a maildir using `mu', and jump to a folder with the
|
|
|
|
results"
|
|
|
|
(interactive)
|
|
|
|
(let* ((muexpr (read-string "Find messages matching: "))
|
|
|
|
(sfldr (concat elmo-maildir-folder-path "/" mu-wl-search-folder))
|
|
|
|
(cmdline (concat mu-wl-mu-program " find "
|
|
|
|
"--clearlinks --linksdir='" sfldr "' " muexpr)))
|
|
|
|
(= 0 (shell-command cmdline))))
|
|
|
|
|
|
|
|
(defun mu-wl-search-and-goto ()
|
|
|
|
"search and jump to the folder with the results"
|
|
|
|
(interactive)
|
|
|
|
|
|
|
|
(if (mu-wl-search)
|
|
|
|
(wl-summary-goto-folder-subr (concat "." mu-wl-search-folder)
|
|
|
|
'force-update nil nil t)
|
|
|
|
(message "Query failed")))
|
|
|
|
|
|
|
|
(define-key wl-summary-mode-map (kbd "Q") ;; => query
|
|
|
|
'(lambda()(interactive)(mu-wl-search-and-goto)))
|
|
|
|
(define-key wl-folder-mode-map (kbd "Q") ;; => query
|
|
|
|
'(lambda()(interactive)(mu-wl-search-and-goto)))
|
2010-01-17 13:03:15 +01:00
|
|
|
;;;;;;;;;;;;;
|
2010-01-01 19:45:33 +01:00
|
|
|
.fi
|
|
|
|
|
2010-01-04 19:21:33 +01:00
|
|
|
.SH THE MKDIR COMMAND
|
2010-01-17 13:03:15 +01:00
|
|
|
|
2010-01-08 19:56:50 +01:00
|
|
|
With the
|
|
|
|
.B mkdir
|
|
|
|
command, you can create new Maildirs with permissions 0755. For example,
|
2010-01-16 14:26:28 +01:00
|
|
|
|
2010-01-08 19:56:50 +01:00
|
|
|
.nf
|
|
|
|
mu mkdir tom dick harry
|
|
|
|
.fi
|
2010-01-16 14:26:28 +01:00
|
|
|
|
2010-01-08 19:56:50 +01:00
|
|
|
will create three Maildirs \fItom\fR, \fIdick\fR and \fIharry\fR.
|
2010-01-01 19:45:33 +01:00
|
|
|
|
2010-01-08 19:56:50 +01:00
|
|
|
If the creation somehow fails, for safety reasons, \fBno\fR attempt is made to
|
|
|
|
remove any parts that were created.
|
2010-01-01 19:45:33 +01:00
|
|
|
|
2010-01-17 13:03:15 +01:00
|
|
|
.SH FILES
|
|
|
|
By default, \fBmu index\fR stores its message database in
|
|
|
|
\fI~/.mu/xapian-<version>\fR, where \fI<version>\fR is the version of the
|
|
|
|
database layout, which is not necessarily the same as the \fBmu\fR version
|
|
|
|
number.
|
|
|
|
|
|
|
|
\fBmu\fR stores logs of its operations in \fI~/.mu/mu.log\fR. These can grow
|
|
|
|
quite big when using the \fI\-\-debug\fR option, but they can be safely
|
|
|
|
delete when \fBmu\fR is not running.
|
|
|
|
|
|
|
|
To store various \fBmu\fR-files elsewhere from their default location, one can
|
|
|
|
use the \fI\-\-muhome\fR option, as discussed in the \fBGENERAL OPTIONS\fR
|
|
|
|
section.
|
|
|
|
|
|
|
|
|
2010-01-01 19:45:33 +01:00
|
|
|
.SH ENVIRONMENT
|
2010-01-17 13:03:15 +01:00
|
|
|
|
2010-01-06 20:40:46 +01:00
|
|
|
As mentioned, \fBmu index\fR uses \fBMAILDIR\fR to find the user's Maildir if
|
|
|
|
it has not been specified explicitly \fB\-\-maildir\fR=\fI<maildir>\fR. If
|
|
|
|
MAILDIR is not set, \fBmu index\fR will try \fI~/Maildir\fR.
|
2010-01-01 19:45:33 +01:00
|
|
|
.
|
|
|
|
.SH BUGS
|
2010-01-17 13:03:15 +01:00
|
|
|
|
2010-01-01 19:45:33 +01:00
|
|
|
There probably are some; please report bugs when you find them:
|
|
|
|
.BR http://code.google.com/p/mu0/issues/list
|
|
|
|
|
|
|
|
.SH AUTHOR
|
2010-01-17 13:03:15 +01:00
|
|
|
|
2010-01-01 19:45:33 +01:00
|
|
|
Dirk-Jan C. Binnema <djcb@djcbsoftware.nl>
|
|
|
|
|
|
|
|
.SH "SEE ALSO"
|
2010-01-17 13:03:15 +01:00
|
|
|
|
2010-01-01 19:45:33 +01:00
|
|
|
.BR maildir(5)
|