Category: | [E-Mail Programs] or [Text Processing] |
Author/Contact Info | Limbic~Region |
Description: | Builds a hash whose index is a "from" "to" pair, and then increments it every time the pair is encountered. Finally, the information is sorted displaying the highest pairs first. Tested on HPUX 11.0 running Sendmail 8.9.3. |
THIS IS UNPOLISHED CODE
One of my many hats I wear at work is Email administrator. One of the toughest jobs I have is identifying mail loops that are eating up system resources. I found a great program here that did way more than I wanted, but it was written in C (powers that be wouldn't go for it). I also found this on CPAN, but it didn't do what I wanted. After performing a Super Search here, I decided to write my own. It is VERY unpolished. Ideas that someone else could use to make this a much better program are:
If anyone finds this useful and decides to implement any of those suggestions, let me know. For now, it is functional, but it can always be better.
#!/usr/bin/perl -w use strict; open(SENDMAIL, "/var/adm/syslog/mail.log"); my %pairs; my %from; while (my $line = <SENDMAIL>) { chomp $line; my @fields = split(" ", $line); next if ( $fields[6] !~ /to=/ && $fields[6] !~ /from=/ ); if ( $fields[6] =~ /from=/ ) { $from{$fields[5]} = "\L$fields[6]"; } else { $pairs{"$from{$fields[5]} \L$fields[6]"}++; } } close(SENDMAIL); foreach my $key (sort {$pairs{$b} <=> $pairs{$a}} (keys(%pairs))) { print "$pairs{$key} $key\n"; } Thanks, |
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Sendmail pairs
by rob_au (Abbot) on Sep 15, 2002 at 00:24 UTC |
Back to
Code Catacombs