SPF korrekt im DNS einrichten

Im Kampf gegen den täglichen Spam-Wahnsinn habe ich mich vor einiger Zeit mit SPF (Sender Policy Framework) auseinandergesetzt. Um SPF zu unterstützen muß man 2 zusätzliche Records im DNS hinzufügen. Damit verhindert man nicht eingehenden Spam bei sich selbst, sondern hilft anderen Mailservern von hier kommende E-Mails korrekt als Nicht-Spam zu kassifizieren.

SPF prüft zwei Dinge ab, deshalb müssen man auch 2 Records eingetragen werden:

  1. Mailadresse: Ein TXT Record ohne Hostnamen (linkes Feld leer lassen) mit dem Inhalt „v=spf1 mx –all“. Alle Mails mit einem Absender @mydomain.de werden darauf überprüft, ob sie von dem Server mit der IP-Adresse kommen, die im MX-Record der Domain definiert ist. Alle andern IPs sind explizit verboten (-all).
    Wenn man auch Webserver hat die Mails verschicken, dann sollte der Inhalt besser „v=spf1 a mx –all“ heißen, d.h. nicht nur der MX, sondern alle Hosts mit einem A-Record dürfen verschicken.
  2. Mailserver: Ein TXT Record für jeden Host der Mails verschickt (Hostname in linkem Feld) mit dem Inhalt „v=spf1 a –all“. Ein Mailserver meldet sich im SMTP-Dialog beim Befehl HELO (bzw. EHLO) mit einem Hostnamen. Die IP-Adresse des Mailservers muss natürlich mit der dieses Hostnamens übereinstimmen.

Einrichten und dann leere Testmail an spf-test@openspf.net schicken. Die kommt immer mit einem Fehler zurück. Interessant ist der Inhalt dieser Fehlermeldung: Es muss zweimal (für beide oben beschriebene Tests) „pass“ drinstehen, so wie hier:

RCPT TO:<spf-test@openspf.net>
550 5.7.1 <spf-test@openspf.net>: Recipient address rejected:
    SPF Tests: Mail-From Result="pass": Mail From="myname@mydomain.de"
    HELO name="mail.mydomain.de" HELO Result="pass" Remote IP="123.123.123.123"