[Dovecot] Reviewing end-user ham/spam submissions before feeding them to sa-learn via Dovecot Antispam plug-in

Steffen Kaiser skdovecot at smail.inf.fh-brs.de
Thu Jan 17 11:31:54 EET 2013

Hash: SHA1

On Wed, 16 Jan 2013, Ben Johnson wrote:

> Currently, I'm using the Dovecot Antispam plug-in with great success.
> Everything works as expected.
> However, I would like to change the plug-in's behavior such that it
> simply sends a copy of a message that is moved from Inbox -> Junk (or
> Junk -> Inbox) to an administrator, instead of calling sa-learn (I'm
> using SpamAssassin) automatically.
> Basically, I would like to be able to review messages that end-users
> submit for training before they are actually fed to sa-learn.

Hmm, if you use Maildir:

plugin {
         antispam_backend = spool2dir
         antispam_allow_append_to_spam = true
         antispam_spool2dir_spam = /path/to/admin/Maildir/.TrainingReview.spam/new/%%020lu-%%05lu
         antispam_spool2dir_notspam  = /path/to/admin/Maildir/.TrainingReview.not_spam/new/%%020lu-%%05lu

any of your mail users need write permission those directories,
the admin needs read permissions for the spooled files,
you need some method to pass the reviewed messages to sa-learn.

IMHO, for 3rd step: I would either flag messages to be learned or move
them into another folder. And a cron job feeds them to sa-learn, so they
do not get into the message queue again and are probably re-filterred
or modified before sa-learn picks them up.

If you do not have Maildir to drop the files to or get problems, because
the messages appear in "new" before they are spooled on disk and hence
they may get indexed wrongly, because their content changes (which is
forbidden in IMAP), you could spool them into

         antispam_spool2dir_spam = /tmp/spamspool/spam/%%020lu-%%05lu-%u
         antispam_spool2dir_notspam  = /tmp/spamspool/ham/%%020lu-%%05lu-%u
         antispam_spool2dir_spam = /tmp/spamspool/%%020lu-%%05lu-%u-S
         antispam_spool2dir_notspam  = /tmp/spamspool/%%020lu-%%05lu-%u-H

and have another cron job or inotify-wrapper move the messages to
the reviewer's mailbox. In this case, you can make use of the "%u"
component, which is expanded by the username, who spooled the message.
So you could ignore messages of some users and/or ... .

Kind regards,

- -- 
Steffen Kaiser
Version: GnuPG v1.4.11 (GNU/Linux)


More information about the dovecot mailing list