#Что произошло и как распознать неисправность
При всплеске системных уведомлений приложение получает SMTP-ответ 421 Too many connections, 421 4.x.x либо отключение соединения. Код 421 обычно означает временную недоступность сервера; он может выдаваться на вашей службе приёма, внешнем SMTP-шлюзе или принимающей стороне. Увеличение числа параллельных подключений может лишь усилить отказ. Сохранение сообщений в очереди и регулируемая повторная доставка безопаснее одновременных попыток отправить всё немедленно. Лимиты могут зависеть не только от соединений, но и от частоты сообщений, отправителя и назначения.
#Причины и отличительные признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Приложение открывает слишком много SMTP-соединенийКаждое уведомление запускает собственное подключение, а несколько процессов делают это одновременно. | Пик 421 совпадает с массовым заданием или запуском очереди сайта. | Включить очередь отправки и ограничить параллельную обработку. |
| Лимит провайдера или сервера-ретранслятораУ внешнего SMTP-провайдера есть собственные ограничения по соединениям и сообщениям. | 421 приходит от адреса relay, а локальный сервер работает; лимиты описаны в панели тарифа. | Подстроить частоту и параллельность под документированные ограничения. |
| Истощены ресурсы собственного MTAМного соединений и процессов Exim/Postfix, очередь растёт, службе не хватает дескрипторов/памяти. | Служба пишет о лимитах, загрузке и отклонённых сессиях в собственный журнал. | Проверить ресурсы и законность потока, не повышать лимиты наугад. |
| Признаки спама/компрометацииСайт или учётная запись отправляют письма неизвестным получателям. | Необычное число адресатов, ошибки входа и жалобы, всплеск SMTP-сессий. | Остановить источник нежелательного трафика до возобновления рассылки. |
#Пошаговая диагностика и исправление
- Зафиксируйте, какой сервер выдал 421В панели сайта откройте журнал отправки или в системном журнале SMTP найдите строку
421и время. Запишите имя SMTP-узла, где соединение оборвалось, частоту событий и количество параллельных заданий. Если код возникает на авторизованном relay, исправление требуется в приложении или согласуется с владельцем relay; локальный лимит порта 25 здесь ни при чём. - Сохраните письма в очереди и временно ограничьте потокЕсли уведомления отправляет приложение, найдите его настройку числа одновременных работников или пакетной отправки. Уменьшите параллельность и включите разумный интервал повторных попыток при временных ответах 4xx. Перед правкой запишите прежние значения. Не отключайте уведомления о критических ошибках полностью и не очищайте почтовую очередь: в ней могут быть важные сообщения.
- Проверьте условия тарифа SMTPВ личном кабинете почтового провайдера найдите ограничения «соединений одновременно», «писем в час» и «писем в сутки». Сопоставьте реальные значения приложения с документацией тарифа. Если приложение превышает разрешённый объём, распределяйте отправку по времени или переходите на согласованный тариф, не обходя лимиты подменой доменов и IP.
- Оцените реальную длину очередиПри Exim в административном терминале выполните
sudo exim -bpдля просмотра очереди. Флаг-bpтолько показывает письма, без удаления. Обратите внимание на возраст и число адресатов; письма с<>— часто уведомления о недоставке. Если команда не существует, почтовая служба может быть Postfix или поставщиком управляется иначе: используйте журнал и средства панели. - Исключите взлом сайта или почтовой учётной записиСопоставьте резкое увеличение отправлений с действиями сайта. Проверьте новые задания cron, формы без защиты от автоматических отправок и входы SMTP под чужими IP. Если есть признаки компрометации, временно изолируйте конкретный источник, смените его секреты и устраните уязвимость; ограничивать весь сервер без анализа может остановить законную почту.
- Проверьте настройки повторной отправкиSMTP-ответы 4xx в нормальном случае приводят к отложенной повторной доставке; проверьте по журналу, что очередь действительно повторяет попытку позднее. Если скрипт мгновенно отправляет письмо заново при каждом 421, добавьте ограниченную очередь с нарастающей задержкой. Не запускайте
exim -qffмногократно: принудительная обработка всех задержанных писем создаёт новый всплеск. - Исправляйте лимит только на стороне, которая его установилаЕсли точно установлен локальный предел подключений Exim, сохраните действующую конфигурацию и обратитесь к описанию соответствующего параметра вашей версии; внесите узкое изменение с оценкой памяти и нагрузки, проверьте конфигурацию до перезагрузки. Если лимит у внешнего SMTP, изменение своего MTA не поможет. Не открывайте анонимный relay для сокращения очереди.
- Проверьте восстановление без новой массовой волныОтправьте небольшую разрешённую партию уведомлений, убедитесь в отсутствии новых 421, затем поэтапно возвращайтесь к обычной нагрузке. Сравните объём очереди до и после, проверьте поступление контрольных писем. Если очередь снова растёт, верните прежние настройки, снизьте параллельность и приложите провайдеру журнал с временными метками.
- Дополнительная команда по темеLinux · Терминал (Bash)КомандаНужен sudoНа сервере с Exim показывает текущую почтовую очередь; типично требует административных прав. Команда ничего не отправляет и не удаляет.
sudo exim -bp
#Как проверить результат и что делать при неуспехе
Проблема устранена, когда система при умеренной нагрузке стабильно отправляет сообщения без 421, очередь не растёт и важные уведомления поступают получателям. Единичные временные ограничения возможны и должны обрабатываться штатными повторными попытками, а не немедленным бесконечным циклом.