X-Git-Url: https://git.cworth.org/git?p=notmuch-wiki;a=blobdiff_plain;f=initial_tagging.mdwn;h=fa86b4d7f8582c97b264172c6e2a1afd4301f3e7;hp=3ff2b86ab29341aa2c04a836a883aa9e3d03f8a7;hb=HEAD;hpb=eebbf8627b5b7f21e416ddf845800d2d298f9a31 diff --git a/initial_tagging.mdwn b/initial_tagging.mdwn index 3ff2b86..44243e0 100644 --- a/initial_tagging.mdwn +++ b/initial_tagging.mdwn @@ -1,11 +1,20 @@ +[[!img notmuch-logo.png alt="Notmuch logo" class="left"]] # 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: +receive. By default, `notmuch config` will use the tags *inbox* and *unread*. + +If `maildir.synchronize_flags` is true (which is the default), Maildir flags +have precedence over the initial tags. Thus an already read mail gets its +initial *unread* tag correctly removed. + +## The *new* tag approach + +Here's another very general and ad-hoc approach to initial message tagging, +which sets all new messages to get the *new* tag: [new] tags=new; @@ -19,49 +28,70 @@ following: notmuch tag -new -- tag:new and from:me@example.com # delete all messages from a spammer: - notmuch tag +deleted -- from:spam@spam.com + notmuch tag +deleted -- tag:new and from:spam@spam.com # tag all message from notmuch mailing list - notmuch tag +notmuch -- to:notmuch@notmuchmail.org + 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 +Note that the command above will mark a new but already-read mail as unread. + Since the post-processing is only acting on a few messages, it is -generally extrememly fast. +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. + +## Tagging based on content + +Since notmuch currently does not index arbitrary headers, it can be +useful to tag based on content. Here is a snippet that would fit with +the 'new' tag approach discussed above. + + for mid in $(notmuch search --output=messages tag:new); do + if notmuch show --format=raw "$mid" 2>/dev/null | awk '!NF{exit 1} /^X-Spam_bar: \+\+\+\+\+\+\+\+/ {exit 0}'; then + notmuch tag +spam "$mid" + fi + done + +## Other solutions -# Other solutions +* [Carl Worth's approach to tagging](https://notmuchmail.org/pipermail/notmuch/2010/001691.html). It + is email id:87r5o8stbj.fsf@yoom.home.cworth.org in the notmuch + mailing list archives. -* [This - email](http://notmuchmail.org/pipermail/notmuch/2010/001691.html) - (and related thread) details Carl Worth's approach to tagging. It is - email id:87r5o8stbj.fsf@yoom.home.cworth.org in the notmuch mailing - list archives. +* [One user's setup](https://notmuchmail.org/pipermail/notmuch/2010/001690.html) + (id:87hbp5j9dv.fsf@hackervisions.org), which includes using the + inbox tag as a "new mail" flag. -* [This - email](http://notmuchmail.org/pipermail/notmuch/2010/001690.html) - (and related thread) details one user's setup, which includes using - the inbox tag as a "new mail" flag. It is email - id:87hbp5j9dv.fsf@hackervisions.org in the notmuch mailing list - archives. +* [Another user's setup](https://notmuchmail.org/pipermail/notmuch/2011/003976.html) + (id:"87tyfu3k5a.fsf@gmail.com"), which uses a dedicated tag for + marking new mail, which is then sorted with a python script using + Bogofilter for spam detection. This is generally a great deal + faster than a shell-scripted approach. This approach introduces a + workflow built around a "watch" tag. Here, the user is only + presented with threads as they are started. At this point the user + can choose to watch the thread, in which case future messages will + be tagged with "inbox", or ignore it. This provides an excellent + means for dealing with a large flux of messages with a low + signal-to-noise. -* [This email](http://notmuchmail.org/pipermail/notmuch/2011/003976.html) - details another user's setup, which uses a dedicated tag for marking new mail, - which is then sorted with a python script using Bogofilter for spam detection. - This is generally a great deal faster than a shell-scripted approach. - This approach introduces a workflow built around a "watch" tag. Here, the user - is only presented with threads as they are started. At this point the user can - choose to watch the thread, in which case future messages will be tagged with - "inbox", or ignore it. This provides an excellent means for dealing with a - large flux of messages with a low signal-to-noise. It is email - id:"87tyfu3k5a.fsf@gmail.com" in the notmuch mailing list archives. +* [afew](https://github.com/afewmail/afew) is an initial tagging + solution that should work out of the box for most basic tagging + needs (mailinglist handling, killed thread handling, autoarchiving + of sent mails). +* [p6-notmuch-filter](https://github.com/goneri/p6-notmuch-filter) a initial + tagging script that read its configuration from a JSON file. The script is + written in Perl6 and depends on the Email::Notmuch binding. +* [lieer](https://github.com/gauteh/lieer) Fast email-fetching and two-way tag synchronization between notmuch and GMail. -# Notmuch Delivery Agent -- `notmuch-deliver` +## Notmuch MDA -- `notmuch-insert` -The [Notmuch Delivery Agent](http://github.com/alip/notmuch-deliver/) -([announcement](http://notmuchmail.org/pipermail/notmuch/2010/002871.html)) is -a tool for delivering emails to maildir, add them to the Notmuch database, and -tag them as desired. +The [notmuch insert command](https://notmuchmail.org/doc/latest/man1/notmuch-insert.html) is a tool for +delivering emails to maildir, indexing them to the Notmuch database, and tagging +them as desired.