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

Pau*_*ner 7 postfix spam spamassassin

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

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

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

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

Fre*_*hie 4

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

26        inet  n       -       n       -       18       smtpd -o header_checks=[your checks] mydestination= relayhost=
Run Code Online (Sandbox Code Playgroud)

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

relayhost=127.0.0.1:26
Run Code Online (Sandbox Code Playgroud)

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

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

然后,您可以像您已经建议的那样,使用 Dovecot 为本地用户设置其余的过滤。

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