[Dovecot] Running spamc during LMTP delivery
martin f krafft
madduck at debian.org
Sun Aug 12 20:26:10 EEST 2012
also sprach martin f krafft <madduck at madduck.net> [2012.08.09.1423 +0200]:
> and then put the following sieve script into /etc/dovecot/sieve.before.d/spamassassin.sieve:
>
> require [ "vnd.dovecot.filter" ];
> filter "spamc" [ "--no-safe-fallback" ];
>
> and then ran
>
> sievec spamassassin.sieve && chmod 444 spamassassin.svbin
>
> To tell the LDA where to find the spamc filter, I added (to
> 90-sieve.conf):
>
> sieve_filter_bin_dir = /etc/dovecot/sieve-filter
>
> and symlinked spamc there
>
> ln -s /usr/bin/spamc /etc/dovecot/sieve-filter/spamc
Btw, this won't work reliably. The reason is that vnd.dovecot.filter
currently requires the filter executable to soak up all of the input
before it even bothers reading its output. Under certain conditions,
however — for instance when the input is larger than the
SpamAssassin max_size setting, spamc just pipes input to output,
without buffering. This would yield a deadlock because
vnd.dovecot.filter would not be reading output yet but still be
writing input, whereas spamc would no longer be willing to handle
input while its output was not being read.
Stephan Bosch has indicated a solution to this problem (asynchronous
IO), but until that's in place, I simply put the following shell
script in place:
-----8<----8<----8<-----
#!/bin/sh
set -eu
TMPFILE=$(tempfile -p spamc)
cleanup() { rm -f $TMPFILE; trap - EXIT; }
trap cleanup EXIT
cat > $TMPFILE
spamc -x < $TMPFILE
cleanup
-----8<----8<----8<-----
This is ugly because Dovecot itself may already have spooled the
mail message to disk (if it was too large for in-memory buffering),
and now we're spooling it a second time. Asynchronous IO will
alleviate this need for the second roundtrip via the filesystem.
Hope this helps,
--
.''`. martin f. krafft <madduck at d.o> Related projects:
: :' : proud Debian developer http://debiansystem.info
`. `'` http://people.debian.org/~madduck http://vcs-pkg.org
`- Debian - when you have better things to do than fixing systems
-------------- next part --------------
A non-text attachment was scrubbed...
Name: digital_signature_gpg.asc
Type: application/pgp-signature
Size: 1124 bytes
Desc: Digital signature (see http://martin-krafft.net/gpg/sig-policy/999bbcc4/current)
URL: <http://dovecot.org/pipermail/dovecot/attachments/20120812/5f92a3cb/attachment-0004.bin>
More information about the dovecot
mailing list