Eu tenho a configuração do postfix para que o e-mail vindo do smtpd seja automaticamente filtrado pelo spamassassin (que o reinjeta na fila de e-mail com cabeçalhos adicionados)
Agora quero fazer duas coisas com mensagens consideradas spam:
- Se o e-mail for enviado novamente (por causa de aliases), descarte-o imediatamente
- Se o e-mail for para um usuário virtual local, entregue-o ao Dovecot, que o colocará na pasta Spam.
Posso configurar o postfix dessa maneira? Todos os meus alias e informações de usuário estão no MySQL. Atualmente descarto todos os emails de spam (com header_checks em main.cf), mas prefiro a situação acima.
Responder1
Você pode configurar outro processo de ouvinte smtp em seu master.cf para lidar com seus e-mails de saída. Algo como o seguinte deve começar com uma escuta na porta 26:
26 inet n - n - 18 smtpd -o header_checks=[your checks] mydestination= relayhost=
Pode ser necessário ajustar um pouco isso, para desabilitar a entrega local e não aceitar mensagens de qualquer lugar, exceto localhost. Você gostaria então de adicionar o seguinte ao seu main.cf
relayhost=127.0.0.1:26
E, claro, retire as verificações de cabeçalho desse arquivo.
A correspondência seria retransmitida para o segundo processo smtpd em 26, que descartaria as mensagens que falhassem como spam. Você também pode especificar um relayhost nesse ouvinte se precisar passar seu e-mail para um servidor downstream em vez de entregá-lo diretamente.
Em seguida, você configuraria o restante da filtragem para seus usuários locais com o Dovecot, como já havia sugerido.
É claro que você desejará considerar quantos saltos de e-mail você adiciona à sua mensagem ao fazer isso, pois alguns provedores de e-mail descartarão mensagens com um número considerável de saltos (o Gmail, por exemplo, cai após algo como 10 ou 15