Tag Archives: Spam

Spam kosten Geld, Zeit und Nerven!

Spam bezeichnet das massenweise Auftreten von unerwünschten Email und Newslettern, die nicht angefordert wurden. Der Kampf gegen Spam ist mit viel Aufwand und auch Kosten verbunden. Vermeiden kann man Spam nur durch Geheimhaltung der eigenen Email-Adresse. Unsere Spamfilter können nie 100% Spam erkennen, darum können Sie als Kunde mir Ihre Spam über das Kontakformular oder über info@… mail weiterleiten. Wenn Sie E-Mail-Nachrichten weiterleiten, stellen Sie sicher, dass die kompletten Zeilen aus dem Nachrichtenkopf (Header) enthalten sind. Ansonsten ist eine Rückverfolgung kaum möglich. Unter einem e-Mail-Header versteht man ein Datenprotokoll des genauen Wegs, auf dem eine e-Mail den Eingangsrechner zu meinem Mailserver erreicht hat. Das Mailprogramm zeigt den Header nicht gleich an, weil die Angaben den Otto-Normalverbraucher nicht interessieren. Fast jedes Mailprogramm kann jedoch auf Anfrage den Header einer Mail anzeigen.

Bei Apple Mail markieren Sie die betroffene E-Mail in der Listenansicht. Wählen Sie dann im Menü „Darstellung“ unter dem Menüpunkt „E-Mail“ die Option „Lange Header“

Bei MS-Outlook öffnet man, nachdem man die Mail geöffnet hat, mit rechter Maustaste das „Eigenschaften“-Menü und wählt „Kopfzeileneinträge anzeigen“.

Bei Thunderbird drückt man die Tastenkombination „STRG“+“U“ („Nachrichten-Quelltext anzeigen“).

So können Sie mit PHP Kontaktformulare vor Spam schützen

Kontaktformulare sind auf fast jeder Homepage eingerichtet, leider werden die Kontaktformulare häufig missbraucht. Der Grund ist hierfür oft eine unsichere Programmierung, die einfach ohne Überprüfung der Eingabe eine E-Mail sendet.

Hier gibt es kleine Lösungen, um Missbrauch zu vermeiden:

Ein Bot verwendet immer BB-Codes, obwohl das Kontaktformular keinen BB-Code Editor hat.

Dies kann so verhindert werden:
if(stristr($nachricht,"[link=") || stristr($nachricht,"[url=") || stristr($nachricht,"a href=")){
echo "Bitte kein BB-Code verwenden.";
}

Formulare werden per POST oder GET übertragen, per Log konnte ich vestellen das auch GET-Werte an die URL angehängt wurden.

Sollte Ihr Formular nur per POST übertragen, können Sie sich z.B. so schützen:
if(count($_GET)>0){
//Spamfalle: Formular sendet nichts per GET sondern POST
exit("Wegen Spam-verdacht abgelehnt (GET)");
}

Mit Count wird das Array $_GET gezählt, dies sollte 0 sein, da wir ja kein GET verwenden.
Anders rum geht es natürlich auch, wenn kein POST verwendet wird:

if(count($_POST)>0){
//Spamfalle: Formular sendet nichts per GET sondern POST
exit("Wegen Spam-verdacht abgelehnt (GET)");
}

Zeitdauer für das Ausfüllen und Absenden des Formulars:
Eine Maschine ist wesentlich schneller als ein Mensch, dies kann man sich zu nutze machen.
Wird ein Formular unter 10 Sek. ausgefüllt, kann man davon ausgehen, dass dies kein Mensch war.

Zum Formular einen neuen versteckten Button hinzufügen:
echo '<input name="time" type="hidden" value="'.time().'" />';

Wird das Formular auf der Webseite jetzt aufgerufen, steht im Button ein aktueller Timestamp (Zeitstempel), wir wissen also wann das Formular geladen wurde.

if ( isset($_POST['time']) && is_numeric($_POST['time'])) {
$posted = intval($_POST['time']);
$sendezeit = (time() - $posted);
if ($sendezeit < 10 || $sendezeit > 36000) {
echo "Mail kann gesendet werden";
}
else {
echo "Wegen Spamverdacht abgelehnt!";
}
}

Bots sind dumm, nutzen Sie dies aus:
Spambots füllen alle Felder eines Formulars aus, selbst wenn Sie nicht zu sehen sind.

<input style="display: none;" title="Homepage eintragen" name="webseite" type="text" />
<input style="display: none;" title="E-Mail eintragen" name="email" type="text" />

CSS display:none sagt, dass dieses Feld nicht erscheinen soll, es ist also nur noch im Quelltext.
Bots sehen aber nur den Quelltext, Grafiken, Javascripte und Videos können nicht bzw. sehr schlecht ausgewertet werden.

Jetzt muss nur geprüft werden, ob hier auch nichts drin steht:
if(!empty($_POST['webseite']) || !empty($_POST['email'])){
exit("Spam!");
}
else {
echo "kein Spam";
}

Überprüfen der Syntax von E-Mail-Adressen:
E-Mail Adressen sollten auf Gültigkeit überprüft werden, z.B. gehört in jede e-mail Adresse auch ein at-zeichen (@), punkt, tld,…

if ( ! preg_match('/^[a-z0-9_\.\-]+@[a-z0-9\.\-]+\.[a-z]{2,}$/i', $_POST['email']) ) die ("Die E-Mail adresse ist ungültig!");

Entfernen Sie alle „Cc:“ (Carbon copy) oder „Bcc:“ (Blind Carbon Copy) aus Ihrer Variablen:
Mit PHP können Sie es so erreichen:

$absender = preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "", $_POST['absender'] );
$nachricht = preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "", $_POST['nachricht'] );
$betreff = preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "", $_POST['betreff']);
$nachname = preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "", $_POST['nachname']);
$vorname = preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "", $_POST['vorname']);
$telnr = preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "", $_POST['telnr']);

Überprüfen Sie auch die Gültigkeit der E-Mail Adresse vom Absender:
if(!ereg("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,6})$",$Absender))
{
echo "Sie haben keine richtige E-Mail Adresse eingegeben!";
}

Anmerkung:
Oft werden auch CAPTCHA und Rechenaufgaben im Formular verwendet, davon kann ich nur abraten. Captcha sind oft sehr schlecht zu lesen und Rechenaufgaben lösen kann ein Bot auch. Das einzige was man damit erreicht, ist seinen Besucher zu verärgern.

Jeder, der eine E-Mail-Adresse hat, kennt es: Spam
Unerwünschte Werbung, auch Junk (Müll) genannt, überfluten regelmäßig den Posteingang. E-Mail-Adressen werden von vielen Firmen gesammelt, um unerwünschte und meist aufdringliche Nachrichten zu übermitteln bzw. werden Adressen teilweise auch teuer verkauft. Mit Hilfe der Opensource SpamAssasin können Spam automatisch erkannt werden, dieser Filter kann von jedem Benutzer individuell konfiguriert werden. SpamAssasin ist selbstlernend und kann flexibel auf Spam E-Mail reagieren, erkannte E-Mails werden als Spam makiert. Ihr Mailprogramm kann E-Mails anhand der Markierung automatisch umsortieren, löschen oder auch einfach ignorieren. Wir helfen Ihnen, die eigenen Mailprogramme so einzustellen, dass Spam kein Problem mehr darstellt.

Da Spamassassin bei uns erst nach Annahme der E-Mail zum Einsatz kommt und die Emails dann schon im System sind, kommen weitere vorbeugende Maßnahmen dazu. Schön wäre es, wenn Spam-Mails gar nicht erst angenommen werden würden!

Im Bestreben, möglichst viel Spam gar nicht erst ankommen (und auf unseren Platten lagern) zu lassen, ist das Verfahren „Greylisting“ auf unseren eingehenden Mailservern in Betrieb.
Grundlage des Verfahrens ist, dass aktuell die allergrößte Spamflut über gekaperte Rechner (Zombies, Botnetze) eingeliefert wird. Auf diesen Rechnern laufen keine echten Mailserver, sondern Spezialprogramme, die einfach ohne Fehlerprüfung Mails abkippen. Greylisting bekämpft dies dadurch, dass ein neuer Absender erst einmal einen temporären Fehler gemeldet bekommt und erst beim Wiederholen seine Mails einliefern kann. Ist ein Absender einmal bekannt, geht alles wie gewohnt durch. Greylisting wirkt nicht gegen Spam von Mailservern großer Provider (die auch anderes verschicken) und insbesondere nicht gegen weitergeleitete Spam. Gleichzeitig ermöglicht das Greylisting uns, die allermeisten Adressen von unseren bisherigen Absolutsperren auszunehmen, sodass Absender nicht nur wegen einer Fehlkonfiguration ganz ausgesperrt werden. Stattdessen dauert die Zustellung jetzt einfach länger.

Leider hat sich in diesem Jahr gezeigt, dass auch dies nicht ganz reicht.

Spam Bekämpfung mit policyd-weight!

Dieses kleine Tool prüft eingehende Mails schon bevor Postfix die Mail hat. policyd-weight benutzt hierbei mehrere Methoden, um Spam-Mails zu erkennen. Hierunter fallen z.B. das Vergleichen mit RBL/RHSBL Listen, prüft ob DNS Adressen stimmen und die HELO Begrüßungen korrekt sind, …. policyd-weight cached hierbei bereits gemachte Abfragen und greift, wenn der Server wieder die Mail einreichen möchte, auf diesen Cache zu. Spam-Server haben meist die Angewohntheit, es mehrere Male zu versuchen, die Mail abzuliefern.

Spam läßt sich nicht zu 100% verhindern!

Auch als Webmaster kann man effektiv etwas gegen Spam tun.

Verzichten Sie auf offene E-Mail Adressen auf Ihrer Webseite, nutzen Sie lieber Kontaktformulare. Wenn man ein Kontaktformular benutzt, sollte nun keine E-Mail Adresse erscheinen, da nur das Script die E-Mailadresse kennt. Nicht mal im Quellcode darf die E-Mail Adresse erscheinen! Einige Tips, wie man dies mit PHP lösen kann gibt es >>HIER<<.