Water drops

Es war wie verhext. Mein Mailserver arbeitete soweit einwandfrei, der Server war nicht überlastet, die meisten Mails kamen auch problemlos durch, und doch...

Und doch gab es Probleme. Manche Absender beschwerten sich, dass es ziemlich lange dauert, bis mein Mailserver eine E-Mail annimmt. Bei wenigen lieferte deren Mailserver sogar einen Bounce, dass mein Mailserver gerade nicht erreichbar sei und es noch ein paar Stunden lang probiert werden würde. Die Mail kam dann erst Stunden später bei mir an.

Des Rätsels Lösung ist eine RFC1413-konforme Voreinstellung vom Exim. Der schickt nämlich bei jeder Anfrage erst mal eine “ident”-Anfrage an den Absender zurück. Und je nachdem, wie dicht die Firewall des Absenders ist, wird diese Anfrage verworfen und nie beantwortet. Der Exim wartet dann erst mal 30 Sekunden lang, bevor er dem Absender überhaupt seine Aufmerksamkeit schenkt.

Bei manchen Absendern war der MTA wiederum so eingestellt, dass er bereits nach weniger als 30 Sekunden ohne Lebenszeichen von meinem Server aufgibt und die E-Mail später zuzustellen versucht.

Die maßgebliche Option in der exim.conf lautet "rfc1413_query_timeout". Dieser ist auf 30 Sekunden voreingestellt. Folgende Zeile schaltet die ident-Rückfrage ganz aus:

rfc1413_query_timeout = 0s

Seitdem läuft mein Mailserver endlich reibungslos.

Technisch gesehen lag die Ursache nicht wirklich an meinem Server, sondern an der Firewall des Absenders. Dort sollte wenigstens ein Fake-Identd-Service laufen, oder eine Verbindungsanfrage an Port 113 nicht einfach verworfen, sondern zurückgewiesen werden.

Die ident-Anfrage ist nicht wirklich sinnlos. Sie ermöglicht es in manchen Fällen, den wahren Absender einer E-Mail zu ermitteln. Wer das Feature also behalten möchte, kann auch einen kleineren Wert wie “10s” oder “1s” einstellen.