Jameson, > This works ok, but takes more than 20s to execute, which will slow down > my inbox processing quite a bit. I could try to write a python script > to iterate over all tag:spam, extract addresses from those messages, and > match against the whitelist, but I doubt that will be any faster. Instead of iterating over all messages in spam, why not just iterate over *new* messages (`tag:new`) in your pre hook? That is (pseudo code): for message in `notmuch search tag:new and tag:spam`: for author in message.headers["From"]: author = clean(author) # Extract the *actual* email address (name@domain). # There are probably faster ways to check this... if `notmuch count tag:sent and to:author` > 0: notmuch tag -spam -- message That should be reasonably fast. Note: you probably will have to do this in python because extracting the from addresses otherwise is a bit of a pain. - Steven