|
Packit |
57988d |
##########################################################################
|
|
Packit |
57988d |
# $Id$
|
|
Packit |
57988d |
##########################################################################
|
|
Packit |
57988d |
|
|
Packit |
57988d |
########################################################
|
|
Packit |
57988d |
# The pop-3 script was written by:
|
|
Packit |
57988d |
# Pawe³ Go³aszewski <blues@gda.pl>
|
|
Packit |
57988d |
########################################################
|
|
Packit |
57988d |
|
|
Packit |
57988d |
#######################################################
|
|
Packit |
57988d |
## Copyright (c) 2008 Pawe³ Go³aszewski
|
|
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 |
my $Debug = $ENV{'LOGWATCH_DEBUG'};
|
|
Packit |
57988d |
my $Detail = $ENV{'LOGWATCH_DETAIL_LEVEL'};
|
|
Packit |
57988d |
|
|
Packit |
57988d |
$ReadSocketError = 0;
|
|
Packit |
57988d |
$WriteSocketError = 0;
|
|
Packit |
57988d |
$Startups = 0;
|
|
Packit |
57988d |
$Shutdowns = 0;
|
|
Packit |
57988d |
$AuthDrivers = 0;
|
|
Packit |
57988d |
|
|
Packit |
57988d |
$sslTempkey = 0;
|
|
Packit |
57988d |
$OutOfMemory = 0;
|
|
Packit |
57988d |
|
|
Packit |
57988d |
#Make pseudo IPv6 to IPv4
|
|
Packit |
57988d |
sub LookupIPv46 {
|
|
Packit |
57988d |
my $IPv4Addr;
|
|
Packit |
57988d |
my $Addr = $_[0];
|
|
Packit |
57988d |
if ( ($IPv4Addr) = ($Addr =~ /::ffff:([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})/ ) ) {
|
|
Packit |
57988d |
return $IPv4Addr;
|
|
Packit |
57988d |
}
|
|
Packit |
57988d |
else {
|
|
Packit |
57988d |
return $Addr;
|
|
Packit |
57988d |
}
|
|
Packit |
57988d |
}
|
|
Packit |
57988d |
|
|
Packit |
57988d |
if ( $Debug >= 5 ) {
|
|
Packit |
57988d |
print STDERR "\n\nDEBUG \n\n";
|
|
Packit |
57988d |
}
|
|
Packit |
57988d |
|
|
Packit |
57988d |
while (defined($ThisLine = <STDIN>)) {
|
|
Packit |
57988d |
if (
|
|
Packit |
57988d |
($ThisLine =~ /^auth: PAM error: Authentication failure$/) or
|
|
Packit |
57988d |
($ThisLine =~ /^authcontext_new_user_pass: began session for/) or
|
|
Packit |
57988d |
($ThisLine =~ /^cclient_steal_lock: attempting to grab c-client lock from PID \d+$/) or
|
|
Packit |
57988d |
($ThisLine =~ /^getpeername: Socket operation on non-socket$/) or
|
|
Packit |
57988d |
($ThisLine =~ /^Initializing */) or
|
|
Packit |
57988d |
($ThisLine =~ /^Installing */) or
|
|
Packit |
57988d |
($ThisLine =~ /^ioabs_tcp_post_select: client .*: connection closed by peer$/) or
|
|
Packit |
57988d |
($ThisLine =~ /^listener_new: (.*:\d+): cannot obtain domain suffix for this address$/) or
|
|
Packit |
57988d |
($ThisLine =~ /^listener_new: (.*:\d+): using fallback domain suffix `(.*)'$/) or
|
|
Packit |
57988d |
($ThisLine =~ /^listener_new: gethostbyaddr\((.*)\): cannot resolve name$/) or
|
|
Packit |
57988d |
($ThisLine =~ /^(mailbox: )?open: No such file or directory$/) or
|
|
Packit |
57988d |
($ThisLine =~ /^(sktbuff|maildrop): write: Broken pipe$/) or
|
|
Packit |
57988d |
($ThisLine =~ /^maildrop: can't read message$/) or
|
|
Packit |
57988d |
($ThisLine =~ /^mailbox: mailbox content has been changed$/) or
|
|
Packit |
57988d |
($ThisLine =~ /^(sktbuff|maildrop): write: Connection reset by peer$/) or
|
|
Packit |
57988d |
($ThisLine =~ /^(sktbuff|maildrop): write: Connection timed out$/) or ($ThisLine =~ /^mailspool_build_index.*: skipping c-client metadata$/) or
|
|
Packit |
57988d |
($ThisLine =~ /^open: Permission denied$/) or
|
|
Packit |
57988d |
($ThisLine =~ /^read: Broken pipe$/) or
|
|
Packit |
57988d |
($ThisLine =~ /^read: Connection reset by peer$/) or
|
|
Packit |
57988d |
($ThisLine =~ /^spgetpwnam: can't find user: */) or
|
|
Packit |
57988d |
($ThisLine =~ /^sptls: SSL_accept error: (-|)\d+$/) or
|
|
Packit |
57988d |
($ThisLine =~ /^sptls: do need at least RSA or DSA cert\/key data$/) or
|
|
Packit |
57988d |
($ThisLine =~ /^tpop3d shutdown succeeded$/) or
|
|
Packit |
57988d |
($ThisLine =~ /tpop3d startup succeeded$/) or
|
|
Packit |
57988d |
($ThisLine =~ /^disconnected, user=/i) or
|
|
Packit |
57988d |
($ThisLine =~ /^timeout, user=/i) or
|
|
Packit |
57988d |
($ThisLine =~ /^(connection|disconnected), ip=/io)
|
|
Packit |
57988d |
) {
|
|
Packit |
57988d |
# Don't care about these...
|
|
Packit |
57988d |
} elsif (
|
|
Packit |
57988d |
(($User, $Host) = ( $ThisLine =~ /^user (.*?) authenticated - (.*)$/ )) or
|
|
Packit |
57988d |
(($User, $Host) = ( $ThisLine =~ /^fork_child: \[\d\].*\((.*)\): began session for `(.*)' with .*; child PID is \d+$/ ))
|
|
Packit |
57988d |
or (($User, $Host) = ( $ThisLine =~ /^LOGIN, user=([^ ,]+), ip=\[([^ ,]+)\](?:, port=\[\d+\])?$/ ))
|
|
Packit |
57988d |
) {
|
|
Packit |
57988d |
$Login{$User}{$Host}++;
|
|
Packit |
57988d |
} elsif ( ($User,$Downloaded,$DownloadSize,$Left,$LeftSize) = ( $ThisLine =~ /^Stats: (.*?) (.*?) (.*?) (.*?) (.*?)$/) ) {
|
|
Packit |
57988d |
$DownloadedMessages{$User} += $Downloaded;
|
|
Packit |
57988d |
$DownloadedMessagesSize{$User} += $DownloadSize;
|
|
Packit |
57988d |
$MessagesLeft{$User} = $Left;
|
|
Packit |
57988d |
$MboxSize{$User} = $LeftSize;
|
|
Packit |
57988d |
} elsif ( ($User, $Host) = ( $ThisLine =~ /^session ended for user (.*?) - (.*)/) ) {
|
|
Packit |
57988d |
$Logout{$User}{$Host}++;
|
|
Packit |
57988d |
$Logout2{$User}++;
|
|
Packit |
57988d |
$Connection{$Host}++;
|
|
Packit |
57988d |
} elsif ( ($Host) = ( $ThisLine =~ /^session ended - (.*)$/)
|
|
Packit |
57988d |
or ($Host) = ( $ThisLine =~ /^LOGOUT, ip=\[(.*)\]$/)
|
|
Packit |
57988d |
) {
|
|
Packit |
57988d |
$Logout{"UNKNOWN"}{$Host}++;
|
|
Packit |
57988d |
$Connection{$Host}++;
|
|
Packit |
57988d |
} elsif (
|
|
Packit |
57988d |
(($User,$Host,$DownloadSize,undef) = ( $ThisLine =~ /^connections_post_select: client \[\d+\](.*)\((.*)\): disconnected; (.*?)\/(.*?) bytes read\/written$/) ) or
|
|
Packit |
57988d |
(($Host,$User) = ( $ThisLine =~ /^connections_post_select: client \[\d\].*\((.*)\): finished session for `(.*)' with pam/) )
|
|
Packit |
57988d |
) {
|
|
Packit |
57988d |
$DownloadedMessagesSize{$User} += $DownloadSize;
|
|
Packit |
57988d |
$Logout{$User}{$Host}++;
|
|
Packit |
57988d |
$Logout2{$User}++;
|
|
Packit |
57988d |
$Connection{$Host}++;
|
|
Packit |
57988d |
} elsif (($dummy, $User, $Host, $DownloadSize1, $DownloadSize2) = ( $ThisLine =~ /^(LOGOUT|TIMEOUT|DISCONNECTED), user=(.*?), ip=\[([^ ,]+)\](?:, port=\[\d+\])?, top=(\d+), retr=(\d+)/o)) {
|
|
Packit |
57988d |
$DownloadedMessagesSize{$User} += $DownloadSize1 + $DownloadSize2;
|
|
Packit |
57988d |
$Logout{$User}{$Host}++;
|
|
Packit |
57988d |
$Logout2{$User}++;
|
|
Packit |
57988d |
$Connection{$Host}++;
|
|
Packit |
57988d |
if ( $ThisLine =~ /^(TIMEOUT|DISCONNECTED),/o ) {
|
|
Packit |
57988d |
$AutoLogout{$Host}++;
|
|
Packit |
57988d |
}
|
|
Packit |
57988d |
} elsif (($Host) = ( $ThisLine =~ /^connections_post_select: client \[\d\](.*)\/.*: disconnected; \d+\/\d+ bytes read\/written$/) ) {
|
|
Packit |
57988d |
$Connection{$Host}++;
|
|
Packit |
57988d |
} elsif (
|
|
Packit |
57988d |
(($User,$Host) = ( $ThisLine =~ /^authentication failed for user (.*?) - (.*)/ )) or
|
|
Packit |
57988d |
(($Host,$User) = ( $ThisLine =~ /^connection_do: client `\[\d+\](.*)\/.*': username `(.*)': \d authentication failures/ ))
|
|
Packit |
57988d |
) {
|
|
Packit |
57988d |
$LoginFailed{"$Host ($User)"}++;
|
|
Packit |
57988d |
} elsif (($User,$Host) = ( $ThisLine =~ /^LOGIN FAILED, user=([^,]*), ip=\[([0-9.:a-f]*)\]/ )) {
|
|
Packit |
57988d |
$Host = LookupIPv46($Host);
|
|
Packit |
57988d |
$LoginFailed{"$Host ($User)"}++;
|
|
Packit |
57988d |
} elsif ( ($User,$Host) = ( $ThisLine =~ /^authentication failed: no such user: (.*?) - (.*)/ ) ) {
|
|
Packit |
57988d |
$LoginFailed{"$Host (UNKNOWN: $User)"}++;
|
|
Packit |
57988d |
} elsif ( ($User) = ( $ThisLine =~ /^auth_pam_new_user_pass: pam_authenticate\((.*)\): Authentication failure/) ){
|
|
Packit |
57988d |
$LoginFailed{$User}++;
|
|
Packit |
57988d |
} elsif ( ($User) = ( $ThisLine =~ /^authcontext_new_user_pass: rejecting login attempt by `(.*)' with empty password$/) ) {
|
|
Packit |
57988d |
$LoginFailed{"EMPTY PASSWORD: $User"}++;
|
|
Packit |
57988d |
} elsif ( ($Mechanism) = ( $ThisLine =~ /^sptls: TLS connection established: (.*)$/ ) ) {
|
|
Packit |
57988d |
$sslMechanism{$Mechanism}++;
|
|
Packit |
57988d |
} elsif ($ThisLine =~ /^sptls: created \d+bit temporary [^ ].* key$/ ) {
|
|
Packit |
57988d |
$sslTempkey++;
|
|
Packit |
57988d |
} elsif ( ($User,$Host) = ( $ThisLine =~ /^ioabs_tls_shutdown: client \[\d\](.*)\((.*)\): underlying connection closed by peer during shutdown$/) ) {
|
|
Packit |
57988d |
# FIXME:
|
|
Packit |
57988d |
# What to with that??
|
|
Packit |
57988d |
} elsif (
|
|
Packit |
57988d |
(($Host) = ( $ThisLine =~ /^autologout time elapsed - (.*)$/ )) or
|
|
Packit |
57988d |
(($Host) = ( $ThisLine =~ /^net_loop: timed out client \[\d\](.*)\// )) or
|
|
Packit |
57988d |
(($Host) = ( $ThisLine =~ /^net_loop: timed out client \[\d\].*\((.*)\)$/ ))
|
|
Packit |
57988d |
) {
|
|
Packit |
57988d |
$AutoLogout{$Host}++;
|
|
Packit |
57988d |
} elsif (
|
|
Packit |
57988d |
(($File) = ( $ThisLine =~ /^can't open or create file: (.*)$/ )) or
|
|
Packit |
57988d |
(($File) = ( $ThisLine =~ /^mailbox: can't open mailbox file: (.*)$/ ))
|
|
Packit |
57988d |
) {
|
|
Packit |
57988d |
$PermissionDenied{$File}++;
|
|
Packit |
57988d |
} elsif ( ($User, $Host) = ( $ThisLine =~ /^can't find APOP secret for user (.*?) - (.*)$/ ) ) {
|
|
Packit |
57988d |
$NoApopSecret{$User}++;
|
|
Packit |
57988d |
$Logout{$User}{$Host}++;
|
|
Packit |
57988d |
$Connection{$Host}++;
|
|
Packit |
57988d |
$Logout2{$User}++;
|
|
Packit |
57988d |
} elsif ($ThisLine =~ /^mailbox: no memory available$/ ) {
|
|
Packit |
57988d |
$OutOfMemory++;
|
|
Packit |
57988d |
} elsif (
|
|
Packit |
57988d |
($Mbox) = ( $ThisLine =~ /^mailbox: mailbox (.*) is damaged$/ ) or
|
|
Packit |
57988d |
($Mbox) = ( $ThisLine =~ /^mailbox: mailbox is damaged: (.*)$/ )
|
|
Packit |
57988d |
) {
|
|
Packit |
57988d |
$DamagedMbox{$Mbox}++;
|
|
Packit |
57988d |
} elsif (
|
|
Packit |
57988d |
($ThisLine =~ /^(sktbuff|maildrop): can't read from socket$/) or
|
|
Packit |
57988d |
($ThisLine =~ /^ioabs_tls_read: client .*: connection closed by peer$/) or
|
|
Packit |
57988d |
($ThisLine =~ /^(ioabs_tls_read|ioabs_tls_post_select): client .*: connection unexpectedly closed by peer$/)
|
|
Packit |
57988d |
) {
|
|
Packit |
57988d |
$ReadSocketError++;
|
|
Packit |
57988d |
} elsif ($ThisLine =~ /^(sktbuff|maildrop): can't write to socket$/ ) {
|
|
Packit |
57988d |
$WriteSocketError++;
|
|
Packit |
57988d |
} elsif ( ($Box,$Size) = ( $ThisLine =~ /^mailspool_new_from_file: indexed mailspool (.*) \((\d+) bytes\) in/ ) ) {
|
|
Packit |
57988d |
# What to do with that?
|
|
Packit |
57988d |
#$MboxSize{$User} = $LeftSize;
|
|
Packit |
57988d |
} elsif ( ($Host,$Iface) = ( $ThisLine =~ /^listeners_post_select: client \[\d\](.*)\/.*: connected to local address (.*:\d+)$/ ) ) {
|
|
Packit |
57988d |
$Connection{$Host}++;
|
|
Packit |
57988d |
$Conect{$Iface}{$Host}++;
|
|
Packit |
57988d |
} elsif ( ($Listen) = ( $ThisLine =~ /^parse_listeners: listening on address (.*)$/ ) ) {
|
|
Packit |
57988d |
$ListenOn{$Listen}++;
|
|
Packit |
57988d |
} elsif ($ThisLine =~ /^net_loop: tpop3d version \d+\.\d+\.\d+ successfully started$/ ) {
|
|
Packit |
57988d |
$Startups++;
|
|
Packit |
57988d |
} elsif ($ThisLine =~ /^net_loop: terminating on signal \d+$/ ) {
|
|
Packit |
57988d |
$Shutdowns++;
|
|
Packit |
57988d |
} elsif ( ($Drivers) = ($ThisLine =~ /^(\d+) authentication drivers successfully loaded$/) ) {
|
|
Packit |
57988d |
$AuthDrivers = $Drivers;
|
|
Packit |
57988d |
} else {
|
|
Packit |
57988d |
# Report any unmatched entries...
|
|
Packit |
57988d |
# remove PID from named messages
|
|
Packit |
57988d |
|
|
Packit |
57988d |
$ThisLine =~ s/^(client [.0-9]+)\S+/$1/;
|
|
Packit |
57988d |
chomp($ThisLine);
|
|
Packit |
57988d |
$OtherList{$ThisLine}++;
|
|
Packit |
57988d |
}
|
|
Packit |
57988d |
#$LastLine = $ThisLine;
|
|
Packit |
57988d |
}
|
|
Packit |
57988d |
|
|
Packit |
57988d |
################################################
|
|
Packit |
57988d |
|
|
Packit |
57988d |
if ($Startups > 0) {
|
|
Packit |
57988d |
print "Startups: $Startups";
|
|
Packit |
57988d |
if ($AuthDrivers > 0) {
|
|
Packit |
57988d |
print " with $AuthDrivers authentication drivers\n";
|
|
Packit |
57988d |
} else { print "\n"; }
|
|
Packit |
57988d |
if (keys %ListenOn) {
|
|
Packit |
57988d |
print "Listening on:\n";
|
|
Packit |
57988d |
foreach $Listen (sort {$a cmp $b} keys %ListenOn) {
|
|
Packit |
57988d |
print " $Listen\n";
|
|
Packit |
57988d |
}
|
|
Packit |
57988d |
}
|
|
Packit |
57988d |
}
|
|
Packit |
57988d |
|
|
Packit |
57988d |
if ($Shutdowns > 0) {
|
|
Packit |
57988d |
print "\nShutdowns: $Shutdowns\n";
|
|
Packit |
57988d |
}
|
|
Packit |
57988d |
|
|
Packit |
57988d |
if ( ( $Detail >= 0 ) and (keys %PermissionDenied)) {
|
|
Packit |
57988d |
print "WARNING:\n";
|
|
Packit |
57988d |
print "Can't open or create files:\n";
|
|
Packit |
57988d |
foreach $File (sort {$a cmp $b} keys %PermissionDenied) {
|
|
Packit |
57988d |
print " $File: $PermissionDenied{$File} Time(s)\n";
|
|
Packit |
57988d |
}
|
|
Packit |
57988d |
}
|
|
Packit |
57988d |
|
|
Packit |
57988d |
if ( ( $Detail >= 0 ) and (keys %DamagedMbox)) {
|
|
Packit |
57988d |
print "WARNING:\n";
|
|
Packit |
57988d |
print "Damaged mailbox in your system:\n";
|
|
Packit |
57988d |
foreach $Mbox (sort {$a cmp $b} keys %DamagedMbox) {
|
|
Packit |
57988d |
print " $Mbox: $DamagedMbox{$Mbox} Time(s)\n";
|
|
Packit |
57988d |
}
|
|
Packit |
57988d |
}
|
|
Packit |
57988d |
|
|
Packit |
57988d |
if ( ( $Detail >= 0 ) and (keys %DamagedMbox)) {
|
|
Packit |
57988d |
print "WARNING:\n";
|
|
Packit |
57988d |
print "Damaged mailbox in your system:\n";
|
|
Packit |
57988d |
foreach $Mbox (sort {$a cmp $b} keys %DamagedMbox) {
|
|
Packit |
57988d |
print " $Mbox: $DamagedMbox{$Mbox} Time(s)\n";
|
|
Packit |
57988d |
}
|
|
Packit |
57988d |
}
|
|
Packit |
57988d |
|
|
Packit |
57988d |
if ( ( $Detail >= 0 ) and ($OutOfMemory > 0) ) {
|
|
Packit |
57988d |
print "\nPOP3 processes were running out of memory $OutOfMemory Time(s)\n";
|
|
Packit |
57988d |
}
|
|
Packit |
57988d |
|
|
Packit |
57988d |
if ( ( $Detail >= 0 ) and (keys %LoginFailed)) {
|
|
Packit |
57988d |
print "\n\n[POP3] Login failures:".
|
|
Packit |
57988d |
"\n=========================".
|
|
Packit |
57988d |
"\n Host (user) | # ".
|
|
Packit |
57988d |
"\n------------------------------------------------------------- | -----------";
|
|
Packit |
57988d |
|
|
Packit |
57988d |
$ConnCount = 0;
|
|
Packit |
57988d |
foreach $Host (sort keys %LoginFailed) {
|
|
Packit |
57988d |
$Conns = $LoginFailed{$Host};
|
|
Packit |
57988d |
printf "\n%61s | %11.0f", $Host, $Conns;
|
|
Packit |
57988d |
$ConnCount += $Conns;
|
|
Packit |
57988d |
}
|
|
Packit |
57988d |
print "\n" . "-" x 75;
|
|
Packit |
57988d |
printf "\n%75s\n\n\n", $ConnCount;
|
|
Packit |
57988d |
}
|
|
Packit |
57988d |
|
|
Packit |
57988d |
if ( ( $Detail >= 5 ) and (keys %Connection)) {
|
|
Packit |
57988d |
print "\n[POP3] Connections:".
|
|
Packit |
57988d |
"\n=========================".
|
|
Packit |
57988d |
"\n Host | Connections".
|
|
Packit |
57988d |
"\n------------------------------------------------------------- | -----------";
|
|
Packit |
57988d |
|
|
Packit |
57988d |
$ConnCount = 0;
|
|
Packit |
57988d |
foreach $Host (sort keys %Connection) {
|
|
Packit |
57988d |
$Conns = $Connection{$Host};
|
|
Packit |
57988d |
printf "\n%61s | %11.0f", $Host, $Conns;
|
|
Packit |
57988d |
$ConnCount += $Conns;
|
|
Packit |
57988d |
}
|
|
Packit |
57988d |
print "\n" . "-" x 75;
|
|
Packit |
57988d |
printf "\n%75s\n\n\n", $ConnCount;
|
|
Packit |
57988d |
}
|
|
Packit |
57988d |
|
|
Packit |
57988d |
|
|
Packit |
57988d |
|
|
Packit |
57988d |
if (keys %Logout2) {
|
|
Packit |
57988d |
print "\n[POP3] Logout stats (in MB):".
|
|
Packit |
57988d |
"\n============================".
|
|
Packit |
57988d |
"\n User | Logouts | Downloaded | Mbox Size".
|
|
Packit |
57988d |
"\n--------------------------------------- | ------- | ---------- | ----------";
|
|
Packit |
57988d |
|
|
Packit |
57988d |
$ConnCount = 0;
|
|
Packit |
57988d |
$SizeAll = 0;
|
|
Packit |
57988d |
$DownAll = 0;
|
|
Packit |
57988d |
foreach $User (sort keys %Logout2) {
|
|
Packit |
57988d |
$Conns = $Logout2{$User};
|
|
Packit |
57988d |
$Down = $DownloadedMessagesSize{$User}/(1024*1024);
|
|
Packit |
57988d |
$Size = $MboxSize{$User}/(1024*1024);
|
|
Packit |
57988d |
printf "\n%39s | %7d | ", $User, $Conns;
|
|
Packit |
57988d |
if ($Down > 0) {
|
|
Packit |
57988d |
printf "%10.2f | ",$Down;
|
|
Packit |
57988d |
} else {
|
|
Packit |
57988d |
printf "%10.0f | ",$Down;
|
|
Packit |
57988d |
}
|
|
Packit |
57988d |
if ($Size > 0) {
|
|
Packit |
57988d |
printf "%10.2f",$Size;
|
|
Packit |
57988d |
} else {
|
|
Packit |
57988d |
printf "%10.0f",$Size;
|
|
Packit |
57988d |
}
|
|
Packit |
57988d |
$ConnCount += $Conns;
|
|
Packit |
57988d |
$SizeAll += $Size;
|
|
Packit |
57988d |
$DownAll += $Down;
|
|
Packit |
57988d |
}
|
|
Packit |
57988d |
print "\n" . "-" x 75;
|
|
Packit |
57988d |
printf "\n%49d | %10.2f | %10.2f\n\n\n",$ConnCount,$DownAll,$SizeAll;
|
|
Packit |
57988d |
}
|
|
Packit |
57988d |
|
|
Packit |
57988d |
|
|
Packit |
57988d |
if ( ( $Detail >= 10 ) and (keys %Login)) {
|
|
Packit |
57988d |
print "\n[POP3] Successful Logins:\n";
|
|
Packit |
57988d |
$LoginCount = 0;
|
|
Packit |
57988d |
foreach my $User (keys %Login) {
|
|
Packit |
57988d |
print " User $User: \n";
|
|
Packit |
57988d |
$UserCount = 0;
|
|
Packit |
57988d |
foreach $Host (keys %{$Login{$User}}) {
|
|
Packit |
57988d |
$HostCount = $Login{$User}{$Host};
|
|
Packit |
57988d |
print " From $Host: $HostCount Time(s)\n";
|
|
Packit |
57988d |
$UserCount += $HostCount;
|
|
Packit |
57988d |
}
|
|
Packit |
57988d |
$LoginCount += $UserCount;
|
|
Packit |
57988d |
print " Total $UserCount Time(s)\n";
|
|
Packit |
57988d |
print "\n";
|
|
Packit |
57988d |
}
|
|
Packit |
57988d |
print "Total $LoginCount successful logins\n\n\n";
|
|
Packit |
57988d |
}
|
|
Packit |
57988d |
|
|
Packit |
57988d |
if ($sslTempkey > 0) {
|
|
Packit |
57988d |
print "\nTemporary SSL key created and used $sslTempkey Time(s)\n";
|
|
Packit |
57988d |
}
|
|
Packit |
57988d |
|
|
Packit |
57988d |
if ( ( $Detail >= 5 ) and (keys %sslMechanism)) {
|
|
Packit |
57988d |
print "\nTLS Connection types:\n";
|
|
Packit |
57988d |
$TotalConnections = 0;
|
|
Packit |
57988d |
foreach $Mechanism (keys %sslMechanism) {
|
|
Packit |
57988d |
print " $Mechanism $sslMechanism{$Mechanism} Time(s)\n";
|
|
Packit |
57988d |
$TotalConnections += $sslMechanism{$Mechanism};
|
|
Packit |
57988d |
}
|
|
Packit |
57988d |
print "Total TLS connections: $TotalConnections Time(s)\n";
|
|
Packit |
57988d |
}
|
|
Packit |
57988d |
|
|
Packit |
57988d |
if ( ( $Detail >= 5 ) and (keys %AutoLogout)) {
|
|
Packit |
57988d |
print "\nAutologout:\n";
|
|
Packit |
57988d |
foreach $Host (sort {$a cmp $b} keys %AutoLogout) {
|
|
Packit |
57988d |
print " $Host: $AutoLogout{$Host} Time(s)\n";
|
|
Packit |
57988d |
}
|
|
Packit |
57988d |
}
|
|
Packit |
57988d |
|
|
Packit |
57988d |
if ( ( $Detail >= 5 ) and (keys %NoApopSecret)) {
|
|
Packit |
57988d |
print "\nCan't find APOP secret:\n";
|
|
Packit |
57988d |
$TotalAPOP = 0;
|
|
Packit |
57988d |
foreach $User (keys %NoApopSecret) {
|
|
Packit |
57988d |
print " $User: $NoApopSecret{$User} Time(s)\n";
|
|
Packit |
57988d |
$TotalAPOP += $NoApopSecret{$User};
|
|
Packit |
57988d |
}
|
|
Packit |
57988d |
print "Total APOP errors: $TotalAPOP Time(s)\n";
|
|
Packit |
57988d |
}
|
|
Packit |
57988d |
|
|
Packit |
57988d |
if ( ( $Detail >= 5 ) and ( $ReadSocketError > 0 ) ) {
|
|
Packit |
57988d |
print "Socket Read Error $ReadSocketError Time(s)\n";
|
|
Packit |
57988d |
}
|
|
Packit |
57988d |
|
|
Packit |
57988d |
if ( ( $Detail >= 5 ) and ( $WriteSocketError > 0 ) ) {
|
|
Packit |
57988d |
print "Socket Write Error $WriteSocketError Time(s)\n";
|
|
Packit |
57988d |
}
|
|
Packit |
57988d |
|
|
Packit |
57988d |
if ( ( $Detail >= 5 ) and ( $ReadSocketError > 0 ) ) {
|
|
Packit |
57988d |
print "Socket Read Error $ReadSocketError Time(s)\n";
|
|
Packit |
57988d |
}
|
|
Packit |
57988d |
|
|
Packit |
57988d |
if ( ( $Detail >= 5 ) and ( $WriteSocketError > 0 ) ) {
|
|
Packit |
57988d |
print "Socket Write Error $WriteSocketError Time(s)\n";
|
|
Packit |
57988d |
}
|
|
Packit |
57988d |
|
|
Packit |
57988d |
if (keys %Conect) {
|
|
Packit |
57988d |
print "\nConnection to interface:\n";
|
|
Packit |
57988d |
foreach $Iface (sort {$a cmp $b} keys %Conect) {
|
|
Packit |
57988d |
print " $Iface:\n";
|
|
Packit |
57988d |
foreach $Host (sort {$a cmp $b} keys %{$Conect{$Iface}}) {
|
|
Packit |
57988d |
print " $Host: $Conect{$Iface}{$Host} Time(s)\n";
|
|
Packit |
57988d |
}
|
|
Packit |
57988d |
}
|
|
Packit |
57988d |
}
|
|
Packit |
57988d |
|
|
Packit |
57988d |
if (keys %OtherList) {
|
|
Packit |
57988d |
print "\n**Unmatched Entries**\n";
|
|
Packit |
57988d |
foreach $line (sort {$a cmp $b} keys %OtherList) {
|
|
Packit |
57988d |
print " $line: $OtherList{$line} Time(s)\n";
|
|
Packit |
57988d |
}
|
|
Packit |
57988d |
}
|
|
Packit |
57988d |
|
|
Packit |
57988d |
exit(0);
|
|
Packit |
57988d |
|
|
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:
|