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