Esta foi a minha solução final após pesquisa e ajuda do @tarleb
Minha entrega de e-mail estava acontecendo com o programa sendmail , que adicionava alguns cabeçalhos adicionais ao meu e-mail. Eu poderia usar um mitter (filtro de mensagens) para filtrar e-mails recebidos e descartar o uso de sendmail , no entanto, decidi mudar para o Dovecot LDA para a entrega.
Meu filtro original foi, no começo do master.cf :
smtp inet n - - - - smtpd -o content_filter=spamassassin
E no final do arquivo:
spamassassin unix - n n - - pipe
user=debian-spamd argv=/usr/bin/spamc -f -e
/usr/sbin/sendmail -oi -f ${sender} ${recipient}
Alterei o final do arquivo para usar a entrega local da Dovecot por:
spamassassin unix - n n - - pipe
flags=DROhu user=vmail:vmail argv=/usr/bin/spamc -f -e
/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
Agora edite o main.cf do Postfix e adicione (opcional, marque (3) abaixo):
spamassassin_destination_recipient_limit = 1
Agora o seu email será entregue via Dovecot LDA sem alterações no cabeçalho. Para os curiosos, aqui estão alguns detalhes da minha configuração:
- Essa configuração pode ser usada com delimitadores de mais endereçamento / subendereço / destinatário (emails endereçados a
[email protected]serão entregues em[email protected]caixa de entrada) - É por isso que adicionei-d ${user}@${nexthop}isso removerá o+e tudo até o domínio. Para ativar esse recurso, não se esqueça de adicionarrecipient_delimiter = +emmain.cf; - Minhas bandeiras
flags=DROhu, elas não adicionam nada anormal, mas elas podem ser entendidas aqui: link ; -
spamassassin_destination_recipient_limit = 1é necessário para garantir que cada destinatário seja processado individualmente pelo spamassassin. Isso é necessário devido ao sinalDacima (incluiX-Original-Toheader). Se você tiver oDsinalizador e não definirspamassassin_destination_recipient_limit = 1o e-mail com vários destinos não será exibido! Se você não se importar com esse cabeçalho, poderá remover o sinalizador e isso não é necessário.
Edit: Conteúdo bônus - Mova seu SPAM para a pasta Junk !
Você também pode configurar o Dovecot para mover os emails detectados como SPAM para a pasta Junk IMAP. Isso tornará sua vida mais fácil, com certeza. Apenas siga isto:
-
Edite
/etc/dovecot/conf.d/15-mailboxes.confe descomente / adicione a pastaJunkcom (deve estar na seçãonamespace inboxperto demailbox Trash):mailbox Junk { special_use = \Junk } -
Instale
dovecot-sievecomapt-get install dovecot-sieve; -
Edite
/etc/dovecot/conf.d/90-sieve.confe comente a linha:#sieve = ~/.dovecot.sieve -
Edite
/etc/dovecot/conf.d/90-plugin.confcomo:plugin { sieve = /etc/dovecot/sieve/default.sieve } -
Edite
/etc/dovecot/conf.d/15-lda.confe/etc/dovecot/conf.d/20-lmtp.confpara corresponder:protocol lda/lmtp { # do not copy/paste this line! mail_plugins = $mail_plugins sieve }AVISO : você pode ter outras configurações nas seleções de
protocol, mantenha-as. A linhaprotocol lda/lmtpmuda nos arquivos, mantenha o original. -
Crie a pasta
/etc/dovecot/sieve/ -
Crie o arquivo
/etc/dovecot/sieve/default.sievecom este conteúdo:require "fileinto"; if header :contains "X-Spam-Flag" "YES" { fileinto "Junk"; } -
Altere as permissões da pasta para o seu usuário e grupo de e-mail virtual, como:
chown vmail:vmail /etc/dovecot/sieve/ -R. Se você perder este dovecot vai reclamar! -
Reinicie tudo:
service postfix restart; service dovecot restart; service spamassassin restart -
Tente enviar um e-mail para alguns e-mails no servidor (de um servidor externo), primeiro um e-mail normal e depois outro com este assunto:
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X. O segundo email deve entrar na pastaJunke o primeiro na sua caixa de entrada.
Se isso não funcionar na sua primeira tentativa, veja os registros: tail -f /var/log/mail.log e envie o e-mail enquanto tail estiver em execução. Uma boa configuração de trabalho deve informar stored mail into mailbox 'INBOX' ou stored mail into mailbox 'Junk' .