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-ocr3 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.gzEntã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.cfColoque 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 READMEPodemos 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 spamassassinSe 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 spamassassinSe 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/nullPor exemplo:
/home/admispconfig/ispconfig/tools/spamassassin/usr/bin/spamassassin --debug FuzzyOcr < /usr/src/FuzzyOcr-3.5.1/samples/ocr-gif.eml > /dev/nullou, se o spamassassin estiver no seu PATH:
spamassassin --debug FuzzyOcr < /usr/src/FuzzyOcr-3.5.1/samples/ocr-gif.eml > /dev/nullAgora 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
- FuzzyOCR: http://www.fuzzyocr.net/
- SpamAssassin: http://spamassassin.apache.org/
- Debian: http://www.debian.org/
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.