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,
In reply to Sendmail pairs by Limbic~Region
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |