Arquivos históricos do BR-Linux.org apresenta:

Controle de spam com bogofilter + spamassassin

O Fabio Rafael da Rosa, nosso colaborador habitual da Coluna Software, mandou um tutorial de autoria dele explicando como usar o bogofilter e o spamassassin em conjunto com o MTA de sua preser~encia (Sendmail, Postfix, Qmail ou outro) utilizando o procmail como ligação. COnfira!

Controle de spam com bogofilter + spamassassin

por Fabio Rafael da Rosa (f2r@users.sourceforge.net)

Como tinha prometido na minha analise na coluna do software sobre o bogofilter, aqui vai um artigo de como integra-lo ao spamassassin, tendo assim uma solução "fantástica" para controle de spams.

Primeiro de tudo: Instale o spamassassin (http://www.spamassassin.org) instale também o bogofilter (http://bogofilter.sourceforge.net), e instale também o procmail (se você já não tiver instalado). E' necessário um MTA também (qualquer um, mas, de preferência Exim ou postfix, que são bem simples de configurar). Não vou cobrir isso aqui, por que a instalação e' trivial, e nao e' o foco do artigo.

Bom, depois de tudo instalado, vamos começar: O mecanismo funciona mais ou menos assim: O bogofilter mantem uma base de dados de emails que são marcados como spam, e uma outra base de dados de emails que não são spams. Baseado nessas bases de dados, ele realiza diversos testes no corpo da mensagem, para marca-la ou não como spam. Essa base de dados pode ser "treinada" pelo usuário, com emails que sejam spams e tenham passado pelo filtro (mais abaixo eu mostro como), e também pode ser "treinada" no caso de "falso positivo" (uma mensagem que não e' spam , ser marcada), o spamassassin mantém uma base de características conhecidas em mensagens que são spams, então, ele verifica a mensagem por esses "vestígios" de spam. Cada vestígio encontrado, aumenta a pontuação da mensagem. Quando essa pontuação atinge determinado nível (definido pelo usuário), o email e' marcado como spam.

Bom, o mecanismo que eu estou usando aqui, e' uma versão simplificada de uma versão que li certa vez na internet (infelizmente perdi o site com a versão original). No meu caso, os emails São marcados, e eu trato isso no cliente de email (no meu caso, o sylpheed), que coloca os spams em uma pasta de email especial (para depois, eu dar uma leve olhada para verificar se ocorreu algum falso positivo). Porem , você pode usar isso como base, e criar mecanismos mais complexos para lidar com seus spams.

Indo para a parte da marcação de mensagens em si: O que acontece e' que , o bogofilter analisa a mensagem primeiro. Caso ele a classifique como spam, ele marca a mensagem e passa pra frente (lembre-se que eu só' estou tomando providencias com essas mensagens no cliente de email). Porem, no caso de ele _não_ classificar a mensagem como spam, ele a encaminha para o spamassassin, para ser verificada novamente. Caso o spamassassin verifique que a mensagem não e' um spam, ele passa pra frente. A parte legal e' agora: caso o spamassassin verifique que a mensagem e' um spam (ou seja, ela conseguiu passar pelo filtro do bogofilter), ele retreina o bogofilter para reconhecer que aquela mensagem e' um spam. Assim, você consegue treinar o seu bogofilter de forma automática. Os dois programas trabalhando em conjunto conseguem barrar praticamente qualquer spam (e' muito difícil algum spam conseguir passar sem ser marcado, praticamente 1 a cada 80 ou 90 mensagens).

Bom, para fazer essa integração dos dois, use o procmail. O meu arquivo .procmailrc fica assim:

------------------------- .procmailrc -------------------------------
# Pegar email no bogofilter para filtrar spam
:0fw
| bogofilter -uepl

:0e
{ EXITCODE=75 HOST }

# Pegando o que foi classificado como nao-spam pelo bogofilter e jogando no
# spamassassin
# no meu caso, eu estou usando o spamassassin como daemon. Caso esteja usando
# ele como programa comum, use a segunda linha.
# AVISO: recomendo usar o spamassassin como daemon, a diferenca de perfomance
# nesse caso e' consideravel.
:0fwE
* ! ^X-Bogosity: Yes
* ! ^X-Beenthere:.*spamassassin-talk@lists.sourceforge.net
| spamc
# |spamassassin
:0e
{
# EXITCODE=$?
EXITCODE=0
}

# spam pego pelo spamassassin eh mandado de volta para o bogofilter, para
# treina-lo
:0c
* ^X-Spam-Status: Yes
{
:0w
| bogofilter -s
}
----------------------------- f i m --------------------------------

Simples nao. :)
Para maior eficiencia, mantenha o seu spamassassim bem atualizado (as novas versoes trazem novas assinaturas de spam para testes). No caso de algum spam conseguir passar pelos dois filtros, faca o seguinte: Salve a mensagem em um arquivo (no exemplo, spam.msg) . Depois execute:

$ cat spam.msg | bogofilter -Ns

Essa linha treina o bogofilter para reconhecer aquela mensagem como spam, aumentando a base de testes para serem feitos nas mensagens.

Caso alguma mensagem autentica seja marcada como spam (preste atenção a esse detalhe no começo, o sistema fica bastante afinado depois de alguns dias de uso e treinamento), salve a mensagem em um arquivo (no exemplo, mensagem.msg). Depois execute:

$ cat mensagem.msg | bogofilter -n

Outro detalhe importante para a sua sanidade: configure o MTA da sua maquina para não iniciar mais do que 10 ou 20 processos ao mesmo tempo (depende de quanta memoria você tem disponível). Se você tem muitas mensagens para ser analisadas, a maquina pode ficar totalmente "entupida" de processos e não fazer mais nada. Aqui tenho uma maquina com 256Mb de RAM, e disparo 20 processos por vez. Em casa, com 512, posso lançar 100 processos sem ter problema com a interatividade da maquina. No caso do exim , a linha e' a seguinte:

smtp_accept_queue_per_connection = 20

veja a documentação do seu MTA para configurar esse parâmetro. :)

Bom, e' isso. Essa configuração pode ser muito alterada, e pode ser configurada de milhares de outras formas, com outros controles. Eu dei a base para uma configuração caseira, a partir dai, e' com a sua imaginação.

Qualquer duvida ou sugestão sobre o conteúdo desse tutorial, vocês
podem enviar para f2r@users.sourceforge.net

Ate' a próxima ...

f2r :)

Postado por brain em setembro 1, 2003 12:02 AM

Comentários para "Controle de spam com bogofilter + spamassassin"

» Postado por: Adriel Lyra em setembro 2, 2003 10:30 AM, 200.244.74.:

 

» Postado por: thakilar em setembro 2, 2003 06:19 PM, 200.101.99.:

 

» Postado por: Denis em setembro 12, 2003 03:36 PM, 200.101.15.:

 

» Postado por: Jean em outubro 3, 2003 12:25 PM, 200.101.129:

 

» Postado por: Thiago em dezembro 3, 2003 11:46 AM, 200.165.45.:

 

» Postado por: Mauro em abril 26, 2004 01:55 PM, 200.217.55.:

 

» Postado por: Gledson Bispo em maio 18, 2004 02:52 PM, 161.148.9.2:

 

» Postado por: Patrick Brandao em julho 15, 2004 07:06 PM, 200.202.235:

 

Antes de comentar...

- Preserve a qualidade desta discussão
- Leia os Termos de Uso.
- Este formulário deve ser usado para comentários sobre a notícia. Se você tem dúvidas ou precisa de ajuda, use o Fórum.
- Mantenha o foco nos argumentos e no assunto
- Não faça ataques pessoais.
- Pense 5 vezes antes de entrar em discussões inúteis, como "qual é a melhor distribuição/ambiente gráfico/linguagem de programação/etc.", mesmo se alguém já tiver provocado - um erro não justifica o outro
- Não seja um e-mala ;-)


O Arquivo Histórico do BR-Linux.org mantém no ar (sem alteração, exceto quanto à formatação) notícias, artigos e outros textos publicados originalmente no site na segunda metade da década de 1990 e na primeira década do século XXI, que contam parte considerável a história do Linux e do Open Source no Brasil. Exceto quando indicado em contrário, a autoria dos textos é de Augusto Campos, e os termos de uso podem ser consultados na capa do BR-Linux.org. Considerando seu caráter histórico, é provável que boa parte dos links estejam quebrados, e que as informações deste texto estejam desatualizadas.