[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: