sexta-feira, 9 de agosto de 2013

Filtrando endereço de Spam de Arquivo Texto no Linux

Hoje eu precisei melhorar o meu sistema de Antispam e extrai através do banco de dados todos os endereços de Spam, aqueles caras que ficam enviando propaganda para o meu servidor de e-mail.

Pois bem, o meu servidor de e-mail possui um sistema de Antispam muito bom, e barra 90% dos spam, ocorre que os e-mails de spam que ficam parados na Quarentena, fica ocupando espaço no meu HD e eu não quero isso.

Para resolver isso, criei um arquivo de texto com todos os endereços de e-mails dos remetentes de spams, e precisei encontrar uma forma de listar os domínios, ou seja, tudo que vem depois do "@" apos o nome do remetente.

Para isso, utilizei o nosso amigo cut no Linux com o comando abaixo:

cut -f2 -d\@ teste.txt

Na linha acima eu chamei o cut e falei pra ele, que dentro do arquivo teste.txt existe os nomes dos endereços de e-mail, falei pra ele que o meu delimitador é o "@", conforme a opção -d\@ essa barra é para falar para o bash não interpretar o "@" como sendo um comando, mas sim um simples caractere de teclado.
E na opção -f2, falei que quero que me traga o que vier depois do "@", ou seja, o segundo campo.


Ok, percebi que alguns domínios devem ser excluídos desse processamento, por exemplo, o do próprio gmail, para isso, alterei a linha de comando acima para:

cut -f2 -d\@ teste.txt | sed '/gmail/d' > blacklist.txt

Ok, agora eu consegui gerar o arquivo blacklist.txt com os domínios, com esse arquivo eu posso fazer um for, enviando domínio a domínio para o meu blacklist dentro do meu sistema de Antispam.