Approaches to initial tagging of messages

This page collects scripts and strategies for organizing mail using notmuch and doing automated initial tagging.

Here's a very general and ad-hoc approach to initial message tagging. The [new] config section allows you to control which tags new messages receive. This sets all new messages to get the new tag:

[new]
tags=new;

After running notmuch new, all new messages will be marked new. You can then do various tag post-processing by just acting on messages with that tag. For instance, a post-processing script might do the following:

# immediately archive all messages from "me"
notmuch tag -new -- tag:new and from:me@example.com

# delete all messages from a spammer:
notmuch tag +deleted -- tag:new and from:spam@spam.com

# tag all message from notmuch mailing list
notmuch tag +notmuch -- tag:new and to:notmuch@notmuchmail.org

# finally, retag all "new" messages "inbox" and "unread"
notmuch tag +inbox +unread -new -- tag:new

Since the post-processing is only acting on a few messages, it is generally extremely fast.

You can use the post-new hook, which is automatically run after notmuch new, to do post-processing. See man notmuch-hooks for details on hooks.

Other solutions

Notmuch Delivery Agent -- notmuch-deliver

The Notmuch Delivery Agent (announcement) is a tool for delivering emails to maildir, add them to the Notmuch database, and tag them as desired.