如果我从本地主机 (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 地址?