NOTMUCH(1)

๐Ÿ’– NOTMUCH(1) ๐Ÿ’–

okay bestie, sit down, hydrate, because notmuch(1) is literally the moment. it's your thread-based email index, search, and tagging era. no cap.


โœจ SYNOPSIS โœจ

notmuch [option ...] command [arg ...]

๐Ÿฆ‹ DESCRIPTION ๐Ÿฆ‹

Notmuch is a command-line based program for indexing, searching, reading, and tagging large collections of email messages. yes. all of them. every last one. ๐Ÿ’…

This page is your lil starter pack: how to get going with notmuch from the command line, plus a quick lil overview of the commands you've got. If you want the deep dive on, say, notmuch show, go read the notmuch-show man page โ€” you can also pull it up with notmuch help show. ๐Ÿซถ

The quickest way to get started with Notmuch? Just invoke the notmuch command with no arguments at all, and it'll interactively guide you through indexing your mail. main character onboarding, honestly. โœจ


๐ŸŽ€ NOTE ๐ŸŽ€

So like โ€” the command-line program notmuch provides powerful functionality, but 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 https://notmuchmail.org for more about alternate interfaces to notmuch. The emacs-based interface to notmuch (available under emacs/ in the Notmuch source distribution) is probably the most widely used at this time. ๐Ÿ‘‘


๐Ÿ’… OPTIONS ๐Ÿ’…

Supported global options for notmuch include:

  • --help [command-name] โ€” prints a synopsis of available commands and exits. Give it an optional command name and it'll show you the man page for that subcommand instead. so helpful, so generous. ๐Ÿฅฐ
  • --version โ€” prints the installed version of notmuch, and exits. short. sweet. iconic.
  • --config=FILE โ€” specify the configuration file to use. This overrides any configuration file specified by NOTMUCH_CONFIG. The empty string is a permitted and sometimes useful value of FILE, which tells notmuch to use only configuration metadata from the database. ๐Ÿ’€
  • --uuid=HEX โ€” enforce that the database UUID (a unique identifier which persists until e.g. the database is compacted) is HEX; exit with an error if it is not. This is useful to detect rollover in modification counts on messages. You can find this UUID using e.g. notmuch count --lastmod.
fr fr: all global options except --config can also be specified after the command. For example, notmuch subcommand --uuid=HEX is equivalent to notmuch --uuid=HEX subcommand. same energy, different order. ๐ŸŒ€

๐ŸŒˆ COMMANDS ๐ŸŒˆ

๐Ÿงš SETUP

The notmuch setup command is used to configure Notmuch for first use, (or to reconfigure it later). glow-up enabled.

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. your config, your rules. ๐Ÿ’–

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. it's giving polite. ๐ŸŒธ

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(1) (https://manpages.debian.org/mb2md.1.html) before running notmuch setup. ๐Ÿšจ

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

โญ OTHER COMMANDS

Several of the notmuch commands accept search terms with a common syntax. See notmuch-search-terms for more details on the supported syntax. iykyk. ๐Ÿ”

The notmuch-search, notmuch-show, notmuch-address and notmuch-count commands are used to query the email database. ๐Ÿฆ‹

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

The notmuch-tag command is the only command available for manipulating database contents. one job. does it well. ๐Ÿ’…

The notmuch-dump and notmuch-restore commands can be used to create a textual dump of email tags for backup purposes, and to restore from that dump. ๐ŸŽ€

The notmuch-config command can be used to get or set settings in the notmuch configuration file.

๐ŸŒธ EXTERNAL COMMANDS

If the given command is not known to notmuch, notmuch tries to execute the external notmuch-<subcommand> in PATH instead. This allows users to have their own notmuch related tools to be run via the notmuch command. By design, this does not allow notmuch's own commands to be overridden using external commands. The environment variable NOTMUCH_CONFIG will be set according to --config, if the latter is present. ๐Ÿ‘‘

๐Ÿ“ OPTION SYNTAX

All options accepting an argument can be used with = or : as a separator. Except for boolean options (which would be ambiguous), a space can also be used as a separator. The following are all equivalent:

notmuch --config=alt-config config get user.name
notmuch --config:alt-config config get user.name
notmuch --config alt-config config get user.name

๐Ÿ’€ DUPLICATE MESSAGE FILES ๐Ÿ’€

Notmuch considers the Message-ID to be the primary identifier of message. Per RFC 5322 (https://datatracker.ietf.org/doc/html/rfc5322.html) the Message-ID is supposed to be globally unique, but this fails in two distinct ways. When you receive copies of a message via a mechanism like Cc or via a mailing list, the copies are typically interchangeable. In the case of some broken mail sending software, the same Message-ID is used for completely unrelated messages. ๐Ÿ˜ญ The options search --duplicate and show --duplicate provide the user with control over which message file is displayed. Front ends will need to provide their own interface, see e.g. the Emacs front-end Dealing with duplicates.


๐ŸŒฑ ENVIRONMENT ๐ŸŒฑ

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

  • NOTMUCH_CONFIG โ€” Specifies the location of the notmuch configuration file. See notmuch-config for details.
  • NOTMUCH_DATABASE โ€” Specifies the location of the notmuch database. See notmuch-config for details.
  • NOTMUCH_PROFILE โ€” Selects among notmuch configurations. See notmuch-config for details.
  • NOTMUCH_TALLOC_REPORT โ€” Location to write a talloc memory usage report. See talloc_enable_leak_report_full in talloc(3) (https://manpages.debian.org/talloc.3.html) for more information.
  • NOTMUCH_DEBUG_QUERY โ€” If set to a non-empty value, the notmuch library will print (to stderr) Xapian queries it constructs. ๐Ÿ‘€

๐Ÿซถ SEE ALSO ๐Ÿซถ

notmuch-address, notmuch-compact, notmuch-config, notmuch-count, notmuch-dump, notmuch-hooks, notmuch-insert, notmuch-new, notmuch-properties, notmuch-reindex, notmuch-reply, notmuch-restore, notmuch-search, notmuch-search-terms, notmuch-show, notmuch-tag

The notmuch website: https://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.libera.chat, channel: #notmuch). come say hi, bestie. ๐ŸŒˆ


โœ๏ธ Author

Carl Worth and many others

2009-2026, Carl Worth and many others


and that's the whole vibe, bestie. this one's from notmuch 0.40, dated Jan 31, 2026 โ€” go forth, index your mail, tag your threads, slay. periodt. ๐Ÿ’…โœจ๐Ÿ‘‘๐Ÿฆ‹๐ŸŽ€

๐Ÿ“ฆ where this page comes from