#!/bin/bash

# muesste von Ralf Hildebrandt sein bzw. auf seinem Server arschkrebs.de gefunden 

TEMPFILE=/tmp/maillog.md5.$$
logfile=/var/log/mail.log

grep "s1 postfix" $logfile | /usr/local/scripts/postfix.transform.log > $TEMPFILE
# zgrep "hauptpostamt postfix" maillog.gz | /usr/local/scripts/postfix.transform.log > $TEMPFILE
# zuerst nutzen wir postfix.transform.log, um die Logeinträge die zusammengehören unter einem eindeutigen
# muster (md5sum der Message-Id) zu gruppieren. Diese kommt in [] in die 1. Spalte.

MD5SUMS=/tmp/md5sums.$$

egrep -i "(from|to)=<$1>" $TEMPFILE | awk 'BEGIN {FS="[][]"} {print $2}' > $MD5SUMS
# Nun greppen wir nach from=<absender> in dem transformierten Log und schreiben die md5sums in ein File
fgrep -f $MD5SUMS $TEMPFILE | sort -k1 | awk '
{
  if ( lastid != $1 )
    printf ("\n# MD5-ID  %s\n\n", $1)

  lastid = $1

  printf ("%s ", $4)
  for (i=6; i<=NF; i++)
    printf ("%s ", $i)
  printf ("\n")
}'
# dieses File nutzen wir, um alle Logeintraege zu extrahieren. Dann wird noch nach der md5sum sortiert, damit man zusammengehoerige Logeintraege in einem Block hat.
rm -f $MD5SUMS $TEMPFILE


