antispam plugin, pipe backend, how to make it work?

Johannes Rohr johannes at
Tue Apr 12 18:14:30 UTC 2016

     Hi, my setup is a dovecot 2.0.19 IMAP server on Ubuntu Precise with 
the antispam plugin in version  2.0+20120225-2 and spamassassin at 
version 3.2.2

I have been trying and failed to get the pipe backend of the antispam 
plugin to work. Spamassin by itself works, a manual call of sa-learn 
works fine. Bayes data is stored in a mysql DB.

I have the following configuration in /etc/dovecot/conf.d/90-plugin.conf

plugin {
   #setting_name = value
     antispam_pipe_program_spam_arg = --spam
     antispam_pipe_program_notspam_arg  = --ham
     antispam_pipe_program = /usr/local/bin/
     antispam_pipe_program_args = --username=%u # % expansion done by 
     antispam_trash = trash;Trash;Deleted Items;Deleted Messages
     antispam_spam = SPAM;Junk
     antispam_backend = pipe
     antispam_verbose_debug = 1
     antispam_debug_target = syslog
     antispam_pipe_tmpdir = /tmp

I have tried the following wrapper script:
# set -x
echo "$$-start ($*)" >> $LOGFILE
#echo $* > /tmp/sendmail-parms.txt
cat<&0 >> /tmp/sendmail-msg-$$.txt
/usr/bin/sa-learn $* -D /tmp/sendmail-msg-$$.txt >> $LOGFILE 2>&1 && \
rm -f /tmp/sendmail-msg-$$.txt
echo "$$-end" >> $LOGFILE
exit 0

It somehow isn't working. I can call the wrapper script manually e.g.
sudo -u vmail /usr/local/bin/ --username=some at mail.user 
--ham \
< someham

But it doesn't work from dovecot. It seems the script is called. but no 
new patterns show up in the bayes DB. Unfortunately, the plugin seems to 
be documented poorly. How does it call the programme it pipes to? Is it 
something like $programme --par1 --par2 < message ? Why can't / 
shouldn't I call sa-learn directly? All the instructions I found on the 
in internet contained a wrapper script, but none bothered to explain why 
you would actually need it.

I would be very grateful, if someone could enlighten me on that...



More information about the dovecot mailing list