您的 SMTP 服务器很可能正在对您的客户端连接进行缓送。这是针对失控客户端或提交大量“垃圾”命令的客户端的防御。来自 Postfix smtpd 的联机帮助页:
smtpd_junk_command_limit (normal: 100, stress: 1)
The number of junk commands (NOOP, VRFY, ETRN or RSET) that a
remote SMTP client can send before the Postfix SMTP server
starts to increment the error counter with each junk command.
smtpd 守护进程将在看到一定数量的垃圾后在回复之前插入 1 秒的延迟。如果您拥有相关 smtp 服务器的 root 访问权限,请尝试 strace 以查看服务器是否发出 nanosleep 系统调用。
这是针对我的本地服务器运行脚本的跟踪记录。 100 个 VRFY 命令后,它开始在命令之间休眠。您的服务器可能有大约 15 个垃圾命令的下限:
nanosleep({1, 0}, 0x7fffda9a67a0) = 0
poll([{fd=9, events=POLLOUT}], 1, 300000) = 1 ([{fd=9, revents=POLLOUT}])
write(9, "252 2.0.0 pat\r\n", 15) = 15
poll([{fd=9, events=POLLIN}], 1, 300000) = 1 ([{fd=9, revents=POLLIN}])
read(9, "VRFY pat\r\n", 4096) = 10