[Logwatch-Devel] Fwd: Added a fetchmail service

Kirk Bauer kirk at kaybee.org
Thu Oct 22 06:30:12 MST 2009


Fetchmail service...

------------------------------------------------------
Kirk Bauer <kirk at kaybee.org>
http://linux.kaybee.org | www.logwatch.org
Author, Automating UNIX & Linux Administration




---------- Forwarded message ----------
From: Oron Peled <oron at actcom.co.il>
Date: Thu, Oct 22, 2009 at 1:19 AM
Subject: Added a fetchmail service
To: logwatch-patches at public.kaybee.org


Hi,

To my surprise, logwatch didn't have a fetchmail "service" files.
The attached files are my implementation of the service script and
a simple configuration (easily derived from one of the other services).
Here are links to these files in case the mailing list chops attachments:
 http://oron.fedorapeople.org/logwatch/fetchmail
 http://oron.fedorapeople.org/logwatch/fetchmail.conf

After reporting this on my Linux distro bug tracker:
 https://bugzilla.redhat.com/show_bug.cgi?id=528838
The package maintainer suggested that I'll send it upstream.

So here it is. Enjoy and thanks for maintaining a very nice tool for
all of us.

--
Oron Peled                                 Voice: +972-4-8228492
oron at actcom.co.il                  http://users.actcom.co.il/~oron
No, You Can't Have My Rights, I'm Still Using Them
-------------- next part --------------
##########################################################################
# $Id: fetchmail $
##########################################################################

########################################################
# This was written and is maintained by:
#    Oron Peled <oron \@\ actcom.net.il>
#
########################################################

my $Detail = $ENV{'LOGWATCH_DETAIL_LEVEL'} || 0;

my %no_mail;
my %messages_for;
my %auth_fail;
my %conn_fail;

#Inits
open(DBG, "> /tmp/logwatch.txt") || die;

while (defined($ThisLine = <STDIN>)) {
	chomp($ThisLine);
	$ThisLine =~ s/^[a-zA-Z0-9]+: //;
	print DBG "$ThisLine\n";
	if($ThisLine =~ s/^No mail for (\S+) at (\S+)//) {
		$no_mail{"${1} at ${2}"}++;
	} elsif($ThisLine =~ /^reading message /) {
		# ignore
	} elsif($ThisLine =~ s/^Query status=[23]//) {
		# ignore. Counted below (Authorization, Connection)
	} elsif($ThisLine =~ s/^Authorization failure on (\S+)//) {
		$auth_fail{"${1}"}++;
	} elsif($ThisLine =~ s/^\S+ connection to \S+ failed: .*//) {
		# ignore. Counted below
	} elsif($ThisLine =~ s/^connection to (\S+) \[[^]]+\] failed: (.*).//) {
		$conn_fail{"${1} -- ${2}"}++;
	} elsif($ThisLine =~ s/^(\d+) messages? for (\S+) at (\S+).*.//) {
		$messages_for{"${2} at ${3}"} += $1;
	} else {
		chomp($ThisLine);
		# Report any unmatched entries...
		$OtherList{$ThisLine}++; 
	}
}

if (keys %messages_for) {
	my $total;
	print "\nMessages\n";
	foreach my $who (sort keys %messages_for) {
		print "   $who: $messages_for{$who}\n";
		$total += $messages_for{$who};
	}
	print "   Total: $total\n";
}

if (keys %conn_fail) {
	my $total;
	print "\nConnection failures\n";
	foreach my $who (sort keys %conn_fail) {
		print "   $who: $conn_fail{$who} Time(s)\n";
		$total += $conn_fail{$who};
	}
	print "   Total: $total\n";
}

if (keys %auth_fail) {
	my $total;
	print "\nAuthorization failures\n";
	foreach my $who (sort keys %auth_fail) {
		print "   $who: $auth_fail{$who} Time(s)\n";
		$total += $auth_fail{$who};
	}
	print "   Total: $total\n";
}

if (keys %no_mail) {
	my $total;
	print "\nNo Mail\n";
	foreach my $who (sort keys %no_mail) {
		print "   $who: $no_mail{$who} Time(s)\n";
		$total += $no_mail{$who};
	}
	print "   Total: $total\n";
}

if (keys %OtherList) {
	print "\n**Unmatched Entries**\n";
	foreach $line (sort {$OtherList{$b}<=>$OtherList{$a} } keys %OtherList) {
		print "   $line: $OtherList{$line} Time(s)\n";
	}
}

exit(0);

# vi: shiftwidth=3 tabstop=3 syntax=perl et
-------------- next part --------------
###########################################################################
# $Id: fetchmail $
###########################################################################

# You can put comments anywhere you want to.  They are effective for the
# rest of the line.

# this is in the format of <name> = <value>.  Whitespace at the beginning
# and end of the lines is removed.  Whitespace before and after the = sign
# is removed.  Everything is case *insensitive*.

# Yes = True  = On  = 1
# No  = False = Off = 0

Title = "Fetchmail"

# Which logfile group...
LogFile = maillog

*OnlyService = fetchmail
*RemoveHeaders

#Fetchmail Global ENV Variables

########################################################
# This was written and is maintained by:
#    Oron Peled <oron \@\ actcom.net.il>
#
########################################################

# vi: shiftwidth=3 tabstop=3 et


More information about the Logwatch-Devel mailing list