Postfix与Spamassassin,放弃垃圾邮件,而不是传递到垃圾邮件文件夹

我的Spamassassin有问题,它放弃了电子邮件,而不是将其发送到实际的垃圾邮件文件夹,我需要改变这个选项,以防万一电子邮件不是垃圾邮件,但我被标记为是,所以我可以检查我的垃圾邮件文件夹不时。

/etc/postfix/master.cf

smtp inet n - n - - smtpd -o content_filter=spamassassin spamassassin unix - nn - - pipe user=spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient} 

我的configuration设置为

 /etc/postfix/header_checks /^X-Spam-Flag:.YES/ DISCARD This is spam 

有没有一种方法来configuration它,以便将邮件标记为垃圾邮件并将其发送到垃圾邮件/垃圾邮件文件夹?

日志

 Apr 28 09:55:26 testmail postfix/pickup[2171]: BF55C2C2451: uid=1001 from=<email@email> Apr 28 09:55:26 testmail postfix/pipe[2275]: 006602C244C: to=<[email protected]>, relay=spamassassin, delay=0.99, delays=0.34/0.03/0/0.62, dsn=2.0.0, status=sent (delivered via spamassassin service) Apr 28 09:55:26 testmail postfix/qmgr[2172]: 006602C244C: removed Apr 28 09:55:26 testmail postfix/cleanup[2274]: BF55C2C2451: message-id=<[email protected]> Apr 28 09:55:26 testmail postfix/cleanup[2274]: BF55C2C2451: discard: header X-Spam-Flag: YES from local; from=<email@email> to=<email@email>: This is spam 

为了理解这个可能性,有一些Postfix体系结构的概念是很好的。

这第一张照片可视化您的现状 。 Postfix处理每个消息两次:SpamAssassin之前和之后。 因此, X-Spam标题仅在第二轮设置,被标记为垃圾邮件的消息在第二次清理时被默默DISCARD

带有header_checks的当前配置

更有用的是REJECT明确的垃圾邮件 (SPF硬故障,不存在的发件人域,一些黑名单IP等),而它首先被smtpd收到。 这使得实际上可以用相应的SMTP错误代码拒绝邮件,而不是排队,因为排队给出了邮件被接受的错误提示。 这可以configurationhelo , 发件人和收件人的限制。 第二张照片还代表正常传送到收件箱的邮件path。

排队之前拒绝消息

您希望的状态是只将邮件标记为垃圾邮件,然后将其发送到邮箱Spam 。 其实你的SpamAssassin已经在做了,所以你只需要让邮件发送代理 MDA来处理这个情况而不是邮件传输代理 MTA。 在最后一张图中, Procmail根据X-Spam-Flag将邮件传递到正确的邮箱。

在这里输入图像说明

对于这个function:

  • /etc/postfix/header_checks删除/^X-Spam-Flag:.YES/ DISCARD
  • mailbox_command = procmail -a "$EXTENSION"main.cf
  • /etc/procmailrc (或per- ~/.procmailrc )的configuration示例:

     MAILDIR=$HOME/mail/ DEFAULT=$HOME/mail/Inbox :0: * ^X-Spam-Flag: Yes Spam 

也有几个select,例如Procmail能够pipe道到SpamAssassin而不是Postfix,允许每个用户(计分)的设置。 您可能会注意到Maildrop也是一个MDA。