ispCP - Board - Support
[ERLEDIGT]email Logs für Kunden - Printable Version

+- ispCP - Board - Support (http://www.isp-control.net/forum)
+-- Forum: ispCP Omega International Area (/forum-22.html)
+--- Forum: German Corner (/forum-26.html)
+---- Forum: Archiv (/forum-54.html)
+---- Thread: [ERLEDIGT]email Logs für Kunden (/thread-5562.html)

Pages: 1 2 3


RE: [ERLEDIGT]email Logs für Kunden - rbtux - 01-31-2009 09:07 AM

es wäre besser auf die Message ID zu greppen, dann siehst du auch wer das ganze einliefert...

ich hab da kurz was zusammengeflickt, ist zwar nicht schön, sollte aber funktionieren...

Code:
#!/bin/bash
deleteafterdays=184
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]*$//' > /tmp/usermaillog.tmp
        while read zeile; do
            grep $zeile /var/log/mail.log >> /var/www/virtual/$serverdomain/logs/mail_$1_$DATUM
        done < /tmp/usermaillog.tmp
        rm /tmp/usermaillog.tmp

        # 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

Funktioniert natürlich nur richtig, wenn der spam filter als smtp_proxy und nicht als content filter läuft... (naja content filter ist ja sowiso bullshit ;-))


RE: [ERLEDIGT]email Logs für Kunden - Knut - 01-31-2009 04:29 PM

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


RE: [ERLEDIGT]email Logs für Kunden - rbtux - 01-31-2009 10:43 PM

jop der grep auf die Message-ID kann sicher besser gemacht werden ;-) Aber in Bash? ich weiss nicht...


RE: [ERLEDIGT]email Logs für Kunden - Knut - 05-31-2009 02:50 AM

(01-31-2009 07:46 AM)BeNe Wrote:  Perfekt! Danke für die Arbeit!
Kann ich euch dann bitten das ins Wiki zu übernehmen ?
Macht ja durchaus sinn in einigen Fällen es dem Kunden zu verfügung zu stellen.

Greez BeNe

Done.
http://www.isp-control.net/documentation/de/howto/mail/maillogs_fuer_kunden


RE: [ERLEDIGT]email Logs für Kunden - BeNe - 05-31-2009 07:20 AM

Thanks @Knut für den Eintrag!
Also wenn das alles so passt, dann bin ich fast dafür das mal in den trunk zu übernehmen. Sinn macht es aus meiner Sicht! Super idee.

Greez BeNe