Скорее всего, ваш SMTP-сервер нарушает ваше клиентское соединение.Это защита от сбежавших клиентов или клиентов, которые отправляют большие объемы «мусорных» команд.С man-страницы для 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-секундную задержку перед ответом после того, как будет замечено определенное количество мусора.Если у вас есть root-доступ к рассматриваемому серверу smtp, попробуйте использовать 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