section below for more details on the supported syntax.
The
-.BR search " and "show
+.BR search ", " show " and " count
commands are used to query the email database.
.RS 4
.TP 4
Supported options for
.B search
include
+.RS 4
+.TP 4
+.BR \-\-format= ( json | text )
+
+Presents the results in either JSON or plain-text (default).
+.RE
+
+.RS 4
+.TP 4
+.B \-\-output=(summary|threads|messages|files|tags)
+
+.RS 4
+.TP 4
+.B summary
+
+Output a summary of each thread with any message matching the search
+terms. The summary includes the thread ID, date, the number of
+messages in the thread (both the number matched and the total number),
+the authors of the thread and the subject.
+.RE
+.RS 4
+.TP 4
+.B threads
+
+Output the thread IDs of all threads with any message matching the
+search terms, either one per line (\-\-format=text) or as a JSON array
+(\-\-format=json).
+.RE
+.RS 4
+.TP 4
+.B messages
+
+Output the message IDs of all messages matching the search terms,
+either one per line (\-\-format=text) or as a JSON array
+(\-\-format=json).
+.RE
+.RS 4
+.TP 4
+.B files
+
+Output the filenames of all messages matching the search terms, either
+one per line (\-\-format=text) or as a JSON array (\-\-format=json).
+.RE
+.RS 4
+.TP 4
+.B tags
+
+Output all tags that appear on any message matching the search terms,
+either one per line (\-\-format=text) or as a JSON array
+(\-\-format=json).
+.RE
+.RE
+
.RS 4
.TP 4
.BR \-\-sort= ( newest\-first | oldest\-first )
.RE
.RS 4
-The output format is plain-text, with all text-content MIME parts
+.TP 4
+.B \-\-format=(text|json|mbox|raw)
+
+.RS 4
+.TP 4
+.BR text " (default for messages)"
+
+The default plain-text format has all text-content MIME parts
decoded. Various components in the output,
.RB ( 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.
+or close the component. For a multipart MIME message, these parts will
+be nested.
+.RE
+.RS 4
+.TP 4
+.B json
+
+The output is formatted with Javascript Object Notation (JSON). This
+format is more robust than the text format for automated
+processing. The nested structure of multipart MIME messages is
+reflected in nested JSON output. JSON output always includes all
+messages in a matching thread; in effect
+.B \-\-format=json
+implies
+.B \-\-entire\-thread
+
+.RE
+.RS 4
+.TP 4
+.B mbox
+
+All matching messages are output in the traditional, Unix mbox format
+with each message being prefixed by a line beginning with "From " and
+a blank line separating each message. Lines in the message content
+beginning with "From " (preceded by zero or more '>' characters) have
+an additional '>' character added. This reversible escaping
+is termed "mboxrd" format and described in detail here:
+
+.nf
+.nh
+http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/mail-mbox-formats.html
+.hy
+.fi
+.
+.RE
+.RS 4
+.TP 4
+.BR raw " (default for a single part, see \-\-part)"
+
+For a message, the original, raw content of the email message is
+output. Consumers of this format should expect to implement MIME
+decoding and similar functions.
+
+For a single part (\-\-part) the raw part content is output after
+performing any necessary MIME decoding.
+
+The raw format must only be used with search terms matching single
+message.
+.RE
+.RE
+
+.RS 4
+.TP 4
+.B \-\-part=N
+
+Output the single decoded MIME part N of a single message. The search
+terms must match only a single message. Message parts are numbered in
+a depth-first walk of the message MIME structure, and are identified
+in the 'json' or 'text' output formats.
+.RE
+
+.RS 4
+.TP 4
+.B \-\-verify
+
+Compute and report the validity of any MIME cryptographic signatures
+found in the selected content (ie. "multipart/signed" parts). Status
+of the signature will be reported (currently only supported with
+--format=json), and the multipart/signed part will be replaced by the
+signed data.
+.RE
+
+.RS 4
+.TP 4
+.B \-\-decrypt
+
+Decrypt any MIME encrypted parts found in the selected content
+(ie. "multipart/encrypted" parts). Status of the decryption will be
+reported (currently only supported with --format=json) and the
+multipart/encrypted part will be replaced by the decrypted
+content.
+.RE
A common use of
.B notmuch show
.B "SEARCH SYNTAX"
section below for details of the supported syntax for <search-terms>.
.RE
+.RS 4
+.TP 4
+.BR 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.
+.RE
.RE
The
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
+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
+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
.BR default
Includes subject and quoted message body.
.TP
-.BR headers-only
-Only produces In-Reply-To, References, To, Cc, and Bcc headers.
+.BR headers\-only
+Only produces In\-Reply\-To, References, To, Cc, and Bcc headers.
.RE
See the
.RS 4
.TP 4
-.BR tag " +<tag>|-<tag> [...] [--] <search-term>..."
+.BR 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
+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
+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
.B "notmuch restore"
command provides you a way to import all of your tags (or labels as
sup calls them).
+.RE
+
+The
+.B part
+command can used to output a single part of a multipart MIME message.
+
+.RS 4
+.TP 4
+.BR 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
+.B "SEARCH SYNTAX"
+section below for details of the supported syntax for <search-terms>.
+.RE
+
+The
+.B config
+command can be used to get or set settings int the notmuch
+configuration file.
+
+.RS 4
+.TP 4
+.BR "config get " <section> . <item>
+
+The value of the specified configuration item is printed to stdout. If
+the item has multiple values, each value is separated by a newline
+character.
+
+Available configuration items include at least
+
+ database.path
+
+ user.name
+
+ user.primary_email
+
+ user.other_email
+
+ new.tags
+.RE
+
+.RS 4
+.TP 4
+.BR "config set " <section> . "<item> [values ...]"
+
+The specified configuration item is set to the given value. To
+specify a multiple-value item, provide each value as a separate
+command-line argument.
+
+If no values are provided, the specified configuration item will be
+removed from the configuration file.
+.RE
+
.SH SEARCH SYNTAX
Several notmuch commands accept a common syntax for search terms.
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):
attachment:<word>
- tag:<tag>
+ tag:<tag> (or is:<tag>)
id:<message-id>
thread:<thread-id>
+ folder:<directory-path>
+
The
.B from:
prefix is used to match the name or address of the sender of an email
attachments to email messages.
For
-.BR tag: ,
+.BR tag: " and " is:
valid tag values include
.BR inbox " and " unread
by default for new messages added by
For
.BR id: ,
-message ID values are the literal contents of the Message-ID: header
+message ID values are the literal contents of the Message\-ID: header
of email messages, but without the '<', '>' delimiters.
The
thread ID values can be seen in the first column of output from
.B "notmuch search"
+The
+.B folder:
+prefix can be used to search for email message files that are
+contained within particular directories within the mail store. Only
+the directory components below the top-level mail database path are
+available to be searched.
+
In addition to individual terms, multiple terms can be
combined with Boolean operators (
.BR and ", " or ", " not
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>
+ <initial-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
+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
+timestamps. For example, with the bash shell the following 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)
+ $(date +%s \-d 2009\-10\-01)..$(date +%s)
+.SH ENVIRONMENT
+The following environment variables can be used to control the
+behavior of notmuch.
+.TP
+.B NOTMUCH_CONFIG
+Specifies the location of the notmuch configuration file. Notmuch will
+use ${HOME}/.notmuch\-config if this variable is not set.
.SH SEE ALSO
The emacs-based interface to notmuch (available as
.B notmuch.el