Man Linux: Main Page and Category List

NAME

       notmuch - thread-based email index, search, and tagging

SYNOPSIS

       notmuch command [args ...]

DESCRIPTION

       Notmuch  is  a  command-line  based  program  for  indexing, searching,
       reading, and tagging large collections of email messages.

       The quickest way to get started with Notmuch is to  simply  invoke  the
       notmuch  command  with no arguments, which will interactively guide you
       through the process of indexing your mail.

NOTE

       While the command-line program notmuch provides powerful functionality,
       it   does   not   provide   the  most  convenient  interface  for  that
       functionality. More sophisticated interfaces are expected to  be  built
       on  top of either the command-line interface, or more likely, on top of
       the notmuch library  interface.  See  http://notmuchmail.org  for  more
       about alternate interfaces to notmuch.

COMMANDS

       The  setup  command  is used to configure Notmuch for first use, (or to
       reconfigure it later).

           setup

               Interactively sets up notmuch for first use.

               The setup command will prompt for your full name, your  primary
               email  address,  any alternate email addresses you use, and the
               directory containing your email archives. Your answers will  be
               written  to  a configuration file in ${NOTMUCH_CONFIG} (if set)
               or ${HOME}/.notmuch-config . This configuration  file  will  be
               created  with  descriptive  comments, making it easy to edit by
               hand later to change the configuration. Or you can run  notmuch
               setup again to change the configuration.

               The  mail  directory you specify can contain any number of sub-
               directories  and  should  primarily  contain  only  files  with
               individual  email  messages  (eg.  maildir  or  mh archives are
               perfect). If there are other, non-email files (such as  indexes
               maintained  by  other  email programs) then notmuch will do its
               best to detect those and ignore them.

               Mail storage that  uses  mbox  format,  (where  one  mbox  file
               contains  many messages), will not work with notmuch. If that’s
               how your mail is currently stored, it is recommended you  first
               convert  it  to  maildir  format  with  a utility such as mb2md
               before running notmuch setup .

               Invoking notmuch with no command argument will run setup if the
               setup command has not previously been completed.

       The  new  command  is  used  to  incorporate  new mail into the notmuch
       database.

           new  Find and import any new messages to the database.

               The new command scans  all  sub-directories  of  the  database,
               performing  full-text  indexing on new messages that are found.
               Each new message will automatically be  tagged  with  both  the
               inbox and unread tags.

               You  should  run  notmuch  new once after first running notmuch
               setup to create the initial database. The first run may take  a
               long  time  if  you  have a significant amount of mail (several
               hundred thousand messages or more).  Subsequently,  you  should
               run  notmuch new whenever new mail is delivered and you wish to
               incorporate it into the database. These subsequent runs will be
               much quicker than the initial run.

               Invoking  notmuch  with  no  command  argument  will run new if
               notmuch setup has previously been completed,  but  notmuch  new
               has not previously been run.

       Several  of  the  notmuch  commands  accept  search terms with a common
       syntax. See the SEARCH SYNTAX section below for  more  details  on  the
       supported syntax.

       The  search,  show  and  count  commands  are  used  to query the email
       database.

           search [options...] <search-term>...

               Search for  messages  matching  the  given  search  terms,  and
               display as results the threads containing the matched messages.

               The output consists of one line per thread, giving a thread ID,
               the  date  of  the  newest  (or  oldest,  depending on the sort
               option) matched message in the thread, the  number  of  matched
               messages  and  total  messages  in the thread, the names of all
               participants in the thread, and the subject of the  newest  (or
               oldest) message.

               Supported options for search include

               --format=(json|text)

                   Presents   the   results   in  either  JSON  or  plain-text
                   (default).

               --sort=(newest-first|oldest-first)

                   This option can  be  used  to  present  results  in  either
                   chronological order (oldest-first) or reverse chronological
                   order (newest-first).

                   Note: The thread order will be distinct between  these  two
                   options  (beyond  being  simply  reversed). When sorting by
                   oldest-first the threads  will  be  sorted  by  the  oldest
                   message  in  each  thread, but when sorting by newest-first
                   the threads will be sorted by the newest  message  in  each
                   thread.

               By  default, results will be displayed in reverse chronological
               order, (that is, the newest results will be displayed first).

               See  the  SEARCH  SYNTAX  section  below  for  details  of  the
               supported syntax for <search-terms>.

           show [options...] <search-term>...

               Shows all messages matching the search terms.

               The  messages will be grouped and sorted based on the threading
               (all replies to a particular message  will  appear  immediately
               after  that  message in date order). The output is not indented
               by  default,  but  depth  tags  are  printed  so  that   proper
               indentation  can  be performed by a post-processor (such as the
               emacs interface to notmuch).

               Supported options for show include

               --entire-thread

                   By default only those messages that match the search  terms
                   will  be  displayed.  With this option, all messages in the
                   same thread as any matched message will be displayed.

               --format=(json|text)

                   text

                       The default plain-text format  has  text-content   MIME
                       parts   decoded.  Various  components  in  the  output,
                       (message, header, body,  attachment,  and  MIME  part),
                       will be delimited by easily-parsed markers. Each marker
                       consists of a Control-L character (ASCII  decimal  12),
                       the  name  of the marker, and then either an opening or
                       closing brace, (’{’ or ’}’), to either  open  or  close
                       the component.

                   json

                       Format  output  as  Javascript  Object Notation (JSON).
                       JSON output always includes all messages in a  matching
                       thread; in effect --format=json implies --entire-thread

               A common use of notmuch show is to display a single  thread  of
               email messages. For this, use a search term of "thread:<thread-
               id>" as can be seen in the first  column  of  output  from  the
               notmuch search command.

               See  the  SEARCH  SYNTAX  section  below  for  details  of  the
               supported syntax for <search-terms>.

           count <search-term>...

               Count messages matching the search terms.

               The number of matching messages is output to stdout.

               With no search terms, a count of all messages in  the  database
               will be displayed.

       The  reply  command  is  useful  for  preparing a template for an email
       reply.

           reply [options...] <search-term>...

               Constructs a reply template for a set of messages.

               To make replying  to  email  easier,  notmuch  reply  takes  an
               existing  set  of  messages  and  constructs  a  suitable  mail
               template. The Reply-to header (if any, otherwise From:) is used
               for  the  To:  address.  Vales from the To: and Cc: headers are
               copied, but not including  any  of  the  current  user’s  email
               addresses  (as configured in primary_mail or other_email in the
               .notmuch-config file) in the recipient list

               It also builds a suitable new subject,  including  Re:  at  the
               front  (if  not already present), and adding the message IDs of
               the messages being  replied  to  to  the  References  list  and
               setting the In-Reply-To: field correctly.

               Finally,  the  original  contents  of  the emails are quoted by
               prefixing each line with ’> ’ and included in the body.

               The resulting message template is output to stdout.

               Supported options for reply include

               --format=(default|headers-only)

                   default
                       Includes subject and quoted message body.

                   headers-only
                       Only produces In-Reply-To, References, To, Cc, and  Bcc
                       headers.

               See  the  SEARCH  SYNTAX  section  below  for  details  of  the
               supported syntax for <search-terms>.

               Note: It is most common to use  notmuch  reply  with  a  search
               string  matching  a  single message, (such as id:<message-id>),
               but it can be useful to reply to several messages at once.  For
               example,  when a series of patches are sent in a single thread,
               replying to the entire thread allows for the reply  to  comment
               on issue found in multiple patches.

       The tag command is the only command available for manipulating database
       contents.

           tag +<tag>|-<tag> [...] [--] <search-term>...

               Add/remove tags for all messages matching the search terms.

               Tags prefixed by ’+’ are added while those prefixed by ’-’  are
               removed.  For each message, tag removal is performed before tag
               addition.

               The beginning of <search-terms>  is  recognized  by  the  first
               argument  that  begins with neither ’+’ nor ’-’. Support for an
               initial search term beginning with ’+’ or ’-’  is  provided  by
               allowing  the  user  to specify a "--" argument to separate the
               tags from the search terms.

               See  the  SEARCH  SYNTAX  section  below  for  details  of  the
               supported syntax for <search-terms>.

       The  dump  and restore commands can be used to create a textual dump of
       email tags for backup purposes, and to restore from that dump

           dump [<filename>]

               Creates a plain-text dump of the tags of each message.

               The output is to the given filename, if any, or to stdout.

               These tags are the only data in the notmuch database that can’t
               be  recreated  from  the  messages  themselves.   The output of
               notmuch dump is therefore the only  critical  thing  to  backup
               (and  much  more friendly to incremental backup than the native
               database files.)

           restore <filename>

               Restores the tags from the given file (see notmuch dump.

               Note: The  dump  file  format  is  specifically  chosen  to  be
               compatible  with  the format of files produced by sup-dump.  So
               if you’ve previously been using sup for mail, then the  notmuch
               restore  command  provides you a way to import all of your tags
               (or labels as sup calls them).

       The part command can used to output a single part of a multi-part  MIME
       message.

           part --part=<part-number> <search-term>...

               Output a single MIME part of a message.

               A  single  decoded  MIME  part, with no encoding or framing, is
               output to stdout. The search terms must  match  only  a  single
               message, otherwise this command will fail.

               The  part number should match the part "id" field output by the
               "--format=json"  option  of  "notmuch  show".  If  the  message
               specified  by the search terms does not include a part with the
               specified "id" there will be no output.

               See  the  SEARCH  SYNTAX  section  below  for  details  of  the
               supported syntax for <search-terms>.

SEARCH SYNTAX

       Several notmuch commands accept a common syntax for search terms.

       The  search  terms  can  consist of free-form text (and quoted phrases)
       which  will  match  all  messages  that  contain  all  of   the   given
       terms/phrases  in  the  body,  the  subject,  or  any  of the sender or
       recipient headers.

       As a special case, a search  string  consisting  of  exactly  a  single
       asterisk ("*") will match all messages.

       In  addition  to free text, the following prefixes can be used to force
       terms to match against specific portions of an email, (where <brackets>
       indicate user-supplied values):

            from:<name-or-address>

            to:<name-or-address>

            subject:<word-or-quoted-phrase>

            attachment:<word>

            tag:<tag> (or is:<tag>)

            id:<message-id>

            thread:<thread-id>

       The  from: prefix is used to match the name or address of the sender of
       an email message.

       The to: prefix is used to match the names or addresses of any recipient
       of an email message, (whether To, Cc, or Bcc).

       Any  term  prefixed with subject: will match only text from the subject
       of an email. Searching for a phrase in  the  subject  is  supported  by
       including  quotation  marks  around  the  phrase, immediately following
       subject:.

       The attachment: prefix can be used to search for specific filenames (or
       extensions) of attachments to email messages.

       For  tag:  and is: valid tag values include inbox and unread by default
       for new messages added by notmuch new as well as any other  tag  values
       added manually with notmuch tag.

       For  id:, message ID values are the literal contents of the Message-ID:
       header of email messages, but without the ’<’, ’>’ delimiters.

       The thread: prefix can be used with  the  thread  ID  values  that  are
       generated  internally by notmuch (and do not appear in email messages).
       These thread ID values can be seen in the first column of  output  from
       notmuch search

       In  addition  to  individual terms, multiple terms can be combined with
       Boolean operators ( and, or, not , etc.). Each term in the  query  will
       be  implicitly  connected  by  a logical AND if no explicit operator is
       provided, (except that terms with a common prefix  will  be  implicitly
       combined with OR until we get Xapian defect #402 fixed).

       Parentheses  can also be used to control the combination of the Boolean
       operators, but will have to be protected  from  interpretation  by  the
       shell,  (such  as  by  putting quotation marks around any parenthesized
       expression).

       Finally, results can be restricted to only messages within a particular
       time range, (based on the Date: header) with a syntax of:

            <intial-timestamp>..<final-timestamp>

       Each  timestamp  is  a  number representing the number of seconds since
       1970-01-01 00:00:00 UTC. This is  not  the  most  convenient  means  of
       expressing  date  ranges,  but  until notmuch is fixed to accept a more
       convenient form, one can use the date program to construct  timestamps.
       For  example,  with  the bash shell the folowing syntax would specify a
       date range to return messages from 2009-10-01 until the current time:

            $(date +%s -d 2009-10-01)..$(date +%s)

ENVIRONMENT

       The following environment variables can be used to control the behavior
       of notmuch.

       NOTMUCH_CONFIG
              Specifies  the  location  of  the  notmuch  configuration  file.
              Notmuch will use ${HOME}/.notmuch-config if this variable is not
              set.

SEE ALSO

       The  emacs-based  interface  to notmuch (available as notmuch.el in the
       Notmuch distribution).

       The notmuch website: http://notmuchmail.org

CONTACT

       Feel free to send questions, comments, or kudos to the notmuch  mailing
       list  <notmuch@notmuchmail.org>  .  Subscription is not required before
       posting, but is available from the notmuchmail.org website.

       Real-time interaction with the Notmuch community is available  via  IRC
       (server: irc.freenode.net, channel: #notmuch).