Após alguns anos coletando dados para análise nas regras que utilizo no postfix, pude chegar a uma breve conclusão do que funciona e do que é efetivo na guerra contra spams e fiz pequenas melhorias em dois filtros de conteúdo que desenvolvi para o postfix 💡
Na primeira atualização, tornei o mail_filter.sh compatível com as linhas REJECT do body_checks do postfix para verificar mensagens codificadas em base64.
Na segunda atualização, criei um script simples que permite liberar as mensagens salvas em quarentena pelo script mail_from_check.sh utilizando o servidor web.
O script é bem simples e utiliza a permissão de acesso “sudo” para executar o script mail_from_check.sh de dentro do apache como se fosse o postfix.
Com o sudoedit -e /etc/sudoers podemos definir que o apache terá permissão de executar o script mail_from_check.sh como sendo o usuário nobody (do postfix) com a seguinte linha:
apache = (nobody) NOPASSWD: /etc/postfix/mail_from_check.sh
Depois colocando o seguinte script no diretório de cgi-bin do seu apache teremos os emails liberados ao clicar no link do email recebido pelo script de quarentena mail_from_check.sh.
#!/usr/bin/bash echo "Content-type: text/html" echo "" echo "<html><head><title>email quarantine</title></head><body>" mail="`echo ${QUERY_STRING:0:32} | egrep -e "^quarantined\.[0-9]{1,5}\.[0-9]{14}$"`" if [ -n "$mail" ]; then echo "`sudo -u nobody /etc/postfix/mail_from_check.sh $mail`" else echo "what are you thinking about?" fi echo "</body></html>"
Agora o importante é adicionar o link funcional do website na mensagem de email gerada pelo mail_from_filter, eu optei por colocar na linha 378, redefinindo as mensagens e deixando o script assim:
if [ "$QUARANTINE" = "yes" ]; then echo "To send the message click here: http://site.com.br/cgi-bin/mail_filter.sh?$quarantined" echo "The message was quarantined as $quarantined" else echo -n "The message was discarded" fi
Para completar seria legal receber por email dois links, um para aprovar a mensagem e outro para deletar. Por hora, o de deletar chegará em uma próxima atualização