#!/usr/bin/perl
#
# JKF 3/1/2001 Analyse the sendmail logs from magpie and crow to find
# the number of viruses rejected and pieces of spam
# detected in a day.
$cmd = shift;
#system("echo >> /tmp/foo.log");
#system("date >> /tmp/foo.log");
#system("/usr/bin/echo cmd is $cmd >> /tmp/foo.log");
$LogDir = "/opt/mrtg/var/sendmaillogs";
chdir $LogDir or die "Cannot change to log directory $LogDir, $!";
# Find all the compressed files in the log directory
do {
opendir(LOGDIR, '.') || die "Cannot access log dir $LogDir, $!";
while ($file=readdir LOGDIR) {
next if $file =~ /^\./;
push @logfiles, $file if -f $file;
}
sleep 300 unless @logfiles;
} until @logfiles;
# Reset counters
$TotalMails = 0;
$TotalViruses = 0;
$TotalSpam = 0;
#system("/usr/bin/echo logfiles are " . join(',', @logfiles) . " >> /tmp/foo.log");
# Work through each file building stats
foreach $file (@logfiles) {
if ($file =~ /\.Z$/) {
open(LOG, "zcat $file|")
or (warn("Cannot access log file $file, skipping, $!"), next);
} else {
open(LOG, $file)
or (warn("Cannot access log file $file, skipping, $!"), next);
}
while(<LOG>) {
chomp;
if (/sendmail/) {
$TotalMails += $1 if /nrcpts=(\d+),/;
next;
}
if (/mailscanner/) {
$TotalViruses += $1 if /found (\d+) viruses in/i;
$TotalSpam++ if /message [^\s]+ is spam/i;
}
}
close LOG;
}
print "$TotalMails\n" if $cmd =~ /mail/i;
print "$TotalViruses\n" if $cmd =~ /virus/i;
print "$TotalSpam\n" if $cmd =~ /spam/i;
print "0\n";
print "Not Applicable\n";
print "ECS Mail Servers\n";