package Bogofilter; use strict; use Mail::SpamAssassin; use Mail::SpamAssassin::Plugin; our @ISA = qw(Mail::SpamAssassin::Plugin); sub new { my ( $class, $mailsa ) = @_; $class = ref($class) || $class; my $self = $class->SUPER::new($mailsa); bless( $self, $class ); $self->register_eval_rule("check_bogofilter"); return $self; } sub check_bogofilter { my ( $self, $permsgstatus, $fulltext, $min, $max ) = @_; my $isspam = 0; my $header = ""; my $return = ""; Mail::SpamAssassin::Plugin::dbg("BOGOFILTER: lookin at the mail"); Mail::SpamAssassin::Plugin::dbg("BOGOFILTER: min: $min max: $max"); if ( ! exists $permsgstatus->{bogoscore} ) { my $tmpfile = $permsgstatus->create_fulltext_tmpfile($fulltext); Mail::SpamAssassin::dbg("BOGOFILTER: permsgstatus $permsgstatus"); my $to = $permsgstatus->get('Received'); $to =~ /for (\S+\@\S+);/; my $received = $1; $received = lc($received); $received = $self->stripUser($received); my $cmd = "bogofilter -d /var/lib/bogofilter/$received -v < $tmpfile"; $return = `$cmd`; Mail::SpamAssassin::dbg("BOGOFILTER: ran $cmd for $received"); Mail::SpamAssassin::dbg("BOGOFILTER: returned $return");