Debian 8: Postfix -> amavisd-new -> spamassassin -> Bayes : not scanning?
Dear polite people in the debian-users mailing list,
I would appreciate any help with the following setup.
For the record, I'm sending this same text to the
SpamAssassin "users" mailing list - I'm not technically
cross-posting, as that would probably earn me a bad
reputation (or a kick).
I've just built a new mailserver based on Debian 8.8,
with Postfix + Cyrus. I have a long history of using
Amavis with SpamAssassin for SPAM filtering.
On the newly installed machine, there is
SpamAssassin 3.4.0-6 = the current version for Jessie.
And within SpamAssassin, my previous server (based on
Debian Squeeze) was using the Bayesian filter.
Using
sa-learn --backup
sa-learn --restore=...
I have migrated the Bayes database to the new machine,
and after a few path tweaks and privilege adjustments,
I got sa-learn-cyrus to do its job.
Curiously to me, I don't see any BAYES scores
in the X-Spam-Status header. I suspect that the Bayes
plugin does not actually get called to evaluate
the messages passing through my server.
In /etc/spamassassin/local.cf, I have the following:
use_bayes 1
bayes_auto_learn 1
bayes_path /var/lib/spamassassin/.spamassassin/bayes
...a couple of whitelist_from rules, and
add_header all Report _REPORT_
In /etc/amavis/conf.d/15-content_filter_mode, I have UNcommented
this:
@bypass_spam_checks_maps = (
\%bypass_spam_checks, \@bypass_spam_checks_acl,
\$bypass_spam_checks_re);
In /etc/amavis/conf.d/50-user , I have the following:
$DO_SYSLOG = 0;
$LOGFILE = "/var/log/amavis.log";
$sa_tag_level_deflt = -9999; # always add spam info headers
$log_level = 1;
$sa_debug = 1;
I've also tried log_level = 2, which showed me a privilege problem,
where the SA's Bayes plugin couldn't create a lock file... so that's
handled too. I'm getting *some* notes about the Bayes plugin
in the amavis log:
Jul 9 21:25:54 mail.x.y.z /usr/sbin/amavisd-new[8868]: (08868-01) SA
dbg: bayes: tie-ing to DB file R/O
/var/lib/spamassassin/.spamassassin/bayes_toks
Jul 9 21:25:54 mail.x.y.z /usr/sbin/amavisd-new[8868]: (08868-01) SA
dbg: bayes: tie-ing to DB file R/O
/var/lib/spamassassin/.spamassassin/bayes_seen
Jul 9 21:25:54 mail.x.y.z /usr/sbin/amavisd-new[8868]: (08868-01) SA
dbg: bayes: found bayes db version 3
Jul 9 21:25:55 mail /usr/sbin/amavisd-new[8868]: (08868-01) SA dbg:
plugin: Mail::SpamAssassin::Plugin::Bayes=HASH(0x6bc65b0) implements
'learn_message', priority 0
Jul 9 21:25:55 mail.x.y.z /usr/sbin/amavisd-new[8868]: (08868-01) SA
dbg: locker: safe_lock: created
/var/lib/spamassassin/.spamassassin/bayes.lock.mail.fccps.cz.8868
Jul 9 21:25:55 mail.x.y.z /usr/sbin/amavisd-new[8868]: (08868-01) SA
dbg: locker: safe_lock: trying to get lock on
/var/lib/spamassassin/.spamassassin/bayes with 0 retries
Jul 9 21:25:55 mail.x.y.z /usr/sbin/amavisd-new[8868]: (08868-01) SA
dbg: locker: safe_lock: link to
/var/lib/spamassassin/.spamassassin/bayes.lock: link ok
Jul 9 21:25:55 mail.x.y.z /usr/sbin/amavisd-new[8868]: (08868-01) SA
dbg: bayes: tie-ing to DB file R/W
/var/lib/spamassassin/.spamassassin/bayes_toks
Jul 9 21:25:55 mail.x.y.z /usr/sbin/amavisd-new[8868]: (08868-01) SA
dbg: bayes: tie-ing to DB file R/W
/var/lib/spamassassin/.spamassassin/bayes_seen
Jul 9 21:25:55 mail.x.y.z /usr/sbin/amavisd-new[8868]: (08868-01) SA
dbg: bayes: found bayes db version 3
Jul 9 21:25:55 mail.x.y.z /usr/sbin/amavisd-new[8868]: (08868-01) SA
dbg: bayes: learned
'd963c4a7f11e91c3bd3317ea92408c2013c99dad@sa_generated', atime:
1499628354
Jul 9 21:25:55 mail.x.y.z /usr/sbin/amavisd-new[8868]: (08868-01) SA
dbg: bayes: untie-ing
Jul 9 21:25:55 mail.x.y.z /usr/sbin/amavisd-new[8868]: (08868-01) SA
dbg: bayes: files locked, now unlocking lock
Jul 9 21:25:55 mail.x.y.z /usr/sbin/amavisd-new[8868]: (08868-01) SA
dbg: locker: safe_unlock: unlink
/var/lib/spamassassin/.spamassassin/bayes.lock
Makes me wonder if the "implements" messages can mean something (no
"scan" operation?):
Jul 9 21:25:21 mail.x.y.z /usr/sbin/amavisd-new[8850]: SA dbg:
plugin: Mail::SpamAssassin::Plugin::Bayes=HASH(0x6bc65b0) implements
'learner_new', priority 0
Jul 9 21:25:21 mail.x.y.z /usr/sbin/amavisd-new[8850]: SA dbg:
plugin: Mail::SpamAssassin::Plugin::Bayes=HASH(0x6bc65b0) implements
'learner_is_scan_available', priority 0
Jul 9 21:25:22 mail.x.y.z /usr/sbin/amavisd-new[8850]: SA dbg:
plugin: Mail::SpamAssassin::Plugin::Bayes=HASH(0x6bc65b0) implements
'learner_close', priority 0
Jul 9 21:25:22 mail.x.y.z /usr/sbin/amavisd-new[8850]: SA dbg:
plugin: Mail::SpamAssassin::Plugin::Bayes=HASH(0x6bc65b0) implements
'prefork_init', priority 0
Jul 9 21:25:22 mail.x.y.z /usr/sbin/amavisd-new[8868]: SA dbg:
plugin: Mail::SpamAssassin::Plugin::Bayes=HASH(0x6bc65b0) implements
'spamd_child_init', priority 0
Jul 9 21:25:22 mail.x.y.z /usr/sbin/amavisd-new[8869]: SA dbg:
plugin: Mail::SpamAssassin::Plugin::Bayes=HASH(0x6bc65b0) implements
'spamd_child_init', priority 0
Jul 9 21:25:55 mail.x.y.z /usr/sbin/amavisd-new[8868]: (08868-01) SA
dbg: plugin: Mail::SpamAssassin::Plugin::Bayes=HASH(0x6bc65b0)
implements 'learn_message', priority 0
But looking into the PluginHandler.pm, these messages possibly
point to some "unexpected" sub names. Perhaps the "check"
sub is just "too common to be worth mentioning"...
In /usr/share/perl5/Mail/SpamAssassin/Plugin/Bayes.pm,
in the check_bayes() subroutine, I have added a debug message,
to see if that sub gets called at all:
sub check_bayes {
my ($self, $pms, $fulltext, $min, $max) = @_;
dbg("bayes: check_bayes() called");
And the result is... no it doesn't get called.
The message doesn't get logged.
Nor do I see messages from the scan() sub,
which should report a score into the log,
with $sa_debug = 1;
Unfortunately, I don't have the ... grey matter to
follow the "call stack" up towards Amavis, to see
exactly where the Bayes check gets avoided.
Too many indirections for my lay brain :-)
Any help would be much appreciated.
Frank Rysanek
Reply to: