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
» Postado por: Adriel Lyra em setembro 2, 2003 10:30 AM, 200.244.74.:
Como configurar o MTA da maquina usando o Postfix para não iniciar mais do que 10 ou 20 processos ao mesmo tempo???
Preciso configurar o Kmail para filtrar ou é automático?????
O SpamAssassin tem que configurar o Kmail para filtrar através do Spamc.
» Postado por: thakilar em setembro 2, 2003 06:19 PM, 200.101.99.:
> Como configurar o MTA da maquina usando o Postfix para não iniciar mais do que 10 ou 20 processos ao mesmo tempo???
Você deve está usando muito filtros baseados em expressões regulares. Veja isso. Principalmente em body|header_filter. Quantos mais expressões, mais o cleanup vai demorar para processar a mensagem.
» Postado por: Denis em setembro 12, 2003 03:36 PM, 200.101.15.:
Alguem já colocou este sistema em um servidor usando sendmail procmail?
Estou com as seguintes dúvidas:
no caso de um servidor setado para dar o mesmo home para todos os usuários: /tmp;
como proceder para a criação do .procmailrc?
e ainda como fazer para que todas as menssagens tidas como spam vá para uma mesma pasta afim de que possam ser avaliados e posteriormente apagados?
» Postado por: Jean em outubro 3, 2003 12:25 PM, 200.101.129:
Eu tenho o Inflex fazendo hoje a ligação do Sendmail com o Etrust, o inflex irá ligar com o spamassassin??
[]s
» Postado por: Thiago em dezembro 3, 2003 11:46 AM, 200.165.45.:
Sua solucão é interessante, mas será que voce conhece alguma coisa que faca o seguinte:
Tenho uma maquina que é o gataway(RH 8) da minha rede domestica e fica ligada ao velox, gostaria de instalar nela um filtro anti-spam e se possivel um anti-virus, ou seja, ela deveria funcionar como um proxy de mail apenas onde todo o trafego relativo a mail deveria se classificado e escaneado.Queria fazer isso sem ter que alterar as configuracoes dos clientes..quer dizer.. o proxy deve ser transparente.
Obrigado.
Thiago
» Postado por: Mauro em abril 26, 2004 01:55 PM, 200.217.55.:
Mais do que ensinar a fazer, é ensinar como funciona e isso você mostrou de forma clara. Muito Bom.
» Postado por: Gledson Bispo em maio 18, 2004 02:52 PM, 161.148.9.2:
Muito bom post ... parabens esta tudo dando certo retirei algumas duvidas e corrigi alguns erros ...
Se eu puder pedir uma ajuda ... gostaria de saber mais sobre DNSRBL Domain Name System Real-time Black List ... se alguem puder me passar algumas informacoes ficarei muito grato.
» Postado por: Patrick Brandao em julho 15, 2004 07:06 PM, 200.202.235:
Eu quero que todos os e-mail que chegam no meu dominio passem antes em um servidor de scanner de mensagem, depois a mensagem passa para o servidor de e-mail que vai armazena-las. Como fazer?
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.