smtp_bind_address
我最近迁移到一个新的服务器(运行 postfix 3.3.0) ,并注意到主配置文件没有任何效果。有问题的服务器有 10 个 ipv4 地址,因此,发送邮件必须通过正确的地址发送。以下是我所拥有的片段(192.168.100.1 只是一个例子 — 实际 IP 是真正的 WAN 地址):
smtp inet n - y - - smtpd
-o smtp_bind_address=192.168.100.1
smtps inet n - y - - smtpd
-o smtp_bind_address=192.168.100.1
我还让 amavis 和 postsrsd 与此邮件服务器一起运行,因此邮件会从一个服务传递到下一个服务,说实话,我对事件链有点困惑,但以前这种配置运行良好。
我尝试smtp_bind_address
搬到主配置文件它确实起作用了,但是由于 amavis 和 postsrsd 都希望邮件通过 127.0.0.1 传递,因此出现了其他问题。
如何结合内容过滤器将外发邮件绑定到特定地址?
答案1
传出的 smtp/relay 连接由以下行控制:master.conf
smtp unix - - y - - smtp
relay unix - - y - - smtp
因此,您可以添加-o smtp_bind_address=192.168.100.1
您需要的一个。
另外,您还可以使用此组合main.conf
inet_interfaces = 127.0.0.1 192.168.100.1
smtp_bind_address = 192.168.100.1
这允许应用程序连接到 127.0.0.1,同时默认将传出 smtp 绑定到特定地址。
不要忘记防火墙可能会覆盖所有这些配置,例如这个简单的规则:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
将把任何传出连接的源地址(来自接口 eth0)转换为此接口的主(默认)地址。从另一个角度来看,您可以使用防火墙设置 smtp 连接源地址(无需配置 postfix):
iptables -t nat -A POSTROUTING -o eth0 -p tcp --dport 25 -j SNAT --to-source 192.168.100.1
但这并不灵活,我只会把这作为最后的手段(例如,您无权修改 postfix 设置)。