|
Server : Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8e-fips-rhel5 DAV/2 PHP/5.2.17 System : Linux localhost 2.6.18-419.el5 #1 SMP Fri Feb 24 22:47:42 UTC 2017 x86_64 User : nobody ( 99) PHP Version : 5.2.17 Disable Function : NONE Directory : /usr/share/logwatch/scripts/services/ |
Upload File : |
##########################################################################
# $Id: qmail,v 1.11 2005/08/23 22:11:32 mike Exp $
##########################################################################
$Detail = $ENV{'LOGWATCH_DETAIL_LEVEL'} || 0;
$QmailDetail = $ENV{'qmail_high_detail'};
$QmailThreshold = $ENV{'threshold'};
$RemoteThreshold = $ENV{'remote_threshold'};
$LocalThreshold = $ENV{'local_threshold'};
$FromThreshold = $ENV{'from_threshold'};
$IgnoreUnmatched = $ENV{'qmail_ignore_unmatched'} || 0;
while (defined($ThisLine = <STDIN>)) {
if (
( $ThisLine =~ /new msg/ ) or
( $ThisLine =~ /status: / ) or
( $ThisLine =~ /bounce msg/ ) or
( $ThisLine =~ /triple bounce/ ) or
( $ThisLine =~ /tcpserver/ ) or
( $ThisLine =~ /end msg/ )
) {
# We don't care about these
} elsif (
($msgid,$DeliveryResponse,$Response) = ( $ThisLine =~ /delivery (\d+)\: (.*?)\:(.*)/ )
) {
if ( $Response =~ /did_/ ) {
# ignore these.
} else {
if ( ($ResponseCode) = ( $Response =~ /Remote_host_said\:_(\d{3})_/ ) ) {
$ServerResponses->{$DeliveryResponse}->{$ResponseCode}++;
} else {
if ( $DeliveryResponse =~ /failure/ ) {
$ResponseCode=511;
$ServerResponses->{$DeliveryResponse}->{$ResponseCode}++;
}
if ( $DeliveryResponse =~ /deferral/ ) {
$ResponseCode=443;
$ServerResponses->{$DeliveryResponse}->{$ResponseCode}++;
}
}
}
} elsif ( ($EmailFrom) = ( $ThisLine =~ /from \<(.*)\>/ ) ) {
$From{$EmailFrom}++;
} elsif ( ($ToLocal) = ( $ThisLine =~ /to local (.*)/ ) ) {
$Local{$ToLocal}++;
} elsif ( ($ToRemote) = ( $ThisLine =~ /to remote (.*)/ ) ) {
$Remote{$ToRemote}++;
} else {
# Report any unmatched entries...
push @OtherList,$ThisLine;
}
}
if ($QmailDetail >= 1) {
if ($QmailThreshold > 0) {
if (($RemoteThreshold < 0) or ($RemoteThreshold eq '')) {
$RemoteThreshold = $QmailThreshold;
}
if (($FromThreshold < 0) or ($FromThreshold eq '')) {
$FromThreshold = $QmailThreshold;
}
if (($LocalThreshold < 0) or ($LocalThreshold eq '')) {
$LocalThreshold = $QmailThreshold;
}
}
if (($RemoteThreshold < 0) or ($RemoteThreshold eq '')) {
$RemoteThreshold = 0;
}
if (($FromThreshold < 0) or ($FromThreshold eq '')) {
$FromThreshold = 0;
}
if (($LocalThreshold < 0) or ($LocalThreshold eq '')) {
$LocalThreshold = 0;
}
if ( (keys %From) ) {
print "\nEmails from (Threshold of " . $FromThreshold . "):\n";
$threshold_reached=0;
foreach $Line (sort {$a cmp $b} keys %From) {
if ($From{$Line} >= $FromThreshold) {
$threshold_reached=1;
print "\t" . $Line . " - ". $From{$Line} . " Time(s)\n";
}
}
if ($threshold_reached < 1) {
print "\t" . "None found above the threshold\n";
}
}
if ( (keys %Remote) ) {
print "\nEmails to Remote Server (Threshold of " . $RemoteThreshold . "):\n";
$threshold_reached=0;
foreach $Line (sort {$a cmp $b} keys %Remote) {
if ($Remote{$Line} >= $RemoteThreshold) {
$threshold_reached=1;
print "\t" . $Line . " - ". $Remote{$Line} . " Time(s)\n";
}
}
if ($threshold_reached < 1) {
print "\t" . "None found above the threshold\n";
}
}
if ( (keys %Local) ) {
print "\nEmails to Local Server (Threshold of " . $LocalThreshold . "):\n";
$threshold_reached=0;
foreach $Line (sort {$a cmp $b} keys %Local) {
if ($Local{$Line} >= $LocalThreshold) {
$threshold_reached=1;
print "\t" . $Line . " - ". $Local{$Line} . " Time(s)\n";
}
}
if ($threshold_reached < 1) {
print "\t" . "None found above the threshold\n";
}
}
}
if (keys %{$ServerResponses}) {
print "\nRemote Server Responses:\n";
foreach $Line (sort {$a cmp $b} keys %{$ServerResponses}) {
foreach $Detail (sort {$a cmp $b} keys %{$ServerResponses->{$Line}}) {
$ServerResponseTotal{$Line} += $ServerResponses->{$Line}->{$Detail};
$ServerResponseOverallTotal += $ServerResponses->{$Line}->{$Detail};
print "\t".ucfirst($Line)."(" . $Detail . ") - ". $ServerResponses->{$Line}->{$Detail} . " Time(s)\n";
}
}
print "\n\tPercentage(s):\n";
foreach $Details (sort {$a cmp $b} keys %ServerResponseTotal) {
$percentage = (($ServerResponseTotal{$Details} / $ServerResponseOverallTotal) * 100);
print "\t\t" . ucfirst($Details) . " - ";
printf("%.2f",$percentage);
print " %\n";
}
}
if (($#OtherList >= 0) and (not $IgnoreUnmatched)){
print "\n**Unmatched Entries**\n";
print @OtherList;
}
exit(0);
# vi: shiftwidth=3 tabstop=3 syntax=perl et