スパム対策 · 3 min read · Nov 17, 2025

FuzzyOCRとSpamAssassinを使ってDebian Lennyで画像スパムを防ぐ

FuzzyOCRとSpamAssassinを使ってDebian Lennyで画像スパムを防ぐ

バージョン 1.0
著者: Falko Timme
私をTwitterでフォローしてください

このチュートリアルでは、Debian LennyサーバーでFuzzyOCRを使用してメールの画像スパムをスキャンする方法を説明します。FuzzyOCRは、画像を主要なコンテンツキャリアとする迷惑メールを対象としたSpamAssassinのプラグインです。さまざまな方法を使用して、通常のメール(ハム)とスパムメールを区別するために、画像の内容と特性を分析します。FuzzyOCRは、SpamAssassinによってすでにスパムとして分類されていないメールのみをスキャンすることで、システムの負荷を低く保とうとし、不要な作業を避けます。

これがあなたにとって機能するという保証はありません!

1 前提条件

この記事では、ベースシステムとしてDebian Lennyを使用します。

SpamAssassinがすでにインストールされており、動作していることを前提とします。主な設定ディレクトリは/etc/mail/spamassassin/です。ディレクトリが異なる場合(例: ISPConfig 2がインストールされている場合、ディレクトリは/home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin/)、問題ありません。どこを変更するかを注釈します。

SpamAssassinのバージョンがFuzzyOCRと互換性があることを確認してください。たとえば、ここでインストールするFuzzyOCRのバージョン(fuzzyocr-3.5.1-devel.tar.gz)は、SpamAssassin 3.1.4以上が必要です。

2 FuzzyOCRの前提条件をインストールする

FuzzyOCRには、ocradやgocrなどのいくつかの前提条件があります。これを次のようにインストールできます:

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

3 FuzzyOCRをインストールする

次に、http://fuzzyocr.own-hero.net/wiki/Downloadsから最新のFuzzyOCR開発版をダウンロードしてインストールします。FuzzyOCRの開発者は次のように述べているため、安定版ではなく開発版をダウンロードします:

“現在の推奨は開発版です。安定版は機能が不足しており、非常に古いです。”

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

次に、FuzzyOCRを解凍し、すべてのFuzzyOcr*ファイルとFuzzyOcrディレクトリ(すべてFuzzyOcr-3.5.1/ディレクトリ内にあります)を/etc/mail/spamassassinに移動します:

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

SpamAssassinのディレクトリが異なる場合(例: /home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin/)、最後のコマンドは次のように置き換える必要があります。

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

/usr/src/FuzzyOcr-3.5.1/ディレクトリはまだ削除しないでください。そこにはサンプルの画像スパムメールが含まれているディレクトリ(samples/)があり、FuzzyOCRが期待通りに動作しているかをテストするために後で必要です。

これでFuzzyOCRがインストールされました。次に、設定を行う必要があります。

4 FuzzyOCRを設定する

FuzzyOCRの設定ファイルは/etc/mail/spamassassin/FuzzyOcr.cfです。そのファイルのほとんどはコメントアウトされています。今、そのファイルを開いていくつかの変更を加えます:

vi /etc/mail/spamassassin/FuzzyOcr.cf

FuzzyOCRのスパムワードファイルの場所を定義するために、次の行を追加します:

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

/etc/mail/spamassassin/FuzzyOcr.wordsは、FuzzyOCRに付属する事前定義された単語リストです。必要に応じて調整できます。

次に、次のように変更します:

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

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

最後に、次の行を追加/有効にします:

| [...] # 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 [...] |

最後の4行で画像ハッシュ化を有効にします。FuzzyOCRの開発者は画像ハッシュ化について次のように述べています:

“画像ハッシュデータベース機能により、プラグインは画像の特徴のベクトルをデータベースに保存できるため、2回目にこの画像が到着したときにそれを認識します(したがって、再度スキャンする必要はありません)。この機能の特別な点は、スパマーによってわずかに変更された場合でも画像を再認識できることです。”

/etc/mail/spamassassinの代わりに/home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassinを使用する場合、FuzzyOCRの設定ファイルは/etc/mail/spamassassin/FuzzyOcr.cfの代わりに/home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin/FuzzyOcr.cfになりますので、そのファイルを編集してください。設定ファイルでは、/etc/mail/spamassassinのすべての出現を/home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassinに置き換えるか、前述のようにそのままにして、次のようにシンボリックリンクを作成します:

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

これでFuzzyOCRの設定は完了です。次に、期待通りに動作するかどうかを確認しましょう。

5 FuzzyOCRをテストする

FuzzyOCRにはサンプルの画像スパムメール(samples/ディレクトリ内)が付属しています:

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

出力は次のようになります:

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

これらのメールをSpamAssassinにフィードして、FuzzyOCRが正しくリンクされているかどうかを確認できます。spamassassin実行可能ファイルの場所を見つけてください(通常はPATH内にあります - これが当てはまるかどうかは、次のコマンドを実行することで確認できます:

which spamassassin

結果が表示されれば、spamassassinはPATH内にあり、フルパスを指定する必要はありません。)

spamassassinの場所がわからない場合は、次のコマンドを実行して確認できます:

updatedb  
locate spamassassin

ISPConfig 2を使用している場合、spamassassinはここにあります:/home/admispconfig/ispconfig/tools/spamassassin/usr/bin/spamassassin

spamassassinの場所がわかったので、次のようにサンプルの画像スパムメールをspamassassinにフィードできます:

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

例えば:

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

または、spamassassinがPATH内にある場合:

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

これで多くの出力が表示されるはずで、最後は次のようになります:

[...]  
[10025] dbg: FuzzyOcr:  
[10025] dbg: FuzzyOcr: Friday Augurt 4, 4:01 pm ET  
[10025] dbg: FuzzyOcr: LAS VEGAS, NEVADA--(MARKET WIRE)--Aug 4, 2006 -- auantum Energy, lnc. (OTC  
[10025] dbg: FuzzyOcr: BB:aEGY.oB-_-  
[10025] dbg: FuzzyOcr: auantum Energy, lnc. is pleased to announce that it has applied to have its shares listed for  
[10025] dbg: FuzzyOcr: trading on the Frankfurt Stock Exchange. The company has retained the services ofBaltic  
[10025] dbg: FuzzyOcr: lnvestment Group of Hamburg, Germany to assist with the application.  
[10025] dbg: FuzzyOcr:  
[10025] dbg: FuzzyOcr: _ qEGY,OB "  
[10025] dbg: FuzzyOcr:  
[10025] dbg: FuzzyOcr: <<=end  
[10025] info: FuzzyOcr: Scanset "ocrad" found word "target" with fuzz of 0.0000  
[10025] info: FuzzyOcr: line: "short term price target oo"  
[10025] info: FuzzyOcr: Scanset "ocrad" found word "service" with fuzz of 0.0000  
[10025] info: FuzzyOcr: line: "trading on the frankfurt stock exchange the company has retained the services ofbaltic"  
[10025] info: FuzzyOcr: Scanset "ocrad" found word "stock" with fuzz of 0.0000  
[10025] info: FuzzyOcr: line: "hot energy stocki"  
[10025] info: FuzzyOcr: Scanset "ocrad" found word "stock" with fuzz of 0.0000  
[10025] info: FuzzyOcr: line: "trading on the frankfurt stock exchange the company has retained the services ofbaltic"  
[10025] info: FuzzyOcr: Scanset "ocrad" found word "price" with fuzz of 0.0000  
[10025] info: FuzzyOcr: line: "current price o"  
[10025] info: FuzzyOcr: Scanset "ocrad" found word "price" with fuzz of 0.0000  
[10025] info: FuzzyOcr: line: "short term price target oo"  
[10025] info: FuzzyOcr: Scanset "ocrad" found word "company" with fuzz of 0.0000  
[10025] info: FuzzyOcr: line: "trading on the frankfurt stock exchange the company has retained the services ofbaltic"  
[10025] info: FuzzyOcr: Scanset "ocrad" found word "recommendation" with fuzz of 0.0000  
[10025] info: FuzzyOcr: line: "sboog bup recommendation"  
[10025] dbg: FuzzyOcr: Enough OCR Hits without space stripping, skipping second matching pass...  
[10025] info: FuzzyOcr: Scanset "ocrad" generates enough hits (8), skipping further scansets...  
[10025] info: FuzzyOcr: Message is spam, score = 15.000  
[10025] info: FuzzyOcr: Adding Hash to "/etc/mail/spamassassin/FuzzyOcr.db" with 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: Words found:  
[10025] info: FuzzyOcr: "target" in 1 lines  
[10025] info: FuzzyOcr: "service" in 1 lines  
[10025] info: FuzzyOcr: "stock" in 2 lines  
[10025] info: FuzzyOcr: "price" in 2 lines  
[10025] info: FuzzyOcr: "company" in 1 lines  
[10025] info: FuzzyOcr: "recommendation" in 1 lines  
[10025] info: FuzzyOcr: (12 word occurrences found)  
[10025] dbg: FuzzyOcr: Remove DIR: /tmp/.spamassassin10025QnPTq8tmp  
[10025] dbg: FuzzyOcr: FuzzyOcr ending successfully...  
[10025] dbg: FuzzyOcr: Processed in 2.191381 sec.

ご覧のとおり、/usr/src/FuzzyOcr-3.5.1/samples/ocr-gif.emlはスパムとして15ポイントのスコアで分類されましたので、FuzzyOCRは機能しています。

これで、あなたのSpamAssassinはFuzzyOCRのおかげで画像スパムを認識できるようになりました。

6 リンク

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。