[the GNU General Public License](https://www.gnu.org/licenses/gpl.txt),
either version 3.0 or at your option any later version.
-<h2>0.34</h2>
+<h2>0.35</h2>
<h2>COPYRIGHT</h2>
<pre>
- 2009-2021, Carl Worth and many others
+ 2009-2022, Carl Worth and many others
</pre>
-<h2>0.34</h2>
+<h2>0.35</h2>
<h2>COPYRIGHT</h2>
<pre>
- 2009-2021, Carl Worth and many others
+ 2009-2022, Carl Worth and many others
</pre>
-<h2>0.34</h2>
+<h2>0.35</h2>
<h2>COPYRIGHT</h2>
<pre>
- 2009-2021, Carl Worth and many others
+ 2009-2022, Carl Worth and many others
</pre>
-<h2>0.34</h2>
+<h2>0.35</h2>
Default: empty list. Note that <b>notmuch-setup</b>(1) puts
<b>deleted;spam</b> here when creating new configuration file.
+ <b>show.extra_headers</b>
+ By default <a href='../notmuch-show-1/'>notmuch-show</a>(1) includes the following headers in struc‐
+ tured output if they are present in the message: <u>Subject</u>, <u>From</u>, <u>To</u>,
+ <u>Cc</u>, <u>Bcc</u>, <u>Reply-To</u>, <u>Date</u>. This option allows the specification of a
+ list of further headers to output.
+
+ History: This configuration value was introduced in notmuch 0.35.
+
+ Default: empty list.
+
<b>maildir.synchronize</b>_<b>flags</b>
If true, then the following maildir flags (in message filenames)
will be synchronized with the corresponding notmuch tags:
├─────┼────────────────────────────┤
│R │ replied │
├─────┼────────────────────────────┤
- │S │ unread (added when 'S' │
+ │S │ unread (added when 'S' │
│ │ flag is not present) │
└─────┴────────────────────────────┘
and update tags, while the <a href='../notmuch-tag-1/'>notmuch-tag</a>(1) and <a href='../notmuch-restore-1/'>notmuch-restore</a>(1)
commands will notice tag changes and update flags in filenames.
- If there have been any changes in the maildir (new messages
- added, old ones removed or renamed, maildir flags changed,
+ If there have been any changes in the maildir (new messages
+ added, old ones removed or renamed, maildir flags changed,
etc.), it is advisable to run <a href='../notmuch-new-1/'>notmuch-new</a>(1) before <a href='../notmuch-tag-1/'>not‐</a>
- <a href='../notmuch-tag-1/'>much-tag</a>(1) or <a href='../notmuch-restore-1/'>notmuch-restore</a>(1) commands to ensure the tag
- changes are properly synchronized to the maildir flags, as the
+ <a href='../notmuch-tag-1/'>much-tag</a>(1) or <a href='../notmuch-restore-1/'>notmuch-restore</a>(1) commands to ensure the tag
+ changes are properly synchronized to the maildir flags, as the
commands expect the database and maildir to be in sync.
Default: <b>true</b>.
<b>index.decrypt</b>
- Policy for decrypting encrypted messages during indexing. Must
+ Policy for decrypting encrypted messages during indexing. Must
be one of: <b>false</b>, <b>auto</b>, <b>nostash</b>, or <b>true</b>.
- When indexing an encrypted e-mail message, if this variable is
- set to <b>true</b>, notmuch will try to decrypt the message and index
- the cleartext, stashing a copy of any discovered session keys
+ When indexing an encrypted e-mail message, if this variable is
+ set to <b>true</b>, notmuch will try to decrypt the message and index
+ the cleartext, stashing a copy of any discovered session keys
for the message. If <b>auto</b>, it will try to index the cleartext if
- a stashed session key is already known for the message (e.g.
- from a previous copy), but will not try to access your secret
+ a stashed session key is already known for the message (e.g.
+ from a previous copy), but will not try to access your secret
keys. Use <b>false</b> to avoid decrypting even when a stashed session
key is already present.
- <b>nostash</b> is the same as <b>true</b> except that it will not stash
+ <b>nostash</b> is the same as <b>true</b> except that it will not stash
newly-discovered session keys in the database.
- From the command line (i.e. during <a href='../notmuch-new-1/'>notmuch-new</a>(1), <a href='../notmuch-insert-1/'>notmuch-in‐</a>
+ From the command line (i.e. during <a href='../notmuch-new-1/'>notmuch-new</a>(1), <a href='../notmuch-insert-1/'>notmuch-in‐</a>
<a href='../notmuch-insert-1/'>sert</a>(1), or <a href='../notmuch-reindex-1/'>notmuch-reindex</a>(1)), the user can override the data‐
base's stored decryption policy with the <b>--decrypt=</b> option.
- Here is a table that summarizes the functionality of each of
+ Here is a table that summarizes the functionality of each of
these policies:
┌──────────────┬───────┬──────┬─────────┬──────┐
│ │ false │ auto │ nostash │ true │
- └──────────────┴───────┴──────┴─────────┴──────┘
-
+ ├──────────────┼───────┼──────┼─────────┼──────┤
│Index cleart‐ │ │ X │ X │ X │
│ext using │ │ │ │ │
│stashed ses‐ │ │ │ │ │
├──────────────┼───────┼──────┼─────────┼──────┤
│Delete
│stashed ses‐ │ │ │ │ │
- │sion keys on │ │ │ │ │
+ │sion keys on │ │ │ │ │
│reindex │ │ │ │ │
└──────────────┴───────┴──────┴─────────┴──────┘
- Stashed session keys are kept in the database as properties as‐
- sociated with the message. See <b>session-key</b> in <a href='../notmuch-properties-7/'>notmuch-proper‐</a>
+ Stashed session keys are kept in the database as properties as‐
+ sociated with the message. See <b>session-key</b> in <a href='../notmuch-properties-7/'>notmuch-proper‐</a>
<a href='../notmuch-properties-7/'>ties</a>(7) for more details about how they can be useful.
- Be aware that the notmuch index is likely sufficient (and a
- stashed session key is certainly sufficient) to reconstruct the
- cleartext of the message itself, so please ensure that the not‐
- much message index is adequately protected. DO NOT USE <b>in-</b>
- <b>dex.decrypt=true</b> or <b>index.decrypt=nostash</b> without considering
+ Be aware that the notmuch index is likely sufficient (and a
+ stashed session key is certainly sufficient) to reconstruct the
+ cleartext of the message itself, so please ensure that the not‐
+ much message index is adequately protected. DO NOT USE <b>in-</b>
+ <b>dex.decrypt=true</b> or <b>index.decrypt=nostash</b> without considering
the security of your index.
Default: <b>auto</b>.
<b>index.header.<prefix></b>
- Define the query prefix <prefix>, based on a mail header. For
- example <b>index.header.List=List-Id</b> will add a probabilistic pre‐
- fix <b>List:</b> that searches the <b>List-Id</b> field. User defined pre‐
+ Define the query prefix <prefix>, based on a mail header. For
+ example <b>index.header.List=List-Id</b> will add a probabilistic pre‐
+ fix <b>List:</b> that searches the <b>List-Id</b> field. User defined pre‐
fixes must not start with 'a'...'z'; in particular adding a pre‐
- fix with same name as a predefined prefix is not supported. See
- <a href='../notmuch-search-terms-7/'>notmuch-search-terms</a>(7) for a list of existing prefixes, and an
+ fix with same name as a predefined prefix is not supported. See
+ <a href='../notmuch-search-terms-7/'>notmuch-search-terms</a>(7) for a list of existing prefixes, and an
explanation of probabilistic prefixes.
<b>built</b>_<b>with.<name></b>
Compile time feature <name>. Current possibilities include
- "retry_lock" (configure option, included by default). (since
- notmuch 0.30, "compact" and "field_processor" are always in‐
+ "retry_lock" (configure option, included by default). (since
+ notmuch 0.30, "compact" and "field_processor" are always in‐
cluded.)
<b>query.<name></b>
- Expansion for named query called <name>. See <a href='../notmuch-search-terms-7/'>not‐</a>
+ Expansion for named query called <name>. See <a href='../notmuch-search-terms-7/'>not‐</a>
<a href='../notmuch-search-terms-7/'>much-search-terms</a>(7) for more information about named queries.
<b>squery.<name></b>
Expansion for named query called <name>, using s-expression syn‐
- tax. See <a href='../notmuch-sexp-queries-7/'>notmuch-sexp-queries</a>(7) for more information about
+ tax. See <a href='../notmuch-sexp-queries-7/'>notmuch-sexp-queries</a>(7) for more information about
s-expression queries.
</pre>
2. File specified by <b>NOTMUCH</b>_<b>CONFIG</b> environment variable.
3. <b>$XDG</b>_<b>CONFIG</b>_<b>HOME/notmuch/<profile>/config</b> where <b><profile></b> is defined
- by <b>NOTMUCH</b>_<b>PROFILE</b> environment variable if set, <b>$XDG</b>_<b>CON-</b>
+ by <b>NOTMUCH</b>_<b>PROFILE</b> environment variable if set, <b>$XDG</b>_<b>CON-</b>
<b>FIG</b>_<b>HOME/notmuch/default/config</b> otherwise.
- 4. <b>$HOME/.notmuch-config.<profile></b> where <b><profile></b> is defined by <b>NOT-</b>
+ 4. <b>$HOME/.notmuch-config.<profile></b> where <b><profile></b> is defined by <b>NOT-</b>
<b>MUCH</b>_<b>PROFILE</b> environment variable if set, <b>$HOME/.notmuch-config</b> oth‐
erwise.
</pre>
2. Directory specified by config key <b>database.path</b>.
- 3. <b>$XDG</b>_<b>DATA</b>_<b>HOME/notmuch/<profile></b> where <b><profile></b> is defined by <b>NOT-</b>
+ 3. <b>$XDG</b>_<b>DATA</b>_<b>HOME/notmuch/<profile></b> where <b><profile></b> is defined by <b>NOT-</b>
<b>MUCH</b>_<b>PROFILE</b> environment variable if set, <b>$XDG</b>_<b>DATA</b>_<b>HOME/notmuch/de-</b>
<b>fault</b> otherwise.
1. Directory specified by <b>database.hook</b>_<b>dir</b> configuration option.
- 2. <b>$XDG</b>_<b>CONFIG</b>_<b>HOME/notmuch/<profile>/hooks</b> where <b><profile></b> is defined
- by <b>NOTMUCH</b>_<b>PROFILE</b> environment variable if set, <b>$XDG</b>_<b>CON-</b>
+ 2. <b>$XDG</b>_<b>CONFIG</b>_<b>HOME/notmuch/<profile>/hooks</b> where <b><profile></b> is defined
+ by <b>NOTMUCH</b>_<b>PROFILE</b> environment variable if set, <b>$XDG</b>_<b>CON-</b>
<b>FIG</b>_<b>HOME/notmuch/default/hooks</b> otherwise.
3. <b><database.path>/.notmuch/hooks</b>
<h2>SEE ALSO</h2>
<pre>
- <a href='../notmuch-1/'>notmuch</a>(1), <a href='../notmuch-count-1/'>notmuch-count</a>(1), <a href='../notmuch-dump-1/'>notmuch-dump</a>(1), <a href='../notmuch-hooks-5/'>notmuch-hooks</a>(5), <a href='../notmuch-insert-1/'>not‐</a>
- <a href='../notmuch-insert-1/'>much-insert</a>(1), <a href='../notmuch-new-1/'>notmuch-new</a>(1), <a href='../notmuch-properties-7/'>notmuch-properties</a>(7), <a href='../notmuch-reply-1/'>notmuch-re‐</a>
+ <a href='../notmuch-1/'>notmuch</a>(1), <a href='../notmuch-count-1/'>notmuch-count</a>(1), <a href='../notmuch-dump-1/'>notmuch-dump</a>(1), <a href='../notmuch-hooks-5/'>notmuch-hooks</a>(5), <a href='../notmuch-insert-1/'>not‐</a>
+ <a href='../notmuch-insert-1/'>much-insert</a>(1), <a href='../notmuch-new-1/'>notmuch-new</a>(1), <a href='../notmuch-properties-7/'>notmuch-properties</a>(7), <a href='../notmuch-reply-1/'>notmuch-re‐</a>
<a href='../notmuch-reply-1/'>ply</a>(1), <a href='../notmuch-restore-1/'>notmuch-restore</a>(1), <a href='../notmuch-search-1/'>notmuch-search</a>(1), <a href='../notmuch-search-terms-7/'>notmuch-search-terms</a>(7),
<a href='../notmuch-show-1/'>notmuch-show</a>(1), <a href='../notmuch-tag-1/'>notmuch-tag</a>(1)
</pre>
<h2>COPYRIGHT</h2>
<pre>
- 2009-2021, Carl Worth and many others
+ 2009-2022, Carl Worth and many others
</pre>
-<h2>0.34</h2>
+<h2>0.35</h2>
<h2>COPYRIGHT</h2>
<pre>
- 2009-2021, Carl Worth and many others
+ 2009-2022, Carl Worth and many others
</pre>
-<h2>0.34</h2>
+<h2>0.35</h2>
<h2>COPYRIGHT</h2>
<pre>
- 2009-2021, Carl Worth and many others
+ 2009-2022, Carl Worth and many others
</pre>
-<h2>0.34</h2>
+<h2>0.35</h2>
<h2>COPYRIGHT</h2>
<pre>
- 2009-2021, Carl Worth and many others
+ 2009-2022, Carl Worth and many others
</pre>
-<h2>0.34</h2>
+<h2>0.35</h2>
<h2>COPYRIGHT</h2>
<pre>
- 2009-2021, Carl Worth and many others
+ 2009-2022, Carl Worth and many others
</pre>
-<h2>0.34</h2>
+<h2>0.35</h2>
<h2>DESCRIPTION</h2>
<pre>
<b>notmuch</b> <b>insert</b> reads a message from standard input and delivers it into
- the maildir directory given by configuration option <b>database.path</b>, then
- incorporates the message into the notmuch database. It is an alterna‐
- tive to using a separate tool to deliver the message then running <a href='../notmuch-new-1/'>not‐</a>
- <a href='../notmuch-new-1/'>much-new</a>(1) afterwards.
+ the maildir directory given by configuration option <b>database.mail</b>_<b>root</b>,
+ then incorporates the message into the notmuch database. It is an al‐
+ ternative to using a separate tool to deliver the message then running
+ <a href='../notmuch-new-1/'>notmuch-new</a>(1) afterwards.
The new message will be tagged with the tags specified by the <b>new.tags</b>
configuration option, then by operations specified on the command-line:
<b>--folder=<folder></b>
Deliver the message to the specified folder, relative to the
- top-level directory given by the value of <b>database.path</b>. The de‐
- fault is the empty string, which means delivering to the
+ top-level directory given by the value of <b>database.mail</b>_<b>root</b>.
+ The default is the empty string, which means delivering to the
top-level directory.
<b>--create-folder</b>
<h2>COPYRIGHT</h2>
<pre>
- 2009-2021, Carl Worth and many others
+ 2009-2022, Carl Worth and many others
</pre>
-<h2>0.34</h2>
+<h2>0.35</h2>
<h2>COPYRIGHT</h2>
<pre>
- 2009-2021, Carl Worth and many others
+ 2009-2022, Carl Worth and many others
</pre>
-<h2>0.34</h2>
+<h2>0.35</h2>
sage.
<b>session-key</b>
- When <a href='../notmuch-show-1/'>notmuch-show</a>(1) or <a href='../notmuch-reply-1/'>notmuch-reply</a>(1) encounters a message with
- an encrypted part, if notmuch finds a <b>session-key</b> property associ‐
- ated with the message, it will try that stashed session key for de‐
- cryption.
-
- If you do not want to use any stashed session keys that might be
- present, you should pass those programs <b>--decrypt=false</b>.
-
- Using a stashed session key with "notmuch show" will speed up ren‐
- dering of long encrypted threads. It also allows the user to de‐
- stroy the secret part of any expired encryption-capable subkey while
- still being able to read any retained messages for which they have
- stashed the session key. This enables truly deletable e-mail, since
- (once the session key and asymmetric subkey are both destroyed)
- there are no keys left that can be used to decrypt any copy of the
- original message previously stored by an adversary.
-
- However, access to the stashed session key for an encrypted message
- permits full byte-for-byte reconstruction of the cleartext message.
- This includes attachments, cryptographic signatures, and other mate‐
- rial that cannot be reconstructed from the index alone.
-
- See <b>index.decrypt</b> in <a href='../notmuch-config-1/'>notmuch-config</a>(1) for more details about how to
- set notmuch's policy on when to store session keys.
-
- The session key should be in the ASCII text form produced by GnuPG.
- For OpenPGP, that consists of a decimal representation of the hash
- algorithm used (identified by number from RFC 4880, e.g. 9 means
- AES-256) followed by a colon, followed by a hexadecimal representa‐
- tion of the algorithm-specific key. For example, an AES-128 key
- might be stashed in a notmuch property as: <b>ses-</b>
- <b>sion-key=7:14B16AF65536C28AF209828DFE34C9E0</b>.
+ When <a href='../notmuch-show-1/'>notmuch-show</a>(1) or <a href='../notmuch-reply-1/'>notmuch-reply</a>(1) encounters a message
+ with an encrypted part, if notmuch finds a <b>session-key</b> property
+ associated with the message, it will try that stashed session
+ key for decryption.
+
+ If you do not want to use any stashed session keys that might be
+ present, you should pass those programs <b>--decrypt=false</b>.
+
+ Using a stashed session key with "notmuch show" will speed up
+ rendering of long encrypted threads. It also allows the user to
+ destroy the secret part of any expired encryption-capable subkey
+ while still being able to read any retained messages for which
+ they have stashed the session key. This enables truly deletable
+ e-mail, since (once the session key and asymmetric subkey are
+ both destroyed) there are no keys left that can be used to de‐
+ crypt any copy of the original message previously stored by an
+ adversary.
+
+ However, access to the stashed session key for an encrypted mes‐
+ sage permits full byte-for-byte reconstruction of the cleartext
+ message. This includes attachments, cryptographic signatures,
+ and other material that cannot be reconstructed from the index
+ alone.
+
+ See <b>index.decrypt</b> in <a href='../notmuch-config-1/'>notmuch-config</a>(1) for more details about
+ how to set notmuch's policy on when to store session keys.
+
+ The session key should be in the ASCII text form produced by
+ GnuPG. For OpenPGP, that consists of a decimal representation
+ of the hash algorithm used (identified by number from RFC 4880,
+ e.g. 9 means AES-256) followed by a colon, followed by a hexa‐
+ decimal representation of the algorithm-specific key. For exam‐
+ ple, an AES-128 key might be stashed in a notmuch property as:
+ <b>session-key=7:14B16AF65536C28AF209828DFE34C9E0</b>.
<b>index.repaired</b>
- Some messages arrive in forms that are confusing to view; they can
- be mangled by mail transport agents, or the sending mail user agent
- may structure them in a way that is confusing. If notmuch knows how
- to both detect and repair such a problematic message, it will do so
- during indexing.
-
- If it applies a message repair during indexing, it will use the <b>in-</b>
- <b>dex.repaired</b> property to note the type of repair(s) it performed.
-
- <b>index.repaired=skip-protected-headers-legacy-display</b> indicates that
- when indexing the cleartext of an encrypted message, notmuch skipped
- over a "legacy-display" text/rfc822-headers part that it found in
- that message, since it was able to index the built-in protected
- headers directly.
-
- <b>index.repaired=mixedup</b> indicates the repair of a "Mixed Up" en‐
- crypted PGP/MIME message, a mangling typically produced by Micro‐
- soft's
- <u>https://tools.ietf.org/html/draft-dkg-openpgp-pgpmime-message-mangling</u>
- for more information.
+ Some messages arrive in forms that are confusing to view; they
+ can be mangled by mail transport agents, or the sending mail
+ user agent may structure them in a way that is confusing. If
+ notmuch knows how to both detect and repair such a problematic
+ message, it will do so during indexing.
+
+ If it applies a message repair during indexing, it will use the
+ <b>index.repaired</b> property to note the type of repair(s) it per‐
+ formed.
+
+ <b>index.repaired=skip-protected-headers-legacy-display</b> indicates
+ that when indexing the cleartext of an encrypted message, not‐
+ much skipped over a "legacy-display" text/rfc822-headers part
+ that it found in that message, since it was able to index the
+ built-in protected headers directly.
+
+ <b>index.repaired=mixedup</b> indicates the repair of a "Mixed Up" en‐
+ crypted PGP/MIME message, a mangling typically produced by Mi‐
+ crosoft's
+ <u>https://tools.ietf.org/html/draft-dkg-openpgp-pgpmime-message-mangling</u>
+ for more information.
</pre>
<h2>SEE ALSO</h2>
<pre>
<a href='../notmuch-1/'>notmuch</a>(1), <a href='../notmuch-config-1/'>notmuch-config</a>(1), <a href='../notmuch-dump-1/'>notmuch-dump</a>(1), <a href='../notmuch-insert-1/'>notmuch-insert</a>(1), <a href='../notmuch-new-1/'>not‐</a>
- <a href='../notmuch-new-1/'>much-new</a>(1), <a href='../notmuch-reindex-1/'>notmuch-reindex</a>(1), <a href='../notmuch-reply-1/'>notmuch-reply</a>(1), <a href='../notmuch-restore-1/'>notmuch-restore</a>(1),
+ <a href='../notmuch-new-1/'>much-new</a>(1), <a href='../notmuch-reindex-1/'>notmuch-reindex</a>(1), <a href='../notmuch-reply-1/'>notmuch-reply</a>(1), <a href='../notmuch-restore-1/'>notmuch-restore</a>(1),
<a href='../notmuch-search-terms-7/'>notmuch-search-terms</a>(7), <a href='../notmuch-show-1/'>notmuch-show</a>(1)
</pre>
<h2>COPYRIGHT</h2>
<pre>
- 2009-2021, Carl Worth and many others
+ 2009-2022, Carl Worth and many others
</pre>
-<h2>0.34</h2>
+<h2>0.35</h2>
<h2>COPYRIGHT</h2>
<pre>
- 2009-2021, Carl Worth and many others
+ 2009-2022, Carl Worth and many others
</pre>
-<h2>0.34</h2>
+<h2>0.35</h2>
<b>--reply-to=(all|sender)</b>
- <b>all</b> (default)
+ <b>all</b> <b>(default)</b>
Replies to all addresses.
<b>sender</b> Replies only to the sender. If replying to user's own
<h2>COPYRIGHT</h2>
<pre>
- 2009-2021, Carl Worth and many others
+ 2009-2022, Carl Worth and many others
</pre>
-<h2>0.34</h2>
+<h2>0.35</h2>
<h2>COPYRIGHT</h2>
<pre>
- 2009-2021, Carl Worth and many others
+ 2009-2022, Carl Worth and many others
</pre>
-<h2>0.34</h2>
+<h2>0.35</h2>
search terms. This option specifies whether to omit excluded
messages in the search process.
- <b>true</b> (default)
+ <b>true</b> <b>(default)</b>
Prevent excluded messages from matching the search terms.
<b>all</b> Additionally prevent excluded messages from appearing in
<h2>COPYRIGHT</h2>
<pre>
- 2009-2021, Carl Worth and many others
+ 2009-2022, Carl Worth and many others
</pre>
-<h2>0.34</h2>
+<h2>0.35</h2>
<h2>COPYRIGHT</h2>
<pre>
- 2009-2021, Carl Worth and many others
+ 2009-2022, Carl Worth and many others
</pre>
-<h2>0.34</h2>
+<h2>0.35</h2>
<b>tax()</b>. Support for this syntax is currently optional, you can test if
your build of notmuch supports it with
- $ notmuch config get built_with.sexpr_query
+ $ notmuch config get built_with.sexp_queries
</pre>
<h3> S-EXPRESSIONS</h3>
s-expressions inside parentheses. Atoms are either
<u>basic</u> <u>value</u>
- A basic value is an unquoted string containing no whitespace,
- double quotes, or parentheses.
+ A basic value is an unquoted string containing no whitespace, double
+ quotes, or parentheses.
<u>quoted</u> <u>string</u>
- Double quotes (") delimit strings possibly containing whitespace
- or parentheses. These can contain double quote characters by es‐
- caping with backslash. E.g. <b>"this</b> <b>is</b> <b>a</b> <b>quote</b> <b>\""</b>.
+ Double quotes (") delimit strings possibly containing whitespace or
+ parentheses. These can contain double quote characters by escaping
+ with backslash. E.g. <b>"this</b> <b>is</b> <b>a</b> <b>quote</b> <b>\""</b>.
</pre>
<h3> S-EXPRESSION QUERIES</h3>
<u>query</u> consisting of a prefix atom (first element) defining a <u>field</u>,
<u>logical</u> <u>operation</u>, or <u>modifier</u>, and 0 or more subqueries.
- <b>*</b> "*" matches any non-empty string in the current field.
+ <b>*</b>
+ "*" matches any non-empty string in the current field.
- <b>()</b> The empty list matches all messages
+ <b>()</b>
+ The empty list matches all messages
<u>term</u>
Match all messages containing <u>term</u>, possibly after stemming or
values) in s-expression queries. For information on phrase split‐
ting see <u>FIELDS</u>.
- <b>(</b> <u>field</u> <b>q</b>_<b>1</b> <b>q</b>_<b>2</b> <b>...</b> <b>q</b>_<b>n</b> <b>)</b>
- Restrict the queries q_1 to q_n to <u>field</u>, and combine with <u>and</u>
- (for most fields) or <u>or</u>. See <u>FIELDS</u> for more information.
-
- <b>(</b> <u>operator</u> <b>q</b>_<b>1</b> <b>q</b>_<b>2</b> <b>...</b> <b>q</b>_<b>n</b> <b>)</b>
- Combine queries q_1 to q_n. Currently supported operators are
- <b>and</b>, <b>or</b>, and <b>not</b>. <b>(not</b> q_1 ... q_n <b>)</b> is equivalent to <b>(and</b> <b>(not</b>
- q_1 <b>)</b> <b>...</b> <b>(not</b> q_n <b>))</b>.
-
- <b>(</b> <u>modifier</u> <b>q</b>_<b>1</b> <b>q</b>_<b>2</b> <b>...</b> <b>q</b>_<b>n</b> <b>)</b>
- Combine queries q_1 to q_n, and reinterpret the result (e.g. as
- a regular expression). See <u>MODIFIERS</u> for more information.
-
- <b>(macro</b> <b>(</b> <b>p</b>_<b>1</b> <b>...</b> <b>p</b>_<b>n</b> <b>)</b> <b>body)</b>
- Define saved query with parameter substitution. The syntax is
- recognized only in saved s-expression queries (see <b>squery.*</b> in
- <a href='../notmuch-config-1/'>notmuch-config</a>(1)). Parameter names in <b>body</b> must be prefixed
- with <b>,</b> to be expanded (see <u>MACRO</u> <u>EXAMPLES</u>). Macros may refer to
- other macros, but only to their own parameters [1].
+ <b>(</b> <u>field</u> <u>q</u>1 <u>q</u>2 ... <u>q</u>n <b>)</b>
+ Restrict the queries <u>q</u>1 to <u>q</u>n to <u>field</u>, and combine with <u>and</u> (for
+ most fields) or <u>or</u>. See <u>FIELDS</u> for more information.
+
+ <b>(</b> <u>operator</u> <u>q</u>1 <u>q</u>2 ... <u>q</u>n <b>)</b>
+ Combine queries <u>q</u>1 to <u>q</u>n. Currently supported operators are <b>and</b>, <b>or</b>,
+ and <b>not</b>. <b>(not</b> <u>q</u>1 ... <u>q</u>n <b>)</b> is equivalent to <b>(and</b> <b>(not</b> <u>q</u>1 <b>)</b> <b>...</b> <b>(not</b>
+ <u>q</u>n <b>))</b>.
+
+ <b>(</b> <u>modifier</u> <u>q</u>1 <u>q</u>2 ... <u>q</u>n <b>)</b>
+ Combine queries <u>q</u>1 to <u>q</u>n, and reinterpret the result (e.g. as a reg‐
+ ular expression). See <u>MODIFIERS</u> for more information.
+
+ <b>(macro</b> <b>(</b> <u>p</u>1 ... <u>p</u>n <b>)</b> <b>body)</b>
+ Define saved query with parameter substitution. The syntax is recog‐
+ nized only in saved s-expression queries (see <b>squery.*</b> in <a href='../notmuch-config-1/'>not‐</a>
+ <a href='../notmuch-config-1/'>much-config</a>(1)). Parameter names in <b>body</b> must be prefixed with <b>,</b> to
+ be expanded (see <u>MACRO</u> <u>EXAMPLES</u>). Macros may refer to other macros,
+ but only to their own parameters [1].
</pre>
<h3> FIELDS</h3>
│tag │ and │ term │ yes │ yes │ yes │
├───────────┼─────────┼────────┼────────┼──────────┼───────┤
│thread │ or │ term │ yes │ yes │ yes │
- ├───────────┼─────────┼────────┼────────┼──────────┼───────┤
+ └───────────┴─────────┴────────┴────────┴──────────┴───────┘
+
│to │ and │ phrase │ yes │ yes │ no │
└───────────┴─────────┴────────┴────────┴──────────┴───────┘
</pre>
that are neither operators nor fields.
<b>(infix</b> <u>atom</u> <b>)</b>
- Interpret <u>atom</u> as an infix notmuch query (see <a href='../notmuch-search-terms-7/'>not‐</a>
- <a href='../notmuch-search-terms-7/'>much-search-terms</a>(7)). Not supported inside fields.
+ Interpret <u>atom</u> as an infix notmuch query (see <a href='../notmuch-search-terms-7/'>not‐</a>
+ <a href='../notmuch-search-terms-7/'>much-search-terms</a>(7)). Not supported inside fields.
- <b>(matching</b> <b>q</b>_<b>1</b> <b>q</b>_<b>2</b> <b>...</b> <b>q</b>_<b>n</b> <b>)</b> <b>(of</b> <b>q</b>_<b>1</b> <b>q</b>_<b>2</b> <b>...</b> <b>q</b>_<b>n</b> <b>)</b>
- Match all messages have the same values of the current field as
- those matching all of q_1 ... q_n. Supported in most term [7] or
- phrase fields. Most commonly used in the <b>thread</b> field.
+ <b>(matching</b> <u>q</u>1 <u>q</u>2 ... <u>q</u>n <b>)</b> <b>(of</b> <u>q</u>1 <u>q</u>2 ... <u>q</u>n <b>)</b>
+ Match all messages have the same values of the current field as
+ those matching all of <u>q</u>1 ... <u>q</u>n. Supported in most term [7] or
+ phrase fields. Most commonly used in the <b>thread</b> field.
<b>(query</b> <u>atom</u> <b>)</b>
- Expand to the saved query named by <u>atom</u>. See <a href='../notmuch-config-1/'>notmuch-config</a>(1)
- for more. Note that the saved query must be in infix syntax
- (<a href='../notmuch-search-terms-7/'>notmuch-search-terms</a>(7)). Not supported inside fields.
+ Expand to the saved query named by <u>atom</u>. See <a href='../notmuch-config-1/'>notmuch-config</a>(1) for
+ more. Note that the saved query must be in infix syntax (<a href='../notmuch-search-terms-7/'>not‐</a>
+ <a href='../notmuch-search-terms-7/'>much-search-terms</a>(7)). Not supported inside fields.
<b>(regex</b> <u>atom</u> <b>)</b> <b>(rx</b> <u>atom</u> <b>)</b>
- Interpret <u>atom</u> as a POSIX.2 regular expression (see <b>regex</b>(7)).
- This applies in term fields and a subset [5] of phrase fields
- (see <u>Fields</u> <u>with</u> <u>supported</u> <u>modifiers</u>).
+ Interpret <u>atom</u> as a POSIX.2 regular expression (see <b>regex</b>(7)). This
+ applies in term fields and a subset [5] of phrase fields (see <u>Fields</u>
+ <u>with</u> <u>supported</u> <u>modifiers</u>).
<b>(starts-with</b> <u>subword</u> <b>)</b>
- Matches any term starting with <u>subword</u>. This applies in either
- phrase or term <u>fields</u>, or outside of fields [6]. Note that a
- <b>starts-with</b> query cannot be part of a phrase. The atom <b>*</b> is a
- synonym for <b>(starts-with</b> <b>"")</b>.
+ Matches any term starting with <u>subword</u>. This applies in either
+ phrase or term <u>fields</u>, or outside of fields [6]. Note that a
+ <b>starts-with</b> query cannot be part of a phrase. The atom <b>*</b> is a syn‐
+ onym for <b>(starts-with</b> <b>"")</b>.
</pre>
<h2>EXAMPLES</h2>
<pre>
- <b>Wizard</b> Match all messages containing the word "wizard", ignoring case.
+ <b>Wizard</b>
+ Match all messages containing the word "wizard", ignoring case.
- <b>added</b> Match all messages containing "added", but also those containing
- "add", "additional", "Additional", "adds", etc... via stemming.
+ <b>added</b>
+ Match all messages containing "added", but also those containing
+ "add", "additional", "Additional", "adds", etc... via stemming.
<b>(and</b> <b>Bob</b> <b>Marley)</b>
- Match messages containing words "Bob" and "Marley", or their
- stems The words need not be adjacent.
+ Match messages containing words "Bob" and "Marley", or their stems
+ The words need not be adjacent.
<b>(not</b> <b>Bob</b> <b>Marley)</b>
- Match messages containing neither "Bob" nor "Marley", nor their
- stems,
+ Match messages containing neither "Bob" nor "Marley", nor their
+ stems,
<b>"quick</b> <b>fox"</b> <b>quick-fox</b> <b>quick@fox</b>
- Match the <u>phrase</u> "quick" followed by "fox" in phrase fields (or
- outside a field). Match the literal string in a term field.
+ Match the <u>phrase</u> "quick" followed by "fox" in phrase fields (or out‐
+ side a field). Match the literal string in a term field.
<b>(folder</b> <b>(of</b> <b>(id</b> <b>1234@invalid)))</b>
- Match any message in the same folder as the one with Message-Id
- "<u>1234@invalid</u>"
+ Match any message in the same folder as the one with Message-Id "‐
+ <u>1234@invalid</u>"
<b>(id</b> <b>1234@invalid</b> <b>blah@test)</b>
- Matches Message-Id "<u>1234@invalid</u>" <u>or</u> Message-Id "<u>blah@test</u>"
+ Matches Message-Id "<u>1234@invalid</u>" <u>or</u> Message-Id "<u>blah@test</u>"
- <b>(and</b> <b>(infix</b> <b>date:2009-11-18..2009-11-18</b> <b>)</b> <b>(tag</b> <b>unread))</b>
- Match messages in the given date range with tag unread.
+ <b>(and</b> <b>(infix</b> <b>"date:2009-11-18..2009-11-18")</b> <b>(tag</b> <b>unread))</b>
+ Match messages in the given date range with tag unread.
<b>(starts-with</b> <b>prelim)</b>
- Match any words starting with "prelim".
+ Match any words starting with "prelim".
- <b>(subject</b> <b>quick</b> <b>brown</b> <b>fox</b> <b>)</b>
- Match messages whose subject contains "quick" (anywhere,
- stemmed) and the phrase "brown fox".
+ <b>(subject</b> <b>quick</b> <b>"brown</b> <b>fox")</b>
+ Match messages whose subject contains "quick" (anywhere, stemmed)
+ and the phrase "brown fox".
<b>(subject</b> <b>(starts-with</b> <b>prelim))</b>
- Matches any word starting with "prelim", inside a message sub‐
- ject.
+ Matches any word starting with "prelim", inside a message subject.
- <b>(subject</b> <b>(starts-wih</b> <b>quick)</b> <b>brown</b> <b>fox</b> <b>)</b>
- Match messages whose subject contains "quick brown fox", but
- also "brown fox quicksand".
+ <b>(subject</b> <b>(starts-wih</b> <b>quick)</b> <b>"brown</b> <b>fox")</b>
+ Match messages whose subject contains "quick brown fox", but also
+ "brown fox quicksand".
<b>(thread</b> <b>(of</b> <b>(id</b> <b>1234@invalid)))</b>
- Match any message in the same thread as the one with Message-Id
- "<u>1234@invalid</u>"
+ Match any message in the same thread as the one with Message-Id "‐
+ <u>1234@invalid</u>"
<b>(thread</b> <b>(matching</b> <b>(from</b> <b>bob@example.com)</b> <b>(to</b> <b>bob@example.com)))</b>
- Match any (messages in) a thread containing a message from "‐
- <u>bob@example.com</u>" and a (possibly distinct) message to "bob at
- example.com")
+ Match any (messages in) a thread containing a message from "‐
+ <u>bob@example.com</u>" and a (possibly distinct) message to "bob at exam‐
+ ple.com")
- <b>(to</b> <b>(or</b> <b>bob@example.com</b> <b>mallory@example.org))</b> <b>(or</b> <b>(to</b> <b>bob@example.com)</b>
+ <b>(to</b> <b>(or</b> <b>bob@example.com</b> <b>mallory@example.org))</b> <b>(or</b> <b>(to</b> <b>bob@example.com)</b>
<b>(to</b> <b>mallory@example.org))</b>
- Match in the "To" or "Cc" headers, "<u>bob@example.com</u>", "‐
- <u>mallory@example.org</u>", and also "<u>bob@example.com.au</u>" since it
- contains the adjacent triple "bob", "example", "com".
+ Match in the "To" or "Cc" headers, "<u>bob@example.com</u>", "‐
+ <u>mallory@example.org</u>", and also "<u>bob@example.com.au</u>" since it con‐
+ tains the adjacent triple "bob", "example", "com".
<b>(not</b> <b>(to</b> <b>*))</b>
- Match messages with an empty or invalid 'To' and 'Cc' field.
+ Match messages with an empty or invalid 'To' and 'Cc' field.
<b>(List</b> <b>*)</b>
- Match messages with a non-empty List-Id header, assuming config‐
- uration <b>index.header.List=List-Id</b>
+ Match messages with a non-empty List-Id header, assuming configura‐
+ tion <b>index.header.List=List-Id</b>
</pre>
<h3> MACRO EXAMPLES</h3>
$ notmuch config set squery.Outer '(macro (x y) (and (tag ,x) (Inner ,y)))'
$ notmuch search --query=sexp '(Outer inbox maildir)'
- Parameters can be re-used to reduce boilerplate. Any field, including
+ Parameters can be re-used to reduce boilerplate. Any field, including
user defined fields is permitted within a macro.
$ notmuch config set squery.About '(macro (name) (or (subject ,name) (List ,name)))'
<h2>NOTES</h2>
<pre>
- [1] Technically macros impliment lazy evaluation and lexical scope.
+ [1] Technically macros impliment lazy evaluation and lexical scope.
There is one top level scope containing all macro definitions, but
all parameter definitions are local to a given macro.
[4] a.k.a. boolean prefixes
- [5] Due to the implemention of phrase fields in Xapian, regex queries
+ [5] Due to the implemention of phrase fields in Xapian, regex queries
could only match individual words.
- [6] Due the the way <b>body</b> is implemented in notmuch, this modifier is
+ [6] Due the the way <b>body</b> is implemented in notmuch, this modifier is
not supported in the <b>body</b> field.
- [7] Due to the way recursive <b>path</b> queries are implemented in notmuch,
+ [7] Due to the way recursive <b>path</b> queries are implemented in notmuch,
this modifier is not supported in the <b>path</b> field.
</pre>
<h2>COPYRIGHT</h2>
<pre>
- 2009-2021, Carl Worth and many others
+ 2009-2022, Carl Worth and many others
</pre>
-<h2>0.34</h2>
+<h2>0.35</h2>
<b>--format=(text|json|sexp|mbox|raw)</b>
- <b>text</b> (default for messages)
+ <b>text</b> <b>(default</b> <b>for</b> <b>messages)</b>
The default plain-text format has all text-content MIME
parts decoded. Various components in the output, (<b>mes-</b>
<b>sage</b>, <b>header</b>, <b>body</b>, <b>attachment</b>, and MIME <b>part</b>), will be
is termed "mboxrd" format and described in detail here:
<u>http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/mail-mbox-formats.html</u>
- <b>raw</b> (default if <b>--part</b> is given)
+ <b>raw</b> <b>(default</b> <b>if</b> <b>--part</b> <b>is</b> <b>given)</b>
Write the raw bytes of the given MIME part of a message
to standard out. For this format, it is an error to spec‐
ify a query that matches more than one message.
seen in the first column of output from the <a href='../notmuch-search-1/'>notmuch-search</a>(1) command.
</pre>
+<h2>CONFIGURATION</h2>
+<pre>
+ Structured output (json / sexp) is influenced by the configuration op‐
+ tion show.extra_headers. See <a href='../notmuch-config-1/'>notmuch-config</a>(1) for details.
+</pre>
+
<h2>EXIT STATUS</h2>
<pre>
This command supports the following special exit status codes
<h2>SEE ALSO</h2>
<pre>
- <a href='../notmuch-1/'>notmuch</a>(1), <a href='../notmuch-config-1/'>notmuch-config</a>(1), <a href='../notmuch-count-1/'>notmuch-count</a>(1), <a href='../notmuch-dump-1/'>notmuch-dump</a>(1), <a href='../notmuch-hooks-5/'>not‐</a>
- <a href='../notmuch-hooks-5/'>much-hooks</a>(5), <a href='../notmuch-insert-1/'>notmuch-insert</a>(1), <a href='../notmuch-new-1/'>notmuch-new</a>(1), <a href='../notmuch-reply-1/'>notmuch-reply</a>(1),
+ <a href='../notmuch-1/'>notmuch</a>(1), <a href='../notmuch-config-1/'>notmuch-config</a>(1), <a href='../notmuch-count-1/'>notmuch-count</a>(1), <a href='../notmuch-dump-1/'>notmuch-dump</a>(1), <a href='../notmuch-hooks-5/'>not‐</a>
+ <a href='../notmuch-hooks-5/'>much-hooks</a>(5), <a href='../notmuch-insert-1/'>notmuch-insert</a>(1), <a href='../notmuch-new-1/'>notmuch-new</a>(1), <a href='../notmuch-reply-1/'>notmuch-reply</a>(1),
<a href='../notmuch-restore-1/'>notmuch-restore</a>(1), <a href='../notmuch-search-1/'>notmuch-search</a>(1), <a href='../notmuch-search-terms-7/'>notmuch-search-terms</a>(7), <a href='../notmuch-tag-1/'>not‐</a>
<a href='../notmuch-tag-1/'>much-tag</a>(1)
</pre>
<h2>COPYRIGHT</h2>
<pre>
- 2009-2021, Carl Worth and many others
+ 2009-2022, Carl Worth and many others
</pre>
-<h2>0.34</h2>
+<h2>0.35</h2>
<h2>COPYRIGHT</h2>
<pre>
- 2009-2021, Carl Worth and many others
+ 2009-2022, Carl Worth and many others
</pre>
-<h2>0.34</h2>
+<h2>0.35</h2>