Viewing file: procmail-logger.pl (934 B) -rwxrwxr-x Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#!/usr/bin/perl # Output email summary for Procmail log
$size = 0; while(<STDIN>) { $size += length($_); if (/^From:\s*(.*)/) { $from = $1; } elsif (/^To:\s*(.*)/) { $to = $1; } elsif (/^X-Spam-Status:\s*Yes/) { $spam = 1; } last if ($from && $to); } while(read(STDIN, $buf, 32768) > 0) { # Eat up input $size += length($buf); } $from = &address_parts($from); $to = &address_parts($to);
$now = time(); $dest = $ENV{'LASTFOLDER'}; if ($dest =~ /^\S+\/sendmail.*\s(\S+)$/) { $dest = $1; } $mode = $ENV{'VIRUSMODE'} ? "Virus" : $ENV{'SPAMMODE'} || $spam ? "Spam" : "None"; print "Time:$now From:$from To:$to User:$ENV{'LOGNAME'} Size:$size Dest:$dest Mode:$mode\n";
# address_parts(string) # Returns the email addresses in a string sub address_parts { local @rv; local $rest = $_[0]; while($rest =~ /([^<>\s,'"\@]+\@[A-z0-9\-\.\!]+)(.*)/) { push(@rv, $1); $rest = $2; } return wantarray ? @rv : $rv[0]; }
|