Postfix 似乎不允许在smtp_bind_address
配置参数中使用主机名。但它允许在 中使用主机名inet_interfaces
。
对于 SPF,我想确保 SMTP 客户端绑定到哪个地址,并且我想使用独立于 IP 的配置来执行此操作(就像我一直做的那样)。
有没有办法启用主机名smtp_bind_address
或任何其他方法解决这个问题?关键是将 IP 排除在配置文件之外。
(通过 解析这些主机名不需要 DNS/网络/etc/hosts
。)
答案1
参数smtp_bind_address
用于 smtpd postfix 守护进程与邮件服务器建立传出连接。因此,它使用将建立传出连接的 IP 地址。请参阅在此处输入链接描述
该参数也不是主机名,而是要监听的接口的 IP 地址。请参阅在此处输入链接描述
对于 SPF,我想确保 SMTP 客户端绑定到哪个地址,并且我想使用独立于 IP 的配置来执行此操作(就像我一直做的那样)。
在运行 postfix 的实例中,您可能有几个接口,包括环回接口。此外,您可能将多个 IP 地址设置为一个接口。并且为其中一个接口设置了默认网关。默认情况下,inet_interfaces = all
它将监听所有 IP 地址的传入流量。默认情况下,将使用设置了默认网关的主 IP 地址进行传出流量,除非您将其设置smtp_bind_address
为特定 IP 地址。
SMTP 客户端 (MUA) 将连接到您指定的端口之一。当前安全端口为 465 或 587。客户端和服务器之间的任何点都不会检查 SPF。
在将 25 作为目标端口相互连接以进行电子邮件传输的邮件服务器 (MTA) 之间进行通信时,将检查 SPF 以及 DKIM 和 DMARC。并且它将连接到 master.cf 中指定的 IP 地址之一,inet_interfaces
或者如果已配置,则连接到 master.cf 中为其指定的 IP 地址。(如果您的 MTA 位于防火墙 NAT 后面,则 IP 地址的设置应该适合它)。
因此,在 SPF 中,您应包括您的 MTA(或负载平衡/农场邮件服务器)连接到 Internet 上其他邮件服务器的任何 IP 地址。此外,如果您使用电子邮件网关或代表您的 MTA 发送电子邮件的外部邮件服务,请将其主机名包含在 SPF 中。然后,来自 Internet 的其他邮件服务器(从您的 MTA 发送的电子邮件的目的地)将对您的 SPF 和 IP 或第三方域名进行验证。如果 SPF 检查失败,则根据目标服务器/反垃圾邮件配置,您的电子邮件将被允许和评分/隔离/阻止。
下面是从电子邮件标题中摘取的两个示例。
SPF TXT record: "v=spf1 mx ip4:xx.xx.42.61 ip4:xx.xx.210.85 a:antispam.domain.test ~all"
PTR record: xx.xx.42.61 mail.domain.test
MX record: domain.test antispam.domain.test
A record: mail.domain.test xx.xx.42.61
公认:
Received-SPF: pass (mx-inboundxx-xx.us-east-2a.xx.xx.cloudantispam.com: domain of [email protected] designates xx.xx.42.61 as permitted sender)
由于 IP 与允许的 IP 不匹配而导致软失败:
Received-SPF: softfail (mx-inboundxx-xx.us-east-2b.xx.xx.cloudantispam.com: domain of transitioning [email protected] does not designate xx.xx.42.34 as permitted sender)
如果您有 IPv6,请验证它是否包含在您的配置中。提示:如果您的 ISP 不支持 IPv6,请禁用它。运行zgrep "Network is unreachable" /var/log/mail.log.*
以检查您是否已经遇到此问题。请参阅连接到 aspmx.l.google.com:25:网络不可达是什么意思?