Antispam em Shell Script
O funcionamento do esquema proposto neste artigo não pretende ser a melhor forma de bloquear emails indesejáveis, existem melhores opções para isto. Serve para exemplificar o poder do shell script junto com ferramentas do sistema normalmente encontradas na maioria das distribuições Linux.
Funcionamento
O esquema proposto funciona do seguinte modo: em todo email de entrada será analisado seu remetente pelo Procmail antes de ser entregue para a caixa postal de destino. Primeiro será verificado se o email do remetente se encontra em uma lista de emails permitidos, se for encontrado é direcionado para a caixa postal de destino, senão será verificado se está em uma lista de emails bloqueados, se for encontrado, o email é automaticamente descartado, e por último se não for encontrado em nenhuma das duas listas, três atividades serão executadas:
No email enviado ao remetente será colocado um link para que o mesmo acesse e então um novo email será direcionado para o destinatário inicial com um assunto padrão, caberá então ao destinatário decidir liberar ou não emails deste remetente.
Isto implica, por exemplo, em problemas quando um remetente ao tentar enviar um email com arquivo anexo esquece de anexar o arquivo e logo em seguida envia outro email com o devido anexo (situação muito comum), este segundo email será automaticamente descartado.
Sem este arquivo com este conteúdo todo o esquema não funcionará.
- o email é direcionado para a caixa postal de destino;
- o email do remetente é adicionado na lista de emails bloqueados;
- e por último um email com um aviso do bloqueio do email e solicitação para o desbloqueio é enviado para o remetente.
No email enviado ao remetente será colocado um link para que o mesmo acesse e então um novo email será direcionado para o destinatário inicial com um assunto padrão, caberá então ao destinatário decidir liberar ou não emails deste remetente.
Funcionalidade
Este esquema apenas eliminará emails verificando o remetente do email. Na primeira vez que um remetente enviar um email ele automaticamente estará bloqueado para receber outros emails do mesmo remetente enquanto o destinatário não receber outro email gerado pelo acesso do remetente ao clicar no link no corpo do email enviado avisando sobre o bloqueio.Isto implica, por exemplo, em problemas quando um remetente ao tentar enviar um email com arquivo anexo esquece de anexar o arquivo e logo em seguida envia outro email com o devido anexo (situação muito comum), este segundo email será automaticamente descartado.
Requisitos necessários
Não serão explicados como funcionam o programas envolvidos.- procmail
- formail
- bash
- apache com php
- editor de texto
- sed
Componentes
Todos os arquivos abaixo estarão no diretório home do usuário:- emails_bloqueados.txt: lista de emails bloqueados, um email por linha;
- emails_permitidos.txt: lista de emails permitidos, um email por linha;
- bloqueados.rc: arquivo procmail com emails bloqueados;
- permitidos.rc: arquivo procmail com emails permitidos;
- gera_emails_bloqueados.sh: shell script para criar o arquivo "bloqueados.rc";
- gera_emails_permitidos.sh: shell script para criar o arquivo "permitidos.rc";
- gera_email_retorno.sh: shell script para enviar email com aviso de email bloqueado;
- novo_email.tmp: arquivo temporário para incluir email na lista de emails permitidos;
- emails_bloqueados.tmp: arquivo temporário para excluir email da lista de emails bloqueados;
- emails_permitidos.tmp: arquivo temporário para incluir emails na lista de emails permitidos;
- msg.txt: arquivo com o corpo do email que será enviado para o remetente, solicitando que o mesmo acesso um site;
- procmail.rc: arquivo de configuração do Procmail personalizado para o usuário.
Preparando o Procmail
Crie ou edite o arquivo .procmailrc no diretório home do usuário com o seguinte conteúdo:
INCLUDERC=~/permitidos.rc
INCLUDERC=~/bloqueados.rc
INCLUDERC=~/bloqueados.rc
Sem este arquivo com este conteúdo todo o esquema não funcionará.
Abraços