[php] Maillog im Browser auswerten ("mailparse")

miko93

Registered User
Hallo,

auf meinem vServer habe ich logrotate und logwatch laufen. Ersterer schaufelt meine logs im Wochentakt ins Archiv. Letzterer sendet mir jeden Tag (jede Nacht) eine komprimierte Auswertung der diversen Logfiles.

Trotzdem möchte ich speziell die Datei /var/log/maillog gerne von verschiedenen Orten aus überprüfen können, ohne als root einloggen zu müssen. Dafür habe ich nun folgenden Weg gewählt:

Es läuft ein cron unter root, der mir die maillog (hier im Beispiel alle 30 Minuten edit: nö, einmal die Stunde) auf einen Useraccount kopiert. Dieser Account ist .htaccess/pwd geschützt, benötigt aber (logischerweise) keinen direkten Zugriff auf die originale maillog-Datei.

Beispiel:
Code:
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
29 * * * *  rm /var/www/web3/html/maillog
30 * * * *  cp /var/log/maillog /var/www/web3/html/maillog
31 * * * *  chmod +rwx /var/www/web3/html/maillog

Das Script [useraccount]/mailparse/mailparse.php wertet nun die Sender-/Empfängerdaten (wenn auch noch nicht sehr detailliert) aus und gibt mir einen Überblick über die aktuelle Lage. Ich sehe z.B., wer von meinen Domains wie viele Mails verschickt hat. Auch kann man einen "Triggerlevel" einstellen, so dass z.B. nur angezeigt wird, wer über 20 Mails versendet hat usw.
Damit hoffe ich, eingenistete Spam-Accounts o.ä. schneller entdecken zu können.

Das ist nun eine sehr spezielle Anwendung, die wohl nur bei nicht so stark frequentierten Mailservern funktioniert. Eventuell kann es aber doch jemand verwenden, deshalb poste ich das Script hier (siehe Anhang). Vielleicht hat ja auch jemand noch ein paar Tips für mich.

Installation:

- Eigene Domains eintragen in der Sektion "// ********** SETUP **".
- Evtl. noch den Pfad zur kopierten maillog-Datei anpassen.
- Script auf einen geeigneten Webspace kopieren.

Gruss,
miko

edit: cron läuft nur jede Stunde.
 

Attachments

Last edited by a moderator:
Mein Vorschlag wäre die drei Crons in ein Script zusammenzufassen und nur einen Cron laufen zu lassen:
Code:
#!/bin/sh
MAILLOG=/var/log/maillog
ZIELLOG=/var/www/web3/html/maillog

rm $ZIELLOG
cp $MAILLOG $ZIELLOG
chmod +r $ZIELLOG

PS: Dein Beispiel läuft übrigends nur einmal die Stunde.

huschi.
 
Huschi said:
PS: Dein Beispiel läuft übrigends nur einmal die Stunde.
Lol, Huschi danke. Yep, das sagt mein logwatch auch. Ich hätte */30 machen müssen, richtich ?
 
Back
Top