我正在使用 Linux 客户端机器连接到第三方外部邮件服务器。
当我尝试发送邮件时,邮件服务器需要很长时间才能响应。为了调试这个问题,我安装了 mailx 基本客户端并跟踪了客户端和服务器之间的通信。进一步缩小范围后,发现即使我提供了服务器的 IP 地址(即不涉及 DNS 查找),telnet 到端口 25 也是比较慢的步骤。
因此,我可以通过在 Linux 命令行提示符下运行以下命令来重现这种缓慢的情况:
% telnet 192.186.222.162 25
Trying 192.186.222.162...
等待几秒钟后再中止或继续。
奇怪的是 - 这种缓慢现象仅出现在一些客户端电脑上 - 使用 Xubuntu 14.04。
% uname -a
Linux myPC 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
在 Fedora 系统上不会出现这种缓慢现象。当我通过不同的 ISP 连接到同一邮件服务器时,也不会在同一系统上看到这种现象。这可能是因为第一个 ISP 是一个办公网络,其中许多用户同时尝试将他们的邮件客户端连接到同一邮件服务器。
如有任何提示我将不胜感激。
答案1
您所描述的情况最有可能的原因是:
远程服务器对客户端 IP 地址进行反向 DNS 查找时出现问题
IP_Address->[PTR
DNS 记录]->name->[A
/AAAA
DNS 记录]->IP_AddressIdent 查询超时 [从远程主机到 smtp 客户端主机的 TCP 连接]
默认 Ident 超时为 30 秒,据我所知,现代 sendmail 使用 5 秒超时。
答案2
您将希望快速响应反向 DNS。
您可以使用本地 DNS 服务器执行以下一项操作(如果它正在运行绑定)
$ORIGIN 0.168.192.in-addr.arpa.
$GENERATE 1-254 $ PTR 192-168-0-$.lan.example.com.
$ORIGIN lan.example.com.
$GENERATE 1-254 192-168-0-$.lan.example.com. IN A 192.168.0.$