#!/usr/bin/perl
use Email::Folder;
use Email::Simple;
use Time::ParseDate;
use File::stat;
my $prefix = "/Volumes/LaCie Disk/org/ftp.ietf.org/ietf-mail-archive/ietf/";
@files = (
"2003-01.mail", "2003-02.mail", "2003-03.mail", "2003-04.mail",
"2003-05.mail", "2003-06.mail", "2003-07.mail", "2003-08.mail",
"2003-09.mail", "2003-10.mail", "2003-11.mail", "2003-12.mail",
"2004-01.mail", "2004-02.mail", "2004-03.mail", "2004-04.mail",
"2004-05.mail", "2004-06.mail", "2004-07.mail", "2004-08.mail",
"2004-09.mail", "2004-10.mail"
);
#@files = ( "2004-03.mail") ;
print
"File Total Volume (Kbytes) Bytes/Message NumMessages AvgDelivery(Secs) AvgHops\n";
foreach my $file (@files) {
my $bytes = 0;
my $messages = 0;
my $badmess = 0;
my @numhops = undef;
my $folder = Email::Folder->new( $prefix . $file );
my @timearray = undef;
@messages = $folder->messages;
foreach my $message (@messages) {
$bytes = $bytes + length( $message->body );
$messages = $messages + 1;
my $numreceived = 0;
my @recheaders = $message->header("Received");
my $hightime = $recheaders[0];
my $lowtime = $recheaders[$#recheaders];
$lowtime =~ s/^.*\;//;
$hightime =~ s/^.*\;//;
$lowtime =~ s/from SMTP agent by mail gateway//i;
$hightime =~ s/from SMTP agent by mail gateway//i;
push( @timearray, abs( parsedate($hightime) - parsedate($lowtime) ) );
if ( $timearray[$#timearray] > 100000 ) {
pop(@timearray);
$badmess = $badmess + 1;
}
push( @numhops, $#recheaders + 1 );
}
$avghops = &sum(@numhops) / $messages;
my $avgtime = &sum(@timearray) / ( $messages - $badmess );
my $filestat = stat( $prefix . $file );
print "", $file, "", int( $filestat->size / 1000 ), "",
int( $bytes / $messages ), "", $messages, "", int($avgtime),
"", sprintf( "%.2f", $avghops ), "\n";
}
sub sum {
my @numhops = @_;
my $sum = 0;
foreach my $hop (@numhops) {
$sum = $sum + $hop;
}
return $sum;
}