Spam protection · 7 min read · Nov 18, 2025

Lutter contre le spam d'images avec FuzzyOCR et SpamAssassin sur Fedora 12

Lutter contre le spam d’images avec FuzzyOCR et SpamAssassin sur Fedora 12

Version 1.0
Auteur : Falko Timme
Suivez-moi sur Twitter

Ce tutoriel décrit comment scanner les e-mails pour le spam d’images avec FuzzyOCR sur un serveur Fedora 12. FuzzyOCR est un plugin pour SpamAssassin qui vise les courriers indésirables 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 garder la charge système faible 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 Fedora 12 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 installé ISPConfig 2, le répertoire est /home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin/), ce n’est pas un problème. J’indiquerai 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 :

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

Nous devons également installer le module Perl MLDBM::Sync qui n’est pas disponible en tant que package RPM. Ouvrez un shell Perl….

perl -MCPAN -e shell

… et installez le module comme suit :

install MLDBM::Sync

Tapez

q

ensuite pour quitter le shell Perl.

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’images à l’intérieur (samples/) que nous devons 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 accompagne 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 [...] |

en

| [...] # 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 auxiliaires 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’images. Voici ce que les développeurs de FuzzyOCR disent à propos du hachage d’images :

“La fonctionnalité de base de données de hachage d’images 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 seconde 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 déjà tout pour la configuration de FuzzyOCR. Maintenant, voyons si cela fonctionne comme prévu.

5 Tester FuzzyOCR

J’ai mentionné précédemment que FuzzyOCR est livré avec des exemples d’e-mails de spam d’images (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 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

Nous pouvons maintenant alimenter chacun de ces e-mails à SpamAssassin pour voir si FuzzyOCR est correctement lié à SpamAssassin. Découvrez 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 vers spamassassin pour l’exécuter.)

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’images à 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 coter ses actions pour  
[10025] dbg: FuzzyOcr: négociation à la Bourse de Francfort. La société a retenu les services de Baltic  
[10025] dbg: FuzzyOcr: Investment Group de Hambourg, Allemagne, pour aider à 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’images 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.