Eine kleine "Verbesserung" habe ich noch eingefügt.
Sollte das Script zweimal zur gleichen Zeit laufen, würde das gleiche TMP-File verwendet werden.
Durch 
Code:
TMPFILE=`mktemp /tmp/usermail.XXXXXXXX`
 
 wird eine eindeutiges File erzeugt und in der Variable $TMPFILE gemerkt. Weiter unten im Code wurde entsprechend die Variable eingesetzt.
Code:
#!/bin/bash
deleteafterdays=184
TMPFILE=`mktemp /tmp/usermail.XXXXXXXX`
if [ "$1" = "" ]; then
    echo "Parameter: usermaillog <Domain/Aliasdomain> <optional Hauptdomain>"
else
    DATUM=`date '+%Y-%m-%d'`
    if [ "$2" != "" ]; then
        if [ -d /var/www/virtual/$1 ]; then
            serverdomain=$1
        else
            serverdomain=$2
        fi
    else
        serverdomain=$1
    fi
    if [ -d /var/www/virtual/$serverdomain ]; then
        # Berechtigung des Domainverzeichnisses ermitteln
        LG=`stat -c%U /var/www/virtual/$serverdomain`
        find /var/www/virtual/$serverdomain/logs/mail_$1* -mtime +$deleteafterdays -exec rm {} \; >/dev/null 2>&1
        echo "" > /var/www/virtual/$serverdomain/logs/mail_$1_$DATUM
        grep $1 /var/log/mail.log | grep postfix | cut -d ":" -f 4 | uniq | sed 's/^[ \t]*//;s/[ \t]*$//' > $TMPFILE
        while read zeile; do
            grep $zeile /var/log/mail.log >> /var/www/virtual/$serverdomain/logs/mail_$1_$DATUM
        done < $TMPFILE
        rm $TMPFILE
        # Berechtigung auf die angelegte Datei ändern
        chown $LG:$LG /var/www/virtual/$serverdomain/logs/mail_$1_$DATUM
    else
        echo "Fehler: Verzeichnis /var/www/virtual/$serverdomain existiert nicht."
    fi
fi
 
Ruft man das Script auf der Console auf kommt übrigens eine kleine Fehlermeldung. Die grep-/find- Kombination fügt in das TMP-File mit den Message-ID noch zwei weitere Zeilen ein:
Code:
weighted check
NOQUEUE
 
 (Zumindest ist es bei mir so)
Die Logs werden aber weiter brav angelegt.
Gruß Knut