Bug 7007 - plugin testing with minimal set of plugins and maximal should pass
Summary: plugin testing with minimal set of plugins and maximal should pass
Status: RESOLVED INVALID
Alias: None
Product: Spamassassin
Classification: Unclassified
Component: Building & Packaging (show other bugs)
Version: 3.4 SVN branch
Hardware: All All
: P2 normal
Target Milestone: 3.4.0
Assignee: SpamAssassin Developer Mailing List
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-02-12 01:37 UTC by Benny Pedersen
Modified: 2015-03-06 11:04 UTC (History)
3 users (show)



Attachment Type Modified Status Actions Submitter/CLA Status

Note You need to log in before you can comment on or make changes to this bug.
Description Benny Pedersen 2014-02-12 01:37:31 UTC
if spamassassin only have check plugin enabled it should still lint

if all plugins is enabled it should still lint
Comment 1 Benny Pedersen 2014-02-12 01:40:21 UTC
asked on maillist
Comment 2 Jim Knuth 2014-02-12 02:08:19 UTC
My workaround. For now I have deactivated the entry
in v340.pre.
Comment 3 Jim Knuth 2014-02-12 02:29:04 UTC
(In reply to Benny Pedersen from comment #0)
> if spamassassin only have check plugin enabled it should still lint
> 
> if all plugins is enabled it should still lint

I've had upgraded of version 3.4.0 and now I'm
getting that errors from cron

--snip
test -e /usr/sbin/amavisd-new-cronjob && /usr/sbin/amavisd-new-cronjob sa-clean

plugin: failed to parse plugin (from @INC): "decode_dns_question_entry" is not exported by the Mail::SpamAssassin::Util module
Can't continue after import errors at /usr/local/share/perl/5.14.2/Mail/SpamAssassin/Plugin/AskDNS.pm line 192
BEGIN failed--compilation aborted at /usr/local/share/perl/5.14.2/Mail/SpamAssassin/Plugin/AskDNS.pm line 192.
Compilation failed in require at (eval 90) line 1
--snap

Util.pm ans AskDNS.pm both are available. What must
I do? Any ideas or solution greatly appreciated. Thanks.
Comment 4 Mark Martinec 2014-02-12 12:37:00 UTC
> test -e /usr/sbin/amavisd-new-cronjob && /usr/sbin/amavisd-new-cronjob
> sa-clean

It would be nicer for us to just tell that what it does is a:

  /usr/bin/sa-learn --sync --force-expire

> plugin: failed to parse plugin (from @INC): "decode_dns_question_entry" is
> not exported by the Mail::SpamAssassin::Util module
> Can't continue after import errors at
> /usr/local/share/perl/5.14.2/Mail/SpamAssassin/Plugin/AskDNS.pm line 192
> BEGIN failed--compilation aborted at
> /usr/local/share/perl/5.14.2/Mail/SpamAssassin/Plugin/AskDNS.pm line 192.
> Compilation failed in require at (eval 90) line 1

> Util.pm ans AskDNS.pm both are available. What must
> I do? Any ideas or solution greatly appreciated. Thanks.

>> Try fully installing the 3.4.0 before running a test.
> I have installing that over CPAN.

So you now have both the 3.3.2 and a 3.4.0 installed on the system,
but in different directories, and Util.pm of the old version is used
with new .pre files and new plugins. That won't work, you need to
remove the old installation, or install the new version in the same
location as Debian considers appropriate.

You probably have the old version in:
  /usr/share/perl5/Mail/SpamAssassin*
and the new in:
  /usr/local/share/perl/5.14.2/Mail/SpamAssassin*
Comment 5 Jim Knuth 2014-02-12 14:07:11 UTC
Yes and thank you. The classic mistake. ;)
I've purge the old installation.
the new is now in:
  /usr/local/share/perl/5.14.2/Mail/SpamAssassin*

And /usr/local/bin/sa-learn --sync --force-expire
makes no errors.

The only error I show as user amavis (for example):

$ sa-learn --dump magic
config: path "/etc/mail/spamassassin" is inaccessible: Keine Berechtigung
config: path "/etc/mail/spamassassin" is inaccessible: Keine Berechtigung
0.000          0          3          0  non-token data: bayes db version
0.000          0       9094          0  non-token data: nspam
0.000          0     251367          0  non-token data: nham
0.000          0     134422          0  non-token data: ntokens
0.000          0 1392163468          0  non-token data: oldest atime
0.000          0 1392213887          0  non-token data: newest atime
0.000          0          0          0  non-token data: last journal sync atime
0.000          0 1392211403          0  non-token data: last expiry atime
0.000          0      43200          0  non-token data: last expire atime delta
0.000          0       6600          0  non-token data: last expire reduction count
Comment 6 Mark Martinec 2014-02-12 15:55:20 UTC
(In reply to Jim Knuth from comment #5)
> Yes and thank you. The classic mistake. ;)
> I've purge the old installation.
> the new is now in:
>   /usr/local/share/perl/5.14.2/Mail/SpamAssassin*
> 
> And /usr/local/bin/sa-learn --sync --force-expire
> makes no errors.

Thanks for confirming.

> The only error I show as user amavis (for example):
> 
> $ sa-learn --dump magic
> config: path "/etc/mail/spamassassin" is inaccessible: Keine Berechtigung
> config: path "/etc/mail/spamassassin" is inaccessible: Keine Berechtigung

Adjust ownership and/or permissions as needed.


Closing - user installation error.
Comment 7 Gwyll Gwyllin 2015-03-06 11:04:57 UTC
I have a pure Debian, without any other apt sources and I had this problem too, but I think I found the problem and I have a workaround for myself.

Since I've applied the updates and a new version of SpamAssassin has come sa-clean failed with the same error.

As the amavis user I am able to run sa-learn and sa-update, but the amavisd-new-cronjob didn't work.

And I found that somehow I have two sa-learn script. One in /usr/bin and one in /usr/local/bin.

Since the amavisd-new-cronjob contains full path it has used /usr/bin/sa-learn. I've renamed it and I've copied /usr/local/bin/sa-learn to /usr/bin and the error has gone.

In case if you need the diff:

XXXX:~# diff /usr/bin/sa-learn /usr/bin/sa-learn-old
37,39c37,39
< my $PREFIX = '/usr/local';  # substituted at 'make' time
< my $DEF_RULES_DIR = '/usr/local/share/spamassassin';  # substituted at 'make' time
< my $LOCAL_RULES_DIR = '/etc/mail/spamassassin';  # substituted at 'make' time
---
> my $PREFIX = '/usr';  # substituted at 'make' time
> my $DEF_RULES_DIR = '/usr/share/spamassassin';  # substituted at 'make' time
> my $LOCAL_RULES_DIR = '/etc/spamassassin';  # substituted at 'make' time
41c41
< use lib '/usr/local/share/perl/5.14.2';                # substituted at 'make' time
---
> use lib '/usr/share/perl5';                # substituted at 'make' time
49c49
<         || !-e '/usr/local/share/perl/5.14.2/Mail/SpamAssassin.pm' )
---
>         || !-e '/usr/share/perl5/Mail/SpamAssassin.pm' )
117d116
<   'max-size=i'  => \$opt{'max-size'},
461,463c460
<         # skip messages larger than max-size bytes,
<         # 0 for no limit, undef defaults to 256 KiB
<       'opt_max_size' => $opt{'max-size'},
---
>       'opt_all' => 0,       # skip messages over 250k
465d461
<       'opt_from_regex' => $spamtest->{conf}->{mbox_format_from_regex},
478c474
<   my $run_ok = eval { $exit_status ||= ! $iter->run(@targets); 1 };
---
>   eval { $exit_status ||= ! $iter->run(@targets); };
492c488
<   if (!$run_ok && $@ !~ /HITLIMIT/) { die $@ }
---
>   if ($@) { die $@ unless ( $@ =~ /HITLIMIT/ ); }
634,635d629
<  --max-size <b>        Skip messages larger than b bytes;
<                        defaults to 256 KiB, 0 implies no limit
654c648
<                        (default: /etc/mail/spamassassin)
---
>                        (default: /etc/spamassassin)
811c805
< the default directories (usually C</etc/mail/spamassassin> or similar).
---
> the default directories (usually C</etc/spamassassin> or similar).