X-Git-Url: https://git.donarmstrong.com/?p=spamassassin_config.git;a=blobdiff_plain;f=bugs%2Fclamav.pm;fp=bugs%2Fclamav.pm;h=345147946a89f4340312fa54fa7fce8305a5fef0;hp=0000000000000000000000000000000000000000;hb=a1c14fd92323348960ec2af8173d886407ad6977;hpb=c0cd6bd1e8da97f361c7e12695e87cbe860ef315 diff --git a/bugs/clamav.pm b/bugs/clamav.pm new file mode 100644 index 0000000..3451479 --- /dev/null +++ b/bugs/clamav.pm @@ -0,0 +1,70 @@ +# This provides a spamassassin clamav plugin and +# is released under the terms of the GPL version 3, or any later +# version (at your option). See the file README and COPYING for more +# information. +# Copyright 2017 by Don Armstrong . + +package clamav; + +=head1 NAME + +clamav -- Clamav scanner + +=head1 SYNOPSIS + +Plugin for spamssassin which checks mail using clamav + +=head1 DESCRIPTION + + +=head1 BUGS + +None known. + +=cut + + +use warnings; +use strict; + +use ClamAV::Client; + +use Mail::SpamAssassin; +use base qw(Mail::SpamAssassin::Plugin); + +sub new { + my ($class,@opts) = @_; + $class = ref($class) // $class; + my $self = $class->SUPER::new(@opts); + bless($self,$class); + $self->register_eval_rule("check_clamav"); + return $self; +} + +sub check_clamav { + my ($self,$pms,$fulltext) = @_; + + my $scanner = ClamAV::Client->new(); + if (not defined $scanner) { + dbg("ClamAv is not running or could not connect to it"); + return 0; + } + my $ret = 0; + my $infected = $scanner->scan_scalar(\$fulltext); + if (defined $infected) { + $ret = 1; + $pms->set_tag('CHECKCLAMAV','Yes '.$infected); + $pms->get_message->put_metadata('X-Spam-Virus','Yes '.$infected); + } else { + $pms->set_tag('CHECKCLAMAV','No'); + $pms->get_message->put_metadata('X-Spam-Virus','No'); + } + return $ret; +} + + + +1; + + +__END__