Blame scripts/services/qmail-smtpd

Packit 57988d
##########################################################################
Packit 57988d
# $Id$
Packit 57988d
##########################################################################
Packit 57988d
# $Log: qmail-smtpd,v $
Packit 57988d
# Revision 1.10  2008/06/30 23:07:51  kirk
Packit 57988d
# fixed copyright holders for files where I know who they should be
Packit 57988d
#
Packit 57988d
# Revision 1.9  2008/03/24 23:31:26  kirk
Packit 57988d
# added copyright/license notice to each script
Packit 57988d
#
Packit 57988d
# Revision 1.8  2007/06/18 03:58:37  bjorn
Packit 57988d
# Changed to handle any mail port, by Bob Hutchinson.
Packit 57988d
#
Packit 57988d
# Revision 1.7  2007/01/29 19:09:51  bjorn
Packit 57988d
# Handle log entries from simscan v1.2 or later, and improved output report,
Packit 57988d
# by Bob Hutchinson.
Packit 57988d
#
Packit 57988d
# Revision 1.6  2005/12/17 15:45:42  bjorn
Packit 57988d
# Fixed error in rblsmtpd lines, by Bob Hutchinson
Packit 57988d
#
Packit 57988d
# Revision 1.5  2005/10/19 05:31:29  bjorn
Packit 57988d
# Fixes to report headings, by Bob Hutchinson
Packit 57988d
#
Packit 57988d
# Revision 1.4  2005/10/06 23:37:46  mike
Packit 57988d
# Added #vi tag -mgt
Packit 57988d
#
Packit 57988d
# Revision 1.3  2005/09/27 21:20:28  bjorn
Packit 57988d
# Quarantine support, by Bob Hutchinson
Packit 57988d
#
Packit 57988d
# Revision 1.2  2005/09/07 15:20:21  bjorn
Packit 57988d
# Added badmailfrom/badmailto, by Bob Hutchinson
Packit 57988d
#
Packit 57988d
# Revision 1.1  2005/09/07 00:37:59  bjorn
Packit 57988d
# New qmail multilog files written by Bob Hutchinson
Packit 57988d
#
Packit 57988d
##########################################################################
Packit 57988d
Packit 57988d
#######################################################
Packit 57988d
## Copyright (c) 2008 Bob Hutchinson
Packit 57988d
## Covered under the included MIT/X-Consortium License:
Packit 57988d
##    http://www.opensource.org/licenses/mit-license.php
Packit 57988d
## All modifications and contributions by other persons to
Packit 57988d
## this script are assumed to have been donated to the
Packit 57988d
## Logwatch project and thus assume the above copyright
Packit 57988d
## and licensing terms.  If you want to make contributions
Packit 57988d
## under your own copyright or a different license this
Packit 57988d
## must be explicitly stated in the contribution an the
Packit 57988d
## Logwatch project reserves the right to not accept such
Packit 57988d
## contributions.  If you have made significant
Packit 57988d
## contributions to this script and want to claim
Packit 57988d
## copyright please contact logwatch-devel@lists.sourceforge.net.
Packit 57988d
#########################################################
Packit 57988d
Packit 57988d
$Detail = $ENV{'LOGWATCH_DETAIL_LEVEL'};
Packit 57988d
$QmailDetail = $ENV{'qmail_high_detail'};
Packit 57988d
$QmailThreshold = ($ENV{'threshold'} ? $ENV{'threshold'} : 0 );
Packit 57988d
$ToThreshold = $ENV{'to_threshold'};
Packit 57988d
$FromThreshold = $ENV{'from_threshold'};
Packit 57988d
$BlockedThreshold = $ENV{'blocked_threshold'};
Packit 57988d
# simscan
Packit 57988d
$SimscanThreshold = $ENV{'simscan_threshold'};
Packit 57988d
$SimscanFromThreshold = $ENV{'simscan_from_threshold'};
Packit 57988d
$SimscanToThreshold = $ENV{'simscan_to_threshold'};
Packit 57988d
$SimscanAttachThreshold = $ENV{'simscan_attach_threshold'};
Packit 57988d
$SimscanRegexThreshold = $ENV{'simscan_regex_threshold'};
Packit 57988d
Packit 57988d
$ShowSimscanPassthru = $ENV{'show_simscan_passthru'};
Packit 57988d
$SimscanPassthruIpFromThreshold = $ENV{'simscan_passthru_ip_from_threshold'};
Packit 57988d
$SimscanPassthruFromThreshold = $ENV{'simscan_passthru_from_threshold'};
Packit 57988d
$SimscanPassthruToThreshold = $ENV{'simscan_passthru_to_threshold'};
Packit 57988d
Packit 57988d
$ShowSimscanSpamReject = $ENV{'show_simscan_spam_reject'};
Packit 57988d
$SimscanSpamRejectIpFromThreshold = $ENV{'simscan_spam_reject_ip_from_threshold'};
Packit 57988d
$SimscanSpamRejectFromThreshold = $ENV{'simscan_spam_reject_from_threshold'};
Packit 57988d
$SimscanSpamRejectToThreshold = $ENV{'simscan_spam_reject_to_threshold'};
Packit 57988d
Packit 57988d
$ShowSimscanSpamDropped = $ENV{'show_simscan_spam_dropped'};
Packit 57988d
$SimscanSpamDroppedIpFromThreshold = $ENV{'simscan_spam_dropped_ip_from_threshold'};
Packit 57988d
$SimscanSpamDroppedFromThreshold = $ENV{'simscan_spam_dropped_from_threshold'};
Packit 57988d
$SimscanSpamDroppedToThreshold = $ENV{'simscan_spam_dropped_to_threshold'};
Packit 57988d
Packit 57988d
# chkuser
Packit 57988d
$ShowChkuserRejects = $ENV{'show_chkuser_rejects'};
Packit 57988d
$ChkuserRejectsFromThreshold = $ENV{'chkuser_rejects_from_threshold'};
Packit 57988d
$ChkuserRejectsToThreshold = $ENV{'chkuser_rejects_to_threshold'};
Packit 57988d
$ChkuserRejectsRemoteThreshold = $ENV{'chkuser_rejects_remote_threshold'};
Packit 57988d
$ChkuserRejectsReasonThreshold = $ENV{'chkuser_rejects_reason_threshold'};
Packit 57988d
Packit 57988d
$ShowChkuserRejectsRelay = $ENV{'show_chkuser_rejects_relay'};
Packit 57988d
$ChkuserRejectsRelayFromThreshold = $ENV{'chkuser_rejects_relay_from_threshold'};
Packit 57988d
$ChkuserRejectsRelayToThreshold = $ENV{'chkuser_rejects_relay_to_threshold'};
Packit 57988d
$ChkuserRejectsRelayRemoteThreshold = $ENV{'chkuser_rejects_relay_remote_threshold'};
Packit 57988d
Packit 57988d
$ShowChkuserAccepts = $ENV{'show_chkuser_accepts'};
Packit 57988d
$ChkuserAcceptsFromThreshold = $ENV{'chkuser_accepts_from_threshold'};
Packit 57988d
$ChkuserAcceptsToThreshold = $ENV{'chkuser_accepts_to_threshold'};
Packit 57988d
Packit 57988d
$ShowChkuserAcceptsRelay = $ENV{'show_chkuser_accepts_relay'};
Packit 57988d
$ChkuserAcceptsRelayFromThreshold = $ENV{'chkuser_accepts_relay_from_threshold'};
Packit 57988d
$ChkuserAcceptsRelayToThreshold = $ENV{'chkuser_accepts_relay_to_threshold'};
Packit 57988d
Packit 57988d
$ShowChkuserOther = $ENV{'show_chkuser_other'};
Packit 57988d
$ChkuserNoAuthResourceThreshold = $ENV{'chkuser_noauthresource_threshold'};
Packit 57988d
$ChkuserOverquotaThreshold = $ENV{'chkuser_overquota_threshold'};
Packit 57988d
$ChkuserRejectedIntrusionThreshold = $ENV{'chkuser_rejected_intrusion_threshold'};
Packit 57988d
Packit 57988d
$ShowChkuserAcceptedSender = $ENV{'show_chkuser_accepted_sender'};
Packit 57988d
$ChkuserAcceptedSenderFromThreshold = $ENV{'chkuser_accepted_sender_from_threshold'};
Packit 57988d
$ChkuserAcceptedSenderRemoteThreshold = $ENV{'chkuser_accepted_sender_remote_threshold'};
Packit 57988d
$ChkuserAcceptedNullSenderFromThreshold = $ENV{'chkuser_accepted_null_sender_from_threshold'};
Packit 57988d
Packit 57988d
$ShowChkuserRejectedSender = $ENV{'show_chkuser_rejected_sender'};
Packit 57988d
$ChkuserRejectedSenderFromThreshold = $ENV{'chkuser_rejected_sender_from_threshold'};
Packit 57988d
$ChkuserRejectedSenderRemoteThreshold = $ENV{'chkuser_rejected_sender_remote_threshold'};
Packit 57988d
$ChkuserRejectedSenderReasonThreshold = $ENV{'chkuser_rejected_sender_reason_threshold'};
Packit 57988d
Packit 57988d
$BadMailToIpThreshold = $ENV{'badmailto_ip_threshold'};
Packit 57988d
$BadMailToEmailThreshold = $ENV{'badmailto_email_threshold'};
Packit 57988d
$BadMailFromIpThreshold = $ENV{'badmailfrom_ip_threshold'};
Packit 57988d
$BadMailFromEmailThreshold = $ENV{'badmailfrom_email_threshold'};
Packit 57988d
Packit 57988d
$IgnoreUnmatched = $ENV{'ignoreunmatched'};
Packit 57988d
Packit 57988d
while (defined($ThisLine = <STDIN>)) {
Packit 57988d
	if ( ( $ThisLine =~ /status: / )
Packit 57988d
		or ( $ThisLine =~ /end (\d+) status \d+/ )
Packit 57988d
		or ( $ThisLine =~ /simscan: Putting the message in quarantine/ )
Packit 57988d
		) {
Packit 57988d
		# We don't care about these
Packit 57988d
	}
Packit 57988d
	elsif ( ($pid1, $RemoteServer) = ( $ThisLine =~ /pid (\d+) from (.*)/ ) ) {
Packit 57988d
		$From{$RemoteServer}++;
Packit 57988d
		$TotalFrom++;
Packit 57988d
		$GrandTotalFrom++;
Packit 57988d
	}
Packit 57988d
	elsif ( ($pid2,$LocalServer,$rest) = ( $ThisLine =~ /ok (\d+) \d+:(.*):\d+\s+(.*)/ ) ) {
Packit 57988d
		$To{$LocalServer}++;
Packit 57988d
		$TotalTo++;
Packit 57988d
		$Total++;
Packit 57988d
		if ( $rest !~ /^\:/) {
Packit 57988d
			# we have a domain
Packit 57988d
			($d, $ip ) = ($rest =~ /^(.*):(.*)::\d+$/);
Packit 57988d
			$Domains{$ip} = $d;
Packit 57988d
		}
Packit 57988d
	}
Packit 57988d
	elsif ( ($Warning) = ( $ThisLine =~ /warning: (.*)/i ) ) {
Packit 57988d
		$Warnings{$Warning}++;
Packit 57988d
	}
Packit 57988d
	# rblsmtpd
Packit 57988d
	elsif ( ($Blocked, $rbl) = ( $ThisLine =~ /rblsmtpd: (.*) pid \d+: 451 (.*)$/ ) ) {
Packit 57988d
		$Blockeds{$Blocked}++;
Packit 57988d
		$TotalBlocked++;
Packit 57988d
		$Rbl{$Blocked} = $rbl;
Packit 57988d
		# remove it from previous parse
Packit 57988d
		if ( defined( $From{$Blocked} ) ) {
Packit 57988d
			$From{$Blocked}--;
Packit 57988d
			$TotalFrom--;
Packit 57988d
		}
Packit 57988d
	}
Packit 57988d
	# CHKUSER rejected rcpt
Packit 57988d
	elsif (($from,$remotedomain, $remote, $to, $reason) = ( $ThisLine =~ /CHKUSER rejected rcpt: from <(.*):.*:> remote <(.*):.*:(.*)> rcpt <(.*)> : (.*)/ )) {
Packit 57988d
		$ChkuserRejectsFrom{$from}++;
Packit 57988d
		$ChkuserRejectsRemote{$remote}++;
Packit 57988d
		$Domains{$remote} = $remotedomain if($remotedomain);
Packit 57988d
		$ChkuserRejectsTo{$to}++;
Packit 57988d
		$ChkuserRejectsReason{$reason}++;
Packit 57988d
Packit 57988d
		$TotalReject++;
Packit 57988d
		# remove it from previous parse
Packit 57988d
		if ( defined( $From{$from} ) ) {
Packit 57988d
			$From{$from}--;
Packit 57988d
			$TotalFrom--;
Packit 57988d
		}
Packit 57988d
	}
Packit 57988d
	# CHKUSER rejected relaying
Packit 57988d
	elsif (($from, $remotedomain, $remotedomain2, $remote, $to, $reason) = ( $ThisLine =~ /CHKUSER rejected relaying: from <(.*):.*:> remote <(.*):(.*):(.*)> rcpt <(.*)> : (.*)/ )) {
Packit 57988d
		$ChkuserRejectsRelayFrom{$from}++;
Packit 57988d
		$ChkuserRejectsRelayTo{$to}++;
Packit 57988d
		$ChkuserRejectsRelayRemote{$remote}++;
Packit 57988d
		if (! $Domains{$remote} ) {
Packit 57988d
			if ( $remotedomain2 && $remotedomain2 != 'unknown' ) {
Packit 57988d
				$Domains{$remote} = $remotedomain2;
Packit 57988d
			}
Packit 57988d
			elsif ( $remotedomain ) {
Packit 57988d
				$Domains{$remote} = $remotedomain;
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
Packit 57988d
		$ChkuserRejectsReason{$reason}++;
Packit 57988d
Packit 57988d
		$TotalRejectRelay++;
Packit 57988d
		# remove it from previous parse
Packit 57988d
		if ( defined( $From{$from} ) ) {
Packit 57988d
			$From{$from}--;
Packit 57988d
			$TotalFrom--;
Packit 57988d
		}
Packit 57988d
	}
Packit 57988d
	# CHKUSER accepted rcpt
Packit 57988d
	elsif (($from, $to) = ( $ThisLine =~ /CHKUSER accepted rcpt: from <(.*):.*:> .* rcpt <(.*)> : found existing recipient/ )) {
Packit 57988d
		$ChkuserAcceptsFrom{$from}++;
Packit 57988d
		$ChkuserAcceptsTo{$to}++;
Packit 57988d
		$TotalAccept++;
Packit 57988d
	}
Packit 57988d
	# CHKUSER relaying rcpt
Packit 57988d
	elsif (($from, $to) = ( $ThisLine =~ /CHKUSER relaying rcpt: from <(.*):.*:> .* rcpt <(.*)> : client allowed to relay/ )) {
Packit 57988d
		$ChkuserAcceptsRelayFrom{$from}++;
Packit 57988d
		$ChkuserAcceptsRelayTo{$to}++;
Packit 57988d
		$TotalAcceptRelay++;
Packit 57988d
	}
Packit 57988d
	# CHKUSER no auth resource
Packit 57988d
	elsif (($from, $to) = ( $ThisLine =~ /CHKUSER no auth resource: from <(.*):.*:> .* rcpt <(.*)> :/ )) {
Packit 57988d
		$ChkuserNoAuthResourceFrom{$from}++;
Packit 57988d
		$ChkuserNoAuthResourceTo{$to}++;
Packit 57988d
		$TotalNoAuthResource++;
Packit 57988d
		# remove it from previous parse
Packit 57988d
		if ( defined( $From{$from} ) ) {
Packit 57988d
			$From{$from}--;
Packit 57988d
			$TotalFrom--;
Packit 57988d
		}
Packit 57988d
	}
Packit 57988d
	# CHKUSER mbx overquota
Packit 57988d
	elsif (($from, $to) = ( $ThisLine =~ /CHKUSER mbx overquota: from <(.*):.*:> .* rcpt <(.*)> :/ )) {
Packit 57988d
		$ChkuserOverquotaTo{$to}++;
Packit 57988d
		$TotalOverquota++;
Packit 57988d
		# remove it from previous parse
Packit 57988d
		if ( defined( $From{$from} ) ) {
Packit 57988d
			$From{$from}--;
Packit 57988d
			$TotalFrom--;
Packit 57988d
		}
Packit 57988d
	}
Packit 57988d
	# CHKUSER rejected intrusion
Packit 57988d
	elsif (($from, $to) = ( $ThisLine =~ /CHKUSER rejected intrusion: from <(.*):.*:> .* rcpt <(.*)> :/ )) {
Packit 57988d
		$ChkuserRejectedIntrusionFrom{$from}++;
Packit 57988d
		$ChkuserRejectedIntrusionTo{$to}++;
Packit 57988d
		$TotalRejectedIntrusion++;
Packit 57988d
		# remove it from previous parse
Packit 57988d
		if ( defined( $From{$from} ) ) {
Packit 57988d
			$From{$from}--;
Packit 57988d
			$TotalFrom--;
Packit 57988d
		}
Packit 57988d
	}
Packit 57988d
	# CHKUSER accepted sender
Packit 57988d
	elsif (($from, $remote) = ( $ThisLine =~ /CHKUSER accepted sender: from <(.*):.*:> remote <.*:.*:(.*)> rcpt <>/ )) {
Packit 57988d
		$ChkuserAcceptedSenderFrom{$from}++;
Packit 57988d
		$ChkuserAcceptedSenderRemote{$remote}++;
Packit 57988d
	}
Packit 57988d
	# CHKUSER accepted null sender
Packit 57988d
	elsif (($remote) = ( $ThisLine =~ /CHKUSER accepted null sender: from <:.*:> remote <.*:.*:(.*)> rcpt <> : accepted null sender always/ )) {
Packit 57988d
		$ChkuserAcceptedNullSenderRemote{$remote}++;
Packit 57988d
	}
Packit 57988d
Packit 57988d
	# CHKUSER rejected sender
Packit 57988d
	elsif (($from, $remotedomain, $remotedomain2, $remote, $reason) = ( $ThisLine =~ /CHKUSER rejected sender: from <(.*):.*:> remote <(.*):(.*):(.*)> rcpt <> : (.*)/ )) {
Packit 57988d
		$ChkuserRejectedSenderFrom{$from}++;
Packit 57988d
		$ChkuserRejectedSenderRemote{$remote}++;
Packit 57988d
		if (! $Domains{$remote} ) {
Packit 57988d
			if ( $remotedomain2 && $remotedomain2 != 'unknown' ) {
Packit 57988d
				$Domains{$remote} = $remotedomain2;
Packit 57988d
			}
Packit 57988d
			elsif ( $remotedomain ) {
Packit 57988d
				$Domains{$remote} = $remotedomain;
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
		$ChkuserRejectedSenderReason{$reason}++;
Packit 57988d
	}
Packit 57988d
Packit 57988d
	# simscan-1.1 virus
Packit 57988d
	elsif ( ($virus, $virusfrom, $virusto, $scantime) = ($ThisLine =~ /simscan:.*virus: (.*) from: (.*) to: (.*) time: (.*)s/)) {
Packit 57988d
		$Simscan{$virus}++;
Packit 57988d
		$SimscanTotal++;
Packit 57988d
		$SimscanVirusTotal++;
Packit 57988d
		$SimscanFrom{$virusfrom}++;
Packit 57988d
		$SimscanTo{$virusto}++;
Packit 57988d
		if ($Maxscantimevirus < $scantime) {
Packit 57988d
			$Maxscantimevirus = $scantime;
Packit 57988d
		}
Packit 57988d
		$Totalscantimevirus += $scantime;
Packit 57988d
	}
Packit 57988d
Packit 57988d
	# simscan-1.2 virus
Packit 57988d
	elsif (
Packit 57988d
		(($scantime, $virus, $virusfrom, $virusto ) = ($ThisLine =~ /simscan:\[\d+\]:VIRUS:(.*)s:(.*):.*:(.*):(.*)/)) ||
Packit 57988d
		(($scantime, $virus, $virusfrom, $virusto ) = ($ThisLine =~ /simscan:\[\d+\]:VIRUS DROPPED:(.*)s:(.*):.*:(.*):(.*)/))
Packit 57988d
		) {
Packit 57988d
		$Simscan{$virus}++;
Packit 57988d
		$SimscanTotal++;
Packit 57988d
		$SimscanVirusTotal++;
Packit 57988d
		$SimscanFrom{$virusfrom}++;
Packit 57988d
		$SimscanTo{$virusto}++;
Packit 57988d
		if ($Maxscantimevirus < $scantime) {
Packit 57988d
			$Maxscantimevirus = $scantime;
Packit 57988d
		}
Packit 57988d
		$Totalscantimevirus += $scantime;
Packit 57988d
	}
Packit 57988d
Packit 57988d
	# simscan attach
Packit 57988d
	elsif ( ($attach, $attachfrom, $attachto, $scantime) = ($ThisLine =~ /simscan:.*invalid attachment: (.*) from: (.*) to: (.*) time: (.*)s/) ) {
Packit 57988d
		$SimscanTotal++;
Packit 57988d
		$SimscanAttach{$attach}++;
Packit 57988d
		$SimscanAttachFrom{$attachfrom}++;
Packit 57988d
		$SimscanAttachTo{$attachto}++;
Packit 57988d
		$SimscanAttachTotal++;
Packit 57988d
		if ($Maxscantimeattach < $scantime) {
Packit 57988d
			$Maxscantimeattach = $scantime;
Packit 57988d
		}
Packit 57988d
		$Totalscantimeattach += $scantime;
Packit 57988d
	}
Packit 57988d
Packit 57988d
	# simscan-1.2 attach
Packit 57988d
	elsif ( ($scantime, $attach, $attachfrom, $attachto ) = ($ThisLine =~ /simscan:\[\d+\]:ATTACH:(.*)s:(.*):.*:(.*):(.*)/)) {
Packit 57988d
		$SimscanTotal++;
Packit 57988d
		$SimscanAttach{$attach}++;
Packit 57988d
		$SimscanAttachFrom{$attachfrom}++;
Packit 57988d
		$SimscanAttachTo{$attachto}++;
Packit 57988d
		$SimscanAttachTotal++;
Packit 57988d
		if ($Maxscantimeattach < $scantime) {
Packit 57988d
			$Maxscantimeattach = $scantime;
Packit 57988d
		}
Packit 57988d
		$Totalscantimeattach += $scantime;
Packit 57988d
	}
Packit 57988d
Packit 57988d
	# simscan-1.2 regex
Packit 57988d
	elsif ( ($scantime, $regex, $regexfrom, $regexto ) = ($ThisLine =~ /simscan:\[\d+\]:REGEX:(.*)s:(.*):.*:(.*):(.*)/)) {
Packit 57988d
		$SimscanTotal++;
Packit 57988d
		$SimscanRegex{$regex}++;
Packit 57988d
		$SimscanRegexFrom{$regexfrom}++;
Packit 57988d
		$SimscanRegexTo{$regexto}++;
Packit 57988d
		$SimscanRegexTotal++;
Packit 57988d
		if ($Maxscantimeregex < $scantime) {
Packit 57988d
			$Maxscantimeregex = $scantime;
Packit 57988d
		}
Packit 57988d
		$Totalscantimeregex += $scantime;
Packit 57988d
	}
Packit 57988d
Packit 57988d
	# simscan-1.2 passthru
Packit 57988d
	elsif ( ($passthrulimits, $scantime, $passthruipfrom, $passthrufrom, $passthruto ) = ($ThisLine =~ /simscan:\[\d+\]:PASSTHRU \((.*)\):(.*)s:.*:(.*):(.*):(.*)/)) {
Packit 57988d
		$SimscanTotal++;
Packit 57988d
		($ptl1,$ptl2) = split(/\//, $passthrulimits);
Packit 57988d
		if( $ptl1 >= $ptl2 ) {
Packit 57988d
			$SimscanPassthruIpFrom{$passthruipfrom}++;
Packit 57988d
			$SimscanPassthruFrom{$passthrufrom}++;
Packit 57988d
			$SimscanPassthruTo{$passthruto}++;
Packit 57988d
			$SimscanPassthruTotal++;
Packit 57988d
		}
Packit 57988d
		if ($Maxscantimespam < $scantime) {
Packit 57988d
			$Maxscantimespam = $scantime;
Packit 57988d
		}
Packit 57988d
		$Totalscantimespam += $scantime;
Packit 57988d
	}
Packit 57988d
Packit 57988d
	# simscan-1.2 spam reject
Packit 57988d
	elsif ( ( $scantime, $spamrejectipfrom, $spamrejectfrom, $spamrejectto ) = ($ThisLine =~ /simscan:\[\d+\]:SPAM REJECT \(.*\):(.*)s:.*:(.*):(.*):(.*)/)) {
Packit 57988d
		$SimscanTotal++;
Packit 57988d
		$SimscanSpamrejectIpFrom{$spamrejectipfrom}++;
Packit 57988d
		$SimscanSpamrejectFrom{$spamrejectfrom}++;
Packit 57988d
		$SimscanSpamrejectTo{$spamrejectto}++;
Packit 57988d
		$SimscanSpamrejectTotal++;
Packit 57988d
		if ($Maxscantimespam < $scantime) {
Packit 57988d
			$Maxscantimespam = $scantime;
Packit 57988d
		}
Packit 57988d
		$Totalscantimespam += $scantime;
Packit 57988d
	}
Packit 57988d
Packit 57988d
	# simscan-1.2 spam dropped
Packit 57988d
	elsif ( ( $scantime, $spamdroppedipfrom, $spamdroppedfrom, $spamdroppedto ) = ($ThisLine =~ /simscan:\[\d+\]:SPAM DROPPED \(.*\):(.*)s:.*:(.*):(.*):(.*)/)) {
Packit 57988d
		$SimscanTotal++;
Packit 57988d
		$SimscanSpamdroppedIpFrom{$spamdroppedipfrom}++;
Packit 57988d
		$SimscanSpamdroppedFrom{$spamdroppedfrom}++;
Packit 57988d
		$SimscanSpamdroppedTo{$spamdroppedto}++;
Packit 57988d
		$SimscanSpamdroppedTotal++;
Packit 57988d
		if ($Maxscantimespam < $scantime) {
Packit 57988d
			$Maxscantimespam = $scantime;
Packit 57988d
		}
Packit 57988d
		$Totalscantimespam += $scantime;
Packit 57988d
	}
Packit 57988d
Packit 57988d
	# simscan-1.2 clean
Packit 57988d
	elsif ( ($scantime) = ($ThisLine =~ /simscan:\[\d+\]:CLEAN \(.*\):(.*)s:.*:.*:.*:.*/) ) {
Packit 57988d
		if ($Maxscantimespam < $scantime) {
Packit 57988d
			$Maxscantimespam = $scantime;
Packit 57988d
		}
Packit 57988d
		$Totalscantimespam += $scantime;
Packit 57988d
		$SimscanCleanTotal++;
Packit 57988d
	}
Packit 57988d
Packit 57988d
	# simscan-1.2 relayclient
Packit 57988d
	elsif ( ($scantime) = ($ThisLine =~ /simscan:\[\d+\]:RELAYCLIENT:(.*)s:.*:.*:.*:.*/) ) {
Packit 57988d
		if ($Maxscantimespam < $scantime) {
Packit 57988d
			$Maxscantimespam = $scantime;
Packit 57988d
		}
Packit 57988d
		$Totalscantimespam += $scantime;
Packit 57988d
		$SimscanRelayClientTotal++;
Packit 57988d
	}
Packit 57988d
Packit 57988d
	# simscan quarantine
Packit 57988d
	elsif ( $ThisLine =~ /simscan: Putting the message in quarantine/ ) {
Packit 57988d
		$Quarantine++;
Packit 57988d
	}
Packit 57988d
Packit 57988d
	# badmailfrom
Packit 57988d
	elsif ( ($email,$ip) = ($ThisLine =~ /qmail-smtpd: badmailfrom: (.*) at (.*)/) ) {
Packit 57988d
		$Badmailfromemail{$email}++;
Packit 57988d
		$Badmailfromip{$ip}++;
Packit 57988d
		$Badmailfromtot++;
Packit 57988d
	}
Packit 57988d
Packit 57988d
	# badmailto
Packit 57988d
	elsif ( ($email,$ip) = ($ThisLine =~ /qmail-smtpd: badmailto: (.*) at (.*)/) ) {
Packit 57988d
		$Badmailtoemail{$email}++;
Packit 57988d
		$Badmailtoip{$ip}++;
Packit 57988d
		$Badmailtotot++;
Packit 57988d
	}
Packit 57988d
Packit 57988d
	else {
Packit 57988d
		# Report any unmatched entries...
Packit 57988d
		$ThisLine =~ s/^\s+//g;
Packit 57988d
		$ThisLine =~ s/\s+$//g;
Packit 57988d
		if ( ! $IgnoreUnmatched && $ThisLine != "" ) {
Packit 57988d
			push @OtherList,$ThisLine;
Packit 57988d
		}
Packit 57988d
	}
Packit 57988d
}
Packit 57988d
Packit 57988d
if ($QmailDetail >= 1) {
Packit 57988d
	if (($FromThreshold < 0) or ($FromThreshold eq '')) {
Packit 57988d
		$FromThreshold = $QmailThreshold;
Packit 57988d
	}
Packit 57988d
	if (($ToThreshold < 0) or ($ToThreshold eq '')) {
Packit 57988d
		$ToThreshold = $QmailThreshold;
Packit 57988d
	}
Packit 57988d
	if (($BlockedThreshold < 0) or ($BlockedThreshold eq '')) {
Packit 57988d
		$BlockedThreshold = $QmailThreshold;
Packit 57988d
	}
Packit 57988d
	if (($SimscanThreshold < 0) or ($SimscanThreshold eq '')) {
Packit 57988d
		$SimscanThreshold = $QmailThreshold;
Packit 57988d
	}
Packit 57988d
	if (($SimscanFromThreshold < 0) or ($SimscanFromThreshold eq '')) {
Packit 57988d
		$SimscanFromThreshold = $QmailThreshold;
Packit 57988d
	}
Packit 57988d
	if (($SimscanToThreshold < 0) or ($SimscanToThreshold eq '')) {
Packit 57988d
		$SimscanToThreshold = $QmailThreshold;
Packit 57988d
	}
Packit 57988d
	if (($SimscanAttachThreshold < 0) or ($SimscanAttachThreshold eq '')) {
Packit 57988d
		$SimscanAttachThreshold = $QmailThreshold;
Packit 57988d
	}
Packit 57988d
	if (($SimscanRegexThreshold < 0) or ($SimscanRegexThreshold eq '')) {
Packit 57988d
		$SimscanRegexThreshold = $QmailThreshold;
Packit 57988d
	}
Packit 57988d
	if (($SimscanPassthruIpFromThreshold < 0) or ($SimscanPassthruIpFromThreshold eq '')) {
Packit 57988d
		$SimscanPassthruIpFromThreshold = $QmailThreshold;
Packit 57988d
	}
Packit 57988d
	if (($SimscanPassthruFromThreshold < 0) or ($SimscanPassthruFromThreshold eq '')) {
Packit 57988d
		$SimscanPassthruFromThreshold = $QmailThreshold;
Packit 57988d
	}
Packit 57988d
	if (($SimscanPassthruToThreshold < 0) or ($SimscanPassthruToThreshold eq '')) {
Packit 57988d
		$SimscanPassthruToThreshold = $QmailThreshold;
Packit 57988d
	}
Packit 57988d
	if (($SimscanSpamRejectIpFromThreshold < 0) or ($SimscanSpamRejectIpFromThreshold eq '')) {
Packit 57988d
		$SimscanSpamRejectIpFromThreshold = $QmailThreshold;
Packit 57988d
	}
Packit 57988d
	if (($SimscanSpamRejectFromThreshold < 0) or ($SimscanSpamRejectFromThreshold eq '')) {
Packit 57988d
		$SimscanSpamRejectFromThreshold = $QmailThreshold;
Packit 57988d
	}
Packit 57988d
	if (($SimscanSpamRejectToThreshold < 0) or ($SimscanSpamRejectToThreshold eq '')) {
Packit 57988d
		$SimscanSpamRejectToThreshold = $QmailThreshold;
Packit 57988d
	}
Packit 57988d
	if (($SimscanSpamDroppedIpFromThreshold < 0) or ($SimscanSpamDroppedIpFromThreshold eq '')) {
Packit 57988d
		$SimscanSpamDroppedIpFromThreshold = $QmailThreshold;
Packit 57988d
	}
Packit 57988d
	if (($SimscanSpamDroppedFromThreshold < 0) or ($SimscanSpamDroppedFromThreshold eq '')) {
Packit 57988d
		$SimscanSpamDroppedFromThreshold = $QmailThreshold;
Packit 57988d
	}
Packit 57988d
	if (($SimscanSpamDroppedToThreshold < 0) or ($SimscanSpamDroppedToThreshold eq '')) {
Packit 57988d
		$SimscanSpamDroppedToThreshold = $QmailThreshold;
Packit 57988d
	}
Packit 57988d
	if (($ChkuserRejectsFromThreshold < 0) or ($ChkuserRejectsFromThreshold eq '')) {
Packit 57988d
		$ChkuserRejectsFromThreshold = $QmailThreshold;
Packit 57988d
	}
Packit 57988d
	if (($ChkuserRejectsToThreshold < 0) or ($ChkuserRejectsToThreshold eq '')) {
Packit 57988d
		$ChkuserRejectsToThreshold = $QmailThreshold;
Packit 57988d
	}
Packit 57988d
	if (($ChkuserRejectsRemoteThreshold < 0) or ($ChkuserRejectsRemoteThreshold eq '')) {
Packit 57988d
		$ChkuserRejectsRemoteThreshold = $QmailThreshold;
Packit 57988d
	}
Packit 57988d
	if (($ChkuserRejectsRelayFromThreshold < 0) or ($ChkuserRejectsRelayFromThreshold eq '')) {
Packit 57988d
		$ChkuserRejectsRelayFromThreshold = $QmailThreshold;
Packit 57988d
	}
Packit 57988d
	if (($ChkuserRejectsRelayToThreshold < 0) or ($ChkuserRejectsRelayToThreshold eq '')) {
Packit 57988d
		$ChkuserRejectsRelayToThreshold = $QmailThreshold;
Packit 57988d
	}
Packit 57988d
	if (($ChkuserRejectsRelayRemoteThreshold < 0) or ($ChkuserRejectsRelayRemoteThreshold eq '')) {
Packit 57988d
		$ChkuserRejectsRelayRemoteThreshold = $QmailThreshold;
Packit 57988d
	}
Packit 57988d
	if (($ChkuserRejectsReasonThreshold < 0) or ($ChkuserRejectsReasonThreshold eq '')) {
Packit 57988d
		$ChkuserRejectsReasonThreshold = $QmailThreshold;
Packit 57988d
	}
Packit 57988d
	if (($ChkuserAcceptsFromThreshold < 0) or ($ChkuserAcceptsFromThreshold eq '')) {
Packit 57988d
		$ChkuserAcceptsFromThreshold = $QmailThreshold;
Packit 57988d
	}
Packit 57988d
	if (($ChkuserAcceptsToThreshold < 0) or ($ChkuserAcceptsToThreshold eq '')) {
Packit 57988d
		$ChkuserAcceptsToThreshold = $QmailThreshold;
Packit 57988d
	}
Packit 57988d
	if (($ChkuserAcceptsRelayFromThreshold < 0) or ($ChkuserAcceptsRelayFromThreshold eq '')) {
Packit 57988d
		$ChkuserAcceptsRelayFromThreshold = $QmailThreshold;
Packit 57988d
	}
Packit 57988d
	if (($ChkuserAcceptsRelayToThreshold < 0) or ($ChkuserAcceptsRelayToThreshold eq '')) {
Packit 57988d
		$ChkuserAcceptsRelayToThreshold = $QmailThreshold;
Packit 57988d
	}
Packit 57988d
	if (($ChkuserNoAuthResourceThreshold < 0) or ($ChkuserNoAuthResourceThreshold eq '')) {
Packit 57988d
		$ChkuserNoAuthResourceThreshold = $QmailThreshold;
Packit 57988d
	}
Packit 57988d
	if (($ChkuserOverquotaThreshold < 0) or ($ChkuserOverquotaThreshold eq '')) {
Packit 57988d
		$ChkuserOverquotaThreshold = $QmailThreshold;
Packit 57988d
	}
Packit 57988d
	if (($ChkuserRejectedIntrusionThreshold <0) or ($ChkuserRejectedIntrusionThreshold eq '')) {
Packit 57988d
		$ChkuserRejectedIntrusionThreshold = $QmailThreshold;
Packit 57988d
	}
Packit 57988d
	if (($ChkuserAcceptedSenderFromThreshold <0) or ($ChkuserAcceptedSenderFromThreshold eq '')) {
Packit 57988d
		$ChkuserAcceptedSenderFromThreshold = $QmailThreshold;
Packit 57988d
	}
Packit 57988d
	if (($ChkuserAcceptedSenderRemoteThreshold <0) or ($ChkuserAcceptedSenderRemoteThreshold eq '')) {
Packit 57988d
		$ChkuserAcceptedSenderRemoteThreshold = $QmailThreshold;
Packit 57988d
	}
Packit 57988d
	if (($ChkuserAcceptedNullSenderFromThreshold <0) or ($ChkuserAcceptedNullSenderFromThreshold eq '')) {
Packit 57988d
		$ChkuserAcceptedNullSenderFromThreshold = $QmailThreshold;
Packit 57988d
	}
Packit 57988d
	if (($ChkuserRejectedSenderFromThreshold <0) or ($ChkuserRejectedSenderFromThreshold eq '')) {
Packit 57988d
		$ChkuserRejectedSenderFromThreshold = $QmailThreshold;
Packit 57988d
	}
Packit 57988d
	if (($ChkuserRejectedSenderRemoteThreshold <0) or ($ChkuserRejectedSenderRemoteThreshold eq '')) {
Packit 57988d
		$ChkuserRejectedSenderRemoteThreshold = $QmailThreshold;
Packit 57988d
	}
Packit 57988d
	if (($ChkuserRejectedSenderReasonThreshold <0) or ($ChkuserRejectedSenderReasonThreshold eq '')) {
Packit 57988d
		$ChkuserRejectedSenderReasonThreshold = $QmailThreshold;
Packit 57988d
	}
Packit 57988d
	if (($BadMailToIpThreshold <0) or ($BadMailToIpThreshold eq '')) {
Packit 57988d
		$BadMailToIpThreshold = $QmailThreshold;
Packit 57988d
	}
Packit 57988d
	if (($BadMailToEmailThreshold <0) or ($BadMailToEmailThreshold eq '')) {
Packit 57988d
		$BadMailToEmailThreshold = $QmailThreshold;
Packit 57988d
	}
Packit 57988d
	if (($BadMailFromIpThreshold <0) or ($BadMailFromIpThreshold eq '')) {
Packit 57988d
		$BadMailFromIpThreshold = $QmailThreshold;
Packit 57988d
	}
Packit 57988d
	if (($BadMailFromEmailThreshold <0) or ($BadMailFromEmailThreshold eq '')) {
Packit 57988d
		$BadMailFromEmailThreshold = $QmailThreshold;
Packit 57988d
	}
Packit 57988d
Packit 57988d
	# start output
Packit 57988d
	if ( (keys %From) ) {
Packit 57988d
		print "\nConnections from (Threshold of " . $FromThreshold . "):\n";
Packit 57988d
		$threshold_reached=0;
Packit 57988d
		foreach $Line (sort {$From{$b} <=> $From{$a}} keys %From) {
Packit 57988d
			if ($From{$Line} >= $FromThreshold) {
Packit 57988d
				$threshold_reached=1;
Packit 57988d
				if ($Domains{$Line}) {
Packit 57988d
					print "\t" . $Domains{$Line} . " [$Line] - ". $From{$Line} . " Time(s)\n";
Packit 57988d
				}
Packit 57988d
				else {
Packit 57988d
					print "\t" . $Line . " - ". $From{$Line} . " Time(s)\n";
Packit 57988d
				}
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
		if ($threshold_reached < 1) {
Packit 57988d
			print "\t" . "None found above the threshold\n";
Packit 57988d
		}
Packit 57988d
	}
Packit 57988d
Packit 57988d
	if ( (keys %To) ) {
Packit 57988d
		print "\nConnections to (Threshold of " . $ToThreshold . "):\n";
Packit 57988d
		$threshold_reached=0;
Packit 57988d
		foreach $Line (sort {$To{$b} <=> $To{$a}} keys %To) {
Packit 57988d
			if ($To{$Line} >= $ToThreshold) {
Packit 57988d
				$threshold_reached=1;
Packit 57988d
				if ($Domains{$Line}) {
Packit 57988d
					print "\t" . $Domains{$Line} . " [$Line] - ". $To{$Line} . " Time(s)\n";
Packit 57988d
				}
Packit 57988d
				else {
Packit 57988d
					print "\t" . $Line . " - ". $To{$Line} . " Time(s)\n";
Packit 57988d
				}
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
		if ($threshold_reached < 1) {
Packit 57988d
			print "\t" . "None found above the threshold\n";
Packit 57988d
		}
Packit 57988d
	}
Packit 57988d
Packit 57988d
	if ( (keys %Blockeds) ) {
Packit 57988d
		print "\nBlocked (Threshold of " . $BlockedThreshold . "):\n";
Packit 57988d
		$threshold_reached=0;
Packit 57988d
		foreach $Line (sort {$Blockeds{$b} <=> $Blockeds{$a}} keys %Blockeds) {
Packit 57988d
			if ($Blockeds{$Line} >= $BlockedThreshold) {
Packit 57988d
				$threshold_reached=1;
Packit 57988d
				if ($Domains{$Line}) {
Packit 57988d
					print "\t" . $Domains{$Line} . " [$Line] - ". $Blockeds{$Line} . " Time(s)" . ($Rbl{$Line} ? " By ".$Rbl{$Line} : "") . "\n";
Packit 57988d
				}
Packit 57988d
				else {
Packit 57988d
					print "\t" . $Line . " - ". $Blockeds{$Line} . " Time(s)" . ($Rbl{$Line} ? " By ".$Rbl{$Line} : "") . "\n";
Packit 57988d
				}
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
		if ($threshold_reached < 1) {
Packit 57988d
			print "\t" . "None found above the threshold\n";
Packit 57988d
		}
Packit 57988d
	}
Packit 57988d
Packit 57988d
	# chkuser
Packit 57988d
	if ( $ShowChkuserRejects ) {
Packit 57988d
		if ( (keys %ChkuserRejectsFrom) ) {
Packit 57988d
			print "\nChkuser Rejects From (Threshold of " . $ChkuserRejectsFromThreshold . "):\n";
Packit 57988d
			$threshold_reached=0;
Packit 57988d
			foreach $Line (sort {$ChkuserRejectsFrom{$b} <=> $ChkuserRejectsFrom{$a}} keys %ChkuserRejectsFrom) {
Packit 57988d
				if ($ChkuserRejectsFrom{$Line} >= $ChkuserRejectsFromThreshold) {
Packit 57988d
					$threshold_reached=1;
Packit 57988d
					if ($Domains{$Line}) {
Packit 57988d
						print "\t" . $Domains{$Line} . " [$Line] - ". $ChkuserRejectsFrom{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
					else {
Packit 57988d
						print "\t" . $Line . " - ". $ChkuserRejectsFrom{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
				}
Packit 57988d
			}
Packit 57988d
			if ($threshold_reached < 1) {
Packit 57988d
				print "\t" . "None found above the threshold\n";
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
Packit 57988d
		if ( (keys %ChkuserRejectsTo) ) {
Packit 57988d
			print "\nChkuser Rejects To (Threshold of " . $ChkuserRejectsToThreshold . "):\n";
Packit 57988d
			$threshold_reached=0;
Packit 57988d
			foreach $Line (sort {$ChkuserRejectsTo{$b} <=> $ChkuserRejectsTo{$a}} keys %ChkuserRejectsTo) {
Packit 57988d
				if ($ChkuserRejectsTo{$Line} >= $ChkuserRejectsToThreshold) {
Packit 57988d
					$threshold_reached=1;
Packit 57988d
					if ($Domains{$Line}) {
Packit 57988d
						print "\t" . $Domains{$Line} . " [$Line] - ". $ChkuserRejectsTo{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
					else {
Packit 57988d
						print "\t" . $Line . " - ". $ChkuserRejectsTo{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
				}
Packit 57988d
			}
Packit 57988d
			if ($threshold_reached < 1) {
Packit 57988d
				print "\t" . "None found above the threshold\n";
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
Packit 57988d
		if ( (keys %ChkuserRejectsRemote) ) {
Packit 57988d
			print "\nChkuser Rejects Remote (Threshold of " . $ChkuserRejectsRemoteThreshold . "):\n";
Packit 57988d
			$threshold_reached=0;
Packit 57988d
			foreach $Line (sort {$ChkuserRejectsRemote{$b} <=> $ChkuserRejectsRemote{$a}} keys %ChkuserRejectsRemote) {
Packit 57988d
				if ($ChkuserRejectsRemote{$Line} >= $ChkuserRejectsRemoteThreshold) {
Packit 57988d
					$threshold_reached=1;
Packit 57988d
					if ($Domains{$Line}) {
Packit 57988d
						print "\t" . $Domains{$Line} . " [$Line] - ". $ChkuserRejectsRemote{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
					else {
Packit 57988d
						print "\t" . $Line . " - ". $ChkuserRejectsRemote{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
				}
Packit 57988d
			}
Packit 57988d
			if ($threshold_reached < 1) {
Packit 57988d
				print "\t" . "None found above the threshold\n";
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
	}
Packit 57988d
Packit 57988d
	if ( $ShowChkuserRejectsRelay ) {
Packit 57988d
		if ( (keys %ChkuserRejectsRelayFrom) ) {
Packit 57988d
			print "\nChkuser Rejects Relay From (Threshold of " . $ChkuserRejectsRelayFromThreshold . "):\n";
Packit 57988d
			$threshold_reached=0;
Packit 57988d
			foreach $Line (sort {$ChkuserRejectsRelayFrom{$b} <=> $ChkuserRejectsRelayFrom{$a}} keys %ChkuserRejectsRelayFrom) {
Packit 57988d
				if ($ChkuserRejectsRelayFrom{$Line} >= $ChkuserRejectsRelayFromThreshold) {
Packit 57988d
					$threshold_reached=1;
Packit 57988d
					if ($Domains{$Line}) {
Packit 57988d
						print "\t" . $Domains{$Line} . " [$Line] - ". $ChkuserRejectsRelayFrom{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
					else {
Packit 57988d
						print "\t" . $Line . " - ". $ChkuserRejectsRelayFrom{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
				}
Packit 57988d
			}
Packit 57988d
			if ($threshold_reached < 1) {
Packit 57988d
				print "\t" . "None found above the threshold\n";
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
Packit 57988d
		if ( (keys %ChkuserRejectsRelayTo) ) {
Packit 57988d
			print "\nChkuser Rejects Relay To (Threshold of " . $ChkuserRejectsRelayToThreshold . "):\n";
Packit 57988d
			$threshold_reached=0;
Packit 57988d
			foreach $Line (sort {$ChkuserRejectsRelayTo{$b} <=> $ChkuserRejectsRelayTo{$a}} keys %ChkuserRejectsRelayTo) {
Packit 57988d
				if ($ChkuserRejectsRelayTo{$Line} >= $ChkuserRejectsRelayToThreshold) {
Packit 57988d
					$threshold_reached=1;
Packit 57988d
					if ($Domains{$Line}) {
Packit 57988d
						print "\t" . $Domains{$Line} . " [$Line] - ". $ChkuserRejectsRelayTo{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
					else {
Packit 57988d
						print "\t" . $Line . " - ". $ChkuserRejectsRelayTo{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
				}
Packit 57988d
			}
Packit 57988d
			if ($threshold_reached < 1) {
Packit 57988d
				print "\t" . "None found above the threshold\n";
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
Packit 57988d
		if ( (keys %ChkuserRejectsRelayRemote) ) {
Packit 57988d
			print "\nChkuser Rejects Relay Remote (Threshold of " . $ChkuserRejectsRelayRemoteThreshold . "):\n";
Packit 57988d
			$threshold_reached=0;
Packit 57988d
			foreach $Line (sort {$ChkuserRejectsRelayRemote{$b} <=> $ChkuserRejectsRelayRemote{$a}} keys %ChkuserRejectsRelayRemote) {
Packit 57988d
				if ($ChkuserRejectsRelayRemote{$Line} >= $ChkuserRejectsRelayRemoteThreshold) {
Packit 57988d
					$threshold_reached=1;
Packit 57988d
					if ($Domains{$Line}) {
Packit 57988d
						print "\t" . $Domains{$Line} . " [$Line] - ". $ChkuserRejectsRelayRemote{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
					else {
Packit 57988d
						print "\t" . $Line . " - ". $ChkuserRejectsRelayRemote{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
				}
Packit 57988d
			}
Packit 57988d
			if ($threshold_reached < 1) {
Packit 57988d
				print "\t" . "None found above the threshold\n";
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
Packit 57988d
	}
Packit 57988d
Packit 57988d
	if ( $ShowChkuserRejects ) {
Packit 57988d
		if ( (keys %ChkuserRejectsReason) ) {
Packit 57988d
			print "\nChkuser Rejects Reason (Threshold of " . $ChkuserRejectsReasonThreshold . "):\n";
Packit 57988d
			$threshold_reached=0;
Packit 57988d
			foreach $Line (sort {$ChkuserRejectsReason{$b} <=> $ChkuserRejectsReason{$a}} keys %ChkuserRejectsReason) {
Packit 57988d
				if ($ChkuserRejectsReason{$Line} >= $ChkuserRejectsReasonThreshold) {
Packit 57988d
					$threshold_reached=1;
Packit 57988d
					if ($Domains{$Line}) {
Packit 57988d
						print "\t" . $Domains{$Line} . " [$Line] - ". $ChkuserRejectsReason{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
					else {
Packit 57988d
						print "\t" . $Line . " - ". $ChkuserRejectsReason{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
				}
Packit 57988d
			}
Packit 57988d
			if ($threshold_reached < 1) {
Packit 57988d
				print "\t" . "None found above the threshold\n";
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
	}
Packit 57988d
Packit 57988d
	if ( $ShowChkuserAccepts ) {
Packit 57988d
		if ( (keys %ChkuserAcceptsFrom) ) {
Packit 57988d
			print "\nChkuser Accepts from (Threshold of " . $ChkuserAcceptsFromThreshold . "):\n";
Packit 57988d
			$threshold_reached=0;
Packit 57988d
			foreach $Line (sort {$ChkuserAcceptsFrom{$b} <=> $ChkuserAcceptsFrom{$a}} keys %ChkuserAcceptsFrom) {
Packit 57988d
				if ($ChkuserAcceptsFrom{$Line} >= $ChkuserAcceptsFromThreshold) {
Packit 57988d
					$threshold_reached=1;
Packit 57988d
					if ($Domains{$Line}) {
Packit 57988d
						print "\t" . $Domains{$Line} . " [$Line] - ". $ChkuserAcceptsFrom{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
					else {
Packit 57988d
						print "\t" . $Line . " - ". $ChkuserAcceptsFrom{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
				}
Packit 57988d
			}
Packit 57988d
			if ($threshold_reached < 1) {
Packit 57988d
				print "\t" . "None found above the threshold\n";
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
Packit 57988d
		if ( (keys %ChkuserAcceptsTo) ) {
Packit 57988d
			print "\nChkuser Accepts to (Threshold of " . $ChkuserAcceptsToThreshold . "):\n";
Packit 57988d
			$threshold_reached=0;
Packit 57988d
			foreach $Line (sort {$ChkuserAcceptsTo{$b} <=> $ChkuserAcceptsTo{$a}} keys %ChkuserAcceptsTo) {
Packit 57988d
				if ($ChkuserAcceptsTo{$Line} >= $ChkuserAcceptsToThreshold) {
Packit 57988d
					$threshold_reached=1;
Packit 57988d
					if ($Domains{$Line}) {
Packit 57988d
						print "\t" . $Domains{$Line} . " [$Line] - ". $ChkuserAcceptsTo{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
					else {
Packit 57988d
						print "\t" . $Line . " - ". $ChkuserAcceptsTo{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
				}
Packit 57988d
			}
Packit 57988d
			if ($threshold_reached < 1) {
Packit 57988d
				print "\t" . "None found above the threshold\n";
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
	}
Packit 57988d
Packit 57988d
	if ( $ShowChkuserAcceptsRelay ) {
Packit 57988d
		if ( (keys %ChkuserAcceptsRelayFrom) ) {
Packit 57988d
			print "\nChkuser Accepts Relay from (Threshold of " . $ChkuserAcceptsRelayFromThreshold . "):\n";
Packit 57988d
			$threshold_reached=0;
Packit 57988d
			foreach $Line (sort {$ChkuserAcceptsRelayFrom{$b} <=> $ChkuserAcceptsRelayFrom{$a}} keys %ChkuserAcceptsRelayFrom) {
Packit 57988d
				if ($ChkuserAcceptsRelayFrom{$Line} >= $ChkuserAcceptsRelayFromThreshold) {
Packit 57988d
					$threshold_reached=1;
Packit 57988d
					if ($Domains{$Line}) {
Packit 57988d
						print "\t" . $Domains{$Line} . " [$Line] - ". $ChkuserAcceptsRelayFrom{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
					else {
Packit 57988d
						print "\t" . $Line . " - ". $ChkuserAcceptsRelayFrom{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
				}
Packit 57988d
			}
Packit 57988d
			if ($threshold_reached < 1) {
Packit 57988d
				print "\t" . "None found above the threshold\n";
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
Packit 57988d
		if ( (keys %ChkuserAcceptsRelayTo) ) {
Packit 57988d
			print "\nChkuser Accepts Relay to (Threshold of " . $ChkuserAcceptsRelayToThreshold . "):\n";
Packit 57988d
			$threshold_reached=0;
Packit 57988d
			foreach $Line (sort {$ChkuserAcceptsRelayTo{$b} <=> $ChkuserAcceptsRelayTo{$a}} keys %ChkuserAcceptsRelayTo) {
Packit 57988d
				if ($ChkuserAcceptsRelayTo{$Line} >= $ChkuserAcceptsRelayToThreshold) {
Packit 57988d
					$threshold_reached=1;
Packit 57988d
					if ($Domains{$Line}) {
Packit 57988d
						print "\t" . $Domains{$Line} . " [$Line] - ". $ChkuserAcceptsRelayTo{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
					else {
Packit 57988d
						print "\t" . $Line . " - ". $ChkuserAcceptsRelayTo{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
				}
Packit 57988d
			}
Packit 57988d
			if ($threshold_reached < 1) {
Packit 57988d
				print "\t" . "None found above the threshold\n";
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
	}
Packit 57988d
Packit 57988d
	if ( $ShowChkuserOther ) {
Packit 57988d
		if ( (keys %ChkuserNoAuthResourceFrom) ) {
Packit 57988d
			print "\nChkuser No Auth Resource from (Threshold of " . $ChkuserNoAuthResourceThreshold . "):\n";
Packit 57988d
			$threshold_reached=0;
Packit 57988d
			foreach $Line (sort {$ChkuserNoAuthResourceFrom{$b} <=> $ChkuserNoAuthResourceFrom{$a}} keys %ChkuserNoAuthResourceFrom) {
Packit 57988d
				if ($ChkuserNoAuthResourceFrom{$Line} >= $ChkuserNoAuthResourceThreshold) {
Packit 57988d
					$threshold_reached=1;
Packit 57988d
					if ($Domains{$Line}) {
Packit 57988d
						print "\t" . $Domains{$Line} . " [$Line] - ". $ChkuserNoAuthResourceFrom{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
					else {
Packit 57988d
						print "\t" . $Line . " - ". $ChkuserNoAuthResourceFrom{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
				}
Packit 57988d
			}
Packit 57988d
			if ($threshold_reached < 1) {
Packit 57988d
				print "\t" . "None found above the threshold\n";
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
Packit 57988d
		if ( (keys %ChkuserNoAuthResourceTo) ) {
Packit 57988d
			print "\nChkuser No Auth resource to (Threshold of " . $ChkuserNoAuthResourceThreshold . "):\n";
Packit 57988d
			$threshold_reached=0;
Packit 57988d
			foreach $Line (sort {$ChkuserNoAuthResourceTo{$b} <=> $ChkuserNoAuthResourceTo{$a}} keys %ChkuserNoAuthResourceTo) {
Packit 57988d
				if ($ChkuserNoAuthResourceTo{$Line} >= $ChkuserNoAuthResourceThreshold) {
Packit 57988d
					$threshold_reached=1;
Packit 57988d
					if ($Domains{$Line}) {
Packit 57988d
						print "\t" . $Domains{$Line} . " [$Line] - ". $ChkuserNoAuthResourceTo{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
					else {
Packit 57988d
						print "\t" . $Line . " - ". $ChkuserNoAuthResourceTo{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
				}
Packit 57988d
			}
Packit 57988d
			if ($threshold_reached < 1) {
Packit 57988d
				print "\t" . "None found above the threshold\n";
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
Packit 57988d
		if ( (keys %ChkuserOverquotaTo) ) {
Packit 57988d
			print "\nChkuser Over Quota (Threshold of " . $ChkuserOverquotaThreshold . "):\n";
Packit 57988d
			$threshold_reached=0;
Packit 57988d
			foreach $Line (sort {$ChkuserOverquotaTo{$b} <=> $ChkuserOverquotaTo{$a}} keys %ChkuserOverquotaTo) {
Packit 57988d
				if ($ChkuserOverquotaTo{$Line} >= $ChkuserOverquotaThreshold) {
Packit 57988d
					$threshold_reached=1;
Packit 57988d
					if ($Domains{$Line}) {
Packit 57988d
						print "\t" . $Domains{$Line} . " [$Line] - ". $ChkuserOverquotaTo{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
					else {
Packit 57988d
						print "\t" . $Line . " - ". $ChkuserOverquotaTo{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
				}
Packit 57988d
			}
Packit 57988d
			if ($threshold_reached < 1) {
Packit 57988d
				print "\t" . "None found above the threshold\n";
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
Packit 57988d
		if ( (keys %ChkuserRejectedIntrusionFrom) ) {
Packit 57988d
			print "\nChkuser Rejected Intrusions from (Threshold of " . $ChkuserRejectedIntrusionThreshold . "):\n";
Packit 57988d
			$threshold_reached=0;
Packit 57988d
			foreach $Line (sort {$ChkuserRejectedIntrusionFrom{$b} <=> $ChkuserRejectedIntrusionFrom{$a}} keys %ChkuserRejectedIntrusionFrom) {
Packit 57988d
				if ($ChkuserRejectedIntrusionFrom{$Line} >= $ChkuserRejectedIntrusionThreshold) {
Packit 57988d
					$threshold_reached=1;
Packit 57988d
					if ($Domains{$Line}) {
Packit 57988d
						print "\t" . $Domains{$Line} . " [$Line] - ". $ChkuserRejectedIntrusionFrom{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
					else {
Packit 57988d
						print "\t" . $Line . " - ". $ChkuserRejectedIntrusionFrom{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
				}
Packit 57988d
			}
Packit 57988d
			if ($threshold_reached < 1) {
Packit 57988d
				print "\t" . "None found above the threshold\n";
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
Packit 57988d
		if ( (keys %ChkuserRejectedIntrusionTo) ) {
Packit 57988d
			print "\nChkuser Rejected Intrusions to (Threshold of " . $ChkuserRejectedIntrusionThreshold . "):\n";
Packit 57988d
			$threshold_reached=0;
Packit 57988d
			foreach $Line (sort {$ChkuserRejectedIntrusionTo{$b} <=> $ChkuserRejectedIntrusionTo{$a}} keys %ChkuserRejectedIntrusionTo) {
Packit 57988d
				if ($ChkuserRejectedIntrusionTo{$Line} >= $ChkuserRejectedIntrusionThreshold) {
Packit 57988d
					$threshold_reached=1;
Packit 57988d
					if ($Domains{$Line}) {
Packit 57988d
						print "\t" . $Domains{$Line} . " [$Line] - ". $ChkuserRejectedIntrusionTo{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
					else {
Packit 57988d
						print "\t" . $Line . " - ". $ChkuserRejectedIntrusionTo{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
				}
Packit 57988d
			}
Packit 57988d
			if ($threshold_reached < 1) {
Packit 57988d
				print "\t" . "None found above the threshold\n";
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
	}
Packit 57988d
Packit 57988d
	if ( $ShowChkuserAcceptedSender ) {
Packit 57988d
		if ( (keys %ChkuserAcceptedSenderFrom) ) {
Packit 57988d
			print "\nChkuser accepted senders from (Threshold of " . $ChkuserAcceptedSenderFromThreshold . "):\n";
Packit 57988d
			$threshold_reached=0;
Packit 57988d
			foreach $Line (sort {$ChkuserAcceptedSenderFrom{$b} <=> $ChkuserAcceptedSenderFrom{$a}} keys %ChkuserAcceptedSenderFrom) {
Packit 57988d
				if ($ChkuserAcceptedSenderFrom{$Line} >= $ChkuserAcceptedSenderFromThreshold) {
Packit 57988d
					$threshold_reached=1;
Packit 57988d
					if ($Domains{$Line}) {
Packit 57988d
					print "\t" . $Domains{$Line} . " [$Line] - ". $ChkuserAcceptedSenderFrom{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
					else {
Packit 57988d
					print "\t" . $Line . " - ". $ChkuserAcceptedSenderFrom{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
				}
Packit 57988d
			}
Packit 57988d
			if ($threshold_reached < 1) {
Packit 57988d
				print "\t" . "None found above the threshold\n";
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
		if ( (keys %ChkuserAcceptedSenderRemote) ) {
Packit 57988d
			print "\nChkuser accepted senders remote (Threshold of " . $ChkuserAcceptedSenderRemoteThreshold . "):\n";
Packit 57988d
			$threshold_reached=0;
Packit 57988d
			foreach $Line (sort {$ChkuserAcceptedSenderRemote{$b} <=> $ChkuserAcceptedSenderRemote{$a}} keys %ChkuserAcceptedSenderRemote) {
Packit 57988d
				if ($ChkuserAcceptedSenderRemote{$Line} >= $ChkuserAcceptedSenderRemoteThreshold) {
Packit 57988d
					$threshold_reached=1;
Packit 57988d
					if ($Domains{$Line}) {
Packit 57988d
						print "\t" . $Domains{$Line} . " [$Line] - ". $ChkuserAcceptedSenderRemote{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
					else {
Packit 57988d
						print "\t" . $Line . " - ". $ChkuserAcceptedSenderRemote{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
				}
Packit 57988d
			}
Packit 57988d
			if ($threshold_reached < 1) {
Packit 57988d
				print "\t" . "None found above the threshold\n";
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
		if ( (keys %ChkuserAcceptedNullSenderFrom) ) {
Packit 57988d
			print "\nChkuser accepted null senders from (Threshold of " . $ChkuserAcceptedNullSenderFromThreshold . "):\n";
Packit 57988d
			$threshold_reached=0;
Packit 57988d
			foreach $Line (sort {$ChkuserAcceptedNullSenderFrom{$b} <=> $ChkuserAcceptedNullSenderFrom{$a}} keys %ChkuserAcceptedNullSenderFrom) {
Packit 57988d
				if ($ChkuserAcceptedNullSenderFrom{$Line} >= $ChkuserAcceptedNullSenderFromThreshold) {
Packit 57988d
					$threshold_reached=1;
Packit 57988d
					if ($Domains{$Line}) {
Packit 57988d
						print "\t" . $Domains{$Line} . " [$Line] - ". $ChkuserAcceptedNullSenderFrom{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
					else {
Packit 57988d
						print "\t" . $Line . " - ". $ChkuserAcceptedNullSenderFrom{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
				}
Packit 57988d
			}
Packit 57988d
			if ($threshold_reached < 1) {
Packit 57988d
				print "\t" . "None found above the threshold\n";
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
	}
Packit 57988d
Packit 57988d
	if ( $ShowChkuserRejectedSender ) {
Packit 57988d
		if ( (keys %ChkuserRejectedSenderFrom) ) {
Packit 57988d
			print "\nChkuser rejected senders from (Threshold of " . $ChkuserRejectedSenderFromThreshold . "):\n";
Packit 57988d
			$threshold_reached=0;
Packit 57988d
			foreach $Line (sort {$ChkuserRejectedSenderFrom{$b} <=> $ChkuserRejectedSenderFrom{$a}} keys %ChkuserRejectedSenderFrom) {
Packit 57988d
				if ($ChkuserRejectedSenderFrom{$Line} >= $ChkuserRejectedSenderFromThreshold) {
Packit 57988d
					$threshold_reached=1;
Packit 57988d
					if ($Domains{$Line}) {
Packit 57988d
					print "\t" . $Domains{$Line} . " [$Line] - ". $ChkuserRejectedSenderFrom{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
					else {
Packit 57988d
					print "\t" . $Line . " - ". $ChkuserRejectedSenderFrom{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
				}
Packit 57988d
			}
Packit 57988d
			if ($threshold_reached < 1) {
Packit 57988d
				print "\t" . "None found above the threshold\n";
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
		if ( (keys %ChkuserRejectedSenderRemote) ) {
Packit 57988d
			print "\nChkuser rejected senders remote (Threshold of " . $ChkuserRejectedSenderRemoteThreshold . "):\n";
Packit 57988d
			$threshold_reached=0;
Packit 57988d
			foreach $Line (sort {$ChkuserRejectedSenderRemote{$b} <=> $ChkuserRejectedSenderRemote{$a}} keys %ChkuserRejectedSenderRemote) {
Packit 57988d
				if ($ChkuserRejectedSenderRemote{$Line} >= $ChkuserRejectedSenderRemoteThreshold) {
Packit 57988d
					$threshold_reached=1;
Packit 57988d
					if ($Domains{$Line}) {
Packit 57988d
						print "\t" . $Domains{$Line} . " [$Line] - ". $ChkuserRejectedSenderRemote{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
					else {
Packit 57988d
						print "\t" . $Line . " - ". $ChkuserRejectedSenderRemote{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
				}
Packit 57988d
			}
Packit 57988d
			if ($threshold_reached < 1) {
Packit 57988d
				print "\t" . "None found above the threshold\n";
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
Packit 57988d
		if ( (keys %ChkuserRejectedSenderReason) ) {
Packit 57988d
			print "\nChkuser rejected senders reason (Threshold of " . $ChkuserRejectedSenderReasonThreshold . "):\n";
Packit 57988d
			$threshold_reached=0;
Packit 57988d
			foreach $Line (sort {$ChkuserRejectedSenderReason{$b} <=> $ChkuserRejectedSenderReason{$a}} keys %ChkuserRejectedSenderReason) {
Packit 57988d
				if ($ChkuserRejectedSenderReason{$Line} >= $ChkuserRejectedSenderReasonThreshold) {
Packit 57988d
					$threshold_reached=1;
Packit 57988d
					if ($Domains{$Line}) {
Packit 57988d
						print "\t" . $Domains{$Line} . " [$Line] - ". $ChkuserRejectedSenderReason{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
					else {
Packit 57988d
						print "\t" . $Line . " - ". $ChkuserRejectedSenderReason{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
				}
Packit 57988d
			}
Packit 57988d
			if ($threshold_reached < 1) {
Packit 57988d
				print "\t" . "None found above the threshold\n";
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
	}
Packit 57988d
Packit 57988d
	# simscan
Packit 57988d
	if ( (keys %Simscan) ) {
Packit 57988d
		print "\nSimscan Viruses (Threshold of " . $SimscanThreshold . "):\n";
Packit 57988d
		$threshold_reached=0;
Packit 57988d
		foreach $Line (sort {$Simscan{$b} <=> $Simscan{$a}} keys %Simscan) {
Packit 57988d
			if ($Simscan{$Line} >= $SimscanThreshold) {
Packit 57988d
				$threshold_reached=1;
Packit 57988d
				if ($Domains{$Line}) {
Packit 57988d
					print "\t" . $Domains{$Line} . " [$Line] - ". $Simscan{$Line} . " Time(s)\n";
Packit 57988d
				}
Packit 57988d
				else {
Packit 57988d
					print "\t" . $Line . " - ". $Simscan{$Line} . " Time(s)\n";
Packit 57988d
				}
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
		if ($threshold_reached < 1) {
Packit 57988d
			print "\t" . "None found above the threshold\n";
Packit 57988d
		}
Packit 57988d
	}
Packit 57988d
Packit 57988d
	# simscan from
Packit 57988d
	if ( (keys %SimscanFrom) ) {
Packit 57988d
		print "\nSimscan Viruses From (Threshold of " . $SimscanFromThreshold . "):\n";
Packit 57988d
		$threshold_reached=0;
Packit 57988d
		foreach $Line (sort {$SimscanFrom{$b} <=> $SimscanFrom{$a}} keys %SimscanFrom) {
Packit 57988d
			if ($SimscanFrom{$Line} >= $SimscanFromThreshold) {
Packit 57988d
				$threshold_reached=1;
Packit 57988d
				if ($Domains{$Line}) {
Packit 57988d
					print "\t" . $Domains{$Line} . " [$Line] - ". $SimscanFrom{$Line} . " Time(s)\n";
Packit 57988d
				}
Packit 57988d
				else {
Packit 57988d
					print "\t" . $Line . " - ". $SimscanFrom{$Line} . " Time(s)\n";
Packit 57988d
				}
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
		if ($threshold_reached < 1) {
Packit 57988d
			print "\t" . "None found above the threshold\n";
Packit 57988d
		}
Packit 57988d
	}
Packit 57988d
Packit 57988d
	# simscan to
Packit 57988d
	if ( (keys %SimscanTo) ) {
Packit 57988d
		print "\nSimscan Viruses To (Threshold of " . $SimscanToThreshold . "):\n";
Packit 57988d
		$threshold_reached=0;
Packit 57988d
		foreach $Line (sort {$SimscanTo{$b} <=> $SimscanTo{$a}} keys %SimscanTo) {
Packit 57988d
			if ($SimscanTo{$Line} >= $SimscanToThreshold) {
Packit 57988d
				$threshold_reached=1;
Packit 57988d
				if ($Domains{$Line}) {
Packit 57988d
					print "\t" . $Domains{$Line} . " [$Line] - ". $SimscanTo{$Line} . " Time(s)\n";
Packit 57988d
				}
Packit 57988d
				else {
Packit 57988d
					print "\t" . $Line . " - ". $SimscanTo{$Line} . " Time(s)\n";
Packit 57988d
				}
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
		if ($threshold_reached < 1) {
Packit 57988d
			print "\t" . "None found above the threshold\n";
Packit 57988d
		}
Packit 57988d
	}
Packit 57988d
Packit 57988d
	# simscan attach
Packit 57988d
	if ( (keys %SimscanAttach) ) {
Packit 57988d
		print "\nSimscan Attachments (Threshold of " . $SimscanAttachThreshold . "):\n";
Packit 57988d
		$threshold_reached=0;
Packit 57988d
		foreach $Line (sort {$SimscanAttach{$b} <=> $SimscanAttach{$a}} keys %SimscanAttach) {
Packit 57988d
			if ($SimscanAttach{$Line} >= $SimscanAttachThreshold) {
Packit 57988d
				$threshold_reached=1;
Packit 57988d
				if ($Domains{$Line}) {
Packit 57988d
					print "\t" . $Domains{$Line} . " [$Line] - ". $SimscanAttach{$Line} . " Time(s)\n";
Packit 57988d
				}
Packit 57988d
				else {
Packit 57988d
					print "\t" . $Line . " - ". $SimscanAttach{$Line} . " Time(s)\n";
Packit 57988d
				}
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
		if ($threshold_reached < 1) {
Packit 57988d
			print "\t" . "None found above the threshold\n";
Packit 57988d
		}
Packit 57988d
	}
Packit 57988d
Packit 57988d
	# simscan attach from
Packit 57988d
	if ( (keys %SimscanAttachFrom) ) {
Packit 57988d
		print "\nSimscan Attachments From (Threshold of " . $SimscanAttachThreshold . "):\n";
Packit 57988d
		$threshold_reached=0;
Packit 57988d
		foreach $Line (sort {$SimscanAttachFrom{$b} <=> $SimscanAttachFrom{$a}} keys %SimscanAttachFrom) {
Packit 57988d
			if ($SimscanAttachFrom{$Line} >= $SimscanAttachThreshold) {
Packit 57988d
				$threshold_reached=1;
Packit 57988d
				if ($Domains{$Line}) {
Packit 57988d
					print "\t" . $Domains{$Line} . " [$Line] - ". $SimscanAttachFrom{$Line} . " Time(s)\n";
Packit 57988d
				}
Packit 57988d
				else {
Packit 57988d
					print "\t" . $Line . " - ". $SimscanAttachFrom{$Line} . " Time(s)\n";
Packit 57988d
				}
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
		if ($threshold_reached < 1) {
Packit 57988d
			print "\t" . "None found above the threshold\n";
Packit 57988d
		}
Packit 57988d
	}
Packit 57988d
Packit 57988d
	# simscan attach to
Packit 57988d
	if ( (keys %SimscanAttachTo) ) {
Packit 57988d
		print "\nSimscan Attachments To (Threshold of " . $SimscanAttachThreshold . "):\n";
Packit 57988d
		$threshold_reached=0;
Packit 57988d
		foreach $Line (sort {$SimscanAttachTo{$b} <=> $SimscanAttachTo{$a}} keys %SimscanAttachTo) {
Packit 57988d
			if ($SimscanAttachTo{$Line} >= $SimscanAttachThreshold) {
Packit 57988d
				$threshold_reached=1;
Packit 57988d
				if ($Domains{$Line}) {
Packit 57988d
					print "\t" . $Domains{$Line} . " [$Line] - ". $SimscanAttachTo{$Line} . " Time(s)\n";
Packit 57988d
				}
Packit 57988d
				else {
Packit 57988d
					print "\t" . $Line . " - ". $SimscanAttachTo{$Line} . " Time(s)\n";
Packit 57988d
				}
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
		if ($threshold_reached < 1) {
Packit 57988d
			print "\t" . "None found above the threshold\n";
Packit 57988d
		}
Packit 57988d
	}
Packit 57988d
Packit 57988d
	# simscan regex
Packit 57988d
	if ( (keys %SimscanRegex) ) {
Packit 57988d
		print "\nSimscan Regex (Threshold of " . $SimscanRegexThreshold . "):\n";
Packit 57988d
		$threshold_reached=0;
Packit 57988d
		foreach $Line (sort {$SimscanRegex{$b} <=> $SimscanRegex{$a}} keys %SimscanRegex) {
Packit 57988d
			if ($SimscanRegex{$Line} >= $SimscanRegexThreshold) {
Packit 57988d
				$threshold_reached=1;
Packit 57988d
				if ($Domains{$Line}) {
Packit 57988d
					print "\t" . $Domains{$Line} . " [$Line] - ". $SimscanRegex{$Line} . " Time(s)\n";
Packit 57988d
				}
Packit 57988d
				else {
Packit 57988d
					print "\t" . $Line . " - ". $SimscanRegex{$Line} . " Time(s)\n";
Packit 57988d
				}
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
		if ($threshold_reached < 1) {
Packit 57988d
			print "\t" . "None found above the threshold\n";
Packit 57988d
		}
Packit 57988d
	}
Packit 57988d
Packit 57988d
	# simscan regex from
Packit 57988d
	if ( (keys %SimscanRegexFrom) ) {
Packit 57988d
		print "\nSimscan Regex From (Threshold of " . $SimscanRegexThreshold . "):\n";
Packit 57988d
		$threshold_reached=0;
Packit 57988d
		foreach $Line (sort {$SimscanRegexFrom{$b} <=> $SimscanRegexFrom{$a}} keys %SimscanRegexFrom) {
Packit 57988d
			if ($SimscanRegexFrom{$Line} >= $SimscanRegexThreshold) {
Packit 57988d
				$threshold_reached=1;
Packit 57988d
				if ($Domains{$Line}) {
Packit 57988d
					print "\t" . $Domains{$Line} . " [$Line] - ". $SimscanRegexFrom{$Line} . " Time(s)\n";
Packit 57988d
				}
Packit 57988d
				else {
Packit 57988d
					print "\t" . $Line . " - ". $SimscanRegexFrom{$Line} . " Time(s)\n";
Packit 57988d
				}
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
		if ($threshold_reached < 1) {
Packit 57988d
			print "\t" . "None found above the threshold\n";
Packit 57988d
		}
Packit 57988d
	}
Packit 57988d
Packit 57988d
	# simscan regex to
Packit 57988d
	if ( (keys %SimscanRegexTo) ) {
Packit 57988d
		print "\nSimscan Regex To (Threshold of " . $SimscanRegexThreshold . "):\n";
Packit 57988d
		$threshold_reached=0;
Packit 57988d
		foreach $Line (sort {$SimscanRegexTo{$b} <=> $SimscanRegexTo{$a}} keys %SimscanRegexTo) {
Packit 57988d
			if ($SimscanRegexTo{$Line} >= $SimscanRegexThreshold) {
Packit 57988d
				$threshold_reached=1;
Packit 57988d
				if ($Domains{$Line}) {
Packit 57988d
					print "\t" . $Domains{$Line} . " [$Line] - ". $SimscanRegexTo{$Line} . " Time(s)\n";
Packit 57988d
				}
Packit 57988d
				else {
Packit 57988d
					print "\t" . $Line . " - ". $SimscanRegexTo{$Line} . " Time(s)\n";
Packit 57988d
				}
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
		if ($threshold_reached < 1) {
Packit 57988d
			print "\t" . "None found above the threshold\n";
Packit 57988d
		}
Packit 57988d
	}
Packit 57988d
	if($ShowSimscanPassthru) {
Packit 57988d
		# simscan passthru ip from
Packit 57988d
		if ( (keys %SimscanPassthruIpFrom) ) {
Packit 57988d
			print "\nSimscan Passthru Ip From (Threshold of " . $SimscanPassthruIpFromThreshold . "):\n";
Packit 57988d
			$threshold_reached=0;
Packit 57988d
			foreach $Line (sort {$SimscanPassthruIpFrom{$b} <=> $SimscanPassthruIpFrom{$a}} keys %SimscanPassthruIpFrom) {
Packit 57988d
				if ($SimscanPassthruIpFrom{$Line} >= $SimscanPassthruIpFromThreshold) {
Packit 57988d
					$threshold_reached=1;
Packit 57988d
					if ($Domains{$Line}) {
Packit 57988d
						print "\t" . $Domains{$Line} . " [$Line] - ". $SimscanPassthruIpFrom{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
					else {
Packit 57988d
						print "\t" . $Line . " - ". $SimscanPassthruIpFrom{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
				}
Packit 57988d
			}
Packit 57988d
			if ($threshold_reached < 1) {
Packit 57988d
				print "\t" . "None found above the threshold\n";
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
Packit 57988d
		# simscan passthru from
Packit 57988d
		if ( (keys %SimscanPassthruFrom) ) {
Packit 57988d
			print "\nSimscan Passthru From (Threshold of " . $SimscanPassthruFromThreshold . "):\n";
Packit 57988d
			$threshold_reached=0;
Packit 57988d
			foreach $Line (sort {$SimscanPassthruFrom{$b} <=> $SimscanPassthruFrom{$a}} keys %SimscanPassthruFrom) {
Packit 57988d
				if ($SimscanPassthruFrom{$Line} >= $SimscanPassthruFromThreshold) {
Packit 57988d
					$threshold_reached=1;
Packit 57988d
					if ($Domains{$Line}) {
Packit 57988d
						print "\t" . $Domains{$Line} . " [$Line] - ". $SimscanPassthruFrom{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
					else {
Packit 57988d
						print "\t" . $Line . " - ". $SimscanPassthruFrom{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
				}
Packit 57988d
			}
Packit 57988d
			if ($threshold_reached < 1) {
Packit 57988d
				print "\t" . "None found above the threshold\n";
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
Packit 57988d
		# simscan passthru to
Packit 57988d
		if ( (keys %SimscanPassthruTo) ) {
Packit 57988d
			print "\nSimscan Passthru To (Threshold of " . $SimscanPassthruToThreshold . "):\n";
Packit 57988d
			$threshold_reached=0;
Packit 57988d
			foreach $Line (sort {$SimscanPassthruTo{$b} <=> $SimscanPassthruTo{$a}} keys %SimscanPassthruTo) {
Packit 57988d
				if ($SimscanPassthruTo{$Line} >= $SimscanPassthruToThreshold) {
Packit 57988d
					$threshold_reached=1;
Packit 57988d
					if ($Domains{$Line}) {
Packit 57988d
						print "\t" . $Domains{$Line} . " [$Line] - ". $SimscanPassthruTo{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
					else {
Packit 57988d
						print "\t" . $Line . " - ". $SimscanPassthruTo{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
				}
Packit 57988d
			}
Packit 57988d
			if ($threshold_reached < 1) {
Packit 57988d
				print "\t" . "None found above the threshold\n";
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
	}
Packit 57988d
	if ($ShowSimscanSpamReject) {
Packit 57988d
		# simscan spamreject ip from
Packit 57988d
		if ( (keys %SimscanSpamrejectIpFrom) ) {
Packit 57988d
			print "\nSimscan Spam reject Ip From (Threshold of " . $SimscanSpamRejectIpFromThreshold . "):\n";
Packit 57988d
			$threshold_reached=0;
Packit 57988d
			foreach $Line (sort {$SimscanSpamrejectIpFrom{$b} <=> $SimscanSpamrejectIpFrom{$a}} keys %SimscanSpamrejectIpFrom) {
Packit 57988d
				if ($SimscanSpamrejectIpFrom{$Line} >= $SimscanSpamRejectIpFromThreshold) {
Packit 57988d
					$threshold_reached=1;
Packit 57988d
					if ($Domains{$Line}) {
Packit 57988d
						print "\t" . $Domains{$Line} . " [$Line] - ". $SimscanSpamrejectIpFrom{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
					else {
Packit 57988d
						print "\t" . $Line . " - ". $SimscanSpamrejectIpFrom{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
				}
Packit 57988d
			}
Packit 57988d
			if ($threshold_reached < 1) {
Packit 57988d
				print "\t" . "None found above the threshold\n";
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
Packit 57988d
		# simscan spamreject from
Packit 57988d
		if ( (keys %SimscanSpamrejectFrom) ) {
Packit 57988d
			print "\nSimscan Spam reject From (Threshold of " . $SimscanSpamRejectFromThreshold . "):\n";
Packit 57988d
			$threshold_reached=0;
Packit 57988d
			foreach $Line (sort {$SimscanSpamrejectFrom{$b} <=> $SimscanSpamrejectFrom{$a}} keys %SimscanSpamrejectFrom) {
Packit 57988d
				if ($SimscanSpamrejectFrom{$Line} >= $SimscanSpamRejectFromThreshold) {
Packit 57988d
					$threshold_reached=1;
Packit 57988d
					if ($Domains{$Line}) {
Packit 57988d
						print "\t" . $Domains{$Line} . " [$Line] - ". $SimscanSpamrejectFrom{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
					else {
Packit 57988d
						print "\t" . $Line . " - ". $SimscanSpamrejectFrom{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
				}
Packit 57988d
			}
Packit 57988d
			if ($threshold_reached < 1) {
Packit 57988d
				print "\t" . "None found above the threshold\n";
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
Packit 57988d
		# simscan spamreject to
Packit 57988d
		if ( (keys %SimscanSpamrejectTo) ) {
Packit 57988d
			print "\nSimscan Spam reject To (Threshold of " . $SimscanSpamRejectToThreshold . "):\n";
Packit 57988d
			$threshold_reached=0;
Packit 57988d
			foreach $Line (sort {$SimscanSpamrejectTo{$b} <=> $SimscanSpamrejectTo{$a}} keys %SimscanSpamrejectTo) {
Packit 57988d
				if ($SimscanSpamrejectTo{$Line} >= $SimscanSpamRejectToThreshold) {
Packit 57988d
					$threshold_reached=1;
Packit 57988d
					if ($Domains{$Line}) {
Packit 57988d
						print "\t" . $Domains{$Line} . " [$Line] - ". $SimscanSpamrejectTo{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
					else {
Packit 57988d
						print "\t" . $Line . " - ". $SimscanSpamrejectTo{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
				}
Packit 57988d
			}
Packit 57988d
			if ($threshold_reached < 1) {
Packit 57988d
				print "\t" . "None found above the threshold\n";
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
	}
Packit 57988d
Packit 57988d
	if ($ShowSimscanSpamDropped) {
Packit 57988d
		# simscan spamdropped ip from
Packit 57988d
		if ( (keys %SimscanSpamdroppedIpFrom) ) {
Packit 57988d
			print "\nSimscan Spam dropped Ip From (Threshold of " . $SimscanSpamDroppedIpFromThreshold . "):\n";
Packit 57988d
			$threshold_reached=0;
Packit 57988d
			foreach $Line (sort {$SimscanSpamdroppedIpFrom{$b} <=> $SimscanSpamdroppedIpFrom{$a}} keys %SimscanSpamdroppedIpFrom) {
Packit 57988d
				if ($SimscanSpamdroppedIpFrom{$Line} >= $SimscanSpamDroppedIpFromThreshold) {
Packit 57988d
					$threshold_reached=1;
Packit 57988d
					if ($Domains{$Line}) {
Packit 57988d
						print "\t" . $Domains{$Line} . " [$Line] - ". $SimscanSpamdroppedIpFrom{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
					else {
Packit 57988d
						print "\t" . $Line . " - ". $SimscanSpamdroppedIpFrom{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
				}
Packit 57988d
			}
Packit 57988d
			if ($threshold_reached < 1) {
Packit 57988d
				print "\t" . "None found above the threshold\n";
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
Packit 57988d
		# simscan spam dropped from
Packit 57988d
		if ( (keys %SimscanSpamdroppedFrom) ) {
Packit 57988d
			print "\nSimscan Spam dropped From (Threshold of " . $SimscanSpamDroppedFromThreshold . "):\n";
Packit 57988d
			$threshold_reached=0;
Packit 57988d
			foreach $Line (sort {$SimscanSpamdroppedFrom{$b} <=> $SimscanSpamdroppedFrom{$a}} keys %SimscanSpamdroppedFrom) {
Packit 57988d
				if ($SimscanSpamdroppedFrom{$Line} >= $SimscanSpamDroppedFromThreshold) {
Packit 57988d
					$threshold_reached=1;
Packit 57988d
					if ($Domains{$Line}) {
Packit 57988d
						print "\t" . $Domains{$Line} . " [$Line] - ". $SimscanSpamdroppedFrom{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
					else {
Packit 57988d
						print "\t" . $Line . " - ". $SimscanSpamdroppedFrom{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
				}
Packit 57988d
			}
Packit 57988d
			if ($threshold_reached < 1) {
Packit 57988d
				print "\t" . "None found above the threshold\n";
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
Packit 57988d
		# simscan spamdropped to
Packit 57988d
		if ( (keys %SimscanSpamdroppedTo) ) {
Packit 57988d
			print "\nSimscan Spam dropped To (Threshold of " . $SimscanSpamDroppedToThreshold . "):\n";
Packit 57988d
			$threshold_reached=0;
Packit 57988d
			foreach $Line (sort {$SimscanSpamdroppedTo{$b} <=> $SimscanSpamdroppedTo{$a}} keys %SimscanSpamdroppedTo) {
Packit 57988d
				if ($SimscanSpamdroppedTo{$Line} >= $SimscanSpamDroppedToThreshold) {
Packit 57988d
					$threshold_reached=1;
Packit 57988d
					if ($Domains{$Line}) {
Packit 57988d
						print "\t" . $Domains{$Line} . " [$Line] - ". $SimscanSpamdroppedTo{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
					else {
Packit 57988d
						print "\t" . $Line . " - ". $SimscanSpamdroppedTo{$Line} . " Time(s)\n";
Packit 57988d
					}
Packit 57988d
				}
Packit 57988d
			}
Packit 57988d
			if ($threshold_reached < 1) {
Packit 57988d
				print "\t" . "None found above the threshold\n";
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
	}
Packit 57988d
Packit 57988d
	# qmail-smtpd reports
Packit 57988d
	if ( keys %Badmailfromemail) {
Packit 57988d
		print "\nEmails caught by badmailfrom by email (Threshold of " . $BadMailFromEmailThreshold . "):\n";
Packit 57988d
		$threshold_reached=0;
Packit 57988d
		foreach $Line (sort {$Badmailfromemail{$b} <=> $Badmailfromemail{$a}} keys %Badmailfromemail) {
Packit 57988d
			if ($Badmailfromemail{$Line} >= $BadMailFromEmailThreshold) {
Packit 57988d
				$threshold_reached=1;
Packit 57988d
				print "\t" . $Line . " - ". $Badmailfromemail{$Line} . " Time(s)\n";
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
		if ($threshold_reached < 1) {
Packit 57988d
			print "\t" . "None found above the threshold\n";
Packit 57988d
		}
Packit 57988d
	}
Packit 57988d
	if ( keys %Badmailfromip) {
Packit 57988d
		print "\nEmails caught by badmailfrom by ip: (Threshold of " . $BadMailFromIpThreshold . ")\n";
Packit 57988d
		$threshold_reached=0;
Packit 57988d
		foreach $Line (sort {$Badmailfromip{$b} <=> $Badmailfromip{$a}} keys %Badmailfromip) {
Packit 57988d
			if ($Badmailfromip{$Line} >= $BadMailFromIpThreshold) {
Packit 57988d
				$threshold_reached=1;
Packit 57988d
				print "\t" . $Line . " - ". $Badmailfromip{$Line} . " Time(s)\n";
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
		if ($threshold_reached < 1) {
Packit 57988d
			print "\t" . "None found above the threshold\n";
Packit 57988d
		}
Packit 57988d
	}
Packit 57988d
Packit 57988d
	if ( keys %Badmailtoemail) {
Packit 57988d
		print "\nEmails caught by badmailto by email (Threshold of " . $BadMailToEmailThreshold . "):\n";
Packit 57988d
		$threshold_reached=0;
Packit 57988d
		foreach $Line (sort {$Badmailtoemail{$b} <=> $Badmailtoemail{$a}} keys %Badmailtoemail) {
Packit 57988d
			if ($Badmailtoemail{$Line} >= $BadMailToEmailThreshold) {
Packit 57988d
				$threshold_reached=1;
Packit 57988d
				print "\t" . $Line . " - ". $Badmailtoemail{$Line} . " Time(s)\n";
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
		if ($threshold_reached < 1) {
Packit 57988d
			print "\t" . "None found above the threshold\n";
Packit 57988d
		}
Packit 57988d
	}
Packit 57988d
	if ( keys %Badmailtoip) {
Packit 57988d
		print "\nEmails caught by badmailto by ip (Threshold of " . $BadMailToIpThreshold . "):\n";
Packit 57988d
		$threshold_reached=0;
Packit 57988d
		foreach $Line (sort {$Badmailtoip{$b} <=> $Badmailtoip{$a}} keys %Badmailtoip) {
Packit 57988d
			if ($Badmailtoip{$Line} >= $BadMailToIpThreshold) {
Packit 57988d
				$threshold_reached=1;
Packit 57988d
				print "\t" . $Line . " - ". $Badmailtoip{$Line} . " Time(s)\n";
Packit 57988d
			}
Packit 57988d
		}
Packit 57988d
		if ($threshold_reached < 1) {
Packit 57988d
			print "\t" . "None found above the threshold\n";
Packit 57988d
		}
Packit 57988d
	}
Packit 57988d
}
Packit 57988d
# end high detail
Packit 57988d
Packit 57988d
# show totals
Packit 57988d
if ($TotalFrom or $TotalTo) {
Packit 57988d
	print "\nTotals:\n";
Packit 57988d
	printf("%27s %9s\n", "Remote connections:", $TotalFrom);
Packit 57988d
	printf("%27s %9s\n", "Local connections:", $TotalTo);
Packit 57988d
}
Packit 57988d
if ($TotalBlocked) {
Packit 57988d
	printf("%27s %9s\n", "RBL blocked:", $TotalBlocked);
Packit 57988d
	printf("%27s %9s\n", "Grand Total From:", $GrandTotalFrom);
Packit 57988d
	printf("%27s %2.3f %%\n", "Percentage blocked:", (($TotalBlocked/$GrandTotalFrom)*100));
Packit 57988d
}
Packit 57988d
Packit 57988d
print "\nChkuser Totals:\n";
Packit 57988d
printf("%27s %9s\n", "Rejected:", ($TotalReject>0 ? $TotalReject : 0));
Packit 57988d
printf("%27s %9s\n", "Accepted:", ($TotalAccept>0 ? $TotalAccept : 0));
Packit 57988d
printf("%27s %9s\n", "Total accepted relays:", ($TotalAcceptRelay>0 ? $TotalAcceptRelay : 0));
Packit 57988d
printf("%27s %9s\n", "Total rejected relays:", ($TotalRejectRelay>0 ? $TotalRejectRelay : 0));
Packit 57988d
printf("%27s %9s\n", "Total viruses caught:", ($SimscanVirusTotal>0 ? $SimscanVirusTotal : 0));
Packit 57988d
Packit 57988d
if ($TotalNoAuthResource) {
Packit 57988d
	print "\nTotal No Auth Resources: $TotalNoAuthResource\n";
Packit 57988d
}
Packit 57988d
if ($TotalOverquota) {
Packit 57988d
	print "\nTotal Over quota: $TotalOverquota\n";
Packit 57988d
}
Packit 57988d
if ($TotalRejectedIntrusion) {
Packit 57988d
	print "\nTotal Rejected Intrusions: $TotalRejectedIntrusion\n";
Packit 57988d
}
Packit 57988d
if ($SimscanTotal) {
Packit 57988d
	print "\nSimscan Total: $SimscanTotal\n";
Packit 57988d
	$sct = sprintf("%.2f", ($Totalscantimevirus + $Totalscantimeattach + $Totalscantimeregex + $Totalscantimespam) );
Packit 57988d
	$Maxscantimevirus = sprintf("%.2f", $Maxscantimevirus);
Packit 57988d
	printf("%30s %9s", "Maximum Virus Scanning Time:", $Maxscantimevirus);
Packit 57988d
	print "\n";
Packit 57988d
	$Maxscantimeattach = sprintf("%.2f", $Maxscantimeattach);
Packit 57988d
	printf("%30s %9s", "Maximum Attach Scanning Time:", $Maxscantimeattach);
Packit 57988d
	print "\n";
Packit 57988d
	$Maxscantimeregex = sprintf("%.2f", $Maxscantimeregex);
Packit 57988d
	printf("%30s %9s", "Maximum Regex Scanning Time:", $Maxscantimeregex);
Packit 57988d
	print "\n";
Packit 57988d
	$Maxscantimespam = sprintf("%.2f", $Maxscantimespam);
Packit 57988d
	printf("%30s %9s", "Maximum Spam Scanning Time:", $Maxscantimespam);
Packit 57988d
	print "\n";
Packit 57988d
	$Totalscantimevirus = sprintf("%.2f", $Totalscantimevirus);
Packit 57988d
	printf("%30s %9s", "Total Virus Scanning Time:", $Totalscantimevirus);
Packit 57988d
	print "\n";
Packit 57988d
	$Totalscantimeattach = sprintf("%.2f", $Totalscantimeattach);
Packit 57988d
	printf("%30s %9s", "Total Attach Scanning Time:", $Totalscantimeattach);
Packit 57988d
	print "\n";
Packit 57988d
	$Totalscantimeregex = sprintf("%.2f", $Totalscantimeregex);
Packit 57988d
	printf("%30s %9s", "Total Regex Scanning Time:", $Totalscantimeregex);
Packit 57988d
	print "\n";
Packit 57988d
	$Totalscantimespam = sprintf("%.2f", $Totalscantimespam);
Packit 57988d
	printf("%30s %9s", "Total Spam Scanning Time:", $Totalscantimespam);
Packit 57988d
	print "\n";
Packit 57988d
	printf("%30s %9s", "Total Scanning Time:", $sct);
Packit 57988d
	print "\n";
Packit 57988d
}
Packit 57988d
Packit 57988d
if( $SimscanSpamrejectTotal ) {
Packit 57988d
	print "\nSimscan Spam Reject: $SimscanSpamrejectTotal emails\n";
Packit 57988d
}
Packit 57988d
Packit 57988d
if( $SimscanCleanTotal ) {
Packit 57988d
	print "\nSimscan Clean: $SimscanCleanTotal emails\n";
Packit 57988d
	if ( $SimscanSpamrejectTotal ) {
Packit 57988d
		printf("%30s %2.3f %%\n", "Percentage clean:", (($SimscanCleanTotal/($SimscanSpamrejectTotal+$SimscanCleanTotal))*100));
Packit 57988d
	}
Packit 57988d
}
Packit 57988d
Packit 57988d
if( $SimscanRelayClientTotal ) {
Packit 57988d
	print "\nSimscan RelayClient: $SimscanRelayClientTotal emails\n";
Packit 57988d
}
Packit 57988d
Packit 57988d
# simscan quarantine
Packit 57988d
if ( $Quarantine ) {
Packit 57988d
	print "\nSimscan Quarantine: $Quarantine emails\n";
Packit 57988d
}
Packit 57988d
Packit 57988d
Packit 57988d
if ($Badmailtotot) {
Packit 57988d
	print "\nTotal badmailto: $Badmailtotot\n";
Packit 57988d
}
Packit 57988d
if ($Badmailfromtot) {
Packit 57988d
	print "\nTotal badmailfrom: $Badmailfromtot\n";
Packit 57988d
}
Packit 57988d
Packit 57988d
if ($Total) {
Packit 57988d
	print "\nTotal mail: $Total\n";
Packit 57988d
}
Packit 57988d
Packit 57988d
# warnings
Packit 57988d
if ( (keys %Warnings) ) {
Packit 57988d
	print "\nWarnings:\n";
Packit 57988d
	foreach $Line (sort {$Warnings{$b} <=> $Warnings{$a}} keys %Warnings) {
Packit 57988d
		print "\t" . $Line . " - ". $Warnings{$Line} . " Time(s)\n";
Packit 57988d
	}
Packit 57988d
}
Packit 57988d
Packit 57988d
# other
Packit 57988d
if (($#OtherList >= 0) and (! $IgnoreUnmatched)) {
Packit 57988d
	print "\n**Unmatched Entries**\n";
Packit 57988d
	print @OtherList;
Packit 57988d
}
Packit 57988d
Packit 57988d
exit(0);
Packit 57988d
Packit 57988d
# vi: shiftwidth=3 tabstop=3 syntax=perl et
Packit 57988d
# Local Variables:
Packit 57988d
# mode: perl
Packit 57988d
# perl-indent-level: 3
Packit 57988d
# indent-tabs-mode: nil
Packit 57988d
# End: