Spam protection · 7 min read · Nov 17, 2025

Lutter contre le spam d'image avec FuzzyOCR et SpamAssassin sur Debian Lenny

Lutter contre le spam d’image avec FuzzyOCR et SpamAssassin sur Debian Lenny

Version 1.0
Auteur : Falko Timme
Suivez-moi sur Twitter

Ce tutoriel décrit comment scanner les e-mails pour le spam d’image avec FuzzyOCR sur un serveur Debian Lenny. FuzzyOCR est un plugin pour SpamAssassin qui vise le courrier indésirable en masse contenant des images comme principal support de contenu. En utilisant différentes méthodes, il analyse le contenu et les propriétés des images pour distinguer les e-mails normaux (ham) des e-mails de spam. FuzzyOCR essaie de maintenir la charge système basse en scannant uniquement les e-mails qui n’ont pas déjà été catégorisés comme spam par SpamAssassin, évitant ainsi un travail inutile.

Je ne garantis pas que cela fonctionnera pour vous !

1 Remarque préliminaire

Dans cet article, j’utiliserai Debian Lenny comme système de base.

Je suppose que SpamAssassin est déjà installé et fonctionne, avec /etc/mail/spamassassin/ comme son répertoire de configuration principal. Si votre répertoire est différent (par exemple, si vous avez ISPConfig 2 installé, le répertoire est /home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin/), ce n’est pas un problème. J’annoterai où changer quoi.

Veuillez vous assurer que votre version de SpamAssassin fonctionne avec FuzzyOCR. Par exemple, la version de FuzzyOCR que je vais installer ici (fuzzyocr-3.5.1-devel.tar.gz) nécessite SpamAssassin 3.1.4 ou plus récent.

2 Installer les prérequis pour FuzzyOCR

FuzzyOCR a quelques prérequis comme ocrad et gocr que nous pouvons installer comme ceci :

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

3 Installer FuzzyOCR

Ensuite, nous téléchargeons et installons la dernière version de développement de FuzzyOCR depuis http://fuzzyocr.own-hero.net/wiki/Downloads. Nous téléchargeons la version de développement au lieu de la version stable car les développeurs de FuzzyOCR disent :

“La recommandation actuelle est la version de développement car la version stable manque de fonctionnalités et est très ancienne.”

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

Ensuite, nous décompressons FuzzyOCR et déplaçons tous les fichiers FuzzyOcr* et le répertoire FuzzyOcr (ils se trouvent tous dans le répertoire FuzzyOcr-3.5.1/) vers /etc/mail/spamassassin :

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

Si votre répertoire SpamAssassin est différent, par exemple /home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin/, alors la dernière commande doit être remplacée par

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

Ne supprimez pas encore le répertoire /usr/src/FuzzyOcr-3.5.1/, il y a un répertoire avec des exemples d’e-mails de spam d’image à l’intérieur (samples/) que nous avons besoin plus tard pour tester si FuzzyOCR fonctionne comme prévu.

Donc, FuzzyOCR est maintenant installé, maintenant nous devons le configurer.

4 Configurer FuzzyOCR

Le fichier de configuration de FuzzyOCR est /etc/mail/spamassassin/FuzzyOcr.cf. Dans ce fichier, presque tout est commenté. Nous ouvrons ce fichier maintenant et faisons quelques modifications :

vi /etc/mail/spamassassin/FuzzyOcr.cf

Mettez la ligne suivante pour définir l’emplacement du fichier de mots de spam de FuzzyOCR :

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

/etc/mail/spamassassin/FuzzyOcr.words est une liste de mots prédéfinie qui vient avec FuzzyOCR. Vous pouvez l’ajuster à vos besoins si vous le souhaitez.

Ensuite, changez

| [...] # Inclure des commandes de scanner/préprocesseur supplémentaires ici : # focr_bin_helper pnmnorm, pnminvert, pamthreshold, ppmtopgm, pamtopnm focr_bin_helper tesseract [...] |

à

| [...] # Inclure des commandes de scanner/préprocesseur supplémentaires ici : # focr_bin_helper pnmnorm, pnminvert, convert, ppmtopgm, tesseract [...] |

Enfin, ajoutez/activez les lignes suivantes :

| [...] # Chemin de recherche pour localiser les applications d'aide 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 [...] |

Avec les quatre dernières lignes, vous activez le hachage d’image. Voici ce que les développeurs de FuzzyOCR disent à propos du hachage d’image :

“La fonctionnalité de base de données de hachage d’image permet au plugin de stocker un vecteur de caractéristiques d’image dans une base de données, afin qu’il reconnaisse cette image lorsqu’elle arrive une deuxième fois (et donc n’a pas besoin de la scanner à nouveau). La particularité de cette fonction est qu’elle reconnaît également l’image à nouveau si elle a été légèrement modifiée (ce qui est fait par les spammeurs). “

Si vous utilisez /home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin au lieu de /etc/mail/spamassassin, le fichier de configuration de FuzzyOCR est /home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin/FuzzyOcr.cf au lieu de /etc/mail/spamassassin/FuzzyOcr.cf, donc éditez celui-ci. Dans le fichier de configuration, vous pouvez maintenant soit remplacer toutes les occurrences de /etc/mail/spamassassin par /home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin, OU vous le laissez tel qu’indiqué précédemment et créez un lien symbolique de /etc/mail/spamassassin vers /home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin comme ceci :

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

C’est tout pour la configuration de FuzzyOCR. Voyons maintenant si cela fonctionne comme prévu.

5 Tester FuzzyOCR

J’ai mentionné précédemment que FuzzyOCR vient avec des exemples d’e-mails de spam d’image (dans le répertoire samples/) :

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

La sortie devrait ressembler à ceci :

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

Nous pouvons maintenant alimenter chacun de ces e-mails à SpamAssassin pour voir si FuzzyOCR est correctement lié à SpamAssassin. Trouvez où se trouve votre exécutable spamassassin (normalement, il est dans votre PATH - vous pouvez vérifier si c’est le cas en exécutant

which spamassassin

Si cela affiche un résultat, spamassassin est dans votre PATH, et vous n’avez pas besoin de spécifier le chemin complet pour exécuter spamassassin.)

Si vous ne savez pas où se trouve spamassassin, vous pouvez le découvrir en exécutant

updatedb  
locate spamassassin

Si vous utilisez ISPConfig 2, spamassassin se trouve ici : /home/admispconfig/ispconfig/tools/spamassassin/usr/bin/spamassassin

Maintenant que vous savez où se trouve spamassassin, vous pouvez alimenter les exemples d’e-mails de spam d’image à spamassassin comme ceci :

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

Par exemple :

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

ou, si spamassassin est dans votre PATH :

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

Vous devriez maintenant voir beaucoup de sorties, la fin devrait ressembler à ceci :

[...]  
[10025] dbg: FuzzyOcr:  
[10025] dbg: FuzzyOcr: Vendredi 4 août, 16h01 ET  
[10025] dbg: FuzzyOcr: LAS VEGAS, NEVADA--(MARKET WIRE)--4 août 2006 -- auantum Energy, lnc. (OTC  
[10025] dbg: FuzzyOcr: BB:aEGY.oB-_-  
[10025] dbg: FuzzyOcr: auantum Energy, lnc. est heureux d'annoncer qu'il a demandé à faire inscrire ses actions pour  
[10025] dbg: FuzzyOcr: négociation à la Bourse de Francfort. La société a retenu les services de Baltic  
[10025] dbg: FuzzyOcr: lnvestment Group de Hambourg, Allemagne pour aider avec la demande.  
[10025] dbg: FuzzyOcr:  
[10025] dbg: FuzzyOcr: _ qEGY,OB "  
[10025] dbg: FuzzyOcr:  
[10025] dbg: FuzzyOcr: <<=end  
[10025] info: FuzzyOcr: Scanset "ocrad" trouvé mot "target" avec fuzz de 0.0000  
[10025] info: FuzzyOcr: ligne : "short term price target oo"  
[10025] info: FuzzyOcr: Scanset "ocrad" trouvé mot "service" avec fuzz de 0.0000  
[10025] info: FuzzyOcr: ligne : "trading on the frankfurt stock exchange the company has retained the services ofbaltic"  
[10025] info: FuzzyOcr: Scanset "ocrad" trouvé mot "stock" avec fuzz de 0.0000  
[10025] info: FuzzyOcr: ligne : "hot energy stocki"  
[10025] info: FuzzyOcr: Scanset "ocrad" trouvé mot "stock" avec fuzz de 0.0000  
[10025] info: FuzzyOcr: ligne : "trading on the frankfurt stock exchange the company has retained the services ofbaltic"  
[10025] info: FuzzyOcr: Scanset "ocrad" trouvé mot "price" avec fuzz de 0.0000  
[10025] info: FuzzyOcr: ligne : "current price o"  
[10025] info: FuzzyOcr: Scanset "ocrad" trouvé mot "price" avec fuzz de 0.0000  
[10025] info: FuzzyOcr: ligne : "short term price target oo"  
[10025] info: FuzzyOcr: Scanset "ocrad" trouvé mot "company" avec fuzz de 0.0000  
[10025] info: FuzzyOcr: ligne : "trading on the frankfurt stock exchange the company has retained the services ofbaltic"  
[10025] info: FuzzyOcr: Scanset "ocrad" trouvé mot "recommendation" avec fuzz de 0.0000  
[10025] info: FuzzyOcr: ligne : "sboog bup recommendation"  
[10025] dbg: FuzzyOcr: Assez de frappes OCR sans suppression d'espace, sautant le deuxième passage de correspondance...  
[10025] info: FuzzyOcr: Scanset "ocrad" génère suffisamment de frappes (8), sautant d'autres scansets...  
[10025] info: FuzzyOcr: Le message est du spam, score = 15.000  
[10025] info: FuzzyOcr: Ajout de Hash à "/etc/mail/spamassassin/FuzzyOcr.db" avec score "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: Mots trouvés :  
[10025] info: FuzzyOcr: "target" dans 1 lignes  
[10025] info: FuzzyOcr: "service" dans 1 lignes  
[10025] info: FuzzyOcr: "stock" dans 2 lignes  
[10025] info: FuzzyOcr: "price" dans 2 lignes  
[10025] info: FuzzyOcr: "company" dans 1 lignes  
[10025] info: FuzzyOcr: "recommendation" dans 1 lignes  
[10025] info: FuzzyOcr: (12 occurrences de mots trouvées)  
[10025] dbg: FuzzyOcr: Supprimer DIR: /tmp/.spamassassin10025QnPTq8tmp  
[10025] dbg: FuzzyOcr: FuzzyOcr se termine avec succès...  
[10025] dbg: FuzzyOcr: Traité en 2.191381 sec.

Comme vous le voyez, /usr/src/FuzzyOcr-3.5.1/samples/ocr-gif.eml a été catégorisé comme spam avec un score de 15 points, donc FuzzyOCR fonctionne.

Ainsi, votre SpamAssassin est maintenant capable de reconnaître le spam d’image grâce à l’aide de FuzzyOCR.

6 Liens

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.