Anti-SPAM ASK - Válidando remetentes por confirmação de mensagens

Você sabia que quase 65% do tráfego SMTP na web é SPAM? Nesse artigo ensinarei como criar um anti-SPAM por confirmação de mensagens, igual ao usado por certo provedor no Brasil, além de umas técnicas muito interessantes que eles não tem. Morte ao SPAM!

[ Hits: 82.160 ]

Por: Patrick Brandao em 07/07/2006 | Blog: http://www.patrick.eti.br


Introdução



Por Patrick Brandão
http://www.patrick.eti.br
contato@patrick.eti.br

Aviso


Este artigo pode ser distribuído, publicado, impresso e copiado de todas as formas e meios possíveis, desde que se mantenha o nome, a página web e o e-mail do autor no cabeçalho, em local visível, abaixo do título e com a letra maior ou igual a usada no texto.

É segunda-feira, você chega no serviço, abre o cliente e e-mail, e de repente, chove mensagem: "Viagra", "Trabalhe em casa", "Você está sendo traído", "Livre-se das multas", etc...

Depois de implementar o SpamAssassin, a redução é drástica, mas não total, infelizmente você corre o risco de ter uma mensagem legítima excluída e o risco aumenta a medida que você abaixa o nível, tornando o SpamAssassin mais agressivo. Programá-lo para apenas marcar as mensagens como SPAM ajuda, mas você de qualquer maneira, vai perder tempo separando algo do lixo.

Então, qual a solução?

Os spammers, pessoas desprezíveis, usam sistemas de envio de mensagens em massa, a maioria, um simples arquivo de texto com uma lista de endereços e um script que passa linha por linha enviando uma cópia do SPAM para cada um. Os mais modernos, tem sistemas com dicionários e funções de detecção de endereço de e-mail válido, sugando páginas de sites de busca, verdadeiros ROBÔS. Os mais sofisticados usam softwares que balanceiam o SPAM entre servidores de relay aberto, de forma que nem bloqueando por IP resolverá.

O detalhe interessante é que quando os SPAM´s são enviados usando remetentes inexistentes, o e-mail tende a voltar para o remetente (inventado pelo maligno), que não usa uma caixa postal válida. O resultado disso é uma fila enorme de mensagens em busca de um fim. Um dos servidores de e-mail que gerencio, certa vez chegou a ter 136 mil mensagens no queue, sendo que havia apenas 900 caixas válidas.

Bloquear o endereço do remetente é perca de tempo. Por que?
Os spammers criam strings aleatórias para o usuário no campo "From:" do SPAM e um domínio válido, e usam servidores open-relay aleatórios também, por exemplo:

From: xyz@yahoo.com.br
To: vitima@dominio.com
Subject: compre viagra, baratinho!

Assim, você bloqueia o xyz@yahoo.com.br, para que os SPAM´s sejam bloqueados, mas o próximo SPAM logo atrás dele terá o cabeçalho:

From: abc123@yahoo.com.br
To: vitima@dominio.com
Subject: compre viagra, baratinho!

Então vamos pelo assunto!
Bloqueia tudo que tiver "viagra" no assunto, e o próximo e-mail será:

From: xyz@yahoo.com.br
To: vitima@dominio.com
Subject: compre V 1 4 G R 4!

Se você bloquear o domínio yahoo.com.br, vai ter problemas de verdade, pois e-mails legítimos serão afetados.

Conclusão do texto acima: spammers não recebem retornos por e-mail, apenas usuários legítimos, os sacanas não querem um reply de seu lixo, apenas que você leia o conteúdo ou visite o link indicado. Eles são malignos, conhecem bem os anti-spam's existentes e vivem criando e-mails capazes de burlar a avaliação dos mesmos.

Nesse artigo você vai aprender como implementar, personalizar e dar suporte a um servidor de e-mail com o anti-SPAM ASK, cujo funcionamento é igual e superior ao anti-SPAM UOL!

O objetivo é ter na caixa de entrada, apenas endereços de e-mail de pessoas legítimas, que pretendem receber retorno das mensagens enviadas.

    Próxima página

Páginas do artigo
   1. Introdução
   2. Algoritmo e fluxograma
   3. Servidor de e-mail
   4. Download e instalação
   5. Ajuda e referências
Outros artigos deste autor

Freeradius - servidor radius eficiente e completo

Gateway de email com Qmail - proteção antivírus e antispam

Ziproxy - Proxy de compactação e redução de imagens

Acelerador de conexões dial-up para provedores de acesso

Qmail e chkuser - fila de mensagens limpa

Leitura recomendada

Cluster de Alta disponibilidade do Zimbra Collaboration System

Integrando o Exim4 com o SendGrid

Dividindo carga de saída de servidor SMTP (MTA Selor)

Relay autenticado para Postfix no Debian

Postfix + MySQL + Submission Port + Dovecot + Postfix Admin no CentOS 6.3

  
Comentários
[1] Comentário enviado por pcnmota em 07/07/2006 - 14:20h

E ai Patrick, blza?

Cara isso é show, ainda mais se tratando de uma solução que neste caso foi implementada no slackware. o ASK é show mesmo.

[2] Comentário enviado por Snails em 07/07/2006 - 16:31h

Kra, dei uma lida legal nos sites do ASK.....muito bom mesmo..só meio complicadinho de entender...
Remexendo muuuito achei uma opção para os lunáticos presos em Windows...chama-se Afw(ASK for Windows), vo coloca o link no final do comentário...
Mas minha duvida é a respeito do ASK em geral, ele é um servidor de e-mail ou ele roda por cima do meu servidor real ????
Quero coloca issu num servidor, mas ele é Windows e tem um servidor de e-mail rodando...e não tenhu como troca.
Se souber isso, me fala aew kra q to precisando urgentemente dessa ferramenta rodando la..
Vlw kra e até mais ver...

Link do Afw: http://sourceforge.net/projects/afw/

[3] Comentário enviado por patrickbrandao em 07/07/2006 - 16:56h

O ASK é basicamente scripts em Python que intermedia a escrita da mensagem na caixa do servidor. Em vez de escrever na caixa de entrada do usuário no servidor, o MDA deve entregar ao ASK.

Para rodar em windows, seu servidor deve ter suporte a python, maildir ou mailbox. Talvez algumas alterações sejam necessárias no ASK.

[4] Comentário enviado por fpio em 12/07/2006 - 10:38h

Estou com uma dúvida.
Quando o e-mail chega no meu servidor após um tira-teima ele é incluído na White list ou essa deve ser configurada manualmente?

Valeu!

[5] Comentário enviado por lucasbrescia em 17/07/2006 - 11:04h

Como eu realizo esta configuração no sendmail já que o sendmail não utiliza o vpopmail e sim o procmail. a diferença para realizar a configuração é muito diferente?
Obrigado.

[6] Comentário enviado por patrickbrandao em 17/07/2006 - 13:12h

Olá Lucas,

basta enviar a mensagem no procmail para a linha de comando do ASK.

[7] Comentário enviado por robsontex em 17/07/2006 - 15:00h

Lucas,

Apenas completando a resposta do Patrick, basta você adicionar as linhas abaixo no seu .procmailrc

:0 fW
|/usr/bin/ask.py --procmail --home=/home/seulogin

Falow

[8] Comentário enviado por lucasbrescia em 19/07/2006 - 10:17h

Não irei mais utilizar o procmail, irei fazer este serviço usando o .forward ja estou configurando quase tudo, porem preciso saber se tenho que definir valor desta variavel rc_askdir = ${HOME}/.ask com o diretorio home do usuario pq o arquivo " .ask" esta sendo gravado no /root? isto é norma?

[9] Comentário enviado por pbhost em 03/08/2006 - 13:54h

Amigo se puder me ajudar agradeço, estou tendo problemas, após fazer conforme indicado por você quando mando um email para o contato volta a seguinte mensagem:

ERROR: No confirmation templates found! Exiting...
Attention:
/The system could not deliver your message due to a technical problem.
Information about the problem has been recorded locally for analysis.
/--- Problem Details ---
/Traceback (most recent call last):
File "/usr/share/ask/askfilter", line 60, in ?
config = askconfig.AskConfig(sys.argv)
File "/usr/share/ask/askconfig.py", line 96, in __init__
self.__read_config(self.rcfile)
File "/usr/share/ask/askconfig.py", line 237, in __read_config
sys.exit(self.RET_PROCMAIL_CONTINUE)
SystemExit: 0
/-----------------------

[10] Comentário enviado por patrickbrandao em 03/08/2006 - 14:21h

Verifique a configuração, ele não encontrou a pasta ou os arquivos de templates, usados para enviar a confirmação.

[11] Comentário enviado por pbhost em 03/08/2006 - 14:42h

Patrick,

Eu uso o vopopmail com mysql e as contas não fica no home no arquivo .askrc a variavel rc_askdir = ${HOME}/.ask fica dessa forma mesmo.

[12] Comentário enviado por marceloboavista em 10/08/2006 - 15:20h

Patrick,

Esse material está muito bom, mas na hora do teste na minha máquina está apresentando o seguinte :

O e-mail que eu mando é retornado com o erro
"contato@dominio.com.br
preline: fatal: unable to run /usr/share/ask/askfilter: access denied"

Uso:
qmail e o Vpopmail
Preline
.qmail

Todos os arquivos estão com permissão de leitura escrita e execução para todos os usuários


Se puder me ajudar agradeço!

[13] Comentário enviado por rogerio.dega em 14/08/2006 - 14:11h

Patrick,
(Ainda não é uma contribuição, assim que eu conseguir utilizar será)
estou utilizando (tentando) com sendmail e tenho o meu .forward assim
configurado: |/usr/bin/askfilter --loglevel=5 --logfile=var/log/ask.log --home=/home/teste
para o usuário teste e estou recebendo este erro:
----- The following addresses had permanent fatal errors -----
|/usr/bin/askfilter --loglevel=5 --logfile=var/log/ask.log --home=/home/teste
(reason: Service unavailable)
(expanded from: <teste@twa.com.br>)

----- Transcript of session follows -----
smrsh: "teste" not available for sendmail programs (stat failed)
554 5.0.0 Service unavailable

devo substituir o .forward pelo .procmailrc no diretório do usuário ?

Rogério.
obrigado pela atenção.
rogerio.degasperi@terra.com.br

[14] Comentário enviado por lord_roxton em 15/08/2006 - 16:08h

Como faço para aplicar o ASK em um domínio inteiro? Basta alterar o arquivo .qmail-default? Ou ele tem que ser configurado pra cada um usuário?


[15] Comentário enviado por rogerio.dega em 29/08/2006 - 12:07h

E aí Patrik,
o que eu faço com este erro que está acontecendo no utilização
do ASK ?
para o usuário teste e estou recebendo este erro:
----- The following addresses had permanent fatal errors -----
|/usr/bin/askfilter --loglevel=5 --logfile=var/log/ask.log --home=/home/teste
(reason: Service unavailable)
(expanded from: <teste@twa.com.br>)

[16] Comentário enviado por fabgcruz em 02/09/2006 - 00:50h

Será que a implementação usando o POSTFIX é tranquila?

[17] Comentário enviado por adrielj em 12/09/2006 - 16:37h

eae Patrick

gostaria de saber se tem como tirar esta mensagem que vai na confirmação do email

This email account is protected by:
Active Spam Killer (ASK) V2.5.3 - (C) 2001-2004 by Marco Paganini
For more information visit http://www.paganini.net/ask

--- Original Message Follows ---

Parabens pelo post.
Vlw

[18] Comentário enviado por vinicius.almeida em 22/09/2006 - 12:38h

Estou com um pequeno problema, ele inclui o email na caixa postal sem eu responder o tira teima. depois quando eu respondo o tira teima ele manda mais uma copia do email.
Alguem entendeu e pode me ajudar??

[19] Comentário enviado por c.rafael em 27/11/2006 - 09:36h

Olá Patrick Brandao,

Estou implementando a estrutura do seu artigo, mas o problema é que descompactei o ASK e não tem dentro nenhum askfilter.

Estou usando o ask-2.5!!

O que pode estar errado? e onde que eu consigo o askfilter?

Agardeço quem puder me ajudar

[20] Comentário enviado por patrickbrandao em 27/11/2006 - 09:46h

O desenvolvedor mudou a estrutura do codigo e renomeou, usa assim:

Baixa esse arquivo e coloque os codigos na pasta /usr/share/ask
http://www.patrick.eti.br/downloads/ask.tgz

Se usa vpopmail, usa o script abaixo para adicionar ASK a uma conta:
http://www.patrick.eti.br/software/scripts/vaddaskuser

[21] Comentário enviado por c.rafael em 27/11/2006 - 11:22h

Olá Patrick Brandao,

Outra quetão!!!,

implementei tudo direitinho como no artigo. Porém consigo enviar email para o email correspondente e não estou recebendo nenhum email de confirmação ou qualquer outro email.

O que pode ser?

[22] Comentário enviado por patrickbrandao em 27/11/2006 - 14:38h

Bom, uma boa ideia e verificar logs, principalmente na pasta do dominio, se exitir arquivos iniciando com ASK, leia-os. Eles devem conter os erros encontrados, seguir os logs do qmail tb é uma boa ideia.

[23] Comentário enviado por wellesximenes em 30/11/2006 - 13:15h

Não Envia a confirmação pq o log segue abaixo

2006/11/30 01:49:15 [27488]: ----- ASK v2.5.3 Started -----
2006/11/30 01:49:15 [27488]: Message from: leo <leo@gpsa.ufc.br>
2006/11/30 01:49:15 [27488]: Message to: leo <leo@gpsa.ufc.br>
2006/11/30 01:49:15 [27488]: Message Subject: adsasad
2006/11/30 01:49:15 [27488]: is_confirmation_return(): Didn't find conf#MD5 tag on subject
2006/11/30 01:49:15 [27488]: is_remote_command(): Verifying the subject...
2006/11/30 01:49:15 [27488]: Not matched in the whitelist
2006/11/30 01:49:15 [27488]: Sender is not mailer-daemon
2006/11/30 01:49:15 [27488]: __get_auth_tokens(): No X-ASK-Auth SMTP header found
2006/11/30 01:49:15 [27488]: validate_auth_md5(): Cannot read authorization tokens. Authentication Failed.
2006/11/30 01:49:15 [27488]: Checking for remote commands
2006/11/30 01:49:15 [27488]: is_confirmation_return(): Didn't find conf#MD5 tag on subject
2006/11/30 01:49:15 [27488]: Message is not a confirmation return
2006/11/30 01:49:15 [27488]: Message comes from us but does not contain our key. Delivering to Junk
2006/11/30 01:49:15 [27488]: junk_mail(): Queueing Junk Message
2006/11/30 01:49:15 [27488]: queue_mail(): x_ask_info = (Junk) Message from self without the mailkey
2006/11/30 01:49:15 [27488]: queue_mail(): The MD5 checksum for /home/leo/.ask/tmp/tmp7Rc4y_.27488.msg is b00504597576f8d7e517da911d8a664c
2006/11/30 01:49:15 [27488]: queue_mail(): Mailbox format. Queue file = /home/leo/.ask/queue/ask.msg.b00504597576f8d7e517da911d8a664c
2006/11/30 01:49:15 [27488]: generate_auth(): Authentication = 1164858555-74b439bc2cf98498b305a2851945ff23
2006/11/30 01:49:15 [27488]: deliver_mail_file: Delivering mail from /home/leo/.ask/tmp/tmp7Rc4y_.27488.msg to mailbox /home/leo/.ask/queue/ask.msg.b00504597576f8d7e517da911d8a664c
2006/11/30 01:49:15 [27488]: deliver_mail_file: Mbox format
2006/11/30 01:49:15 [27488]: deliver_mail_file: Message delivered to /home/leo/.ask/queue/ask.msg.b00504597576f8d7e517da911d8a664c

[24] Comentário enviado por doubt_linux em 08/12/2006 - 10:40h

Uma duvida, tenho o ask instalado e rodando normalmente, mas eu gostaria de modificar quando ele envia a mensagem de confirmação ele manda com o seguinte assunto:
Please confirm (uma numeração)

Gostaria de modificar este topico, como seria?

[25] Comentário enviado por patrickbrandao em 11/12/2006 - 16:48h

Essa mensagem faz parte do template, para alterar, veja onde esta os arquivos de template no seu .askrc.

Algumas alterações exigem edição do arquivo askmessage.py

[26] Comentário enviado por jukabala em 05/01/2007 - 13:45h

Patrick,,, vc teria os procedimentos para instalar no slackware 10.1 com sendmail uso rc.ipforward

obrigado,

Juarez

[27] Comentário enviado por vinicius.almeida em 29/01/2007 - 13:53h

estou usando o ASK com QMAIL, funciona perfeitamente! o problema é com os usuários que contém . exemplo: qmail-vinicius.almeida qmail-thiago.senna, estes 2 usuários não funcionam. agora quando tem somente o primeiro nome funciona, alguém sobe o que pode ser?

[28] Comentário enviado por vinicius.almeida em 30/01/2007 - 10:14h

consegui fazer funcionar, se vcs tb passarem por isso é só colocar ":" no lugar do "."
Exemplo: .qmail-vinicius.almeida, vai ficar .qmail-vinicius:almeida
valeu !

[29] Comentário enviado por JØK3® em 17/08/2007 - 09:05h

kra, na minha fila de e-mails no queue/mess, tem varios e-mails destinados a usuarios que eu ja exclui da lista.
Como faço para bloquear estas mensagens destinadas a eles?
Vlw!

[30] Comentário enviado por anderssom em 10/09/2007 - 12:26h

Prezado... Instalei o ask em um servidor slackware 10 com Postfix e está funcionando legal, mas estou tendo problemas com os usuários que possuem alias. Pois quando um e-mail é enviado para um destes alias todas as contas que pertencem a ele enviam a aconfirmação. O que pode ser feito para melhorar isso. Desde já agradeço.

[31] Comentário enviado por jonathangil em 16/11/2007 - 14:36h

usr/local/lib/python2.4/whrandom.py:38: DeprecationWarning: the whrandom module is deprecated; please use the random module
DeprecationWarning)
Attention:
/The system could not deliver your message due to a technical problem.
Information about the problem has been recorded locally for analysis.
/--- Problem Details ---
/Traceback (most recent call last):
File "/usr/local/bin/askfilter", line 66, in ?
rc = ask.filter(sys.stdin)
File "/usr/local/lib/ask/askmain.py", line 94, in filter
self.msg.read(filehandle)
File "/usr/local/lib/ask/askmessage.py", line 115, in read
self.fh = open(self.tmpfile, "w")
IOError: [Errno 13] Permission denied: '/usr/local/vpopmail/domains/logiminasgerais.com.br/.ask/tmp/tmpNqBf8B.34117.msg'


Alguém já viu esse erro, sabe qual a solução ?

[32] Comentário enviado por ricardoolonca em 04/01/2008 - 19:20h

Aqui uso Qmail em um Red Hat 7.3, eu tive que fazer algumas mudanças:
1- atualizar o python para a versão 2.2.1.
2- modificar a primeira linha do /usr/share/ask/askfilter para #!/usr/bin/python2.2
3- alterar as permissões na pasta de log (/var/log/ask) e na .ask das caixas postais.

Parabéns pelo artigo


[33] Comentário enviado por luiscarlos em 28/01/2008 - 11:26h

outro software excelente no combate ao spam eh o spamdyke, quem nao o utiliza eu o aconselho

[34] Comentário enviado por mcsba em 30/07/2009 - 10:31h

Instalei o ask e mandei um email de teste, recebi normalmente o problema é que agora eu fico recebendo ele varias vezes.


Alguém tem idéia do pode ser?

Uso qmail com vpopmail.

Márcio.

[35] Comentário enviado por nepsck em 12/02/2010 - 11:21h

Bom dia!
Implatei o ask no postfix +courier esta funcioando 100%, estou com duvida somente em uma parte, como faço para que os usuarios do email tenham acesso para cadastrar ou deletar os contatos, na whitelist ou mesmo na black, ou mesmo ter acesso aos emails que estao no queue

Att Anderson

[36] Comentário enviado por lpossamai em 28/03/2011 - 14:50h

Boa tarde !

utilizo postfix + smtpd
Fiz os procedimentos, quando mando um e-mail para a conta que ativei o ASK, me retorno o seguinte erro:

LEGENDA: lucas@exemplo.com.br - USUÁRIO QUE TEM O ASK ATIVADO
lucas2@exemplo.com.br - Usuário remetente

Your message to <lucas@exemplo.com.br> was automatically rejected:
Internal quota calculation error
Reporting-UA: mail; Dovecot Mail Delivery Agent
Final-Recipient: rfc822; lucas@exemplo.com.br
Original-Message-ID: <ba1feb3de789dccba1746b2d4c859f3c@exemplo.com.br>
Disposition: automatic-action/MDN-sent-automatically; deleted
Return-Path: <lucas2@exemplo.com.br>
Delivered-To: lucas@exemplo.com.br
Received: from localhost (localhost [127.0.0.1])
by mail.exemplo.com.br (Postfix) with ESMTP id 14F27171806A
for <lucas@exemplo.com.br>; Mon, 28 Mar 2011 14:46:10 -0300 (BRT)
X-Virus-Scanned: amavisd-new at exemplo.com.br
X-Spam-Flag: NO
X-Spam-Score: -187.195
X-Spam-Level:
X-Spam-Status: No, score=-187.195 required=6.2 tests=[ALL_TRUSTED=-100,
AWL=-0.870, DNS_FROM_OPENWHOIS=2.431, FH_DATE_PAST_20XX=3.384,
TVD_RCVD_IP=1.617, TVD_RCVD_IP4=3.344, TVD_SPACE_RATIO=2.899,
USER_IN_WHITELIST=-100] autolearn=no
Received: from mail.exemplo.com.br ([127.0.0.1])
by localhost (mail.exemplo.com.br [127.0.0.1]) (amavisd-new, port 10024)
with LMTP id 0UgVQFB8TeOk for <lucas@exemplo.com.br>;
Mon, 28 Mar 2011 14:46:08 -0300 (BRT)
Received: from 192.168.0.82 (localhost [127.0.0.1])
by mail.exemplo.com.br (Postfix) with ESMTP id C1B1F1718069
for <lucas@exemplo.com.br>; Mon, 28 Mar 2011 14:46:08 -0300 (BRT)
MIME-Version: 1.0
Date: Mon, 28 Mar 2011 14:46:08 -0300
From: lucas2@exemplo.com.br
To: <lucas@exemplo.com.br>
Subject: iiii
Message-ID: <ba1feb3de789dccba1746b2d4c859f3c@exemplo.com.br>
X-Sender: lucas2@exemplo.com.br
User-Agent: Roundcube Webmail/0.5.1

[37] Comentário enviado por lpossamai em 28/03/2011 - 16:20h

Agora o erro sumiu, mas não retorna nenhuma mensagem.
O e-mail passa direto.
como proceder?
Obrigado!

[38] Comentário enviado por jukabala em 15/09/2011 - 17:31h

senhores,, boa tarde, tenho instalado o slackware 12.2 com sendmail

alguem tem passo a passo a instalaçao do ASK


obrigado,


Juarez


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts