Das leidige Thema dürfte bekannt sein: wenn man einen eigenen Mailserver betreibt, ist die Chance hoch, dass Mails an Adressen bei Microsoft entweder direkt abgelehnt werden (mit der bekannten "S3150" Fehlernummer) oder sie kommen einfach nie an ("Blackholing").
Was privat schon höchst lästig ist, ist für Betreiber von Online-Shops, Foren etc. absolut untragbar. Faktisch müsste man Kunden darauf hinweisen, dass sie bitte keine Adresse von Microsoft benutzen sollen, weil nicht sichergestellt werden kann, dass E-Mails an @hotmail.com, @live.com, @outlook.com etc. überhaupt ankommen. Das ist aber auch ein erheblicher Wettbewerbsnachteil - denn welcher Kunde wird sich nur für eine Bestellung eine andere E-Mail-Adresse anlegen? Und das Verständnis, dass das Problem bei Microsoft liegt, dürfte auch nur schwer vermittelbar sein.
Es gibt aber einen Workaround - man nutzt einen externen SMTP-Anbieter. Das geht bei Postfix auch völlig transparent und individuell nur für einzelne Domains. Ich betreibe das aktuell erfolgreich mit einem Anbieter aus Frankreich, bei dem man dauerhaft kostenlos 300 Mails pro Tag senden kann und wo die Zustellung bislang völlig problemlos war. Da der Anbieter eine Freischaltung per Mobilfunknummer und zugesendetem Code via SMS verlangt, kann er im Gegenzug auch zusichern, auch an Hotmail & Co. zuverlässig zuzustellen, da er bei Firmen wie Microsoft auch eine hohe Reputation als Absender hat. Bei dem fraglichen Anbieter gibt es ab ca. 20 EUR auch deutlich größere Volumen von 40000 Mails pro Monat ohne tägliches Limit. Für Online-Shops sicher eine bezahlbare Lösung, wenn nötig.
Die Vorgehensweise:
1) Man erstellt eine Transport Map für Postfix in /etc/postfix/transport mit folgendem Inhalt:
live.com smtp:smtp-relay.xxxx.com:587
hotmail.com smtp:smtp-relay.xxxx.com:587
outlook.com smtp:smtp-relay.xxxx.com:587
Statt smtp-relay.xxxx.com gibt man den Namen des Mailservers des Anbieters an. Port 587 ist Standard für SMTP-Einlieferung, aber ggf. sollte man beim Anbieter nachsehen, was er dort haben will.
Wenn man weitere Empfängerdomains so behandeln will, fügt man diese entsprechend zusätzlich ein.
Aus Datei wird nun wie folgt in das benötigte Binärformat erzeugt:
postmap /etc/postfix/transport
2) Postfix muss sich beim externen SMTP-Sever auch anmelden mit Benutzername/Passwort. Dafür legt man eine Datei /etc/postfix/sasl/sasl_passwd mit folgendem Inhalt an:
smtp-relay.xxxx.com:587 USERNAME:PASSWORT
Statt smtp-relay.xxxx.com wird wieder der Servername wie in Schritt 1 angegeben und USERNAME und PASSWORT entsprechend den Kontodaten beim Anbieter.
Auch von dieser Datei wieder in das Binärformat erzeugen:
postmap /etc/postfix/sasl/sasl_passwd
3) Nun muss Postfix noch passend konfiguriert werden. Dazu in /etc/postfix/main.cf folgende Einträge ergänzen:
smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl_passwd
smtp_sasl_tls_security_options = noanonymous
smtp_sasl_auth_enable = yes
transport_maps = hash:/etc/postfix/transport
Falls transport_maps bereits Angaben enthält, einfach hash:/etc/postfix/transport am Anfang ergänzen (z.B. transport_maps = hash:/etc/postfix/transport, hash:/var/lib/mailman/data/transport-mailman, proxy:mysql:/etc/postfix/mysql-virtual_transports.cf).
4) Postfix neu starten
Nun sollten alle E-Mails, die an @hotmail.com, @live.com und @outlook.com gehen, über den externen SMTP-Server geschickt werden, der Rest geht weiterhin direkt an den zuständigen MX. Für die Nutzer des Mailservers ändert sich nichts und auch bei den Empfängern kommen die Mails genauso an, als wären sie direkt zugestellt worden. Nur an den Headern kann man erkennen, dass ein anderer Server als Relay verwendet wurde.