postfix smtp_bind_address 指令不起作用

postfix smtp_bind_address 指令不起作用

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 设置)。

相关内容