NOTMUCH-CONFIG(1)
β¨ NAME β¨
notmuch-config β access notmuch configuration file, bestie π
π SYNOPSIS π
notmuch config get <section>.<item>
notmuch config set [--database] <section>.<item> [value ...]
notmuch config list
π DESCRIPTION π
okay so the config command is literally your go-to for getting or setting settings in the notmuch configuration file and the corresponding database. periodt.
getβ The value of the specified configuration item is printed to stdout. If the item has multiple values (it is a list), each value is separated by a newline character. So like, one per line, no cap.setβ The specified configuration item is set to the given value. To specify a multiple-value item (a list), 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. With the--databaseoption, updates configuration metadata stored in the database, rather than the default (text) configuration file. So if you give it nothing, it yeets the item. πlistβ Every configuration item is printed to stdout, each on a separate line of the form:
section.item=value
No additional whitespace surrounds the dot or equals sign characters. In a multiple-value item (a list), the values are separated by semicolon characters. It's giving clean, no extra spaces, iykyk.
The available configuration items are described below. Non-absolute paths are presumed relative to $HOME for items in section database.
built_with.<name>β Compile time feature<name>. Current possibilities include"retry_lock"(configure option, included by default). (since notmuch 0.30,"compact"and"field_processor"are always included.)database.autocommitβ How often to commit transactions to disk.0means wait until command completes, otherwise an integernspecifies to commit to disk after everyncompleted transactions.
History: this configuration value was introduced in notmuch 0.33.
database.backup_dirβ Directory to store tag dumps when upgrading database.
History: this configuration value was introduced in notmuch 0.32.
Default: A sibling directory of the Xapian database called backups.
database.hook_dirβ Directory containing hooks run by notmuch commands. Seenotmuch-hooks <#notmuch-hooks-5>.
History: this configuration value was introduced in notmuch 0.32.
Default: See HOOKS, below.
database.mail_rootβ The top-level directory where your mail currently exists and to where mail will be delivered in the future. Files should be individual email messages.
History: this configuration value was introduced in notmuch 0.32.
Default: For compatibility with older configurations, the value of database.path is used if database.mail_root is unset.
database.pathβ Notmuch will store its database here, (in sub-directory named.notmuchifdatabase.mail_rootis unset).
Default: see DATABASE LOCATION
git.pathβ Default location for git repository fornotmuch-git <>.git.safe_fractionβ Somenotmuch-git <>operations check that the fraction of messages changed (in the database or in git, as appropriate) is not too large. This item controls what fraction of total messages is considered"not too large".git.tag_prefixβ Default tag prefix (filter) fornotmuch-git <>.index.as_textβ List of regular expressions (without delimiters) for MIME types to be indexed as text. Currently this applies only to attachments. By default the regex matches anywhere in the content type; if the user wants an anchored match, they should include anchors in their regexes.
History: This configuration value was introduced in notmuch 0.38.
index.decryptβ Policy for decrypting encrypted messages during indexing. Must be one of:false,auto,nostash, ortrue.
When indexing an encrypted e-mail message, if this variable is set to true, notmuch will try to decrypt the message and index the cleartext, stashing a copy of any discovered session keys for the message. If auto, 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 keys. Use false to avoid decrypting even when a stashed session key is already present.
nostash is the same as true except that it will not stash newly-discovered session keys in the database.
From the command line (i.e. during notmuch-new <#notmuch-new-1>, notmuch-insert <#notmuch-insert-1>, or notmuch-reindex <#notmuch-reindex-1>), the user can override the database's stored decryption policy with the --decrypt= option.
Here is a table that summarizes the functionality of each of these policies:
βββββββββββββββββ¬ββββββββ¬βββββββ¬ββββββββββ¬βββββββ
β β false β auto β nostash β true β
βββββββββββββββββΌββββββββΌβββββββΌββββββββββΌβββββββ€
β Index β β X β X β X β
β cleartext β β β β β
β using stashed β β β β β
β session keys β β β β β
βββββββββββββββββΌββββββββΌβββββββΌββββββββββΌβββββββ€
β Index β β β X β X β
β cleartext β β β β β
β using secret β β β β β
β keys β β β β β
βββββββββββββββββΌββββββββΌβββββββΌββββββββββΌβββββββ€
β Stash session β β β β X β
β keys β β β β β
βββββββββββββββββΌββββββββΌβββββββΌββββββββββΌβββββββ€
β Delete β X β β β β
β stashed β β β β β
β session keys β β β β β
β on reindex β β β β β
βββββββββββββββββ΄ββββββββ΄βββββββ΄ββββββββββ΄βββββββ
Stashed session keys are kept in the database as properties associated with the message. See session-key in notmuch-properties <#notmuch-properties-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 notmuch message index is adequately protected. DO NOT USE index.decrypt=true or index.decrypt=nostash without considering the security of your index. π¨
Default: auto.
index.header.<prefix>β Define the query prefix<prefix>, based on a mail header. For exampleindex.header.List=List-Idwill add a probabilistic prefixList:that searches theList-Idfield. User defined prefixes must not start with'a'...'z'; in particular adding a prefix with same name as a predefined prefix is not supported. Seenotmuch-search-terms <#notmuch-search-terms-7>for a list of existing prefixes, and an explanation of probabilistic prefixes.maildir.synchronize_flagsβ Iftrue, then the following maildir flags (in message filenames) will be synchronized with the corresponding notmuch tags:
ββββββββ¬βββββββββββββββββββββββββ
β Flag β Tag β
ββββββββΌβββββββββββββββββββββββββ€
β D β draft β
ββββββββΌβββββββββββββββββββββββββ€
β F β flagged β
ββββββββΌβββββββββββββββββββββββββ€
β P β passed β
ββββββββΌβββββββββββββββββββββββββ€
β R β replied β
ββββββββΌβββββββββββββββββββββββββ€
β S β unread (added when 'S' β
β β flag is not present) β
ββββββββ΄βββββββββββββββββββββββββ
The notmuch-new <#notmuch-new-1> command will notice flag changes in filenames and update tags, while the notmuch-tag <#notmuch-tag-1> and notmuch-restore <#notmuch-restore-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, etc.), it is advisable to run notmuch-new <#notmuch-new-1> before notmuch-tag <#notmuch-tag-1> or notmuch-restore <#notmuch-restore-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. fr fr.
Default: true.
new.ignoreβ A list to specify files and directories that will not be searched for messages bynotmuch-new <#notmuch-new-1>. Each entry in the list is either:
A file or a directory name, without path, that will be ignored, regardless of the location in the mail store directory hierarchy.
Or:
So this one's a regular expression, wrapped in //, and it gets matched against the path of the file or directory relative to the database path. Anything that matches β files and directories β is getting ignored, no exceptions. Real talk though: you must explicitly anchor the beginning and the end of the string yourself. Like, /.*/foo$/ would match "bar/foo" and "bar/baz/foo", but not "foo" and not "bar/foobar". Anchor it or perish, bestie. π
Default: empty list.
new.tagsβ a list of tags that get added to every single messagenotmuch newbrings into the family. It's giving welcome wagon. π
Default: unread;inbox.
query.<name>β the expansion for a named query called <name>. Go readnotmuch-search-terms(7)for the whole named-query situation, iykyk. πsearch.exclude_tagsβ a list of tags that get excluded from search results by default. But β plot twist β using an excluded tag in a query overrides that exclusion, so you can absolutely still summon them. β¨
Default: empty list. Also heads up, notmuch-setup(1) drops deleted;spam right in here when it's creating a new configuration file. π
search.authors_separatorβ the string that separates authors when showing a thread.
Default: ,
search.authors_matched_separatorβ the string that separates the matched authors from the non-matched authors when showing a thread.
Default: |
show.extra_headersβ by defaultnotmuch-show(1)includes these headers in structured output if they're actually present in the message:Subject,From,To,Cc,Bcc,Reply-To,Date. This option lets you specify a list of further headers to output. Very customizable of you. π¦
History: this configuration value was introduced in notmuch 0.35. (Era-defining.)
Default: empty list.
squery.<name>β the expansion for a named query called <name>, using s-expression syntax. Peepnotmuch-sexp-queries(7)for the whole s-expression query lore. πΈuser.nameβ your full name. Yes, the real one.
Default: $NAME variable if set, otherwise read from /etc/passwd.
user.other_emailβ a list of other email addresses at which you receive email (see also,user.primary_email).
Default: not set.
user.primary_emailβ your primary email address. The main character email, if you will. π
Default: $EMAIL variable if set, otherwise constructed from the username and hostname of the current machine.
π FILES π
ποΈ CONFIGURATION ποΈ
The notmuch configuration file search order, in this exact order, no skipping:
- File specified by the
notmuch --configglobal option; seenotmuch(1). - File specified by the
NOTMUCH_CONFIGenvironment variable. $XDG_CONFIG_HOME/notmuch/<profile>/configwhere <profile> is defined by theNOTMUCH_PROFILEenvironment variable if set,$XDG_CONFIG_HOME/notmuch/default/configotherwise.$HOME/.notmuch-config.<profile>where <profile> is defined by theNOTMUCH_PROFILEenvironment variable if set,$HOME/.notmuch-configotherwise.
πΎ DATABASE LOCATION πΎ
The notmuch database search order:
- Directory specified by the
NOTMUCH_DATABASEenvironment variable. - Directory specified by config key
database.path. $XDG_DATA_HOME/notmuch/<profile>where <profile> is defined by theNOTMUCH_PROFILEenvironment variable if set,$XDG_DATA_HOME/notmuch/defaultotherwise.- Directory specified by the
MAILDIRenvironment variable. $HOME/mail
πͺ HOOKS πͺ
The notmuch hook directory search order:
- Directory specified by the
database.hook_dirconfiguration option. $XDG_CONFIG_HOME/notmuch/<profile>/hookswhere <profile> is defined by theNOTMUCH_PROFILEenvironment variable if set,$XDG_CONFIG_HOME/notmuch/default/hooksotherwise.<database.path>/.notmuch/hooks
π SEE ALSO π
notmuch(1), notmuch-count(1), notmuch-dump(1), notmuch-hooks(5), notmuch-insert(1), notmuch-new(1), notmuch-properties(7), notmuch-reply(1), notmuch-restore(1), notmuch-search(1), notmuch-search-terms(7), notmuch-show(1), notmuch-tag(1)
Go read all of them, bestie, they're all slaying in their own way. ππ
Author: Carl Worth and many others Copyright: 2009-2026, Carl Worth and many others
And that's a wrap!! πβ This was version 0.40 of the page, dated Jan 31, 2026 β the NOTMUCH-CONFIG(1) era, periodt. Go configure something iconic. π
π«Ά
π¦ where this page comes from
- fedora 44: notmuch 0.40-1.fc44 Β· GPL-3.0-or-later
- fedora 44: notmuch 0.40-1.fc44 Β· GPL-3.0-or-later
- nixos 26.05: notmuch 0.40
- ubuntu resolute: notmuch 0.40-1ubuntu1 Β· GPL-3.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms