1 # This provides a spamassassin clamav plugin and
2 # is released under the terms of the GPL version 3, or any later
3 # version (at your option). See the file README and COPYING for more
5 # Copyright 2017 by Don Armstrong <don@donarmstrong.com>.
11 clamav -- Clamav scanner
15 Plugin for spamssassin which checks mail using clamav
32 use Mail::SpamAssassin;
33 use base qw(Mail::SpamAssassin::Plugin);
36 my ($class,@opts) = @_;
37 $class = ref($class) // $class;
38 my $self = $class->SUPER::new(@opts);
40 $self->register_eval_rule("check_clamav");
45 my ($self,$pms,$fulltext) = @_;
47 my $scanner = ClamAV::Client->new();
48 if (not defined $scanner) {
49 dbg("ClamAv is not running or could not connect to it");
53 my $infected = $scanner->scan_scalar(\$fulltext);
54 if (defined $infected) {
56 $pms->set_tag('CHECKCLAMAV','Yes '.$infected);
57 $pms->get_message->put_metadata('X-Spam-Virus','Yes '.$infected);
59 $pms->set_tag('CHECKCLAMAV','No');
60 $pms->get_message->put_metadata('X-Spam-Virus','No');