Кратко — задержки почти всегда связаны не с «магией» почтового клиента, а с политикой/настроем почтовых серверов по пути (вашего или получателя) или с DNS/репутацией вашего IP. То, что часть писем доходит сразу, а часть с задержкой, сильно указывает на то, что именно некоторые получатели (или промежуточные хосты) временно отклоняют (4xx) или замедляют приём.
Что проверить первым делом
- Посмотреть логи вашего MTA (Postfix/Exim/Sendmail). Ищите строки с "deferred", "status=deferred", "timeout", "450", "421", "greylist" и т. п.
- Postfix: tail -f /var/log/mail.log или journalctl -u postfix; mailq / postqueue -p; postcat -q <ID>
- Exim: exim -bp; tail -f /var/log/exim/mainlog; exim -Mvl <ID>
- Посмотреть заголовки письма, когда оно придёт: цепочка Received покажет, какой сервер долго держал письмо.
- Проверить очередь исходящих сообщений: есть ли много писем/старые письма в очереди.
- Проверить ответ удалённого SMTP при доставке (в логах будет код 4xx/5xx и текст).
Наиболее частые причины и как их отличить
1. Greylisting у получателя
- Получатель отвечает 4xx при первой попытке; сервер ожидает повторной отправки через минут/час.
- Логи: "450 4.2.0 try again later", "greylist".
- Решение: ничего сделать нельзя со стороны отправителя, только повторные попытки MTA; можно использовать smarthost с хорошей репутацией, который обычно не грейлистится.
2. Ограничения/троттлинг у получателя
- Крупные провайдеры (Google, Microsoft, Yahoo и др.) могут ограничивать скорость приёма с новых/неавторизованных IP.
- Логи: сообщения о "rate limit", "too many connections", или просто много повторных попыток.
- Решение: поднять репутацию, уменьшить частоту отправки, использовать smarthost.
3. DNS / обратная запись (PTR), SPF/DKIM/DMARC проблемы
- Если у вашего IP нет корректного PTR или DNS/HELO не совпадает — некоторые серверы ставят в очередь или сильно фильтруют.
- Проверяйте: PTR, SPF запись, DKIM подписи, DMARC политика.
- Инструменты: dig, host, online-валидаторы (mxtoolbox и пр.).
- Решение: настроить PTR на ваш FQDN; настроить SPF, DKIM; корректный HELO/hostname.
4. IP в RBL/черных списках
- Некоторые провайдеры при обнаружении IP в списке задерживают или проверяют письма вручную.
- Проверка: mxtoolbox, multi-rbl, командные запросы к RBL.
- Решение: запрос на делистинг после устранения причины; использовать сервис отправки почты.
5. ISP блокирует/маршрутизирует SMTP (динамический IP, порт 25)
- Если у вас динамический адрес или провайдер ограничивает исходящую почту, писем может не быть или их релоадить через smarthost.
- Проверка: попытка telnet IP:25 к внешним MX; узнать, не перенаправляет ли провайдер трафик.
- Решение: запросить статический IP, использовать SMTP-Relay провайдера или сторонний SMTP (SendGrid, Mailgun и т. п.) на 587.
6. Ошибки сетевого уровня / IPv6-вопросы
- Сервер пробует соединяться по IPv6, но связь не работает — и только после таймаута пробует IPv4.
- Логи: "connect to [IPv6]:25: Network is unreachable" и затем попытка по IPv4.
- Решение: настроить правильные A/AAAA записи, отключить/исправить некорректный IPv6.
7. Проблемы на вашей стороне MTA (застрявшие очереди, конфигурация retry)
- Неправильные retry-интервалы или проблемы с памятью/CPU приводят к задержкам.
- Проверка: состояние очереди, нагрузка сервера, конфиг retry в Postfix (smtpd_* параметры).
- Решение: починить конфигурацию, увеличить ресурсы, очистить/переслать очередь.
Что можно сделать прямо сейчас (пошагово)
1. Посмотрите логи на момент отправки (grep по Message-ID или по адресу получателя).
2. Смотрите код отклика: 4xx = временная ошибка (будет повторная попытка и возможна задержка), 5xx = постоянная ошибка (bounce).
3. Проверьте очередь: mailq / postqueue -p / exim -bp.
4. Проверьте PTR, SPF, DKIM, DMARC и наличие в RBL.
5. Посмотрите заголовки уже пришедших задержанных писем — они покажут, где произошло ожидание.
6. При возможности используйте relay (ISP/SMTP-провайдер) — быстрое решение для надёжной доставки.
Если хотите, могу помочь конкретнее — пришлите:
- Фрагмент логов (строки с попытками доставки для проблемного письма),
- Заголовки (полный Received) одного из задержанных писем,
- Вывод mailq/postqueue -p или exim -bp,
- Название MTA (Postfix/Exim/Sendmail) и пример домена/получателя, куда письма задерживаются.
Это позволит точно указать причину и предложить исправление.