mail.log – versendete Mails erfassen

Ein Mailserver bedarf eines wachsamen Auges! Um Probleme wie eine Spamschleuder zu entdecken helfen schon ein paar simple Linux Befehle zum filtern von mail.log

Bei der Kontrolle der Aktivitäten eines Mailservers bleibt einem oft nichts anderes über als sich durch die Logfiles zu wälzen. um einen Schnellen blick auf alle Email zu erhalten, die der Server zuletzt verschickt hat, kann man die mail.log Datei folgendermaßen filtern:

cat /var/log/mail.log | grep postfix | grep "to=<" | grep "status=sent"

Damit erhält Informationen zu allen versandten E-Mails: hier eine Beispielausgabe:

Mar  7 16:19:57 mailserver postfix/pipe[17596]: 753C62F9D: to=john@example.org, orig_to=<john@example.org>, relay=dovecot, delay=0.54, delays=0.01/0/0/0.53, dsn=2.0.0, status=sent (delivered via dovecot service)

Anhand der ID (In diesem Fall 753C62F9D lassen sich dann noch detailiertere Informationen zu den jeweiligen Emails auslesen, wie zB den Sender usw.

Für eine schnelle händische Kontrolle zwischendurch absolut ausreichend.

Wer schönere Ausgaben haben möchte splittet die Ausgabe noch etwas auf und lässt sich nur teile ausgeben:

cat /var/log/mail.log | grep postfix | grep "to=<" | grep "status=sent" | cut -d':' -f4-5 | cut -d',' –f1

Ergebnis:

753C62F9D: to=<john@example.org>

Bessere Logauswertungen und Zusammenfassungen bekommt man mit Tools wie zB pflogsumm, awstats oder mailgraph die in den Paket-Repositories der Distribution eurer Wahl auch vorhanden sein sollten.

Mit täglich gemailten Statistiken über pflogsumm habt ihr euren Server im Auge falls Unregelmäßigkeiten auftreten, Wochen- Monats und später mal Jahresstatistiken stellen euch die graphischen Tools awstats oder mailgraph zur Verfügung.

Bei soviel praktischer Hilfe ist das wachsame Auge über dem Mailserver ein leichtes :)

Ähnliche Artikel:

Maildir: Wie kommen die Mails auf einen neuen Server?

Maildir: Was steckt hinter dem Dateinamen einer Maildir Datei? Kann man sie bedenkenlos auf andere Server verschieben? Die Antwort steckt in diesem Artikel.

Es kommt der Zeitpunkt für viele Server, da werden sie ersetzt. So ergeht es auch so manchem Mailserver. Modernisierungen, Standortwechsel und andere Begebenheiten machen einen Transfer der alten Mails auf ein anderes Gerät / auf eine andere Installation notwendig.

Nun stellt sich die Frage, wie man das bewerkstelligt.

Die einzelnen Dateien im Maildir Format haben durchaus verzwickte Dateinamen

1992034886.M538544P12919.server,S=1473,W=1505

und so könnte man auf den trügerischen Schluss kommen, dass mehr da dahinter steckt und man irgendwelche Konvertierungen beachten muss. Doch es ist kein Transfer über 2 IMAP konten oder ähnliches ist notwendig. Der Dateiname ist lediglich ein Resultat des Versuchs eindeutige Dateinamen zu erzeugen und der Inhalt selbst ist simpler ASCII Text. Theoretisch könnte eine solche Datei auch “herbert” heißen und es sollten keinerlei Komplikationen auftreten.

Somit reicht es aus eine Datei im Maildir Format einfach in das neue Zielverzeichnis zu verschieben.

Was steckt hinter dem Dateinamen?

Maildir VerzeichnisbaumAls Prozedur für die Erzeugung des Dateinamens sind folgende zwei Formen vorgesehen:

  • time.MusecPpid.host
  • time.MusecPpid_unique.host

time und usec stehen für die aktuelle Systemzeit die über den aufruf gettimeofday ausgelesen wird, pid ist die Prozessnummer des Prozesses der die Mail in das Verzeichnis schiebt. Der Platzhalter host steht für den Namen der Maschine an die die Mail geliefert wurde.

Wenn mehr als eine Nachricht im selben Prozess behandelt wurde sind noch zusätzliche Suffixe angehängt, dies wird im 2. Schema verdeutlicht. Ein Unterstrich trennt die Prozessnummer von einem aufsteigenden Counter (unique). Dabei ist es egal in welchen Ordner eine Nachricht einmal abgelegt wird. Diese Mechanismen sorgen dafür, dass mehr als nur ein Prozess Mails ablegen kann ohne anderen Prozessen in die Wege zu kommen.

Damit der so erzeugte Dateiname nicht trotzdem schon existiert wird wird dennoch drauf geprüft ob er schon existiert. Wenn das der Fall wäre würde der Prozess für kurze Zeit pausieren und dann einen neuen Anlauf starten.

War der check erfolgreich wird die Nachricht angelegt. Ist sie fertig ins Filesystem geschrieben wird sie an ihr Ziel verschoben und um zusätzliche Informationen im Namen ergänzt. Der neue Name entspricht nun folgendem Schema:

  • time.MusecPpidVdevIino.host,S=cnt,W=vsize
  • time.MusecPpidVdevIino_unique.host,S=cnt,W=vsize

dev steht nun für die Device Nummer ino für die Inode Nummer, beides ausgelesen über fstat und cnt steht für die Nachrichtengröße in Bytes, welches für diverse Mailkonten-Quotenregelungen notwendig ist. Dadurch erspart man sich ein performance-lastiges Aufsummieren der Mailboxauslastung über den stat Befehl. vsize ist ebenfalls eine Kennzahl für die Mailgröße nach RFC822 bei dem die Steuerzeichen für den Zeilenumbruch mit berücksichtigt werden.

That’s it!

PS: richtiges chown nicht vergessen, sonst passiert nach dem Verschieben gar nix :)

Ähnliche Artikel: