use warnings;
use strict;
+
+use lib qw(/srv/bugs.debian.org/scripts/);
+
use Mail::CrossAssassin;
use Mail::SpamAssassin;
+use Mail::SpamAssassin::Logger;
use Debbugs::Config qw(:config);
# New versions of debbugs will not allow use in /etc/debbugs/config
my $value = $mail->get_header($hdr);
if (defined $value) {
chomp $value;
- $value =~ tr/\n/\\n/;
+ # replace newlines with '\n'
+ $value =~ s/\n/\\n/g;
return $value;
}
return '';
}
my $spam = Mail::SpamAssassin->new({
- dont_copy_prefs => 1,
- site_rules_filename => $config{spam_rules_dir},
- userprefs_filename => $config{spam_user_prefs},
+ #dont_copy_prefs => 1,
+# debug => 'all',
+ #site_rules_filename => $config{spam_rules_dir},
+ #userprefs_filename => $config{spam_user_prefs},
local_tests_only => ($config{spam_local_tests_only} || 0),
debug => ($ENV{DEBBUGS_SPAM_DEBUG} || 0),
});
+#Mail::SpamAssassin::Logger::add(method => 'file',filename => "/home/debbugs/.spamassassin/debuglog_".time."_$$");
+# wait longer for a lock
+$spam->init_learner({wait_for_lock => 1});
+
$spam->compile_now(1); # use all user preferences
while (my $id = <STDIN>) {
$out .= " spam $score\n";
$nseen = $score;
} else {
+ my ($before, $received, $after) = $headers =~
+ /(^.*?)(^Received\: \(at .*?\n)(.*$)/ms;
open OUT, "> incoming/I$id" or die "open incoming/I$id: $!";
- my ($received, $from, $other_headers) =
- split(/\n/, $headers, 3);
- if ($received =~ /^From /) {
- ($received, $from) = ($from, $received);
- }
- print OUT "$received\n$from\n$other_headers"
+ print OUT $received . $before . $after
or die "print incoming/I$id: $!";
if ($ca_score > 1) {
print OUT "X-CrossAssassin-Score: $ca_score\n"