Nie wieder Spam - Wie gut sind eigentlich Spam Filter?
| Als ich wiedereinmal mehr Spam Mails bekam als richtige Mails, sah ich mich nach Lösungen, um wie man Spam abblocken kann. Das Problem ist unter anderem die Zeit, die verloren geht beim Anschauen der Mails. Glücklicherweise sind meist alle Spam Mails in Englisch und es ist meist schon am Titel ersichtlich, ob es sich um Spam handelt oder nicht. (Bsp: “Re: Your Application”) | | Autor: tom - Date: 08.26.2003 last modified: 02.05.2004 - Size: 12845 chars - Hits / Day: 6.57 - Total Hits: 21075 | ** 20.02.2004 Auf <a href=http://www.heise.de/newsticker/meldung/44859>heise.de</a> gefunden: Ein interessanter Artikel über Spam und elektronische Briefmarken. Dabei werden auch SPF (Sender Permitted From), RMX (Reverse MX) und DMP (Designated Mailers Protocol) kurz beschrieben.
** 05.02.2004 Heute habe ich wieder einmal mit meinem Mailserver rumgespielt und dabei gleich noch einige Möglichkeiten gegen Spam probiert (Auf nope.ch wird ab dem 05.02.2004 SPF eingesetzt).
<a href=http://spf.pobox.com/>SPF</a> Sender Permitted From
SPF ist nicht in erster Linie gegen Spam, es ist nur gegen das Fälschen von Absenderadressen. Indem man sagst, dass von einer Doamin xy.ch nur eine Mail von der IP yz kommen kann. Dabei fallen vermutlich auch ein paar Spams zum Opfer, aber das Ziel von SPF ist das "address forgery" zu verhindern.
Der Eintag wird im DNS als TXT Eintrag vorgenommen. Auf der Seite <a href=http://spf.pobox.com/wizard.html>http://spf.pobox.com/wizard.html</a> gibt es einen Wizzard, der das erstellen eines Eintrages vereinfacht. Der Eintrag im DNS von nope.ch lautet: "v=spf1 a mx -all". "a" heisst dass nur Mails von nope.ch nur mit der IP 212.53.102.119 gesendet werden dürfen. "mx" ist in meinem Falle überflüssig, da der Mailserver mit der gleichen IP läuft, dieser Eintrag bedeutet dass der Mail Server ebenfalls Mails von nope.ch verschicken darf. "ptr" Habe ich wegelassen, da ich keinen Reverse Eintrag in meinem DNS habe. Ist ja auch schwierig mit nur einer IP ;)
Das perl Skript auf der Seite <a href=http://spf.pobox.com/downloads.html>http://spf.pobox.com/downloads.html</a> liefert mir nun folgendes Verhalten:
Input: 212.53.102.119 tom.b3@nope.ch
Output:
pass
Please see http://spf.pobox.com/why.html?sender=tom.b3%40nope.ch
&ip=212.53.102.119&receiver=gameandmore: nope.ch A 212.53.102.119
gameandmore: domain of tom.b3@nope.ch designates 212.53.102.119 as permitted sender
Input: 212.53.102.118 tom.b3@nope.ch
Output:
fail
Please see http://spf.pobox.com/why.html?sender=tom.b3%40nope.ch
&ip=212.53.102.118&receiver=gameandmore: default
gameandmore: domain of tom.b3@nope.ch does not designate 212.53.102.118 as permitted sender
Input: 212.53.102.119 tom.b3@hope.ch
Output:
none
SPF: domain of sender tom.b3@hope.ch does not designate mailers
gameandmore: domain of tom.b3@hope.ch does not designate permitted sender hosts
Serverseitig wird dieser Eintrag bei mir noch nicht überprüft, wenn jedoch Spamassassin und Postfix diese Option in ihrer nächsten Version einbauen, wird es ebenfalls überprüft.
Philip von <a href=http://www.iezzi.ch>iezzi.ch</a> hat mir sein main.cf zukommen lassen. Er zeigt wie man RBL mit postfix verwenden kann. RBL heisst Realtime Blackhole List, und sind Adressen von denen aus Spammer ihre Mails verschicken. Sind einmal die RBLs definiert, genügt ein Eintrag reject_maps_rbl z.B in der smtpd_recipient_restrictions Anweisung, und jedes Mail wird vorher überprüft ob der Absender in dieser Liste erscheint. Ist er dass, dann wird das Mail auf der Stelle verworfen.
maps_rbl_reject_code = 571
maps_rbl_domains =
dnsbl.sorbs.net,
relays.ordb.org,
dnsbl.njabl.org,
list.dsbl.org,
proxies.relays.monkeys.com,
opm.blitzed.org,
cbl.abuseat.org,
sbl.spamhaus.org,
blackhole.securitysage.com
*_*_restrictions = ...reject_maps_rbl...
<!p>
Ein weiteres Problem ist auch die Bandbreite. Bei der Sobig.F Attacke kamen bei mir Mails im Minutentakt an und alle hatten eine Grösse von zirka 100kb. Zu gross für 128 kbit upload. Diese Verschwendung kann nur durch den Headercheck verhindert werden. Beim Mail verschicken sendet eine Mail Transfer Agent seine Daten gemäss dem SMTP Protokoll (<!l>http://www.ietf.org/rfc/rfc0821.txt<!/l>). Man kann es auch selber probieren. Einfach eine telnet Session bei einem Mailserver starten. Zum Beispiel auf nope.ch: „telnet www.nope.ch 25“
1. Zuerst identifiziert man sich -> „HELO rechnername“ als Antwort bekommt man irgendeine 250 Meldung. 250 bedeutet alles IO, ab 500 sind es Fehlermeldungen. Die gesamte Liste findet man auch im oben genannten RFC.
2. Danach schickt man ein „MAIL FROM:spam@nope.ch“ damit der MTA auch weiss, von wem das Mail stammt. Als Antwort kriegt man wiederum 250.
3. Nun muss man angeben an wen man das Mail schicken will -> „RCPT TO:<spam1@nope.ch>“ entweder gibt es eine 250 oder eine Fehlermeldung. Hier fängt schon die erste Massnahme an, um gegen Spammer vorzugehen. Der Mailserver wird so konfiguriert, dass man Mails nur von einer bestimmten IP aus verschicken kann und wenn es sich um eine eingehende Mail handelt, dann dürfen nur die Mails weiter verarbeitet werden, wenn der Username dem Mailserver bekannt ist. Zunehmen sind Mail-Server mit Passwörter geschützt, sodass es nur autorisierten Usern möglich ist, Mails zu verschicken.
4. Jetzt kommen die Daten -> „DATA“ Enter drücken und man bekommt einen Hinweis, dass man nun die Daten eingeben kann. Beendet wird der Datenstrom mit einem Punkt aus einer einzelnen Linie.
Wie man selber erkennen kann, muss die Spam Abwehr Bei Punkt 1, 2 oder 3 geschehen, um die Bandbreite zu schonen. Durch Rückfrage kann man prüfen, ob die Email Adresse gültig ist oder man kann eine „white list“ erstellen, sodass Mails nur dann verarbeitet werden, wenn die Email Adresse bekannt ist.
Zur Bekämpfung der Mails wenn sie schon mal in der Mailbox sind, habe ich drei Produkte getestet: Razor, Spamassassin und den Mozilla Junk Filter.
Razor (<!l>http://razor.sourceforge.net/<!/l>) ist ein Spamfilter, der die Mail in eine Checksum verwandelt und bei einem Server nachfragt, ob dieses Mail Spam ist. Der Server wird wiederum von anderen Usern gefüttert, die Spam dem Server melden. Wenn der Server zu einer Checksum genügend User-Benachrichtigungen hat, dann wird die Checksum und somit die Mail als Spam klassifiziert. Mittlerweile haben das auch die Spammer begriffen und die meisten Spam Mails haben im Footer ein paar Kryptische Zeichen (z.B „xcdf1ss4g“). Das macht aus dem Mail eine andere Checksum und das Mail gilt nicht als Spam.
Spamassassin (<!l>http://spamassassin.org<!/l>) ist ein regelbasierter Spamfilter und geht nach Punkten vor. Hier ein kurzer Ausschnitt nach welchen Regeln gesucht wird. Diese Daten stammen aus einem Mails das als Spam erkannt wurde.
SENT_IN_COMPLIANCE (4.3 points) BODY: Claims compliance with spam regulations
EARN_MONEY (1.0 points) BODY: Message talks about earning money
MLM (0.8 points) BODY: Multi Level Marketing mentioned
ORDER_REPORT (2.9 points) BODY: Order a report from someone
SECTION_301 (1.7 points) BODY: Claims compliance with spam regulations
RISK_FREE (0.9 points) BODY: Risk free. Suuurreeee....
EXCUSE_3 (0.1 points) BODY: Claims you can be removed from the list
INVALUABLE_MARKETING (2.9 points) BODY: Invaluable marketing information
BULK_EMAIL (1.6 points) BODY: Talks about bulk email
BANG_MONEY (0.7 points) BODY: Talks about money with an exclamation!
AS_SEEN_ON (1.9 points) BODY: As seen on national TV!
DONT_DELETE (0.1 points) BODY: Don't delete me! Nooooo!!!!
JODY (2.9 points) BODY: Contains "My wife, Jody" testimonial
FINANCIAL (4.3 points) BODY: Financial Freedom
INITIAL_INVEST (2.7 points) BODY: Requires Initial Investment
COPY_ACCURATELY (2.9 points) BODY: Common pyramid scheme phrase (1)
HTML_30_40 (0.9 points) BODY: Message is 30% to 40% HTML
HTML_FONT_COLOR_RED (0.1 points) BODY: HTML font color is red
HTML_MESSAGE (0.1 points) BODY: HTML included in message
HTML_FONT_BIG (0.3 points) BODY: FONT Size +2 and up or 3 and up
HTML_FONT_COLOR_BLUE (0.1 points) BODY: HTML font color is blue
NORMAL_HTTP_TO_IP (0.7 points) URI: Uses a dotted-decimal IP address in URL
REMOVE_PAGE (0.3 points) URI: URL der Seite heisst "remove"
RAZOR2_CHECK (2.1 points) Listed in Razor2, see http://razor.sf.net/
DATE_IN_PAST_03_06 (0.3 points) Date: is 3 to 6 hours before Received: date
CASHCASHCASH (0.0 points) Contains at least 3 dollar signs in a row
Nach diesen Kriterien wird das Mail untersucht und es werden Punkte vergeben. Hat es mehr als 5 Punkte, gilt das Mail als „probably spam“. Mehr als 15 gilt als „almost certainly spam“. Wie man sehen kann baut dieser Filter auch auf dem Razor Spamchecker auf. (RAZOR2_CHECK)<!p>Die beiden Spamfilter laufen bei mir auf dem Server mit procmail zusammen. Mein procmailrc sieht folgendermassen aus:
:0 Wc
| razor-check
:0 Waf
#| formail -i "Subject: Razor Warning: SPAM/UBE/UCE"
|/bin/sed "s/^Subject: /Subject: *** Razor Warning (almost certainly) *** /"
:0fw: spamassassin.lock
* < 256000
| spamc
:0f
* ^X-Spam-Level: ***************
|/bin/sed "s/^Subject: /Subject: *** SPAMassassin (almost certainly) *** /"
:0f
* ^X-Spam-Status: Yes
|/bin/sed "s/^Subject: /Subject: *** SPAMassassin (probably) *** /"
Ich lasse alles wie ein Filter laufen. Das heisst, es wird zuerst überprüft, ob Razor das Mail als Spam klassifiziert und danach werden die beiden Spamassassin Filter durchlaufen. Das einzige was mit den Mails passiert, ist dass der Titel verändert wird. So weiss man auf den ersten Blick, ob es sich um Spam handelt oder nicht. Ich habe den Spamassassin „propably check“ auch noch durchlaufen lassen, so dass auch die Spam Mails markiert werden, die nur 5 Punkte erreicht haben. Erfahrungsgemäss sind auch solche Mails meistens Spam.
Der Mozilla Junk Filter ist Clientseitigiger Spamfilter. Der Mechanismus ist ein Bayesian filter (<!l>http://www.paulgraham.com/spam.html<!/l>, <!l>http://www.mozilla.org/mailnews/spam.html<!/l>). Bei diesem Filter werden zuerst alle Mails als Spam klassifiziert, und man muss dem Junk-Filter beibringen was Spam ist und was nicht. Mit der Zeit lernt er es gut und kann die Junk Mails schon ziemlich gut unterscheiden. Diese Methode basiert auf der Kombination von Wahrscheinlichkeiten einzelner Wörter die häufig in Spam Mails vorkommen. Es ist eine einfache Methode, aber sehr wirksam.
Meine Erfahrung sieht folgendermassen aus: Razor, klappt nicht immer, aber wenn es als Spam erkannt wird, ist es zu 100% Spam. Razor erkennt ca. 1/10 der Spams. Spamassassin arbeitet da schon besser und erkennt ca. 99% der Spammails. Ich hatte erst zwei Mails, die mir Spamassassin als Spam deklariert hat. Und diese Meldungen waren auch nur beim „probably check“. Diese Falschmeldungen wurde aber vom Mozilla Junk-Filter nicht als Junk erkannt. Im Gegensatz dazu habe ich erst eine Mail bekommen, die nicht von Razor und Spamassassin als Spam erkannt wurden. Der Mozilla Junk-Filter konnte aber auch hier die Spam Mail erkennen und als solchen klassifizieren. Ich benutze die drei Spamfilter nun seit 4 Monaten und bin vollkommen zufrieden. Ich komme zum Schluss, dass alle drei Spamfilter zusammen einen wirksamen Schutz gegen Spam bieten.
Noch einige Tipps für alle Homepagebesitzer. Emailadressen niemals im Netz als Text publizieren. Keine Grusskarten etc. per Mail zustellen lassen. Wenn möglich eine zweite Emailadresse zulegen die verspammt werden kann. Wenn man sein Email Adresse publizieren will, dann kann man ein Email als Grafik (png oder gif) darstellen.
| Bemerkungen, Kommentare und Feedback  | | Beiträge: 4 | 25.04.2004 18:39 |
 | | Beiträge: 1 | 31.08.2003 23:26 |
|
Du kannst auch selber einen Thread starten, indem du hier klickst. |
| Home
| Artikel / Tipps und Tricks | | Artikel Navigation | |
|
|