Spam Bekämpfung · 6 min read · Nov 17, 2025

Bekämpfung von Bildspam mit FuzzyOCR und SpamAssassin auf Debian Lenny

Bekämpfung von Bildspam mit FuzzyOCR und SpamAssassin auf Debian Lenny

Version 1.0
Autor: Falko Timme
Folge mir auf Twitter

Dieses Tutorial beschreibt, wie man E-Mails auf Bildspam mit FuzzyOCR auf einem Debian Lenny-Server scannt. FuzzyOCR ist ein Plugin für SpamAssassin, das sich auf unerwünschte Massen-E-Mails konzentriert, die Bilder als Hauptinhaltsträger enthalten. Mit verschiedenen Methoden analysiert es den Inhalt und die Eigenschaften von Bildern, um zwischen normalen E-Mails (ham) und Spam-E-Mails zu unterscheiden. FuzzyOCR versucht, die Systemlast niedrig zu halten, indem es nur E-Mails scannt, die noch nicht als Spam von SpamAssassin kategorisiert wurden, und so unnötige Arbeit vermeidet.

Ich gebe keine Garantie, dass dies bei Ihnen funktioniert!

1 Vorbemerkung

In diesem Artikel werde ich Debian Lenny als Basissystem verwenden.

Ich gehe davon aus, dass SpamAssassin bereits installiert und funktionsfähig ist, mit /etc/mail/spamassassin/ als Hauptkonfigurationsverzeichnis. Wenn Ihr Verzeichnis anders ist (z. B. wenn Sie ISPConfig 2 installiert haben, ist das Verzeichnis /home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin/), ist das kein Problem. Ich werde anmerken, wo was geändert werden muss.

Bitte stellen Sie sicher, dass Ihre SpamAssassin-Version mit FuzzyOCR funktioniert. Zum Beispiel erfordert die FuzzyOCR-Version, die ich hier installieren werde (fuzzyocr-3.5.1-devel.tar.gz), SpamAssassin 3.1.4 oder neuer.

2 Installieren Sie die Voraussetzungen für FuzzyOCR

FuzzyOCR hat einige Voraussetzungen wie ocrad und gocr, die wir wie folgt installieren können:

aptitude install netpbm gifsicle libungif-bin gocr ocrad libstring-approx-perl libmldbm-sync-perl imagemagick tesseract-ocr

3 FuzzyOCR installieren

Als nächstes laden wir die neueste FuzzyOCR-Entwicklerversion von http://fuzzyocr.own-hero.net/wiki/Downloads herunter und installieren sie. Wir laden die Entwicklungsversion anstelle der stabilen Version herunter, da die FuzzyOCR-Entwickler sagen:

“Die aktuelle Empfehlung ist die Entwicklungsversion, da die stabile Version an Funktionen fehlt und sehr alt ist.”

cd /usr/src/  
wget http://users.own-hero.net/~decoder/fuzzyocr/fuzzyocr-3.5.1-devel.tar.gz

Dann entpacken wir FuzzyOCR und verschieben alle FuzzyOcr*-Dateien und das FuzzyOcr-Verzeichnis (sie befinden sich alle im FuzzyOcr-3.5.1/-Verzeichnis) nach /etc/mail/spamassassin:

tar xvfz fuzzyocr-3.5.1-devel.tar.gz  
cd FuzzyOcr-3.5.1/  
mv FuzzyOcr* /etc/mail/spamassassin/

Wenn Ihr SpamAssassin-Verzeichnis anders ist, z. B. /home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin/, sollte der letzte Befehl durch

mv FuzzyOcr* /home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin/

ersetzt werden.

Löschen Sie das Verzeichnis /usr/src/FuzzyOcr-3.5.1/ noch nicht, dort befindet sich ein Verzeichnis mit Beispiel-Bildspam-E-Mails (samples/), das wir später benötigen, um zu testen, ob FuzzyOCR wie erwartet funktioniert.

FuzzyOCR ist jetzt installiert, jetzt müssen wir es konfigurieren.

4 FuzzyOCR konfigurieren

Die Konfigurationsdatei von FuzzyOCR ist /etc/mail/spamassassin/FuzzyOcr.cf. In dieser Datei ist fast alles auskommentiert. Wir öffnen diese Datei jetzt und nehmen einige Änderungen vor:

vi /etc/mail/spamassassin/FuzzyOcr.cf

Fügen Sie die folgende Zeile ein, um den Speicherort der Wortliste für Spamwörter von FuzzyOCR zu definieren:

| [...] focr_global_wordlist /etc/mail/spamassassin/FuzzyOcr.words [...] |

/etc/mail/spamassassin/FuzzyOcr.words ist eine vordefinierte Wortliste, die mit FuzzyOCR geliefert wird. Sie können sie nach Ihren Bedürfnissen anpassen, wenn Sie möchten.

Ändern Sie als nächstes

| [...] # Include additional scanner/preprocessor commands here: # focr_bin_helper pnmnorm, pnminvert, pamthreshold, ppmtopgm, pamtopnm focr_bin_helper tesseract [...] |

in

| [...] # Include additional scanner/preprocessor commands here: # focr_bin_helper pnmnorm, pnminvert, convert, ppmtopgm, tesseract [...] |

Fügen Sie schließlich die folgenden Zeilen hinzu/aktivieren Sie sie:

| [...] # Search path for locating helper applications focr_path_bin /usr/local/netpbm/bin:/usr/local/bin:/usr/bin focr_preprocessor_file /etc/mail/spamassassin/FuzzyOcr.preps focr_scanset_file /etc/mail/spamassassin/FuzzyOcr.scansets focr_enable_image_hashing 2 focr_digest_db /etc/mail/spamassassin/FuzzyOcr.hashdb focr_db_hash /etc/mail/spamassassin/FuzzyOcr.db focr_db_safe /etc/mail/spamassassin/FuzzyOcr.safe.db [...] |

Mit den letzten vier Zeilen aktivieren Sie das Hashing von Bildern. Dies sagen die FuzzyOCR-Entwickler über das Hashing von Bildern:

“Die Funktion der Bild-Hashing-Datenbank ermöglicht es dem Plugin, einen Vektor von Bildmerkmalen in einer Datenbank zu speichern, sodass es dieses Bild erkennt, wenn es ein zweites Mal ankommt (und daher nicht erneut scannen muss). Das Besondere an dieser Funktion ist, dass sie das Bild auch dann wiedererkennt, wenn es leicht verändert wurde (was von Spammern durchgeführt wird).”

Wenn Sie /home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin anstelle von /etc/mail/spamassassin verwenden, ist die Konfigurationsdatei von FuzzyOCR /home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin/FuzzyOcr.cf anstelle von /etc/mail/spamassassin/FuzzyOcr.cf, also bearbeiten Sie diese. In der Konfigurationsdatei können Sie jetzt entweder alle Vorkommen von /etc/mail/spamassassin durch /home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin ersetzen ODER Sie lassen es wie zuvor gezeigt und erstellen einen symbolischen Link von /etc/mail/spamassassin nach /home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin wie folgt:

mkdir /etc/mail/  
ln -s /home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin/ /etc/mail/spamassassin

Das war’s schon für die FuzzyOCR-Konfiguration. Jetzt schauen wir, ob es wie erwartet funktioniert.

5 Testen Sie FuzzyOCR

Ich habe bereits erwähnt, dass FuzzyOCR mit Beispiel-Bildspam-E-Mails (im samples/-Verzeichnis) geliefert wird:

ls -l /usr/src/FuzzyOcr-3.5.1/samples/

Die Ausgabe sollte folgendermaßen aussehen:

total 156  
-rw-r--r-- 1 administrator users 13633 2007-01-07 12:55 ocr-animated.eml  
-rw-r--r-- 1 administrator users 16108 2007-01-07 12:55 ocr-gif.eml  
-rw-r--r-- 1 administrator users 27506 2007-01-07 12:55 ocr-jpg.eml  
-rw-r--r-- 1 administrator users 27842 2007-01-07 12:59 ocr-multi.eml  
-rw-r--r-- 1 administrator users 24657 2007-01-07 12:55 ocr-obfuscated.eml  
-rw-r--r-- 1 administrator users 18236 2007-01-07 12:55 ocr-png.eml  
-rw-r--r-- 1 administrator users 16113 2007-01-07 12:55 ocr-wrongext.eml  
-rw-r--r-- 1 administrator users 3576 2007-01-07 12:55 README

Wir können jede dieser E-Mails jetzt SpamAssassin zuführen, um zu sehen, ob FuzzyOCR korrekt in SpamAssassin integriert ist. Finden Sie heraus, wo sich Ihr spamassassin-Executable befindet (normalerweise ist es in Ihrem PATH - Sie können herausfinden, ob dies der Fall ist, indem Sie

which spamassassin

ausführen. Wenn ein Ergebnis angezeigt wird, befindet sich spamassassin in Ihrem PATH, und Sie müssen den vollständigen Pfad zu spamassassin nicht angeben, um es auszuführen.)

Wenn Sie nicht wissen, wo sich spamassassin befindet, können Sie dies herausfinden, indem Sie

updatedb  
locate spamassassin

ausführen. Wenn Sie ISPConfig 2 verwenden, befindet sich spamassassin hier: /home/admispconfig/ispconfig/tools/spamassassin/usr/bin/spamassassin

Jetzt, da Sie wissen, wo sich spamassassin befindet, können Sie die Beispiel-Bildspam-E-Mails wie folgt an spamassassin übergeben:

/path/to/spamassassin --debug FuzzyOcr < /usr/src/FuzzyOcr-3.5.1/samples/ocr-gif.eml > /dev/null

z. B.

/home/admispconfig/ispconfig/tools/spamassassin/usr/bin/spamassassin --debug FuzzyOcr < /usr/src/FuzzyOcr-3.5.1/samples/ocr-gif.eml > /dev/null

oder, wenn spamassassin in Ihrem PATH ist:

spamassassin --debug FuzzyOcr < /usr/src/FuzzyOcr-3.5.1/samples/ocr-gif.eml > /dev/null

Sie sollten jetzt eine Menge Ausgaben sehen, das Ende sollte folgendermaßen aussehen:

[...]  
[10025] dbg: FuzzyOcr:  
[10025] dbg: FuzzyOcr: Freitag, 4. August, 16:01 Uhr ET  
[10025] dbg: FuzzyOcr: LAS VEGAS, NEVADA--(MARKET WIRE)--4. August 2006 -- auantum Energy, lnc. (OTC  
[10025] dbg: FuzzyOcr: BB:aEGY.oB-_-  
[10025] dbg: FuzzyOcr: auantum Energy, lnc. freut sich bekannt zu geben, dass es beantragt hat, seine Aktien an der Frankfurter Börse notieren zu lassen. Das Unternehmen hat die Dienste der Baltic  
[10025] dbg: FuzzyOcr: lnvestment Group aus Hamburg, Deutschland, in Anspruch genommen, um bei der Bewerbung zu helfen.  
[10025] dbg: FuzzyOcr:  
[10025] dbg: FuzzyOcr: _ qEGY,OB "  
[10025] dbg: FuzzyOcr:  
[10025] dbg: FuzzyOcr: <<=end  
[10025] info: FuzzyOcr: Scanset "ocrad" fand das Wort "target" mit einer Unschärfe von 0.0000  
[10025] info: FuzzyOcr: Zeile: "kurzfristiges Preisziel oo"  
[10025] info: FuzzyOcr: Scanset "ocrad" fand das Wort "service" mit einer Unschärfe von 0.0000  
[10025] info: FuzzyOcr: Zeile: "Handel an der Frankfurter Börse, das Unternehmen hat die Dienste der Baltic in Anspruch genommen"  
[10025] info: FuzzyOcr: Scanset "ocrad" fand das Wort "stock" mit einer Unschärfe von 0.0000  
[10025] info: FuzzyOcr: Zeile: "heiße Energiewerte"  
[10025] info: FuzzyOcr: Scanset "ocrad" fand das Wort "stock" mit einer Unschärfe von 0.0000  
[10025] info: FuzzyOcr: Zeile: "Handel an der Frankfurter Börse, das Unternehmen hat die Dienste der Baltic in Anspruch genommen"  
[10025] info: FuzzyOcr: Scanset "ocrad" fand das Wort "price" mit einer Unschärfe von 0.0000  
[10025] info: FuzzyOcr: Zeile: "aktueller Preis o"  
[10025] info: FuzzyOcr: Scanset "ocrad" fand das Wort "price" mit einer Unschärfe von 0.0000  
[10025] info: FuzzyOcr: Zeile: "kurzfristiges Preisziel oo"  
[10025] info: FuzzyOcr: Scanset "ocrad" fand das Wort "company" mit einer Unschärfe von 0.0000  
[10025] info: FuzzyOcr: Zeile: "Handel an der Frankfurter Börse, das Unternehmen hat die Dienste der Baltic in Anspruch genommen"  
[10025] info: FuzzyOcr: Scanset "ocrad" fand das Wort "recommendation" mit einer Unschärfe von 0.0000  
[10025] info: FuzzyOcr: Zeile: "sboog bup Empfehlung"  
[10025] dbg: FuzzyOcr: Genug OCR-Treffer ohne Leerzeichenentfernung, überspringe zweiten Übereinstimmungspass...  
[10025] info: FuzzyOcr: Scanset "ocrad" generiert genügend Treffer (8), überspringe weitere Scansets...  
[10025] info: FuzzyOcr: Nachricht ist Spam, Punktzahl = 15.000  
[10025] info: FuzzyOcr: Hash zu "/etc/mail/spamassassin/FuzzyOcr.db" mit Punktzahl "15.000" hinzufügen  
[10025] dbg: FuzzyOcr: Digest: 538584:327:549:7::255:255:255:255:168580::0:0:0:0:9098::0:128:0:75:1086::0:0:128:15:395::128:0:128:53:213::0:0:255:29:115  
[10025] info: FuzzyOcr: Gefundene Wörter:  
[10025] info: FuzzyOcr: "target" in 1 Zeilen  
[10025] info: FuzzyOcr: "service" in 1 Zeilen  
[10025] info: FuzzyOcr: "stock" in 2 Zeilen  
[10025] info: FuzzyOcr: "price" in 2 Zeilen  
[10025] info: FuzzyOcr: "company" in 1 Zeilen  
[10025] info: FuzzyOcr: "recommendation" in 1 Zeilen  
[10025] info: FuzzyOcr: (12 Wortvorkommen gefunden)  
[10025] dbg: FuzzyOcr: Entferne DIR: /tmp/.spamassassin10025QnPTq8tmp  
[10025] dbg: FuzzyOcr: FuzzyOcr beendet erfolgreich...  
[10025] dbg: FuzzyOcr: Verarbeitet in 2.191381 Sek.

Wie Sie sehen, wurde /usr/src/FuzzyOcr-3.5.1/samples/ocr-gif.eml mit einer Punktzahl von 15 Punkten als Spam kategorisiert, also funktioniert FuzzyOCR.

Ihr SpamAssassin kann jetzt dank der Hilfe von FuzzyOCR Bildspam erkennen.

6 Links

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.