Filtro de spam para Postfix
O Spam Scanner filtra um servidor Postfix em cerca de cinco minutos. Ele roda como milterMail filter: um protocolo do Sendmail, também usado pelo Postfix, que permite que um programa separado inspecione cada mensagem durante a sessão SMTP., então o Postfix o consulta sobre cada mensagem durante a sessão SMTP e pode recusar o spam antes de aceitá-lo.
Instalar e executar#
npm install --global spamscanner
spamscanner milter --port 7831 --auth --subject-tag "[SPAM]"O --auth verifica SPFSender Policy Framework: um registro DNS que lista os servidores autorizados a enviar e-mails por um domínio., DKIMDomainKeys Identified Mail: uma assinatura sobre a mensagem, verificada com uma chave pública publicada no DNS do remetente., DMARCUma política no DNS que diz aos destinatários o que fazer quando um e-mail que alega vir de um domínio falha no alinhamento de SPF e DKIM. e ARCAuthenticated Received Chain: assinaturas que levam os resultados de autenticação através de servidores de encaminhamento.; o --subject-tag marca o spam no assunto. Toda mensagem recebe os cabeçalhos X-Spam-Flag, X-Spam-Score, X-Spam-Status e X-Spam-Action, e qualquer cabeçalho X-Spam-* que o remetente tenha colocado é removido antes.
Conectar o Postfix#
# /etc/postfix/main.cf
smtpd_milters = inet:127.0.0.1:7831
milter_protocol = 6
milter_default_action = acceptsudo postfix reloadO milter_default_action = accept deixa o e-mail passar sem filtragem se o milter estiver fora do ar; tempfail pede aos remetentes que tentem de novo.
Recusar spam durante a sessão SMTP#
spamscanner milter --port 7831 --auth --rejectAs mensagens que atingem o limite de rejeição (15 pontos) são recusadas com 451 4.7.1 Message rejected as spam. Um 451 é temporário: o remetente guarda a mensagem e tenta de novo, então uma decisão errada custa um atraso, e não uma mensagem perdida. Quando os resultados parecerem corretos, --reject-code 550 torna a recusa permanente.
Sem milter#
Um filtro de conteúdo roda depois que o Postfix aceita uma mensagem: o Postfix a envia por um pipe para o spamscanner filter, que adiciona os cabeçalhos e a devolve. Nada é recusado durante a sessão, e uma falha sempre adia a entrega em vez de devolver a mensagem. Configuração do filtro de conteúdo
Spam na pasta Junk#
Com o Dovecot, uma regra Sieve arquiva os e-mails marcados:
require ["fileinto"];
if header :is "X-Spam-Flag" "YES" { fileinto "Junk"; stop; }Testado com um Postfix real#
Os testes de ponta a ponta do projeto executam o Postfix com o milter e com o filtro de conteúdo: o hamE-mail desejado: o oposto de spam. é entregue com os cabeçalhos e com um X-Spam-Flag forjado removido, o spam é marcado e o GTUBEGeneric Test for Unsolicited Bulk Email: uma sequência fixa que todo filtro de spam trata como spam, usada para testes. é recusado com um 550 durante a sessão SMTP.
Próximo passo: o guia completo do Postfix e do Sendmail, com uma unidade systemd e o INPUT_MAIL_FILTER do Sendmail.