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.
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:
- Ist der Name überhaupt ein vollständiger Domainname? Ein
EHLO localhostoder eine bloße IP-Adresse fällt sofort auf. - 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.
- 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 pipelining | 2 — zu früh gesprochen |
| Helo command rejected: need fully-qualified hostname | 3 — der EHLO-Name taugt nicht |
| cannot find your reverse hostname | 3 — PTR fehlt oder passt nicht |
| Sender address rejected: Domain not found | 4 — die Absenderdomain existiert nicht |
| Recipient address rejected: User unknown | 5 — 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.
EHLOauf 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.