Wenn Outlook und Hotmail deinen Mailserver abweisen: Fehler S3150

Christian Drexler

Jemand hatte von einem msn.com-Konto an eine meiner Adressen geschrieben. Ich habe aus meinem Mailprogramm geantwortet, über den Mailserver, den ich auf einer gemieteten virtuellen Maschine betreibe. Eine Minute später lag die Antwort wieder in meinem Postfach:

550 5.7.1 Unfortunately, messages from [203.0.113.10] weren't sent.
Please contact your Internet service provider since part of their
network is on our block list (S3150).

Der Server verschickt jeden Tag Mail. SPF und DKIM bestehen, und andere Anbieter nehmen seine Mail ohne Murren an. Nur die Privatkunden-Postfächer von Microsoft, also outlook.com, hotmail.com, live.com und msn.com, sagten nein.

Die Rückmeldung lesen

Die wichtigen Worte sind „part of their network“. Microsoft sagt nicht, mein Server habe Spam verschickt, und es sagt nicht, meine Authentifizierung sei kaputt. Es sagt, dass ein Adressbereich meines Hosters auf seiner Sperrliste steht und die Adresse meines Servers in diesem Bereich liegt.

Der Code sagt dasselbe. S3150 ist der Code, den Microsoft an diesen Satz über einen gesperrten Netzteil hängt. Eine Nachricht, die an der Authentifizierung scheitert, sieht anders aus und nennt SPF, DKIM oder DMARC beim Namen.

Diese Unterscheidung entscheidet, was sich als Nächstes lohnt. Bei einem Problem mit Inhalt oder Authentifizierung repariert man die eigene Seite und versucht es noch einmal. Bei einer Bereichssperre gibt es auf der eigenen Seite nichts zu reparieren. Jemand anderes beim selben Anbieter, im selben Adressblock, hat genug Müll verschickt, dass Microsoft der ganzen Straße nicht mehr zuhört.

Es lohnt sich zu bestätigen, dass es wirklich nur das ist. Auf dem Server zeigt das Mail-Log jede Ablehnung mit ihrem Code:

grep -c "S3150" /var/log/exim_mainlog
grep "550 5.7" /var/log/exim_mainlog | tail -20

Bei mir stand seit Monatsbeginn genau ein S3150 im Log und keine andere 5.7-Ablehnung. Es war also ein einzelner Empfänger bei einem einzelnen Anbieter, getroffen von einer Sperre, mit der ich nichts zu tun hatte.

Was nicht hilft

Die Mail ändern. Die Nachricht kam nie weit genug, um gelesen zu werden. Umformulieren, die Signatur oder den Link entfernen ändert nichts.

SPF oder DKIM verschärfen. Beide bestanden. Eine Bereichssperre greift, bevor irgendetwas davon angesehen wird.

Warten. Niemand sagt einem, wie lange ein Bereich gesperrt bleibt. Die Person, die auf meine Antwort wartete, sollte das nicht herausfinden müssen.

Die gesamte Mail des Servers über ein Relay leiten. Das ist die erste Idee, die jeder hat: den Server so einstellen, dass er alle ausgehende Mail an einen Versanddienst übergibt. Ich habe es mir angesehen und gelassen. Der Server trägt Postfächer für mehrere Domains. Ein Versanddienst nimmt nur Mail von Domains an, die man bei ihm verifiziert hat. Jede dieser Domains müsste dort also erst eingerichtet werden, sonst würde stattdessen ihre Mail scheitern. Das ist eine echte Migration mit echtem Risiko, um eine zurückgekommene Antwort zu lösen.

Der Umweg für eine Mail

Eine der Domains auf diesem Server war bereits bei Amazon SES verifiziert, weil die Seite dahinter ihre Anmeldebestätigungen so verschickt. Die Adresse, von der ich antwortete, durfte also rechtmäßig über SES senden. SES sendet aus den Adressbereichen von Amazon, und die nimmt Microsoft an.

Ich habe die Antwort aus meinem Mailprogramm als Datei gespeichert. Das ergibt eine vollständige Rohnachricht mit allen Kopfzeilen. Die habe ich vom Terminal aus mit der AWS-Kommandozeile, Version 2, an SES übergeben:

aws ses send-raw-email \
  --region us-east-1 \
  --raw-message "Data=$(base64 -i reply.eml)"

Der Zugangsschlüssel dafür gehört zu einem Benutzer, der Mail senden darf und sonst nichts, demselben, den auch die Seite benutzt. Die Rohnachricht enthält bereits From, To, Subject und die Antwort-Kopfzeilen, die Antwort reiht sich im Postfach des Empfängers also richtig in den Verlauf ein.

Bevor sie an den echten Empfänger ging, habe ich dieselbe Datei an eine eigene Adresse auf dem alten Server geschickt, um zu sehen, was eine Empfängerseite daraus macht. Sie kam an, der Spamfilter gab ihr eine neutrale Bewertung, und der Return-Path zeigte die Bounce-Subdomain, die ich für SES eingerichtet hatte. Damit war geklärt, dass die Antwort selbst denselben Weg nehmen kann.

Zwei Dinge sollte man über diesen Weg wissen. Erstens erscheint eine so verschickte Mail nicht im Gesendet-Ordner des Mailprogramms, weil das Mailprogramm sie nicht verschickt hat. Trag deine eigene Adresse als Blindkopie in die Rohdatei ein, sonst hast du keinen Beleg dafür, was du geantwortet hast. Zweitens kommt jede Antwort wie immer im normalen Postfach an. Nur der ausgehende Weg hat den Umweg genommen.

Wenn es öfter passiert

Eine Rückmeldung ist ein Vorfall. Wird ein Muster daraus, gibt es zwei saubere Lösungen.

Die erste: Microsoft bitten, die Sperre für die eigene Adresse aufzuheben. Dafür gibt es ein Formular für Absender, es wird von Menschen beantwortet, und für eine einzelne saubere Adresse in einem gesperrten Bereich wird dem manchmal stattgegeben. Es dauert Tage, und der nächste schlechte Nachbar kann es wieder zunichtemachen.

Die zweite: den Umweg für das eine Postfach, das ihn braucht, dauerhaft machen. SES bietet einen SMTP-Endpunkt mit eigenen Zugangsdaten. Trägt man ihn im Mailprogramm als Postausgangsserver für dieses Konto ein, verlässt jede Mail von dieser Adresse das Haus über SES, während eingehende Mail bleibt, wo sie ist. Das berührt ein Postfach auf einer Domain und lässt den Rest des Servers in Ruhe.

Ich habe bisher keines von beiden gemacht. Eine Rückmeldung in einem Monat rechtfertigt keines.

Was ich daraus mitgenommen habe

Wer einen eigenen Mailserver betreibt, dessen Ruf gehört zum Teil den Nachbarn. Man kann alles richtig machen und trotzdem abgewiesen werden, wegen des Adressblocks, in den einen der Anbieter gesetzt hat. Das spricht nicht gegen den eigenen Server. Es heißt aber, dass man einen zweiten Ausgang braucht, der bereitsteht, bevor man ihn braucht.

Bei mir ist dieser zweite Ausgang ein Versanddienst, bei dem die Domain schon verifiziert ist, ein Schlüssel, der nur senden kann, und der eine Befehl von oben in einer Notiz. Wenn das nächste Mal in einer Rückmeldung S3150 steht, dauert der Umweg zwei Minuten.