我想要拒绝任何不是来自[电子邮件保护]到目前为止,我已尝试将其添加到 /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
如果这更接近您想要允许或拒绝的内容)。