Mailscanner 和 Postfix:保留除带有自定义标头的邮件之外的所有内容

Mailscanner 和 Postfix:保留除带有自定义标头的邮件之外的所有内容

ATM 我正在​​使用常规方法将所有邮件置于 HOLD 状态,以便将它们从 postfix 传递到 MailScanner,如所述http://www.mailscanner.info/postfix.html

在 Postfix 配置文件 /etc/postfix/main.cf 中添加以下行:

header_checks = regexp:/etc/postfix/header_checks 

在文件 /etc/postfix/header_checks 中添加以下行:

/^Received:/ HOLD 

这样做的效果是告诉 Postfix 将所有消息移至 HOLD 队列。

但是我有一些 SMTP 消息,我不需要通过 MailScanner 传递它们,这些消息由自定义标头标识。我需要找到一种方法来绕过 MailScanner 来处理这些消息,但我找不到它,因为我需要检查自定义标头是否存在,而不是 From: 或 To: 地址...

尝试修改 /etc/postfix/header_checks:

/^X-Custom-Header:/ FILTER smtp:[ip.addr.next.hop]:10025

在 mail.log 中我看到了被过滤的消息:

Aug 19 17:52:17 servername postfix/cleanup[19423]: AFB842E33A: filter: header X-Custom-Header: from relay.sender.foo[xx.yy.zz.kk]; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<mail.sender.foo>: smtp:[ip.addr.next.hop]:10025

如果上述规则是 header_checks 中的唯一规则,它将通过 smtp 传送到下一跳。

现在我需要捕获 Mailscanner 中的所有其他内容(因此在 Postfix HOLD 队列中),那么我该如何告诉 header_checks 执行此操作?如果我留下 /^Received:/ 检查,即使 AFB842E33A 也保留在 HOLD 队列中...

也许这只是一个愚蠢的问题,但是...有什么想法吗?

答案1

是的,甚至有一个解决方案。它被称为header_checks并且是 的一部分*_restrictions。格式(取决于你想要什么)在其自身中描述文档

但我不建议使用 Mailscanner 和 Spamassassin 等队列后过滤器。减少垃圾邮件并通知发件人的更好方法是使用队列前过滤器,例如内置的postscreen、、、、队列前过滤器和外部工具,例如。client_restrictionssender_restrictionsrecipient_restrictionspolicyd-weight

只有队列前过滤器可以减少服务器的负载和资源,并且可以在垃圾邮件到达服务器之前阻止 80% 的垃圾邮件。Mailscanner 尤其在我的个人“讨厌名单”上,因为它与 Postfix 的集成度很低,无法使用 Postfix 内置的反垃圾邮件过滤器和一般过滤器界面。

编辑:由于问题已被编辑,我现在就回答。

FILTER并不是阻止 Postfix 处理header_checks文件的操作。它只会告诉“当我完成检查后,我将进行过滤”。因此下一行匹配并将邮件设置为保留。

解决方案(即使它看起来很不完善)是这个header_checks文件:

/^X-Custom-Header:/ FILTER smtp:[ip.addr.next.hop]:10025
/^X-Custom-Header:/ OK
/^Received:/ HOLD    

相关内容