postfix 配置和接收自

postfix 配置和接收自

这里遇到了一些问题。我的服务器有 3 个 IP 地址,这是我的 /etc/hosts:

127.0.0.1     localhost
46.38.235.226 brian.smares.de brian
46.38.238.199 stewie.smares.de stewie
46.38.238.137 mail.smares.de mail

postfix 的设置方式如下

inet_interfaces = localhost, $myhostname
mynetworks = 127.0.0.0/8
mydestination = localhost
myhostname = mail.smares.de
mydomain = smares.de
myorigin = $mydomain

如果我发一封电子邮件,消息来源是这样的

Received: from mail.smares.de (pelikansal.at. [46.38.235.226])

pelikansal.at 是 46.38.235.226 的 rDNS 目标。

我不明白的是为什么使用这个 IP 而不是 46.38.238.137。我的服务器的 FQDN 是 brian.smares.de,它将映射到 226 地址,但这是原因吗?

有任何想法吗?

答案1

可能的解决方案

发送电子邮件时,用于控制传出 IP 地址的参数是smtp_bind_address。因此,您应该明确将参数设置smtp_bind_address为一个 IP 地址。


解释

上面的配置您已经修改过了inet_interfaces参数。它只设置 postfix 将使用哪个 IP 地址收到邮件。

但是,如果这三个条件充分,参数inet_interfaces也会产生影响:smtp_bind_address

  1. smtp_bind_address为空(默认)
  2. inet_interfaces只有IPv4 IP 地址
  3. inet_interfaces列表没有回送。

当它发生时,smtp_bind_address= $inet_interfaces

因为你在 中设置了两个 IP 地址inet_interfaces,所以smtp_bind_address仍然是空的。在这种情况下,smtp 客户端使用 0.0.0.0 作为其 IP 地址,而 0.0.0.0 (INADDR_ANY) 意味着内核将根据数据包的去向选择 IP 地址。 从这个 SO 线程经过雷米·勒博, 他说

如果客户端未绑定到特定 IP,或者绑定到 INADDR_ANY,则套接字将使用它找到的第一个具有到所连接服务器 IP 的可用路由的 IP。

因此,在您的情况下,内核选择 46.38.238.137 来建立传出连接是可以理解的。

相关内容