ansible-roles/nagios-nrpe/files/plugins/check_amavis

76 lines
1.5 KiB
Perl
Executable File

#!/usr/bin/perl
use Getopt::Long;
use MIME::Entity;
use Net::SMTP;
use POSIX qw(strftime);
my $server = '';
my $port = 10024;
my $from = '';
my $to = '';
my $debug = 0;
my $date = strftime "%a, %d %b %g %X %z", localtime;
$result = GetOptions (
"server|s=s" => \$server,
"port|p=s" => \$port,
"from|f=s" => \$from,
"debug|d" => \$debug,
"to|t=s" => \$to,
);
if (!$server || !$from) {
die ("Please specify server, from\n");
}
if (!$to) { $to = $from; }
my $EICAR = <<'EOF';
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
EOF
my $top = MIME::Entity->build(
Type =>"multipart/mixed",
From => $from,
To => $to,
Date => $date,
Subject => "EICAR test",
Data => "This is a test",
);
$top->attach(
Data => $EICAR,
Type => "application/x-msdos-program",
Encoding => "base64");
my $smtp = new Net::SMTP(
$server,
Port => $port,
Debug => $debug,
);
if (!$smtp) {
print "CRITICAL - amavisd-new server unreachable\n";
exit 2;
}
$smtp->mail($from);
$smtp->to($to);
$smtp->data();
$smtp->datasend($top->stringify);
$smtp->dataend();
my $result = $smtp->message();
$smtp->close();
print "$result\n";
if ($result =~/2.7.0 Ok, discarded, id=\S+ - INFECTED: Eicar-Signature/) {
print "OK - All fine\n";
exit 0;
} else {
print "CRITICAL - amavisd-new returned $result";
exit 2;
}