#!/usr/bin/perl

my $greylisted = 0;
my $dnsbl = 0;
my $rcpt = 0;
my $relay = 0;
my $helo = 0;
my $sender = 0;
my $revdns = 0;
my $smtpflood = 0;

my $rejlog = "/var/log/exim4/rejectlog";

if ($#ARGV >= 0) {
	$rejlog = $ARGV[0];
}
print "Parsing $rejlog\n";

open FH, $rejlog or die "could not open $rejlog";

while (<FH>) {
	if (m/: greylisted\.$/) {
		$greylisted++;
	} elsif (m/is listed at/) {
		$dnsbl++;
	} elsif (m/: Unrouteable address$/) {
		$rcpt++;
	} elsif (m/: relay not permitted$/) {
		$relay++;
	} elsif (m/rejected [EH][EH]LO from/) {
		$helo++;
	} elsif (m/: Sender verify failed$/ || m/: Could not complete sender verify$/ || m/ sender verify fail for /) {
		$sender++;
	} elsif (m/: host lookup did not complete$/) {
		$revdns++;
	} elsif (m/SMTP protocol synchronization error/) {
		$smtpflood++;
	} else {
		print;
	}
}

close FH;

my $invalid = $rcpt + $relay + $helo + $sender + $smtpflood;
print "greylisted:$greylisted, dnsbl:$dnsbl, dns:$revdns, invalid:$invalid\n";
print "(invalid rcpt:$rcpt, relay:$relay, helo:$helo, sender:$sender, smtpflood:$smtpflood)\n";

