Logotipo Dicas-L, por Ricardo Burile

Busca

Visite também: UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  NoticiasLinux ·  BR-Linux ·  SoftwareLivre.org ·  [mais]   
 

Você está aqui: Home  → Arquivo Dicas-L

 

Mão na Massa - Programação Shell

Assine a Lista Dicas-L

Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.

Bofofilter e SpamAssassin

Colaboração: Douglas Adriano Augusto

Data de Publicação: 29 de Janeiro de 2004

Eu desenvolvi uma shell script para o treinamento inicial do bogofilter através do spamassassin. Funciona da seguinte maneira: dado um conjunto de mensagens de e-mail (cada qual em um arquivo), contendo spams e não spams, o spamassassin classifica cada uma delas, assim como o bogofilter. Em cada mensagem que a classificação do bogofilter diferir da classificação do spamassasin, este é retreinado de acordo com o palpite do spamassassin.

Com uma variedade considerável de e-mails, o bogofilter é capaz de assimilar com bastante fidelidade a experiência do spamassassin. A partir deste momento, o bogofilter já pode seguir rumo próprio, apenas refinando à medida que for necessário.

Abaixo o script:

  ### 
  bogoassassin.sh 
  ### 
   
  #!/bin/sh 
   
  # Treina a base do Bogofilter utilizando o conhecimento do Spamassassin, para 
  # uma dada mensagem.  Se o Bogofilter classificar incorretamente (sob a 
  # perspectiva do spamassassin), este será re-treinado para o caso onde falhou. 
  # Train On Error (TOE) 
   
  # O objetivo é aproveitar toda a experiência do Spamassasin e, então, apenas 
  # refinar a base de dados do Bogofilter ao decorrer do tempo.  
   
  # Douglas Augusto (douglas@coc.ufrj.br), 15/Set/2003 - Sob GPL 
   
  # Uso: ./bogoassassin.sh arquivo-mensagem 
   
  # É recomendado o processamento em lote, tendo como base todas as mensagens 
  # previamente arquivadas: 
  # Ex.: for i in $(ls); do ./bogoassassin.sh $i; done 
  # (processa todas as mensagens do diretório atual) 
   
   
  # localização dos binários 
  BOGOFILTER="/usr/bin/bogofilter"; 
  SPAMASSASSIN="/usr/bin/spamassassin"; 
  SPAMASSASSINCLIENT="/usr/bin/spamc"; 
   
  $BOGOFILTER < $* 
   
  # 0 = SPAM, 1 = NONSPAM 
  CLASS_BOGO=$? 
   
  # Classificação pelo SpamAssassin 
   
  # Modo normal (mais lento), habilitado por padrão: 
  $SPAMASSASSIN -e < $* > /dev/null 
   
  # Caso utilize o spamd/spamc. Este método é recomendado para o processamento em 
  # lote, por ser mais veloz. É necessário, entretanto, que o servidor 'spamd' 
  # esteja rodando. Descomente a linha a seguir e comente a linha referente ao modo normal. 
  #$SPAMASSASSINCLIENT -c < $* > /dev/null 
   
   
  # 0 = NONSPAM, >0 = SPAM 
  if [ $? = 0 ]; then # nao é SPAM, segundo o spamassassin 
   
  echo "- NONSPAM" "["$*"] (Spamassassin)" 
     
    if [ $CLASS_BOGO = 0 ]; then # o bogo acusou erroneamente SPAM 
      echo "  SPAM ["$*"] (Bogofilter): Re-treinando!" 
      # fazer a correção 
      $BOGOFILTER -n < $* 
    else 
      echo "  NONSPAM ["$*"] (Bogofilter): Ok!" 
    fi 
  else # é SPAM, segundo o spamassassin 
  echo "- SPAM" "["$*"] (Spamassassin)" 
    if [ $CLASS_BOGO != 0 ]; then # o bogo não acusou SPAM :( 
      echo "  NONSPAM ["$*"] (Bogofilter): Re-treinando!" 
      # fazer a correção 
      $BOGOFILTER -s < $* 
    else 
      echo "  SPAM ["$*"] (Bogofilter): Ok!" 
    fi 
  fi 
   
  ###

Veja a relação completa dos artigos de Douglas Adriano Augusto

Stumble Upon Digg This Del.icio.us Twitter Recomendar este artigo a um amigo Entre em contato Formato PDF
Newsfeed RSS
Formato para impressão
StumbleUpon Digg Del.icio.us Twitter Recomendar Contato PDF RSS Imprimir

Referências Adicionais

Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.

Avalie esta dica

  • Currently 3.00/5
  • 1
  • 2
  • 3
  • 4
  • 5

Avaliação: 3.0 /5 (596 votos)

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script

English for Reading and Listening
Enriqueça o seu vocabulário recebendo diariamente mensagens divertidas em inglês, com áudio em MP3.
Saiba mais

Biblioteca

Desenvolvendo Websites com PHP
Por Juliano Niederauer

O Monge e o Executivo: uma História sobre a Essência da Liderança
Por James C. Hunter

Extreme Programming
Por Vinicius Manhaes Teles

UML: Guia do Usuário
Por Grady Booch, James Rumbaugh e Ivar Jacobson

O Vendedor de Sonhos
Por Augusto Cury

Segurança de Redes em Ambientes Cooperativos
Por Emilio Tissato Nakamura e Paulo Licio de Geus

O Conhecimento em Rede
Por Carlos Nepomuceno e Marcos Cavalcanti

Utilizando UML e Padrões
Por CRAIG LARMAN

Sistema de Banco de Dados
Por Abraham Silberschatz

Hardware PC: Guia de Aprendizagem Rápida
Por Carlos E. Morimoto

Manual Completo do Linux: Guia do Administrador
Por Evi Nemeth, Trent R. Hein, Garth Snyder

Redes de Computadores e a Internet
Por James F. Kurose e Keith W. Ross

O Segredo
Por Rhonda Byrne

Os Segredos da Mente Milionária
Por T. Harv Eker

Construindo Sites com CSS e (X)HTML
Por Mauricio Samy Silva

Use a Cabeça!: JSP & Servlets
Por Brian Bashan, Kathy Sierra, Bert Bates

Expressões Regulares: Uma Abordagem Divertida
Por Aurélio Marinho Jargas

Qualidade de Software
Por Andre Koscianski Michel dos Santos Soares

Descobrindo o Linux: Entenda o Sistema Operacional GNU/Linux
Por Joao Eriberto Mota Filho

Enterprise Javabeans 3.0
Por Bill Burke, Richard Monson