#!/usr/local/bin/perl -w # # mailstats.pl (C) 1997-2000 Stuart Caie # gives statistics on mail usage by various groups # this is distributed under the terms of the GNU public license version 2 # use strict; #------------------------------------------------------------------------------ my $MAILDIR = '/var/mail'; # set this to where your mail spool is kept #------------------------------------------------------------------------------ my (%groupmailsize, %maxmailsize, %maxmailer, %groupsize); print 'MAIL SPOOL STATISTICS for ', scalar(localtime),"\n\n"; chdir $MAILDIR || die; foreach my $name (<*>) { my $group = (getpwnam $name)[3]; my $mailsize = -s $name; $groupmailsize{$group}=0 unless $groupmailsize{$group}; $maxmailsize{$group}=0 unless $maxmailsize{$group}; $groupsize{$group}=0 unless $groupsize{$group}; $maxmailer{$group}='' unless $maxmailer{$group}; $groupsize{$group}++; $groupmailsize{$group}+=$mailsize; if ($mailsize > $maxmailsize{$group}) { $maxmailsize{$group} = $mailsize; $maxmailer{$group} = $name; } } my %avg; foreach (keys %groupsize) { # if really a usergroup (and not bin:bin, sys:sys, uucp:uucp...) if ($maxmailer{$_} ne (getgrgid $_)[0]) { $avg{$_}=int $groupmailsize{$_}/($groupsize{$_}*1024); } } # show stats by group average, largest first foreach (sort {$avg{$b} <=> $avg{$a}} keys %avg) { if ($avg{$_} > 0) { my $gnam = (getgrgid $_)[0]; my $gms_kb = int($groupmailsize{$_}/1024); my $mms_kb = int($maxmailsize{$_}/1024); my $pct = int(($maxmailsize{$_}*100)/$groupmailsize{$_}); print STDOUT <