Spam und UCE - Filter: SPF, SenderID

Das Prinzip als solches wird oft auch mit anderen Namen wie SPF, RMX, CallerID, DMP, MARID, bezeichnet. Ein ähnliches Konzept verbirgt sich hinter MTAMark

Meldung vom 23.6 http://www.heise.de/newsticker/meldung/60961 bzw. Telepolis: http://www.heise.de/tp/r4/artikel/20/20411/1.html
"Authentifizier dich oder stirb" Microsoft will seine Antispam-Technik Sender-ID mit der Brechstange durchsetzen

MSN/Hotmail will bald alle eingegangen Mails, deren Absender sich nicht mit SenderID identifiziert haben, als "potentiell Spam" betiteln. Also können wir davon ausgehen,  dass alle MSN/HotMail User demnächst 99% alle Mails als "potentiell Spam" lesen.
Auch wenn MSN damit ihren Standard forcieren möchten, so würde ich mir als Anwender eher die Umkehrung wünschen. Nachrichten von Sendern, die per SPF oder SenderID ihre Identität bestätigen, könnten mit einem Zusatz "Absender nicht gefälscht" versehen werden.

Update:
Angeblich sind aktuell 87% aller Domains, die mit SPF bzw. SenderID gekennzeichnet sind, Spamversender. Es ist schön zu wissen, dass die Domäne nicht gefälscht ist, aber solange jeder für 1 Euro ohne Identifizierung (Kreditkarten können gestohlen sein) eine Domäne kaufen, Massenmails senden und wieder abmelden kann, sind diese Filter kein Schutz gegen Spam, sondern nur ein Schutz gegen "Phishing". Nur nutzen es die meisten Banken noch nicht und nur wenige Mailserver prüfen die Existenz von SPF/SenderID-Records.

Update:
Laut einem Microsoft Artikel stammen bereits 30% aller Mails  im Internet von Domänen, die einen SPF-Record veröffentlichen.
 

So funktioniert es

Einen ganz anderen Weg gehen die Verfahren wie "Sender Policy Framework" oder CallerID. Das Ziel ist hierbei die Fälschung von Absenderadressen zu verhindern, d.h. über Einträge im DNS veröffentlicht eine Firma zugleich die IP-Adressen der ausgehenden Mailserver. Jeder Empfänger kann daher beim Empfang einer Mail feststellen, ob die absendende IP-Adresse dazu legitimiert ist und gegebenenfalls die Verbindung kappen.

Technisch wird dazu im DNS nicht nur ein Eintrag für eingehende Mails gepflegt,  sondern auch ein Eintrag, der die ausgehenden Mailserver beschreibt. Hier am Beispiel von Net at Work. (Die Abfrage erfolgt über einen DNS-Server der Telekom (Ich habe einen DSL-Anschluss genutzt).

Nachdem ich NSLOOKUP gestartet habe, habe ich die Anfrage auf "TXT" umgestellt und dann zwei Werte abgefragt:

<ep xmlns='http://ms.net/1' testing='false'>
    <out>
        <m>
            <a>80.66.20.18</a>
        </m>
    </out>
</ep>"

"v=spf1 mx a:rmx.netatwork.de ip4:80.66.20.18 -all"

Anhand dieser Informationen ist erkennbar, welche IP-Adressen und welche Server ausgehende Nachrichten für eine vorgegebene Domain senden. Es liegt natürlich nun an ihrem eigenen Mailserver, bei einer eingehenden Nachricht eben die Domäne der Absenderadresse zu nehmen und über DNS nachzufragen, ob die einliefernde IP-Adresse dazu passt.

Das ist natürlich nur eine "Einfachversion" eines Records. Es ist problemlos möglich, auch Subnetze zu spezifizieren oder andere Adressen per "Include" einzuschließen. Interessant ist der letzte Abschnitt, welcher die Behandlung für nicht gelistete IP-Adressen festschreibt.

Sinnvoll ist daher nur ein "-all", um eine Zustellung durch nicht autorisierte Mailserver aktiv zu verhindern. Details siehe auch http://www.openspf.org/svn/project/specs/rfc4408.txt

Eine nicht fälschbare Absenderadresse verhindert zwar keine Spamnachrichten, aber über einfach Blacklisten können die unerwünschten Domänen dann einfach gefahrlos blockiert werden. Der Aufwand (und die Kosten) für einen Spammer steigen. Firmen mit dynamischen IP-Adressen oder die ihre Webseite bei einem Hoster betreiben werden sich jedoch etwas einfallen lassen müssen. Entweder trägt der Provider die Records ein, wodurch Sie immer das Relay des Providers nutzen müssen. Hierfür wird der Provider sicher Geld verlangen, da er ihre Mails zusätzlich übertragen muss. Alternativ könnten Sie über DDNS diese Einträge aktualisieren. DynDNS erlaubt dies z.B.: schon.

Probleme

Problematisch ist hierbei, dass es noch lange Zeit dauern wird, bis alle Domains der Welt diese Informationen veröffentlichen und bis dahin diese Liste nur als "Whitelist" genutzt werden kann aber noch nicht zur Blockade von Verbindungen. Leider kommt hinzu, dass die verschiedenen Interessengruppen unterschiedliche Vorschläge als Standard absegnen lassen wollen.

Aber auch technisch gibt es sicherlich das ein oder andere zu bewältigen. Wenn Sie ihre Mails nicht direkt, sondern über einen Provider erhalten, oder wenn der Provider nur einen BackupMX zur Verfügung stellt, dann muss ihr System auch damit umgehen können. In diesem Fall erhalten Sie die Mail nämlich nicht direkt von dem entfernten Server, sondern vom Relay. Die Auflösung der Domäne zu IP-Adresse funktioniert dann natürlich nicht.

Probleme, die ebenfalls schon bei mir aufgetreten sind, sind automatische Weiterleitungen Wenn ich eine Mail an "firma1.de" sende und diese dort an "firma2.de" weitergeleitet wird, dann bekommt der Mailserver von fima2.de diese Mail von der IP-Adresse von firma1.de und nicht mehr von mir. Aber die "MAIL FROM"-Zeile im SMTP-Envelope kann durchaus meine Adresse sein, je nach Art der Weiterleitung. Habe ich dann SPF-Einträge im DNS veröffentlicht, dann kommt es z.B.  zu folgendem Fehler:

Der Mailserver, welcher die Mail weiterleitet, muss entsprechend die "MAIL FROM"-Adresse im SMTP-Protokoll (Siehe SMTP-Telnet) umstellen

Listserver und Weiterleitungen

Ein weiteres Problem, auf welches Sie bei einem SPF-Check stoßen können, sind Weiterleitungen und Listserver. Hier kann das folgende passieren:

In beiden Fällen muss der Mailserver daher die Absenderadresse umschreiben, damit die Mails auch tatsächlich zugestellt werden kann. Exchange 2003 schreibt die Mail leider per Default nicht um. Dies kann aber über ein AddOn erreicht werden:

Verbesserung erwünscht

Ich würde (auch wenn es keinen Standard gibt) auch den Download dieser Informationen per HTTP unterstützen wollen. Firmen, die keine Hoheit über ihren DNS haben, haben aber oft die Hoheit über ihre Webseite. Daher könnte z.B.: ein http://www.firma.de/_ep.txt oder http://www.firma.de/spf.txt ebenfalls die Informationen als TXT-Datei oder XML-Struktur liefern. Das Verfahren ist übrigens nicht sonderlich neu, da auch Suchmaschinen über eine Datei robots.txt gesteuert werden können.

Die großen Provider und ihre Einstellungen.

Nun könnte man denken, dass die Firmen, die ihr System besonders preisen, dies auch einsetzen. Entsprechende Datensätze sind bei den großen Providern zwar schon gepflegt aber bei weitem nicht perfekt. Hier ein paar Beispiele (Ende Nov 2005)

Firma (Typ)

DNS-Information

Bewertung
Microsoft SenderID

_ep.Microsoft.com text =

"<ep xmlns='http://ms.net/1' testing='true'><out><m>"
"<mx/><a>213.199.128.160</a>
<a>213.199.128.145</a>
<a>207.46.71.29</a>
<a>194.121.59.20</a>
<a>157.60.216.10</a>
<a>131.107.3.116</a>
<a>131.107.3.117</a>
<a>131.107.3.100</a>"
"</m></out></ep>"

Microsoft hat zwar nur ein paar IP-Adressen als ausgehende Server angegeben, aber durch die Einstellunge "testing='true*" wird allen Gegenstellen laut Definition gesagt, dass dies eventuell nicht alle Server sind und andere IP-Adressen auch erlaubt sein sollten. Die Information kann also nur genutzt werden, um z.B.: Mails von diesen Adressen als "ungefälscht" zu kennzeichnen. Ablehnen sollten Sie keine Mail von Microsoft, wenn Sie von anderen Adressen kommt
Microsoft SPF

"v=spf1 mx redirect=_spf.Microsoft.com"

_spf.Microsoft.com text = "v=spf1 ip4:213.199.128.139
ip4:213.199.128.145 ip4:207.46.50.72
ip4:207.46.50.82 ip4:131.107.3.116
ip4:131.107.3.117 ip4:131.107.3.100 ip4:131.107.3.108 a:delivery.pens.Microsoft.com
a:mh.Microsoft.m0.net mx:Microsoft.com ?all"

Zusätzlich pflegt Microsoft auch einen SPF-Record.

Dieser erlaubt alle Mailserver, die auch als MX-Record eingetragen sind.  Zusätzlich ist ein SPF-Alias eingetragen, der ebenfalls die IP-Adressen listet.

Auch hier bedeutet das "?all" am Ende, dass es noch andere Server geben kann.

Yahoo.com SenderID

_ep.yahoo.de canonical name = rc1.vip.ukl.yahoo.com
rc1.vip.ukl.yahoo.com internet address = 217.12.6.29

Das ist eigentlich schon sehr gut. Eine einzige IP-Adresse ist für den ausgehenden Versand.

Einen SPF-Record bietet Yahoo aber nicht an.

AOL.COM SPF

 "spf2.0/pra ip4:152.163.225.0/24
ip4:205.188.139.0/24 ip4:205.188.144.0/24
ip4:205.188.156.0/23 ip4:205.188.159.0/24
ip4:64.12.136.0/23 ip4:64.12.138.0/24 ptr:mx.aol.com ?all"

"v=spf1 ip4:152.163.225.0/24 ip4:205.188.139.0/24
ip4:205.188.144.0/24 ip4:205.188.156.0/23
ip4:205.188.159.0/24 ip4:64.12.136.0/23
ip4:64.12.138.0/24 ptr:mx.aol.com ?all"

AOL bietet sogar beide SPF-Versionen an.

Irritierend ist aber die Größe der Subnetze, die AOL hier als "ausgehend" definiert. Ob AOL wirklich über 2000 ausgehende Mailserver hat ?.

Zudem sind auch die AOL-Administratoren sich wohl  nicht sicher,  welche Mailserver Nachrichten mit Absendern "aol.com" versenden. Das "?all" entwertet die Daten.

Ein SenderID-Eintrag wird nicht veröffentlicht.

GMX.NET SPF
"v=spf1 ip4:213.165.64.0/23 -all"
Auch GMX veröffentlicht zumindest einen SPF-Record für die eigenen Mailserver. Allerdings die GMX auch einer der wenigen großen Provider, die mit dem "-all" es den Empfänger leicht macht, andere IP-Adressen abzulehnen. Gut so.
Hotmail

 "v=spf1 include:spf-a.hotmail.com
include:spf-b.hotmail.com include:spf-
c.hotmail.com include:spf-d.hotmail.com ~all"

spf-a.hotmail.com text =

"v=spf1 ip4:209.240.192.0/19
ip4:65.52.0.0/14 ip4:131.107.0.0/16
ip4:157.54.0.0/15 ip4:157.56.0.0/14
ip4:157.60.0.0/16 ip4:167.220.0.0/16
ip4:204.79.135.0/24 ip4:204.79.188.0/24
ip4:204.79.252.0/24 ip4:207.46.0.0/16
ip4:199.2.137.0/24 ~all"

_ep.hotmail.com text =

"<ep xmlns='http://ms.net/1' testing='true'><out><m><indirect>list1._ep.
hotmail.com</indirect><indirect>list2._ep.hotmail.com</indirect><indirect>list3.
_ep.hotmail.com</indirect></m></out></ep>"

Hotmail hat wie Microsoft und MSN auch wieder "Testing = true" gesetzt und entwertet damit die Daten.

Viel schlimmer ist aber die Auswertung der eingeschlossenen Adressen.

Eine Auswertung auf spf-a.hotmail.com liefert riesige Subnetze. Anscheinend erlaubt Microsoft alle IP-Adressen, die auch an Endkunden vergeben werden, den direkten Versand mit beliebigen "hotmail"-Adressen, ohne ein Relay oder weitere Authentifizierung.

Da hat jemand sicher nicht das Prinzip verstanden.

Zudem veröffentlicht Hotmail auch einen SenderID-Record, dessen verweisende Adressen allerdings nicht auflösbar sein.

WEB.DE Keine Daten zu SPF oder SenderID veröffentlicht
T-online.de Keine Daten zu SPF oder SenderID veröffentlicht

Dieser kurze Test zeigt, dass auch die großen Provider sehr uneinig für die Nutzung dieser Technik und die Interpretation der Daten sind. So scheint bei Hotmail die "Funktion" vor der Nutzung zu überwiegen, während andere Provider zwar ihre Mailserver angeben, aber ebenfalls nicht wirklich sicher zu sein scheinen. Es bleibt noch viel zu tun.

NDRSpam durch SPF

SPF und ähnliche Verfahren erlauben ja schon sehr früh bei der Verbindung die Gültigkeit der angegebenen "MAIL FROM"-Adresse zu prüfen. Entsprechend können Mailserver bei einer Verletzung die Verbindung mit einem Fehler einfach ablehnen. Solange der Spammer selbst direkt versendet und einen halbwegs sinnvoll konfigurierten Mailserver einsetzt, wird er die Mail nicht los und sonst passiert nichts weiter.

Leider sind sowohl Spammer als auch offene Relays ein Problem bei diesem frühen Ablehnen, welches ich auch als NDR Spamming beschrieben habe. Der Mailserver, welcher die Nachricht nicht zustellen kann, muss gemäß der RFC die Nachricht mit einer Quittung, bzw. einer "Unzustellbarkeitsquittung" an den Absender zurück melden. Dazu muss der Mailserver natürlich wissen, dass er selbst die Mail von einem "vertrauenswürdigen" Absender erhalten hat. Das machen offene Relays natürlich nicht und viele Mailserver, die von Spammern verwendet werden, senden auch munter NDRs. So finde ich dann ab und an Nachrichten wie die folgende in meinem Postfach.

Da hat also wohl der Postfix unter "seguin.cyframe.com" eine Unzustellbarkeitsquittung an mich gesendet, weil er eine Mail in meinem Namen an mail2.vip.su senden wollte, welcher diese aufgrund der SPF-Prüfung abgelehnt hat. Ob seguin.cyframe.com nun selbst der Spammer ist oder nur ein offenes Relay, habe ich nun nicht weiter untersucht.

Aber es ist auch hier gut ersichtlich, dass ein Spamfilter auch "Quittungen" analysieren" sollte und nur die Quittungen passieren dürfen, die eine Antwort auf eine ausgehende Nachricht darstellen können.

Weitere Links

Keywords: Spam Filter CallerID SPF MARID SenderID