Was ein Mailserver prüft, bevor er die Nachricht überhaupt annimmt

« Blog · Von

Die verbreitete Vorstellung von Spamabwehr geht so: Die Nachricht kommt an, ein Filter liest sie, bewertet Betreff und Text und entscheidet zwischen Posteingang und Spam-Ordner. Das gibt es, und es ist der letzte Schritt. Der weitaus größere Teil des unerwünschten Verkehrs wird abgewiesen, bevor eine einzige Zeile des Textes übertragen wurde.

Das hat einen schlichten Grund: Text zu lesen kostet Rechenzeit, eine IP-Adresse nachzuschlagen fast keine. Ein Server, der jede Verbindung bis zum Ende annimmt, um sie danach zu bewerten, macht sich zum Ziel.

Das Gespräch, bevor es zum Inhalt kommt

SMTP ist ein Wechselgespräch mit fester Reihenfolge. Jeder Schritt ist eine Gelegenheit, die Verbindung zu beenden — und die meisten Verbindungen enden lange vor dem letzten.

1 · TCP-Verbindung 2 · Begrüßung 3 · EHLO 4 · MAIL FROM 5 · RCPT TO 6 · DATA Blockliste, Verbindungsrate, Herkunftsnetz Wer vor dem Banner spricht, ist kein Mailserver Name gültig? PTR vorhanden? Löst er zurück auf? SPF, und: existiert die Absenderdomain überhaupt? Gibt es den Empfänger? Greylisting Erst hier beginnt die Prüfung des Inhalts
Fünf Prüfstufen liegen vor der ersten Textzeile. Sie kosten den Empfänger fast nichts und den Absender alles, wenn eine davon nicht sauber eingerichtet ist.

Schritt 1: die Adresse allein

Bevor irgendetwas gesprochen wird, steht fest, woher die Verbindung kommt. Das genügt für drei Entscheidungen:

  • Blocklisten. Eine Abfrage im DNS, Antwortzeit im Millisekundenbereich. Steht die IP auf einer Liste, die der Betreiber für hart hält, ist hier Schluss.
  • Verbindungsrate. Wie viele Verbindungen kamen aus diesem Netz in der letzten Minute? Wer zu schnell zu viele öffnet, wird gebremst oder abgewiesen.
  • Art des Netzes. IP-Bereiche, die als Anschlussnetze für Privatkunden bekannt sind, werden von vielen Servern für eingehende Mail grundsätzlich abgewiesen. Dahinter steckt kein Vorurteil, sondern die Beobachtung, dass fast nur befallene Rechner von dort direkt zustellen.

Schritt 2: wer zu früh redet

Der Server schickt eine Begrüßungszeile, die mit 220 beginnt. Erst danach ist der Client an der Reihe. Manche Server verzögern diese Zeile absichtlich um einige Sekunden und prüfen, ob der Client trotzdem schon zu senden anfängt.

Ein regelkonformer Mailserver wartet. Einfache Versandprogramme, wie sie auf übernommenen Rechnern laufen, sparen sich das Warten, weil sie in der Zeit anderswo zustellen könnten. Wer vor der Begrüßung spricht, hat sich damit selbst zu erkennen gegeben.

Schritt 3: EHLO und die Rückwärtsauflösung

Mit EHLO nennt sich der Client beim Namen. Geprüft wird dreierlei:

  1. Ist der Name überhaupt ein vollständiger Domainname? Ein EHLO localhost oder eine bloße IP-Adresse fällt sofort auf.
  2. Gibt es zur IP einen PTR-Eintrag? Also: löst die IP-Adresse rückwärts zu einem Namen auf? Fehlt der Eintrag, ist das für viele Empfänger ein Ablehnungsgrund.
  3. Stimmt die Auflösung in beide Richtungen? Der Name aus dem PTR muss vorwärts wieder auf dieselbe IP zeigen. Das nennt sich Forward-confirmed reverse DNS und ist die einzige dieser Prüfungen, die sich nicht einfach behaupten lässt: Den PTR setzt der Netzbetreiber, den A-Eintrag der Domaininhaber. Beides zu kontrollieren heißt, tatsächlich zu beidem zu gehören.

Behauptet der Client obendrein, er sei der Empfangsserver selbst — EHLO mail.firma.de gegenüber mail.firma.de — ist die Sache eindeutig. Ein Server ruft sich nicht selbst an.

Schritt 4 und 5: die Adressen

Bei MAIL FROM wird die SPF-Prüfung durchgeführt — sie braucht die IP und die Umschlagdomain, und beides liegt jetzt vor. Zusätzlich wird nachgesehen, ob die Absenderdomain überhaupt existiert und Post empfangen kann. Eine Domain ohne MX- und ohne A-Eintrag kann keine Antwort entgegennehmen und ist damit als Absender unbrauchbar.

Bei RCPT TO entscheidet sich, ob es den Empfänger gibt. Hier liegt der Unterschied zwischen einer Ablehnung und einer späteren Unzustellbarkeitsmeldung: ein Server, der jetzt 550 antwortet, weist ab — die Meldung erzeugt der Absender. Ein Server, der erst annimmt und später merkt, dass es die Adresse nicht gibt, muss selbst eine Meldung verschicken, oft an einen gefälschten Absender.

Ebenfalls hier greift Greylisting: eine vorläufige Abweisung mit 4xx, die eine zweite Zustellung nach einigen Minuten verlangt. Warum die erste Nachricht deshalb manchmal spürbar später ankommt, ist an anderer Stelle beschrieben. Auch die Zahl der abgelehnten Empfänger je Verbindung wird mitgezählt: Wer zehn nicht existierende Adressen hintereinander probiert, arbeitet eine Liste ab.

Was der Fehlertext verrät

Weil jede Stufe ihren eigenen Fehler hat, sagt der abgewiesene Text ziemlich genau, woran es lag:

Meldung sinngemäßGescheiterte Stufe
Client host rejected / blocked using …1 — die IP steht auf einer Liste
Improper use of SMTP command pipelining2 — zu früh gesprochen
Helo command rejected: need fully-qualified hostname3 — der EHLO-Name taugt nicht
cannot find your reverse hostname3 — PTR fehlt oder passt nicht
Sender address rejected: Domain not found4 — die Absenderdomain existiert nicht
Recipient address rejected: User unknown5 — die Adresse gibt es nicht
Greylisted, try again in …5 — vorläufig, kein Fehler

Die Unterscheidung zwischen 4xx und 5xx ist dabei wichtiger als der Text: 4xx heißt „später noch einmal", 5xx heißt „nie wieder". Ein Absender, der auf eine 5xx hin weiter zustellt, macht sich verdächtig; einer, der eine 4xx nicht wiederholt, ist kein richtiger Mailserver.

Was daraus für den eigenen Versand folgt

Die Liste ist kurz und beinahe langweilig — genau deshalb wird sie übersehen:

  • PTR-Eintrag setzen lassen und vorwärts auflösen. Der Netzbetreiber trägt ihn ein, nicht Sie. Das ist bei eigenem Versand die häufigste Ursache für pauschale Ablehnungen.
  • EHLO auf denselben Namen setzen, auf den der PTR zeigt. Nicht auf den Hostnamen der Maschine, nicht auf die Domain der Nachricht.
  • Nicht aus einem Anschlussnetz für Privatkunden direkt zustellen. Der Server steht in der Wohnung oder hinter einem gewöhnlichen Anschluss? Dann über einen Relay senden.
  • Empfängerlisten sauber halten. Nicht existierende Adressen fallen bereits in Schritt 5 auf, lange bevor irgendein Inhalt bewertet wird.

Der Inhalt einer Nachricht entscheidet über ihre Zustellung erst, wenn alles davor stimmt. Es lohnt sich, in der Reihenfolge zu suchen, in der auch der Server prüft.