Nesse artigo veremos como fazer o usuário de e-mail interagir e "educar" o SpamAssassin, seja via webmail, evolution, etc. Serve tanto para e-mails SPAM quanto para não-SPAM (HAM).
Criando e configurando os scripts de interatividade
Crie dois usuários, um chamado "spam" e outro "nospam" para que os usuários de e-mail possam enviar os e-mails que são SPAM para spam@seudominio.com.br e os que não são SPAM para nospam@seudominio.com.br.
Obviamente esses nomes podem ser diferentes, desde que você considere isso nas outras etapas.
Criando e configurando os scripts
Por padrão, quando você configura para trabalhar com Clamav + SpamAssassin, ele cria um diretório /var/lib/clamav/.spamassassin. Dentro desse diretório crie uma pasta chamada "scripts" e dentro dela coloque os seguintes scripts, conforme segue abaixo e com explicação linha a linha:
Leitura dos SPAMs:
Esse script irá ler o arquivo de armazenamento de e-mail do usuário criado, desconsiderará o cabeçalho e enviará o código fonte do e-mail para um arquivo transitório a fim de depois fazermos a leitura dele adicionando na base de dados do SpamAssassin.
Script Leblock:
# vim /var/lib/clamav/.spamassassin/scripts/leblock
#!/bin/bash
# Conta o número de linhas do e-mail e armazena na variável
NL=`cat /var/mail/spam | wc --line`
# Subtrai o número de linhas do cabeçalho padrão do arquivo de
# e-mail do usuário, mude esse numero de linhas caso seja necessário.
NL=$(($NL-12))
# Envia para o arquivo temporário o código fonte do e-mail e já
# aplica o sa-learn, que é responsável pelo "aprendizado" do Spamassasin
tail -$NL /var/mail/spam > /var/lib/clamav/.spamassassin/scripts/Spam | sa-learn --spam /var/lib/clamav/.spamassassin/scripts/Spam
# Crie no diretório /var/lib/clamav/.spamassassin/scripts um arquivo
# sem conteúdo chamado "vazio" para que possamos "zerar" o arquivo
# temporário e assim não ficar enviando repetitivamente códigos que o
# SpamAssassin já tenha "aprendido". Existem outras maneiras de "zerar"
# esse arquivo esse é apenas um exemplo.
cat /var/lib/clamav/.spamassassin/scripts/vazio > /var/lib/clamav/.spamassassin/scripts/Spam
# Lê o cabeçalho do arquivo de e-mail do usuário SPAM que criamos e
# envia para um arquivo transitório.
head -12 /var/mail/spam > /var/mail/tmp
# Retorna o cabeçalho pro arquivo original, deixando assim somente
# o cabeçalho.
cat /var/mail/tmp > /var/mail/spam
# Apagando o arquivo transitório
rm -rf /var/mail/tmp
# redefinindo a permissão do arquivo para que não dê erros no momento
# da gravação do usuário spam
chown spam.spam /var/mail/spam
Leitura dos Ham ou não SPAM:
Esse script lerá o arquivo de armazenamento de e-mail do usuário criado, desconsiderará o cabeçalho e enviará o código fonte do e-mail para um arquivo transitório a fim de depois fazermos a leitura dele adicionando na base de dados do SpamAssassin.
Script Leunblock:
# vim /var/lib/clamav/.spamassassin/scripts/leunblock
#!/bin/bash
# Conta o número de linhas do e-mail e armazena na variável
NL=`cat /var/mail/nospam | wc --line`
# Subtrai o número de linhas do cabeçalho padrão do arquivo de
# e-mail do usuário, mude esse numero de linhas caso seja necessário.
NL=$(($NL-12))
# Envia para o arquivo temporário o código fonte do e-mail e já
# aplica o sa-learn que é responsável pelo "aprendizado" do Spamassasin
tail -$NL /var/mail/nospam > /var/lib/clamav/.spamassassin/scripts/unSpam | sa-learn --ham /var/lib/clamav/.spamassassin/scripts/unSpam
# Crie no diretório /var/lib/clamav/.spamassassin/scripts um arquivo
# sem conteúdo chamado "vazio" para que possamos "zerar" o arquivo
# temporário e assim não ficar enviando repetitivamente códigos que o
# SpamAssassin já tenha "aprendido". Existem outras maneiras de
# "zerar" esse arquivo, esse é apenas um exemplo
cat /var/lib/clamav/.spamassassin/scripts/vazio > /var/lib/clamav/.spamassassin/scripts/unSpam
# Lê o cabeçalho do arquivo de e-mail do usuário spam que criamos e
# envia para um arquivo transitório
head -12 /var/mail/nospam > /var/mail/untmp
# Retorna o cabeçalho para o arquivo original, deixando assim somente
# o cabeçalho.
cat /var/mail/untmp > /var/mail/nospam
# Apagando o arquivo transitório
rm -rf /var/mail/untmp
# redefinindo a permissão do arquivo para que não dê erros no momento da
# gravação do usuário nospam
chown nospam.nospam /var/mail/nospam
[1] Comentário enviado por peregrino em 14/09/2006 - 16:51h
muito bom seu tutorial parabens
mas agora queria saber uma coisa esse script educa altomaticamente, gostaria de saber se tem como fazer uma quarentena na qual o usuario iria ver se passo algum spam que o spamassassin não pego e colocando na pasta spam e automaticamente duarante uns 5 dias o que estiver nessa pasta ele educa como spam (HAM)
[2] Comentário enviado por solucoesnandor em 14/09/2006 - 17:35h
Na ultima parte (Agendando a execução dos scripts) eu comento sobre o tempo de execução, ao qual você pode determinar o tempo que desejar. Numa das redes que administro a prática que tomei foi de enviar todo conteúdo detectado como spam para uma conta especifica, onde fica armazenados caso algum usuário reclame do não recebimento de um determinado e-mail, assim fica mais fácil poder detectar qual está sendo a eficiência do serviço, você pode redirecionar para essa caixa e verificar diariamente e encaminhar para o destinatário caso necessário.
Se tiver interessado nessa solução posso te passar mais detalhes de como faze-la.
Espero ter esclarecido suas duvidas.
Abraços