Zum Inhalt springen
blueforce.ch Weniger Agentur. Mehr Mensch.

Spam im Kontaktformular: warum die Cleveren durchkommen

Nervbert verspricht dir seit Jahren Platz 1 bei Google und schlüpft dabei an fast jedem Spamfilter vorbei. Warum das klappt, was ein Türsteher damit zu tun hat und wie Punkte ihn stoppen.

Kleiner Roboter mit einem Stapel Briefe schlüpft im Limbo unter einer leuchtenden Schranke durch, dahinter ein Schutzschild

Du kennst Nervbert. Nervbert will deine Website auf Platz 1 bei Google bringen, und das schreibt er dir seit Jahren. Warum Nervbert an fast jedem Spamfilter vorbeikommt, und was ein Türsteher damit zu tun hat.

Nervbert ist fleissig. Er schreibt der Coiffeuse im Dorf genauso wie dem Handwerksbetrieb, am liebsten nachts um drei und immer über das Kontaktformular. Er abonniert Newsletter mit Adressen, die es nie gegeben hat. Im Onlineshop eröffnet er Kundenkonten und bestellt dann doch nichts.

Nervbert ist nämlich kein Mensch. Nervbert ist ein Programm.

Ich betreue eine ganze Reihe von WordPress-Websites, und irgendwann hatte ich genug von ihm. Nicht weil Spam etwas Neues wäre. Sondern weil alles, was ich dagegen installiert hatte, erstaunlich oft danebenlag: Der plumpe Spam blieb hängen, der clevere kam durch.

Also wollte ich es genau wissen. Nach welchen Regeln wird Spam eigentlich erkannt? Und warum rutscht Nervbert trotzdem durch?

Jeder Filter hat eine Schwelle

Die meisten Spamfilter arbeiten mit einzelnen Regeln, und jede Regel hat eine Grenze. Ein paar Klassiker:

  • Wer ein Formular in weniger als zwei Sekunden abschickt, ist ein Bot.
  • Eine Nachricht mit zwei oder mehr Links ist verdächtig.
  • Wer ein Feld ausfüllt, das Menschen gar nicht sehen, ist keiner.

Erfunden habe ich diese Zahlen nicht. Die Grenze von zwei Links ist eine Voreinstellung von WordPress selbst, die zwei Sekunden stammen aus einem verbreiteten Formular-Plugin.

Jede dieser Regeln ist vernünftig. Nur antworten sie alle mit Ja oder Nein. Eine Sekunde: Spam. Drei Sekunden: alles in Ordnung.

Nervbert hat die Regeln gelesen

Als ich mir die Absendungen genauer angesehen habe, fiel mir ein Muster auf. Der Spam, der durchkam, war nicht zufällig durchgekommen. Er lag fast immer knapp unter irgendeiner Grenze.

Nervbert wartet eben fünf Sekunden statt einer. Er setzt einen Link statt fünf. Das unsichtbare Feld lässt er leer, weil er es erkennt. Und seine Adresse liegt bei einem grossen Mailanbieter, der auf keiner Sperrliste steht.

Jede einzelne Regel sagt: bestanden. Und weil jede für sich allein entscheidet, ist Nervbert drin.

Das ist wie bei einem Türsteher, der fünf Dinge nacheinander prüft und bei jedem einzeln denkt: «Na ja, gerade noch.» Fünfmal «gerade noch» ergibt bei ihm einen Gast. Jeder Mensch mit etwas Erfahrung würde sagen: Fünfmal «gerade noch» ist ziemlich verdächtig.

Die Summe macht den Unterschied

Daraus ist die Idee entstanden. Statt vieler Regeln, die jede für sich Ja oder Nein sagen, gibt es viele kleine Hinweise, und jeder gibt Punkte. Kein einzelner Hinweis entscheidet. Erst die Summe.

Neu ist das Prinzip nicht. Der Mailfilter SpamAssassin rechnet seit 2001 so: Jede Auffälligkeit gibt Punkte, und in der Standardeinstellung gilt eine Mail ab fünf Punkten als Spam. Bei Formularen auf Websites entscheiden dagegen oft noch einzelne Regeln.

Schema: Mehrere Prüfungen geben Punkte, die Summe entscheidet
Nicht eine Regel entscheidet, sondern die Summe aller Hinweise.

Wer an einer Stelle knapp unter der Grenze bleibt, sammelt trotzdem Punkte an den anderen. Eine Regel zu unterlaufen kann ein Bot lernen. Alle gleichzeitig zu unterlaufen ist deutlich teurer, denn dafür müsste er sich in praktisch jeder Hinsicht wie ein Mensch verhalten.

Welche Hinweise wie viel zählen, behalte ich für mich. Nervbert liest schliesslich mit.

Lieber einmal zu viel zustellen

Das Zweite, was mich an vielen Filtern gestört hat: Sie kennen nur Schwarz und Weiss. Entweder kommt die Nachricht an, oder sie ist weg. Je nach Werkzeug landet sie in einem Spam-Ordner, in den niemand schaut, oder sie wird gleich ganz verworfen. Manche Formulare zeigen der Person, die dir geschrieben hat, sogar eine freundliche Bestätigung an, obwohl bei dir nie etwas ankommt.

Für eine Coiffeuse oder einen Handwerksbetrieb ist eine verlorene echte Anfrage schlimmer als zehn Mails von Nervbert. Darum gibt es drei Stufen statt zwei:

  • Angenommen: ganz normal zugestellt.
  • Verdächtig: trotzdem zugestellt, aber im Protokoll festgehalten, mit den Gründen.
  • Blockiert: abgelehnt, und zwar mit einer klaren Meldung an die Person. Still verworfen wird nichts.

Im Protokoll siehst du, warum eine Absendung aufgefallen ist. Und falls doch einmal eine echte Anfrage hängen bleibt, erlaubst du den Absender mit einem Klick.

Protokoll mit Entscheid, Punkten und Gründen pro Absendung
So sieht das Protokoll aus, hier mit Beispieldaten.

Keine Ampeln, keine Cloud

Zwei Dinge wollte ich von Anfang an nicht.

Kein Captcha. Wer dir schreiben will, soll keine Ampeln anklicken und keine Zebrastreifen suchen müssen. Deine Kundschaft hat Besseres zu tun, als einer Maschine zu beweisen, dass sie keine ist. Vom Spamschutz merkt sie schlicht nichts.

Und keinen Dienst in der Cloud, an den jede Nachricht geschickt wird. Die Prüfungen laufen auf dem eigenen Server. Was jemand in dein Formular schreibt, verlässt deine Website nicht, solange du nichts anderes einschaltest.

Punkte statt Einzelregeln, drei Stufen, kein Captcha, keine Cloud: In dieser Kombination habe ich das für WordPress nicht gefunden. Also habe ich es gebaut.

Die Bilanz nach zwei Wochen

Das Plugin heisst Blueforce Spam Protect. Es läuft seit Ende September im echten Betrieb, inzwischen auf 15 Websites, die ich betreue. Der Stand am 10. Oktober:

  • 23 Spam-Absendungen blockiert
  • 3 als verdächtig markiert und zugestellt, alle drei waren tatsächlich Spam
  • keine einzige echte Anfrage blockiert

Das sind kleine Zahlen, und zwei Wochen sind keine lange Zeit. Aber sie zeigen, was mir am wichtigsten war: Es ist nichts Echtes verloren gegangen.

Dashboard-Widget von Blueforce Spam Protect
Die Übersicht im Dashboard, hier mit Beispielwerten aus einer Testinstallation.

Ehrlich bleiben muss ich trotzdem. Kein Plugin hält allen Spam auf. Wer einen kompletten Browser fernsteuert und für jede einzelne Nachricht Aufwand betreibt, kommt auch hier durch. Nur lohnt sich das für Nervbert nicht mehr. Spam ist ein Geschäft mit riesigen Mengen und winzigem Aufwand. Forschende aus Kalifornien haben das 2008 bei Werbemails nachgezählt: Rund 350 Millionen verschickte Mails führten zu 28 Käufen. Das rechnet sich nur, solange eine einzelne Nachricht praktisch nichts kostet. Wer den Aufwand erhöht, verdirbt das Geschäft.

Ausprobieren kostet nichts

Blueforce Spam Protect ist kostenlos und seit dem 10. Oktober im offiziellen WordPress-Verzeichnis. Es schützt Kommentare, Registrierungen, Newsletter-Anmeldungen und die Formulare der gängigen Formular-Plugins. Du installierst es, aktivierst es, und es arbeitet. Einzustellen gibt es zunächst nichts.

Blueforce Spam Protect im WordPress-Verzeichnis

Auch kein Bock auf Spam?

Hier erfährst du mehr über das Plugin: blueforce.ch/spam-protect

Oder du löst direkt ein Wartungsabo bei mir, und ich kümmere mich für dich darum: Zu den WebCare-Paketen