Postfix:如何拒绝除一个发件人之外的所有发件人的电子邮件

Postfix:如何拒绝除一个发件人之外的所有发件人的电子邮件

我想要拒绝任何不是来自[电子邮件保护]到目前为止,我已尝试将其添加到 /etc/postfix/header_checks:

!/(^From:[email protected])/ REJECT

我在 main.cf 中添加了以下几行:

postconf -e header_checks=regexp:/etc/postfix/header_checks
postconf -e header_checks=pcre:/etc/postfix/header_checks

此配置不起作用,我无法再发送任何电子邮件。当我这样做时,我收到以下警告:

postfix/cleanup[194]: 4C8EB7200C3: reject: header Received: from [127.0.1.1] (unknown [172.28.0.1])??by example.com (Postfix) with ESMTP id 4C8EB7200C3??for <[email protected]>; Tue,  4 Oct 2022 02:07:37 +0000 (UTC) from unknown[172.28.0.1]; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<[127.0.1.1]>: 5.7.1 message content rejected

我不确定还能尝试什么。任何建议都非常感谢!

答案1

标头检查适用于每个消息头。因此,拒绝任何包含除您检查的标题之外的标题的消息..拒绝全部有效消息。在您的示例中,它被拒绝是基于不相关但通常存在的标头 ( Received:)。

为了解决您的紧急问题,仅匹配您实际关心的标题:

# first skip over headers which match the expected value
/^Header: addr@example$/        DUNNO
/^Header: .* <addr@example>$/   DUNNO

# then reject messages containing that header with a value that was not skipped
/^Header:/                      REJECT 5.7.1 meaningful explanation of policy

但是,这可能仍然不能完全解决您的问题。首先,头部地址字段不可能仅使用正则表达式正确解析,至少在您想要处理类似 的标题时是这样。From: Joe(vacation until 2020-10-12) <[email protected]>, Antony <[email protected]>

但更重要的是,这些标头可能填写不正确、错误或带有恶意。您可能希望根据您的服务器实际检查过的可接受策略进行过滤,例如匹配标头Authentication-Results: myserver.example; example text- 或者完全忽略标头,而是使用后缀直接匹配 rfc5321.MailFrom(“信封发件人”)地址(check_sender_access如果这更接近您想要允许或拒绝的内容)。

相关内容