让 Postfix 通过两种方式处理垃圾邮件

让 Postfix 通过两种方式处理垃圾邮件

我已经设置了 postfix,这样来自 smtpd 的邮件就会自动通过 spamassassin 进行过滤(它会将邮件重新注入到邮件队列中并添加标题)

现在我想对被视为垃圾邮件的邮件做两件事:

  1. 如果邮件再次发出(因为别名),则立即丢弃该邮件
  2. 如果邮件是发给本地虚拟用户的,则会将其交给 Dovecot,然后放入垃圾邮件文件夹。

我可以这样配置 postfix 吗?我的所有别名和用户信息都在 MySQL 中。目前我丢弃所有垃圾邮件(在 main.cf 中使用 header_checks),但我更喜欢上述情况。

答案1

您可以在 master.cf 中设置另一个 smtp 侦听器进程来处理外发邮件。类似下面的内容应该可以让您开始侦听端口 26:

26        inet  n       -       n       -       18       smtpd -o header_checks=[your checks] mydestination= relayhost=

您可能需要稍微调整一下,以禁用本地投递,并且不接受来自除本地主机之外任何地方的邮件。然后您需要将以下内容添加到您的 main.cf

relayhost=127.0.0.1:26

当然,把标头检查从该文件中删除。

邮件将被转发到 26 上的第二个 smtpd 进程,然后该进程将丢弃失败的垃圾邮件。如果您需要将邮件传递到下游服务器而不是直接投递,您还可以在该侦听器中指定中继主机。

然后,您就可以按照之前建议的方式,使用 Dovecot 为本地用户设置其余的过滤功能。

当然,在执行此操作时,你需要考虑为邮件添加多少个邮件跳转,因为某些邮件提供商会丢弃跳转次数相当多的邮件(例如,gmail 在 10 或 15 次之后就会丢弃邮件)

相关内容