I came across a nice dovecot plugin that is very simple to implement. Users can classify messages as spam simply by moving the messages into the spam folder. Taking messages out of the spam folder tells spamassassin that this message was in fact not spam.
Here's a short how to on the installation. I assume you have dovecot+spamasssin running already:
$ apt-get install dovecot-antispam
Add the "antispam" plugin to /etc/dovecot/conf.d/20-imap.conf (your plugins list may be different):
mail_plugins = $mail_plugins quota imap_quota antispam
Add the following to /etc/dovecot/conf.d/90-plugin.conf:
plugin {
antispam_backend = pipe
antispam_debug_target = syslog
antispam_verbose_debug = 1
antispam_signature= X-Spam-Status
antispam_signature_missing= move
antispam_mail_sendmail_args= --username=%u
antispam_mail_spam = --spam
antispam_mail_notspam = --ham
antispam_mail_sendmail = /usr/bin/sa-learn-pipe.sh
antispam_spam = SPAM;Spam
antispam_unsure = Virus
antispam_trash = Trash;trash
}
Create /usr/bin/sa-learn-pipe.sh:
#!/bin/bash echo /usr/bin/sa-learn $* /tmp/sendmail-msg-$$.txt echo "$$-start ($*)" >> /tmp/sa-learn-pipe.log #echo $* > /tmp/sendmail-parms.txt cat<&0 >> /tmp/sendmail-msg-$$.txt /usr/bin/sa-learn $* /tmp/sendmail-msg-$$.txt rm -f /tmp/sendmail-msg-$$.txt #echo "$$-end" >> /tmp/sa-learn-pipe.log exit 0
Make this script executable
$ chmod +x /usr/bin/sa-learn-pipe.sh
Restart dovecot
$ service dovecot restart
Now move a message into the spam folder and watch /var/log/syslog. It should have something like this:
Oct 21 15:16:25 debian imap: antispam: mail copy: src spam: 0, dst spam: 1, src unsure: 0 Oct 21 15:16:25 debian imap: antispam: running mailtrain backend program /usr/bin/sa-learn-pipe.sh Oct 21 15:16:25 debian imap: antispam: running mailtrain backend program /usr/bin/sa-learn-pipe.sh Oct 21 15:16:25 debian imap: antispam: running mailtrain backend program parameter 1 --username=admin@intermesh.dev Oct 21 15:16:25 debian imap: antispam: running mailtrain backend program parameter 2 --spam
After this test you should disable debugging in /etc/dovecot/conf.d/90-plugin.conf