De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.

Extração de endereços de email de arquivos de log

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 19 de janeiro de 2017

Alguns anos atrás a Dicas-L foi expulsa de um provedor nos EUA sob a alegação de que eu estava fazendo spam. Segundo o provedor, eles tinham tolerância zero para spam e eu fui condenado sem direito a defesa.

Como eu não faço spam, todos os assinantes da Dicas-L assinaram a lista segundo um mecanismo de confirmação dupla, preciso explicar o que aconteceu.

Com o tempo, muitos assinantes deixam de usar seus endereços eletrônicos fazendo com que os provedores os removam. Uma das técnicas utilizadas por provedores para detectar spam é inserir endereços de email não existentes em alguns locais para que os softwares que colhem emails pela web os capturem. Desta forma, se alguém envia mensagens para estes endereços propositalmente espalhados pela Internet, certamente é um spammer.

Bom, no meu caso não foi bem assim. Eu fui considerado um spammer por enviar mensagem para um endereço não existente mas que já havia existido um dia.

Felizmente, como eu mantenho múltiplos backups do meu conteúdo, eu consegui contratar um novo provedor e colocar o site novamente no ar em algumas horas.

Para evitar uma repetição deste fato, eu faço uma limpeza periódica da lista de assinantes, removendo os endereços que não existem mais. Como não poderia deixar de ser, eu uso um pequeno script bash para realizar esta tarefa:

#!/bin/bash -x

assinantes=/home/mojo_files/dicas-l.list
log=/var/log/mail.log
log_processado=/tmp/mail.log.$$
enderecos_invalidos=/tmp/enderecos_invalidos.$$
enderecos_validos=/tmp/enderecos_validos.$$

cd /var/log/

fgrep -i "unknown user" $log | \
      grep -o '[[:alnum:]+\.\_\-]*@[[:alnum:]+\.\_\-]*' | \
      sort | uniq -i > $enderecos_invalidos

vi $enderecos_invalidos

grep -v -f $enderecos_invalidos $assinantes > $enderecos_validos

wc $enderecos_validos $assinantes

A diretiva "-o" do comando grep faz com que seja impresso apenas os caracteres que batem com a expressão regular, e não a linha inteira. Desta forma, apenas o endereço de email é capturado.

A expressão regular

$  [:alnum:]+\.\_\-]*@[[:alnum:]+\.\_\-]*

é a representação de um endereço eletrônico. O resultado é então ordenado (sort) e removidas as linhas duplicadas (uniq -i).

O comando wc é apenas para comparar a listagem original com a listagem processada, para ver quantos endereços serão removidos da lista de assinantes da Dicas-L.

A parte final, que é a atualização da lista de assinantes, eu faço manualmente, para evitar algum eventual problema. É claro que eu tenho múltiplos backups para recuperação em caso de problemas, mas eu prefiro ser cuidadoso.

Referências

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


Veja a relação completa dos artigos de Rubens Queiroz de Almeida