端口 587 上的 Postfix SMTP errno 连接仅被本地主机拒绝

端口 587 上的 Postfix SMTP errno 连接仅被本地主机拒绝

如果我从本地主机 (127.0.0.1) 上的网站使用端口 587 和 STARTTLS 连接到 mail.example.tld 上的 smtp 服务器,我会收到错误“连接被拒绝,错误号 111”。来自其他 IP 的服务器的连接正常,问题仅发生在同一服务器上的本地主机上。

当我将 mail.example.tld 更改为 smtp.example.tld 时,它就可以正常工作了。对于 smtp.example.tld,我在 example.tld 区域中有以下 DNS 条目

smtp IN CNAME mail.example.tld

从 netstat 我得到

netstat -tlanp | grep 587
tcp        0      0 127.0.0.1:587           0.0.0.0:*               LISTEN      7617/master
tcp        0      0 [IPv4-Address]:587       0.0.0.0:*               LISTEN      7617/master
tcp6       0      0 [IPv6-Address]:587   :::*                    LISTEN      7617/master
tcp6       0      0 ::1:587                 :::*                    LISTEN      7617/master

Postfix 监听所有地址。当我尝试

openssl s_client -starttls smtp -crlf -connect mail.example.tld:587

我得到以下

139770323395008:error:0200206F:system library:connect:Connection refused:../crypto/bio/b_sock2.c:108:
139770323395008:error:2008A067:BIO routines:BIO_connect:connect error:../crypto/bio/b_sock2.c:109:
connect:errno=111

在我的 postfix 的 main.cf 中我有

inet_interfaces = IPv4, [IPv6], localhost

当我将其更改为

inet_interfaces = all

然后它就起作用了。

如果我指定了我的 IP 地址,为什么来自本地主机的连接会被拒绝?

答案1

我猜测“mail.example.tld”无法按照您想象的方式解析,通常是因为本地 /etc/hosts 被覆盖。

您是否尝试过仅使用数字 IP 地址进行连接?

“host mail.example.tld” 是否解析为与“ping -c1 mail.example.tld”相同的 IP 地址?

相关内容