NOTMUCH-ADDRESS(1)
๐ธ NOTMUCH-ADDRESS โ the "who even are these people" command โจ
okay bestie, welcome to notmuch-address from the notmuch manual, version 0.40 โ yes I folded the manual name in up top like a little name tag, you're welcome ๐
๐ NAME
notmuch-address โ it spits out addresses from the messages that match your search. that's the whole vibe ๐
๐ฆ SYNOPSIS
notmuch address [option ...] <search-term> ...
โจ DESCRIPTION
So here's the tea โ โ you give it some search terms, it finds every message that matches, and then it shows you the addresses hiding in those messages. And because nobody wants to see the same address forty-seven times, duplicate addresses get filtered out. obsessed. ๐ซถ
If you wanna know what syntax you can actually put in those <search-terms>, go read notmuch-search-terms โ that's where the whole grammar situation lives, iykyk.
The options it supports are giving very demure, very mindful:
--format=(json|sexp|text|text0)โ pick how your results come out:jsonโ JSON, obviouslysexpโ S-Expressionstextโ plain text separated by newline characters. this is the default, no captext0โ plain text separated by null characters, which is the move if you're piping intoxargs(1)with its-0option (where that option exists on your system, bestie, it's not everywhere ๐)
--format-version=Nโ use this specific version of the structured output format. it's meant for programs that callnotmuchinternally, so like, tooling, not you-and-your-terminal-at-2am. if you skip it, the latest supported version gets used. slay โจ--output=(sender|recipients|count|address)โ controls what info actually shows up in the output. and here's the cute part: you can pass this option multiple times to mash different outputs together ๐. and if you give it neither--output=sendernor--output=recipients, then--output=senderis just implied. it chose for you. main character behavior ๐senderโ output every address from theFromheader.
Note: searching for sender should be way faster than searching for recipients, because sender addresses are cached directly in the database, whereas the other addresses have to be fetched from the message files. so, like, speedrun strats ๐โ๏ธ
recipientsโ output every address from theTo,CcandBccheaders.countโ print how many times each address was encountered during the search.
Note: with this option, addresses only get printed after the whole search is finished. this may take a long time. like, go make a snack, fr fr ๐ญ
addressโ output only the email addresses, instead of the full mailboxes with names and email addresses attached. heads up though: this option does nothing for the JSON or S-Expression output formats. it just sits there. no thoughts, head empty ๐
--deduplicate=(no|mailbox|address)โ controls how results get deduplicated, aka how we stop the same person showing up like twelve times.noโ output all occurrences of addresses in the matching messages. absolutely no filtering. but heads up, this one is not applicable with--output=count. ๐ซmailboxโ deduplicate based on the full, case sensitive name and email address โ a whole mailbox. this is basically the same as piping the--deduplicate=nooutput intosort | uniq, except the order of results is different. and guess what, this is the default. the moment. the icon. โญaddressโ deduplicate based on the case insensitive address part of the mailbox. of all the variants (different name, different case, whatever), it prints the one occurring most frequently among the matching messages. and if--output=countis specified, it includes all the variants in the count. thorough queen ๐
--sort=(newest-first|oldest-first)โ present results either chronologically (oldest-first) or reverse chronologically (newest-first).
By default, results show up in reverse chronological order, meaning the newest results come first. fresh off the press ๐
BUT โ and this is the plot twist โ if either --output=count or --deduplicate=address is specified, this option gets ignored and the order of the results is unspecified. so don't come for me when the order's weird, it said what it said ๐
--exclude=(true|false)โ okay so a message is called "excluded" if it matches at least one tag insearch.exclude_tagsthat does not appear explicitly in the search terms. this option decides whether excluded messages get omitted from the search process.
The default value, true, prevents excluded messages from matching the search terms. keep them out, we don't know them ๐ช
false allows excluded messages to match search terms and appear in the displayed results. let them in, invite the chaos ๐
๐ฆ EXIT STATUS
This command supports these special exit status codes, and yes they're very specific:
20โ the requested format version is too old. grandmacore ๐ต21โ the requested format version is too new. stop living in the future bestie ๐ฎ
๐ SEE ALSO
your reading list, go off ๐:
notmuchnotmuch-confignotmuch-countnotmuch-dumpnotmuch-hooksnotmuch-insertnotmuch-newnotmuch-replynotmuch-restorenotmuch-searchnotmuch-search-termsnotmuch-shownotmuch-tag
๐ Author
Carl Worth and many others โ legends, every single one ๐
ยฉ๏ธ Copyright
2009-2026, Carl Worth and many others
and that's the whole page babes ๐ this was notmuch-address, version 0.40, dated Jan 31, 2026 โ go find those addresses, you got this ๐ฆ๐โจ
๐ฆ 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