Postfix 选择性 header_checks:smtpd_relay_restrictions 与 smtpd_recipient_restrictions

Postfix 选择性 header_checks:smtpd_relay_restrictions 与 smtpd_recipient_restrictions

我的一些客户实施了违反电子邮件 RFC 的商业软件,因此我们不得不放松对邮件头的检查。结果,我们收到了更多的垃圾邮件。

序言:

  • 我知道这些电子邮件来自的域名 (customer.com) 和 IP 地址 (abcd/C)

恳请帮助:

  • 是否可以在 Linux 上设置一个 Postfix(2.11)实例,以便:
    • 它仅对来自 .*@customer.com 的电子邮件应用一些标题检查
    • 但对所有其它电子邮件源应用所有标头检查?

我想到了一个包含 smtpd_recipient_restrictions 中的子网 abcd/C 的 mynetworks 组合 - 允许所有这些消息通过 - 同时避免使用 smtpd_relay_restrictions 的开放中继。

但事态并未如预期般发展。

非常感谢任何想法或帮助。

提前致谢。

路加

==编辑==

对于当前问题,我通过将 REDIRECT 添加到 header_checks 来解决问题,如下所示:

/^received: from.*customer.com.*by mail.own.com.*for.*luke@own.*/
  REDIRECT [email protected]

到目前为止,这已经达到了所需的效果。

不管怎样,我仍在寻找一个后缀配置,将这个基于文本的设置转变为基于 IP 地址范围的转发规则......

谢谢。

路加

答案1

设置第二个 postfix 实例,监听不同的端口,并将其配置为与现有实例相同,但放宽header_checks(和不同的监听 smtpd 端口),然后在网络级别将来自客户服务器 IP 的 tcp 连接重定向到新实例。此外,在防火墙级别,拒绝除客户 IP 之外的任何人对新端口的传入连接。

如果运行现代 Linux 发行版,则可以使用如下 netfilter 规则将进入 TCP 端口 25 的某个 IP 地址的流量重定向到另一个 TCP 端口:

root@email:~# $(which iptables) -t nat -I PREROUTING -i $incoming_interface -p tcp -s $customer_ip --dport 25 -j REDIRECT --to $second_postfix_listening_port

由于您正在运行较新的 Postfix 版本,因此您可以将现有设置迁移到postmulti简化创建附加实例的配置(例如,您不需要创建附加的 init 脚本,在运行 postmulti 配置时,所有实例都将由单个 postfix init 脚本启动/停止)。

如果您需要有关 postmulti 的更多帮助,请在评论中留下问题。

相关内容