Spam Bekämpfung · 7 min read · Nov 18, 2025

Bekämpfen Sie Bildspam mit FuzzyOCR und SpamAssassin auf Fedora 12

Bekämpfen Sie Bildspam mit FuzzyOCR und SpamAssassin auf Fedora 12

Version 1.0
Autor: Falko Timme
Folgen Sie mir auf Twitter

Dieses Tutorial beschreibt, wie man E-Mails auf Bildspam mit FuzzyOCR auf einem Fedora 12-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 von SpamAssassin noch nicht als Spam kategorisiert wurden, und so unnötige Arbeit vermeidet.

Ich gebe keine Garantie, dass dies bei Ihnen funktioniert!

1 Vorbemerkung

In diesem Artikel werde ich Fedora 12 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:

yum install netpbm gifsicle giflib giflib-utils gocr ocrad ImageMagick tesseract perl-String-Approx perl-MLDBM perl-CPAN

Wir müssen auch das Perl-Modul MLDBM::Sync installieren, das nicht als RPM-Paket verfügbar ist. Öffnen Sie eine Perl-Shell….

perl -MCPAN -e shell

… und installieren Sie das Modul wie folgt:

install MLDBM::Sync

Tippen Sie

q

anschließend, um die Perl-Shell zu verlassen.

3 FuzzyOCR installieren

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

“Die aktuelle Empfehlung ist die Entwicklungsversion, da die stabile Version Funktionen vermissen lässt 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 Spam-Wortliste 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 Wünschen 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. Dazu sagen die FuzzyOCR-Entwickler:

“Die Funktion der Bild-Hash-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 erkennt, 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 Symlink 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 es schon mit der 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 1000 users 13633 2007-01-07 12:55 ocr-animated.eml  
-rw-r--r-- 1 1000 users 16108 2007-01-07 12:55 ocr-gif.eml  
-rw-r--r-- 1 1000 users 27506 2007-01-07 12:55 ocr-jpg.eml  
-rw-r--r-- 1 1000 users 27842 2007-01-07 12:59 ocr-multi.eml  
-rw-r--r-- 1 1000 users 24657 2007-01-07 12:55 ocr-obfuscated.eml  
-rw-r--r-- 1 1000 users 18236 2007-01-07 12:55 ocr-png.eml  
-rw-r--r-- 1 1000 users 16113 2007-01-07 12:55 ocr-wrongext.eml  
-rw-r--r-- 1 1000 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 ihn 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 Wort "target" mit Fuzz von 0.0000  
[10025] info: FuzzyOcr: Zeile: "kurzfristiges Preisziel oo"  
[10025] info: FuzzyOcr: Scanset "ocrad" fand Wort "service" mit Fuzz 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 Wort "stock" mit Fuzz von 0.0000  
[10025] info: FuzzyOcr: Zeile: "heißes Energiewertpapier"  
[10025] info: FuzzyOcr: Scanset "ocrad" fand Wort "stock" mit Fuzz 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 Wort "price" mit Fuzz von 0.0000  
[10025] info: FuzzyOcr: Zeile: "aktueller Preis o"  
[10025] info: FuzzyOcr: Scanset "ocrad" fand Wort "price" mit Fuzz von 0.0000  
[10025] info: FuzzyOcr: Zeile: "kurzfristiges Preisziel oo"  
[10025] info: FuzzyOcr: Scanset "ocrad" fand Wort "company" mit Fuzz 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 Wort "recommendation" mit Fuzz von 0.0000  
[10025] info: FuzzyOcr: Zeile: "sboog bup Empfehlung"  
[10025] dbg: FuzzyOcr: Genug OCR-Treffer ohne Leerzeichen, überspringe zweiten Übereinstimmungspass...  
[10025] info: FuzzyOcr: Scanset "ocrad" generiert genug Treffer (8), überspringe weitere Scansets...  
[10025] info: FuzzyOcr: Nachricht ist Spam, Punktzahl = 15.000  
[10025] info: FuzzyOcr: Hinzufügen von Hash zu "/etc/mail/spamassassin/FuzzyOcr.db" mit Punktzahl "15.000"  
[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: Verzeichnis entfernen: /tmp/.spamassassin10025QnPTq8tmp  
[10025] dbg: FuzzyOcr: FuzzyOcr erfolgreich beendet...  
[10025] dbg: FuzzyOcr: Verarbeitet in 2.191381 Sek.

Wie Sie sehen, wurde /usr/src/FuzzyOcr-3.5.1/samples/ocr-gif.eml als Spam mit einer Punktzahl von 15 Punkten 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.