Spam e Segurança · 7 min read · Nov 17, 2025

Combata Spam de Imagem Com FuzzyOCR E SpamAssassin No Debian Lenny

Combata Spam de Imagem Com FuzzyOCR E SpamAssassin No Debian Lenny

Versão 1.0
Autor: Falko Timme
Siga-me no Twitter

Este tutorial descreve como escanear e-mails em busca de spam de imagem com FuzzyOCR em um servidor Debian Lenny. FuzzyOCR é um plugin para SpamAssassin que visa e-mails não solicitados em massa contendo imagens como o principal portador de conteúdo. Usando diferentes métodos, ele analisa o conteúdo e as propriedades das imagens para distinguir entre e-mails normais (ham) e e-mails de spam. FuzzyOCR tenta manter a carga do sistema baixa, escaneando apenas e-mails que ainda não foram categorizados como spam pelo SpamAssassin, evitando assim trabalho desnecessário.

Não dou nenhuma garantia de que isso funcionará para você!

1 Nota Preliminar

Neste artigo, usarei Debian Lenny como sistema base.

Assumo que o SpamAssassin já está instalado e funcionando, com /etc/mail/spamassassin/ como seu diretório principal de configuração. Se seu diretório for diferente (por exemplo, se você tiver o ISPConfig 2 instalado, o diretório é /home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin/), isso não é um problema. Vou anotar onde mudar o que.

Por favor, certifique-se de que sua versão do SpamAssassin funciona com o FuzzyOCR. Por exemplo, a versão do FuzzyOCR que vou instalar aqui (fuzzyocr-3.5.1-devel.tar.gz) requer SpamAssassin 3.1.4 ou mais recente.

2 Instale Os Pré-requisitos Para FuzzyOCR

FuzzyOCR tem alguns pré-requisitos como ocrad e gocr que podemos instalar assim:

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

3 Instale FuzzyOCR

Em seguida, baixamos e instalamos a versão de desenvolvimento mais recente do FuzzyOCR em http://fuzzyocr.own-hero.net/wiki/Downloads. Baixamos a versão de desenvolvimento em vez da versão estável porque os desenvolvedores do FuzzyOCR dizem:

“A recomendação atual é a versão de desenvolvimento porque a versão estável carece de recursos e é muito antiga.”

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

Então, descompactamos o FuzzyOCR e movemos todos os arquivos FuzzyOcr* e o diretório FuzzyOcr (todos estão no diretório FuzzyOcr-3.5.1/) para /etc/mail/spamassassin:

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

Se seu diretório do SpamAssassin for diferente, por exemplo, /home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin/, então o último comando deve ser substituído por

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

Não exclua o diretório /usr/src/FuzzyOcr-3.5.1/ ainda, há um diretório com e-mails de spam de imagem de exemplo lá (samples/) que precisamos mais tarde para testar se o FuzzyOCR está funcionando como esperado.

Então o FuzzyOCR está agora instalado, agora precisamos configurá-lo.

4 Configure FuzzyOCR

O arquivo de configuração do FuzzyOCR é /etc/mail/spamassassin/FuzzyOcr.cf. Nesse arquivo, quase tudo está comentado. Abrimos esse arquivo agora e fazemos algumas modificações:

vi /etc/mail/spamassassin/FuzzyOcr.cf

Coloque a seguinte linha nele para definir a localização do arquivo de palavras de spam do FuzzyOCR:

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

/etc/mail/spamassassin/FuzzyOcr.words é uma lista de palavras pré-definida que vem com o FuzzyOCR. Você pode ajustá-la às suas necessidades, se desejar.

Em seguida, mude

| [...] # Inclua comandos adicionais de scanner/preprocessador aqui: # focr_bin_helper pnmnorm, pnminvert, pamthreshold, ppmtopgm, pamtopnm focr_bin_helper tesseract [...] |

para

| [...] # Inclua comandos adicionais de scanner/preprocessador aqui: # focr_bin_helper pnmnorm, pnminvert, convert, ppmtopgm, tesseract [...] |

Finalmente, adicione/habilite as seguintes linhas:

| [...] # Caminho de busca para localizar aplicativos auxiliares 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 [...] |

Com as últimas quatro linhas, você habilita a hashing de imagem. Isso é o que os desenvolvedores do FuzzyOCR dizem sobre a hashing de imagem:

“O recurso de banco de dados de hashing de imagem permite que o plugin armazene um vetor de características de imagem em um banco de dados, para que ele reconheça essa imagem quando ela chegar uma segunda vez (e, portanto, não precise escaneá-la novamente). A coisa especial sobre essa função é que ela também reconhece a imagem novamente se ela foi ligeiramente alterada (o que é feito por spammers). “

Se você usar /home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin em vez de /etc/mail/spamassassin, o arquivo de configuração do FuzzyOCR é /home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin/FuzzyOcr.cf em vez de /etc/mail/spamassassin/FuzzyOcr.cf, então edite aquele. No arquivo de configuração, você pode agora substituir todas as ocorrências de /etc/mail/spamassassin por /home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin, OU você deixa como mostrado antes e cria um symlink de /etc/mail/spamassassin para /home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin assim:

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

É isso já para a configuração do FuzzyOCR. Agora vamos ver se funciona como esperado.

5 Teste FuzzyOCR

Mencionei antes que o FuzzyOCR vem com e-mails de spam de imagem de exemplo (no diretório samples/):

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

A saída deve ser assim:

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

Podemos enviar cada um desses e-mails para o SpamAssassin agora para ver se o FuzzyOCR está vinculado corretamente ao SpamAssassin. Descubra onde está seu executável spamassassin (normalmente está no seu PATH - você pode descobrir se este é o caso executando

which spamassassin

Se mostrar um resultado, spamassassin está no seu PATH, e você não precisa especificar o caminho completo para spamassassin para executá-lo.)

Se você não souber onde está o spamassassin, pode descobrir executando

updatedb  
locate spamassassin

Se você usar o ISPConfig 2, o spamassassin está aqui: /home/admispconfig/ispconfig/tools/spamassassin/usr/bin/spamassassin

Agora que você sabe onde está o spamassassin, pode enviar os e-mails de spam de imagem de exemplo para o spamassassin assim:

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

Por exemplo:

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

ou, se o spamassassin estiver no seu PATH:

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

Agora você deve ver uma saída grande, o final deve ser assim:

[...]  
[10025] dbg: FuzzyOcr:  
[10025] dbg: FuzzyOcr: Sexta-feira 4 de agosto, 16:01 ET  
[10025] dbg: FuzzyOcr: LAS VEGAS, NEVADA--(MARKET WIRE)--4 de agosto de 2006 -- auantum Energy, lnc. (OTC  
[10025] dbg: FuzzyOcr: BB:aEGY.oB-_-  
[10025] dbg: FuzzyOcr: auantum Energy, lnc. tem o prazer de anunciar que solicitou a listagem de suas ações na  
[10025] dbg: FuzzyOcr: Bolsa de Valores de Frankfurt. A empresa contratou os serviços do Baltic  
[10025] dbg: FuzzyOcr: Investment Group de Hamburgo, Alemanha, para ajudar com a solicitação.  
[10025] dbg: FuzzyOcr:  
[10025] dbg: FuzzyOcr: _ qEGY,OB "  
[10025] dbg: FuzzyOcr:  
[10025] dbg: FuzzyOcr: <<=end  
[10025] info: FuzzyOcr: Scanset "ocrad" encontrou a palavra "target" com fuzz de 0.0000  
[10025] info: FuzzyOcr: linha: "short term price target oo"  
[10025] info: FuzzyOcr: Scanset "ocrad" encontrou a palavra "service" com fuzz de 0.0000  
[10025] info: FuzzyOcr: linha: "trading on the frankfurt stock exchange the company has retained the services ofbaltic"  
[10025] info: FuzzyOcr: Scanset "ocrad" encontrou a palavra "stock" com fuzz de 0.0000  
[10025] info: FuzzyOcr: linha: "hot energy stocki"  
[10025] info: FuzzyOcr: Scanset "ocrad" encontrou a palavra "stock" com fuzz de 0.0000  
[10025] info: FuzzyOcr: linha: "trading on the frankfurt stock exchange the company has retained the services ofbaltic"  
[10025] info: FuzzyOcr: Scanset "ocrad" encontrou a palavra "price" com fuzz de 0.0000  
[10025] info: FuzzyOcr: linha: "current price o"  
[10025] info: FuzzyOcr: Scanset "ocrad" encontrou a palavra "price" com fuzz de 0.0000  
[10025] info: FuzzyOcr: linha: "short term price target oo"  
[10025] info: FuzzyOcr: Scanset "ocrad" encontrou a palavra "company" com fuzz de 0.0000  
[10025] info: FuzzyOcr: linha: "trading on the frankfurt stock exchange the company has retained the services ofbaltic"  
[10025] info: FuzzyOcr: Scanset "ocrad" encontrou a palavra "recommendation" com fuzz de 0.0000  
[10025] info: FuzzyOcr: linha: "sboog bup recommendation"  
[10025] dbg: FuzzyOcr: Hits de OCR suficientes sem remoção de espaço, pulando segunda passagem de correspondência...  
[10025] info: FuzzyOcr: Scanset "ocrad" gera hits suficientes (8), pulando conjuntos de escaneamento adicionais...  
[10025] info: FuzzyOcr: Mensagem é spam, pontuação = 15.000  
[10025] info: FuzzyOcr: Adicionando Hash a "/etc/mail/spamassassin/FuzzyOcr.db" com pontuação "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: Palavras encontradas:  
[10025] info: FuzzyOcr: "target" em 1 linhas  
[10025] info: FuzzyOcr: "service" em 1 linhas  
[10025] info: FuzzyOcr: "stock" em 2 linhas  
[10025] info: FuzzyOcr: "price" em 2 linhas  
[10025] info: FuzzyOcr: "company" em 1 linhas  
[10025] info: FuzzyOcr: "recommendation" em 1 linhas  
[10025] info: FuzzyOcr: (12 ocorrências de palavras encontradas)  
[10025] dbg: FuzzyOcr: Remover DIR: /tmp/.spamassassin10025QnPTq8tmp  
[10025] dbg: FuzzyOcr: FuzzyOcr finalizando com sucesso...  
[10025] dbg: FuzzyOcr: Processado em 2.191381 seg.

Como você vê, /usr/src/FuzzyOcr-3.5.1/samples/ocr-gif.eml foi categorizado como spam com uma pontuação de 15 pontos, então o FuzzyOCR está funcionando.

Assim, seu SpamAssassin agora é capaz de reconhecer spam de imagem graças à ajuda do FuzzyOCR.

6 Links

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.