Provided by: maildir-utils_1.6.10-1_amd64 bug

NAME

       mu_index - index e-mail messages stored in Maildirs

SYNOPSIS

       mu index [options]

DESCRIPTION

       mu  index is the mu command for scanning the contents of Maildir directories and storing the results in a
       Xapian database. The data can then be queried using mu-find(1).

       Note that before the first time you run mu index, you must run mu init to initialize the database.

       index understands Maildirs as defined by Daniel Bernstein  for  qmail(7).  In  addition,  it  understands
       recursive Maildirs (Maildirs within Maildirs), Maildir++. It can also deal with VFAT-based Maildirs which
       use '!' or ';' as the separators instead of ':'.

       E-mail  messages  which are not stored in something resembling a maildir leaf-directory (cur and new) are
       ignored, as are the cache directories for notmuch and gnus, and any dot-directory.

       Starting with mu 1.5.x, symlinks are followed, and can be spread over multiple filesystems; however  note
       that moving files around is much faster when multiple filesystems are not involved.

       If  there  is  a  file  called  .noindex  in  a  directory, the contents of that directory and all of its
       subdirectories will be ignored. This can be useful to  exclude  certain  directories  from  the  indexing
       process, for example directories with spam-messages.

       If  there  is  a  file  called  .noupdate  in  a directory, the contents of that directory and all of its
       subdirectories will be ignored, unless we do a full rebuild (with mu init). This can be useful  to  speed
       up  things  you  have some maildirs that never change. Note that you can still search for these messages,
       this only affects updating the database. .noupdate is ignored when  you  start  indexing  with  an  empty
       database (such as directly after mu init.

       There also the --lazy-check which can greatly speed up indexing; see below for details.

       The  first  run  of  mu  index  may  take  a  few minutes if you have a lot of mail (tens of thousands of
       messages).  Fortunately, such a full scan needs to be done only once; after that it suffices to index the
       changes, which goes much faster. See the 'Note on performance (i,ii,iii)' below for more information.

       The optional '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 -n,
       --nocleanup.

       When mu index catches one of the signals SIGINT, SIGHUP or SIGTERM (e.g., when you  press  Ctrl-C  during
       the  indexing  process), it tries to shutdown gracefully; it tries to save and commit data, and close the
       database etc. If it receives another signal (e.g.,  when  pressing  Ctrl-C  once  more),  mu  index  will
       terminate immediately.

OPTIONS

       Note,  some  of  the  general  options are described in the mu(1) man-page and not here, as they apply to
       multiple mu commands.

       --lazy-check
              in lazy-check mode, mu does not  consider  messages  for  which  the  time-stamp  (ctime)  of  the
              directory they reside in has not changed since the previous indexing run. This is much faster than
              the  non-lazy  check, but won't update messages that have change (rather than having been added or
              removed), since merely editing a message does not update the directory time-stamp. Of course,  you
              can run mu-index occasionally without --lazy-check, to pick up such messages.

       --nocleanup
              disables the database cleanup that mu does by default after indexing.

   A note on performance (i)
       As  a non-scientific benchmark, a simple test on the author's machine (a Thinkpad X61s laptop using Linux
       2.6.35 and an ext3 file system) with no existing database, and a maildir with 27273 messages:

        $ sudo sh -c 'sync && echo 3 > /proc/sys/vm/drop_caches'
        $ time mu index --quiet
        66,65s user 6,05s system 27% cpu 4:24,20 total
       (about 103 messages per second)

       A second run, which is the more typical use case when there is a database already, goes much faster:

        $ sudo sh -c 'sync && echo 3 > /proc/sys/vm/drop_caches'
        $ time mu index --quiet
        0,48s user 0,76s system 10% cpu 11,796 total
       (more than 56818 messages per second)

       Note that each test flushes the caches first; a more common use case might be to run mu  index  when  new
       mail has arrived; the cache may stay quite 'warm' in that case:

        $ time mu index --quiet
        0,33s user 0,40s system 80% cpu 0,905 total
       which is more than 30000 messages per second.

   A note on performance (ii)
       As  per  June  2012,  we  did  the  same  non-scientific benchmark, this time with an Intel i5-2500 CPU @
       3.30GHz, an ext4 file system and a maildir with 22589 messages. We start without an existing database.

        $ sudo sh -c 'sync && echo 3 > /proc/sys/vm/drop_caches'
        $ time mu index --quiet
        27,79s user 2,17s system 48% cpu 1:01,47 total
       (about 813 messages per second)

       A second run, which is the more typical use case when there is a database already, goes much faster:

        $ sudo sh -c 'sync && echo 3 > /proc/sys/vm/drop_caches'
        $ time mu index --quiet
        0,13s user 0,30s system 19% cpu 2,162 total
       (more than 173000 messages per second)

   A note on performance (iii)
       As per July 2016, we did the same non-scientific benchmark, again with the Intel i5-2500 CPU  @  3.30GHz,
       an ext4 file system. This time, the maildir contains 72525 messages.

        $ sudo sh -c 'sync && echo 3 > /proc/sys/vm/drop_caches'
        $ time mu index --quiet
        40,34s user 2,56s system 64% cpu 1:06,17 total
       (about 1099 messages per second).

       As  shown, mu has been getting faster with each release, even with relatively expensive new features such
       as text-normalization (for case-insensitve/accent-insensitive matching). The profiles  are  dominated  by
       operations in the Xapian database now.

FILES

       mu stores logs of its operations and queries in <muhome>/mu.log (by default, this is ~/.cache/mu/mu.log).
       Upon  startup,  mu  checks  the  size  of  this  log  file.  If  it  exceeds  1  MB,  it will be moved to
       ~/.cache/mu/mu.log.old, overwriting any existing file of that name, and start with  an  empty  log  file.
       This scheme allows for continued use of mu without the need for any manual maintenance of log files.

ENVIRONMENT

       mu  index  uses  MAILDIR  to  find  the  user's  Maildir  if  it  has  not been specified explicitly with
       --maildir=<maildir>. If MAILDIR is not set, mu index will try ~/Maildir.

RETURN VALUE

       mu index return 0 upon successful completion, and any other number greater than 0 signals an error.

BUGS

       Please report bugs if you find them: https://github.com/djcb/mu/issues

AUTHOR

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

SEE ALSO

       maildir(5), mu(1), mu-init(1), mu-find(1), mu-cfind(1)

User Manuals                                      November 2021                                      MU-INDEX(1)