К основному контенту

Postfix: Как диагностировать задержку ответа на порту 25 и проблемы с DNS

В этой статье мы разберем типичные проблемы, из-за которых почтовый сервер 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 smtpd

3. 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       -       smtpd

4. Ошибка 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, чтобы поэтапно диагностировать проблему. Внимание к деталям — залог стабильной почтовой системы.

Комментарии

Популярные сообщения из этого блога

Настройка и подключение IPSec в Windows

Настройка IPSec на Windows включает в себя создание правил безопасности и фильтров для защиты сетевого трафика. Ниже — пошаговое руководство. Включение службы IPSec Перед настройкой убедитесь, что служба IPSec Policy Agent запущена: Нажмите Win + R , введите services.msc и нажмите Enter . Найдите IPsec Policy Agent . Если она не работает, нажмите ПКМ → Свойства . Установите Тип запуска: Автоматически , затем нажмите Запустить . Настройка политики IPSec через «Локальную политику безопасности» Нажмите Win + R , введите secpol.msc , нажмите Enter . Перейдите в Политики IP-безопасности в локальном компьютере . В правом окне нажмите Создать политику IP-безопасности → Далее . Укажите имя политики (например, "IPSec VPN"), снимите флажок Активировать правило по умолчанию , нажмите Далее . Нажмите Добавить , чтобы создать правило. Транспортный или туннельный режим : Если IPSec для защищенной локальной сети – выберите Транспортный режим . Если IPSec для VPN – выберите Туннельн...

Как найти и изменить репозитарии для CentOS 8

В CentOS 8 официальные репозитории (BaseOS, AppStream и Extras) управляются с помощью dnf и файлов конфигурации в /etc/yum.repos.d/ . Вот как их найти и изменить: 1. Просмотр текущих репозиториев dnf repolist Если нужно увидеть подробную информацию: dnf repolist all 2. Изменение репозиториев Файлы конфигурации репозиториев находятся в /etc/yum.repos.d/ . Например, основной репозиторий может быть в файле CentOS-AppStream.repo . Открыть его можно так: nano /etc/yum.repos.d/CentOS-AppStream.repo Внутри можно изменить: enabled=1 → включает репозиторий enabled=0 → отключает репозиторий baseurl= или mirrorlist= → задать новый источник пакетов 3. Замена недоступных репозиториев CentOS 8 достиг конца поддержки , и официальные зеркала больше не работают. Вместо них можно подключить Vault или AlmaLinux/Rocky Linux : Использование архивного репозитория CentOS Vault Создайте резервную копию старых .repo файлов: mkdir /root/repo-backup && mv /etc/yum.repos.d/*.repo /root/repo-backu...

Пример по настройке и конфигурации IPsec-туннеля для безопасного соединения сетей

IPsec (Internet Protocol Security) используется для обеспечения безопасного обмена данными между сетями. В данной инструкции описывается настройка IPsec между двумя криптошлюзами:  GW-Alpha  (192.168.100.1) и  GW-Beta  (192.168.200.1). Все параметры вымышленные, но соответствуют типовым настройкам. Команды, использованные в инструкции, относятся к конфигурации VyOS или EdgeRouter (Ubiquiti) . Эти устройства используют синтаксис команд CLI, схожий с Juniper Junos, но ориентированный на программное обеспечение с открытым исходным кодом. Ниже приведены примеры для  Cisco, Mikrotik, Fortinet или pfSense , 1. Фазы работы IPsec IPsec работает в два основных этапа: Фаза 1 (IKE – Internet Key Exchange) Фаза 1 предназначена для установления безопасного канала между двумя узлами. Она включает в себя: Аутентификацию сторон – используется либо предварительно разделенный ключ (PSK), либо цифровые сертификаты. Обмен ключами – осуществляется с использованием алгоритма Диффи...