В этой статье мы разберем типичные проблемы, из-за которых почтовый сервер Postfix может медленно отвечать на соединения по порту 25 (SMTP), и дадим пошаговые инструкции по диагностике и устранению неполадок. Все примеры приведены на базе FreeBSD 14. Названия хостов и IP-адреса заменены на вымышленные.
Проблема: задержка при соединении с SMTP-сервером
Почтовый сервер (например, mail.example.com) долго отвечает на входящие SMTP-соединения — до 5-10 секунд перед выдачей приветствия 220. Это может замедлить доставку писем и вызвать проблемы у отправителей.
Причины задержек:
1. postscreen_greet_wait
Postfix может быть сконфигурирован на намеренную задержку перед приветствием клиента, чтобы защититься от спам-ботов:
postconf postscreen_greet_wait
postscreen_greet_wait = ${stress?{2}:{6}}sЕсли включён postscreen, то задержка 6 секунд по умолчанию — это нормально. Отключается или настраивается параметром postscreen_greet_wait в /usr/local/etc/postfix/main.cf.
2. Медленный запуск smtpd-процесса
Если master.cf ограничивает число smtpd, и они заняты, Postfix ждёт освобождения:
smtpd unix n - n - 10 smtpdПараметр maxproc указывает максимум одновременно работающих smtpd. Повышается в /usr/local/etc/postfix/master.cf.
Проверь текущую загрузку:
ps ax | grep smtpd3. Chroot-среда и отсутствие /dev/urandom или /etc/resolv.conf
Если smtpd работает в chroot, но внутри окружения нет необходимых файлов:
/dev/urandom— нужен для TLS/SSL/etc/resolv.conf— нужен для DNS-запросов
Решение:
Убедитесь, что эти файлы доступны внутри
/var/spool/postfix.Либо отключите chroot для
smtpd:
smtpd unix n - n n - smtpd4. Ошибка DNS
Postfix использует системный DNS, указанный в /etc/resolv.conf. Пример:
nameserver 8.8.8.8
nameserver 1.1.1.1Если DNS работает нестабильно или отдает неверные записи, это вызывает задержки на этапе RCPT TO или при проверке HELO.
Проверь работу DNS:
dig mx domain.com
host domain.comПроверь запросы в tcpdump:
tcpdump -i em0 port 53Ошибки в логах и их значение
Пример логов:
(connect to mail.remotehost.com[104.21.16.1]:25: Operation timed out)Причина: Postfix не смог разрешить MX-запись домена remotehost.com и использовал A-запись, которая не принимает почту.
Решение: Проверь DNS-записи домена:
dig mx remotehost.comЕсли вместо MX есть только A-запись, то Postfix пробует доставку на неё. Если там нет SMTP-сервера — будет timeout или connection refused.
Как посмотреть очередь Postfix
postqueue -pПоказанные ошибки могут быть:
Connection refused— удалённый сервер не принимает соединенияOperation timed out— удалённый сервер недоступенRelay access denied— отказ из-за политики
Как увидеть, кто слушает порт 25
sockstat -4 -l | grep :25Или с netstat:
netstat -an | grep ".25"Как узнать, какие DNS использует Postfix
Postfix не указывает явно DNS-сервер в логах. Но он использует системные из /etc/resolv.conf. Убедитесь, что они рабочие:
cat /etc/resolv.confПроверь DNS-запросы с tcpdump:
tcpdump -i em0 port 53 -nКак включить отладку Postfix по домену
postconf -e 'debug_peer_list = example.com'
postconf -e 'debug_peer_level = 2'
postfix reloadПосле этого появятся подробные логи при работе с указанным хостом.
Заключение
Задержка на SMTP-порте может быть вызвана разными причинами: от защиты Postfix до проблем с DNS или нехваткой ресурсов. Используйте системные инструменты FreeBSD и расширенное логирование Postfix, чтобы поэтапно диагностировать проблему. Внимание к деталям — залог стабильной почтовой системы.
Комментарии
Отправить комментарий