我的一些客户实施了违反电子邮件 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 的更多帮助,请在评论中留下问题。