我正在安装 Postfix 服务器,有人说我必须更改
inet_interfaces = all
到
inet_interfaces = loopback-only
所以现在我想知道, 到底是什么意思(以及它在做什么)以及和inet_interfaces
之间有什么区别?all
loopback-only
答案1
来自手册页
inet_interfaces(默认值:all)此邮件系统接收邮件的网络接口地址。指定“all”表示在所有网络接口上接收邮件(默认值),指定“loopback-only”表示仅在环回网络接口上接收邮件(Postfix 2.2 及更高版本)。该参数还控制将邮件投递给 user@[ip.address]。
注1:当此参数改变时,需要停止并启动Postfix。
注2:地址信息可以用[]括起来,但这里不要求这种形式。
当 inet_interfaces 仅指定一个非环回地址的 IPv4 和/或 IPv6 地址时,Postfix SMTP 客户端将使用此地址作为出站邮件的 IP 源地址。Postfix 2.2 及更高版本支持 IPv6。
在多宿主防火墙上,单独的 Postfix 实例监听“内部”和“外部”接口,这可以防止每个实例能够到达防火墙“另一侧”的远程 SMTP 服务器。将 smtp_bind_address 设置为 0.0.0.0 可避免 IPv4 的潜在问题,将 smtp_bind_address6 设置为 :: 可解决 IPv6 的问题。
对于多宿主防火墙,更好的解决方案是保留 inet_interfaces 的默认值,而是在 master.cf SMTP 服务器定义中使用显式 IP 地址。这样可以保留 Postfix SMTP 客户端的循环检测,确保防火墙的每一侧都知道另一个 IP 地址仍然是同一主机。将 $inet_interfaces 设置为单个 IPv4 和/或 IPV6 地址主要用于在辅助 IP 地址上虚拟托管域,此时每个 IP 地址服务于不同的域(并且具有不同的 $myhostname 设置)。
另请参阅 proxy_interfaces 参数,了解通过代理或地址转换器转发到 Postfix 的网络地址。
例子:
inet_interfaces = all(默认)inet_interfaces = loopback-only(Postfix 版本 2.2 及更高版本)inet_interfaces = 127.0.0.1 inet_interfaces = 127.0.0.1, [::1](Postfix 版本 2.2 及更高版本)inet_interfaces = 192.168.1.2, 127.0.0.1
这什么时候有用?
您可以操作 master.cf 文件并将端口 25 绑定到多个 IP 地址以获得略有不同的配置。
何时应使用仅环回
当您只想使用 postfix 将电子邮件排队,以便您的应用程序转发到另一个电子邮件系统时,在应用程序中处理 smtp 很容易,但处理队列、延迟和加密就不那么容易了。许多开发人员会添加 postfix 来为您处理这个问题,类似于使用 nginx 进行 SSL。
这也可以防止没有额外防火墙的系统(Centos 与 Ubuntu)防止其他本地网络系统使用您的中继发送垃圾邮件/网络钓鱼。
您不会在 docker 中使用此设置,因为您通常会将它们与 docker-compose 链接起来,并且不想进行此更改,因为它不再是本地的。