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