#!/usr/bin/perl

# sendmail schreibt für jede Mail in der Regel zwei Zeilen ins syslog,
# so dass man mit grep entweder nur den Empfänger oder nur den
# Absender zu sehen bekommt, durch diesen Filter aber beides:

# $Id: maillog,v 1.5 2001-03-08 17:51:09+01 czyborra Exp $

while (<>)
{
    if (($qid, $from) = 
	/sendmail\[\d+\]: (\w+): from=([^,]+),/)
    {
	$from{$qid} = $from;
	($size{$qid}) = /size=(\d+)/;
    }
    elsif ((($qid, $rcpt) = /sendmail\[\d+\]: (\w+): to=([^ ]+) /) ||
	   (($qid, $rcpt) = /sendmail\[\d+\]: (\w+): ([^ ]+)[.]{3} /))
    {
	$rcpt{$qid} = $rcpt;
    }

    print "$timestamp: $size{$qid} $from -> $to\n" 
	if ($from = $from{$qid}) && ($to = $rcpt{$qid}) &&
	    (($timestamp) = /^(... .. ..:..:.. \w+)/);

;
}
