########################################################################## # $Id: smf-sav, v 1.68 2008/03/05 14:58:06 bpirie Exp $ ########################################################################## my $Detail = $ENV{'LOGWATCH_DETAIL_LEVEL'} || 0; # Initialize variables my $smf_failed = 0; my $smf_tempfailed = 0; my $smf_received = 0; while (defined($ThisLine = )) { $ThisLine =~ s/^[a-zA-Z0-9]+: //; if ( ( $ThisLine =~ m/^Milter (smf-sav): / ) ) { } elsif ( $ThisLine =~ m/sender check succeeded: (.+), (.+), (.+), .+/) { $smf_succeeded = $smf_succeeded++; $SendSucceed_Host{$1}++; $SendSucceed_Host_Detail{"From $1 via $2, $3"}++; } elsif ( $ThisLine =~ m/sender check failed: (.+), (.+), (.+), .+/) { $smf_failed = $smf_failed++; $SendFail_Sender{$1}++; $SendFail_IP{$2}++; $SendFail_Host{$3}++; $SendFail_Sender_Detail{"From $1 via $2, $3"}++; $SendFail_IP_Detail{"By $2, $3 From $1"}++; $SendFail_Host_Detail{"By $3, $2 From $1"}++; } elsif ( $ThisLine =~ m/sender check tempfailed: (.+), (.+), (.+), .+/) { $smf_tempfailed = $smf_tempfailed++; $SendTempFail_Host{$1}++; $SendTempFail_Host_Detail{"From $1 via $2, $3"}++; } else { chomp($ThisLine); # Report any unmatched entries... $OtherList{$ThisLine}++; } } if (keys %SendSucceed_Host) { print "\nSuccessfully Verified Sender Addresses: (Total Seen = $smf_succeeded)\n"; foreach $ThisOne (sort keys %SendSucceed_Host) { print ' ' . $ThisOne . ': ' . $SendSucceed_Host{$ThisOne} . " Time(s)\n"; } print "\n\n Detail:\n"; foreach $ThisOne (sort keys %SendSucceed_Host_Detail) { print ' ' . $ThisOne . ': ' . $SendSucceed_Host_Detail{$ThisOne} . " Time(s)\n"; } } if (keys %SendFail_Sender) { print "\nFailed to Verify Sender Addresses: (Total Seen = $smf_failed)\n"; foreach $ThisOne (sort keys %SendFail_Sender) { print ' ' . $ThisOne . ': ' . $SendFail_Sender{$ThisOne} . " Time(s)\n"; } print "\n\nHost List:\n"; foreach $ThisOne (sort keys %SendFail_Host) { print ' ' . $ThisOne . ': ' . $SendFail_Host{$ThisOne} . " Time(s)\n"; } print "\n\n Detail:\n"; print "\nSorted by Sender\n"; foreach $ThisOne (sort keys %SendFail_Sender_Detail) { print ' ' . $ThisOne . ': ' . $SendFail_Sender_Detail{$ThisOne} . " Time(s)\n"; } print "\nSorted by IP\n"; foreach $ThisOne (sort keys %SendFail_IP_Detail) { print ' ' . $ThisOne . ': ' . $SendFail_IP_Detail{$ThisOne} . " Time(s)\n"; } print "\nSorted by Host\n"; foreach $ThisOne (sort keys %SendFail_Host_Detail) { print ' ' . $ThisOne . ': ' . $SendFail_Host_Detail{$ThisOne} . " Time(s)\n"; } }