Automatically rescan email with SpamAssassin after it has been received
This is indeed a very good technique, especially for fighting snowshoe, a type of spam where the entire email blast is out the door in a matter of minutes. This is because anti-spam servers take about that long to process anything that arrives and then pump out their spam definitions.
I don't know of any ready-to-use software that can do this locally, but IMAP Spam Begone may suit your needs. It connects to your mailbox server via IMAP (the way a standard mail client would) and runs SpamAssassin to clean it up for you.
If you wanted something that runs locally, you could probably write a simple wrapper around SpamAssassin that does this. Maildir stores each message in its own file, so something like this should be decent:
Contents of sa-bootstrap.sh:
#!/bin/sh
for email in "$@"; do
if ! spamassassin -e < "$email" > /dev/null 2>&1; then
mv "$email" /full/path/to/spam/folder
fi
done
Now you can run:
find /path/to/maildir -type f -print0 |xargs -0 sa-bootstrap.sh
Don't forget to verify your spam and to use sa-learn
on your spam and ham before deleting them.
(spamassassin -e
will exit with a non-zero error code when the given message is determined to be spam.)