#!/usr/bin/perl # (c) Dinko Korunic, kreator@srce.hr # maildir status checker using procmail log file # version 1.2 $maillog = "$ENV{HOME}/Mail/.procmail.log"; @skiplogarry = ("/dev/null", "/var/mail/$ENV{USER}"); %skiplog = (); %stats = (); $counter = 0; for $record (@skiplogarry) { $skiplog{$record} = 1; } $size = (stat($maillog))[7]; if (!$size || !open(LOG, "<$maillog")) { print "No new mail.\n"; exit 0; } $newmaillog = $maillog . time; rename($maillog, $newmaillog) or die "Cannot rename $maillog to $newmaillog: $!"; while () { if (/Folder: (.*)$/) { ($folder, $rubbish) = split(' ', $1, 2); if (!exists $skiplog{$folder}) { ($folder, $rubbish) = split(/\//, $folder, 2); $stats{$folder}++; ++$counter; } } } if (!$counter) { print "No new mail.\n"; exit 0; } print "New messages since last login:\n"; @sorted_keys = sort { $stats{$b} <=> $stats{$a} || $b cmp $a } keys %stats; for $record (@sorted_keys) { print " [$record] = $stats{$record}\n"; } close(LOG) or die "Cannot close $newmaillog $!"; unlink($newmaillog);