#!/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; }