Seções:
|
Filtrando SPAMs com Kmail + BogofilterIntroduçãoOs SPAMs ou e-mails de propaganda/mala direta são um grande incômodo para quem utiliza e-mail. Particularmente, para quem participa de várias listas de discussão e tem o e-mail como uma das principais ferramentas de trabalho, o problema é bastante sério. Embora simplesmente filtrar / separar o que é SPAM do que não é SPAM não resolva o problema, já é uma grande ajuda já que diminui o tempo que se perde com SPAMS e evita que e-mails importantes se percam no meio daquele monte de lixo que se amontoa diariamente na sua caixa postal. A solução descrita aqui foi feita baseada nas minhas necessidades, que podem ou não ser iguais a sua. Basicamente eu precisava de uma solução que:
Como nenhum filtro é perfeito o que eu queria era que os e-mails que fossem identifcados como SPAM fossem colocados em um folder especial, para serem analizados/deletados posteriormente. Além do mais eu queria uma maneira treinar o filtro para evitar os falsos positivos (não SPAM) e os SPAMs que não foram identificados. Pré-requisitosPara implementar o descrito nesse documento, estou partindo do princípio que o leitor possui alguma familiaridade com instalação de programas no linux, e saiba o básico de configuração do kmail (incluindo filtros). O que é o bogofilterO bogofilter é um filtro de spam que implementa as técnicas descritas por Paul Graham no artigo "A plan for spam" (leia mais aqui). Basicamente esse filtro lê da entrada padrão um e-mail, e baseado em certas características, retorna se ele é ou não um spam. O bogofilter pode também inserir no e-mail um cabeçalho especial identificando se ele é ou não um spam e qual a percentual de "spamcidade". E é esse recurso que utilizaremos para fazê-lo trabalhar com o kmail. InstalandoNão entrarei em detalhes de como se instala o bogofilter. Se você usa Debian então basta fazer um "apt-get install bogofilter" . O bogofilter e as instruções para instalação podem ser encontradas na página do bogofilter. Configurando o KmailO primeiro passo é criar os folders que irão conter os e-mails identificados como SPAM e dois folders adicionais que serão utilizados para treinar o bogofilter com exemplos de SPAMs e não-SPAM (também chamado de HAM). Eu utilizo o Kmail v. 15.1 então algumas instruções deverão ser adaptadas caso você utilize outra versão. Crie o folder zz_spam e opcionalmente utilize as opções de expiração de mensagems antigas. Crie também os folders zz_bogo_ham e zz_bogo_spam, e utilize o formato Maildir para esses folders. Em seguida vamos criar dois filtros no kmail. Coloque esses filtros como sendo os primeiros de sua lista de filtros, como nos exemplos a seguir: Filtro1: a idéia desse filtro é fazer com que todas as mensagens que cheguem passem (através de um "pipe") pelo bogofilter.
Filtro2: Os filtros que foram "marcados" como sendo SPAM são movidos para o folder apropriado.
Pronto! Isso resolve o problema de separar os e-mails, resta agora resolver o problema de "treinar" o filtro. Para tanto utilizaremos aqueles dois folders (zz_bogo_ham e zz_bogo_spam) e mais um pequeno script que iremos criar agora! Crie o seguinte script no seu home: #!/bin/sh
# Registers spam and non-spam with bogofilter automatically
# original from Fraser Campbell < fraser @ wehave.net >
# altered by Christian Lyra < lyra @ soueu.com.br >
for dir in $HOME/Mail/zz_bogo_spam/cur $HOME/Mail/zz_bogo_spam/new
do
find $dir -type f 2>/dev/null | while read file; do
bogofilter -s < $file && rm $file
done
done
for dir in $HOME/Mail/zz_bogo_ham/cur $HOME/Mail/zz_bogo_ham/new
do
find $dir -type f 2>/dev/null | while read file; do
bogofilter -n < $file && rm $file
done
done
Atenção: altere o script de acordo com o folder onde ficam os seus e-mails ($home/Mail no meu caso!). Quando um SPAM não for detecado, mova a mensagem para o folder zz_bogo_spam. Para e-mails que não são spam mas foram detecados como tal, copie-os para o folder zz_bogo_ham (copie e não mova, porque tudo que estiver nesses folders será deletado!). Em seguida execute o script e o bogofilter será atualizado com esses e-mails. Sugestão: execute esse script a partir do seu cron. ConclusãoSegundo o autor do bogofilter, após ser treinado o filtro consegue uma eficiência de até 98%, o que significa que para cada 100 spams somente 1 ou 2 deverão passar pelo filtro sem ser detecado! Ainda não usei o suficiente para confirmar isso... |