Ошибки почтового сервера: диагностика и методы устранения | AdminWiki

Ошибки почтового сервера: диагностика и методы устранения

27 августа 2026 9 мин. чтения
Содержание статьи

Ошибки почтового сервера парализуют коммуникации компании, а каждая минута простоя оборачивается потерянными письмами и недовольством пользователей. Этот материал дает пошаговый алгоритм диагностики и исправления типичных сбоев: отказ в пересылке, проблемы с аутентификацией, ошибки подключения клиентов и задержки доставки. Вы получите конкретные команды для Postfix и Dovecot, проверенные на практике методы чтения логов и готовые сценарии восстановления работы почты.

Материал ориентирован на системных администраторов и DevOps-инженеров, которым нужно быстро локализовать причину сбоя и вернуть почтовую инфраструктуру в рабочее состояние. Все команды проверены на стабильных версиях Postfix 3.x и Dovecot 2.3, актуальных на август 2026 года.

Быстрая диагностика: с чего начать при сбое почтового сервера

Первичная диагностика выполняется по четкому алгоритму, который исключает хаотичные проверки и экономит время. Начните с четырех шагов: проверьте статус служб, просмотрите очередь сообщений, проанализируйте логи и убедитесь в доступности портов. Такой системный подход позволяет за 5-10 минут локализовать 80% типичных проблем.

Проверка состояния служб и очереди сообщений

Первое действие при сбое - проверка статуса ключевых сервисов. Для Postfix и Dovecot выполните:

systemctl status postfix dovecot

Вывод active (running) означает, что служба запущена и работает. Статус failed указывает на аварийное завершение, а inactive (dead) - на то, что сервис не запускался. Если служба не работает, запустите ее и сразу проверьте логи на предмет причины падения.

Следующий шаг - проверка очереди сообщений. Заторы в очереди часто объясняют, почему письма не доставляются:

mailq

Альтернативная команда для Postfix:

postqueue -p

Статус deferred в выводе означает, что письмо отложено и будет повторно отправлено позже. Небольшое количество deferred-сообщений - норма при временных сбоях на принимающей стороне. Массовое скопление deferred-писем указывает на системную проблему: недоступность внешнего сервера, ошибки DNS или блокировку спам-фильтром.

Анализ логов: как найти ошибку за 5 минут

Логи почтового сервера содержат точную причину большинства сбоев. Для быстрого поиска используйте journalctl с фильтрами по сервису и времени:

journalctl -u postfix --since "1 hour ago" | grep -E "error|fatal|refused"

Для Dovecot команда аналогична:

journalctl -u dovecot --since "30 min ago" | grep -E "error|fatal|auth failed"

Типичные записи об ошибках выглядят так:

postfix/smtpd[12345]: NOQUEUE: reject: RCPT from unknown[203.0.113.10]: 554 5.7.1 Relay access denied

Эта запись указывает на отказ в пересылке для неаутентифицированного клиента. Запись fatal: open database /etc/postfix/virtual.db: No such file or directory говорит об отсутствии скомпилированной базы данных виртуальных доменов. Фильтрация по ключевым словам сокращает время поиска с десятков минут до нескольких секунд.

Завершите первичную диагностику проверкой доступности портов:

ss -tulpn | grep -E ':25|:587|:465|:143|:993'

Если порт не отображается в выводе, сервис не слушает его. Причиной может быть неверная конфигурация, не запущенный процесс или блокировка брандмауэром. Подробнее о работе протоколов SMTP, IMAP и POP3 читайте в руководстве по почтовым протоколам.

Ошибки при отправке писем: диагностика и решение

Сбои при отправке - самый частый тип обращений к администраторам почтовых систем. Пользователь отправляет письмо, но получает отказ или сообщение об ошибке. Причины делятся на три категории: проблемы с пересылкой (relay), сбои аутентификации и ошибки DNS или сети. Разберем каждую с конкретными командами диагностики.

Relay access denied: почему сервер отказывает в пересылке

Ошибка Relay access denied возникает, когда Postfix получает запрос на отправку письма от клиента, которому не разрешена пересылка. Почтовый сервер по умолчанию принимает почту только для своих доменов, а пересылка для внешних адресатов требует аутентификации или нахождения клиента в доверенной сети.

Проверьте текущие настройки пересылки:

postconf -n | grep -E "mynetworks|smtpd_recipient_restrictions|smtpd_relay_restrictions"

Параметр mynetworks определяет доверенные сети. Если клиент подключается из сети, не входящей в этот список, и не проходит аутентификацию, сервер отклоняет запрос. Для добавления локальной сети в доверенные выполните:

postconf -e "mynetworks = 127.0.0.0/8, 192.168.1.0/24"

После изменения перезагрузите конфигурацию:

systemctl reload postfix

Для клиентов вне доверенных сетей настройте обязательную аутентификацию через SASL. Проверьте, что параметр smtpd_sasl_auth_enable установлен в yes, а в smtpd_recipient_restrictions присутствует правило permit_sasl_authenticated перед reject_unauth_destination.

Ошибки аутентификации при отправке (SASL)

Ошибка 535 5.7.8 Error: authentication failed при отправке письма указывает на сбой SASL-аутентификации. Причины: неверный пароль, несоответствие механизмов аутентификации между клиентом и сервером, или проблемы с бэкендом проверки учетных данных.

Проверьте настройки SASL в Postfix:

postconf -n | grep sasl

Ключевые параметры:

smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth

Тип dovecot означает, что Postfix делегирует аутентификацию службе Dovecot. Если тип неверный или сокет не существует, аутентификация не сработает. Протестируйте SASL вручную через swaks:

swaks --to user@example.com --from admin@example.com --server mail.example.com --auth LOGIN --auth-user admin@example.com --auth-password "password"

Успешный ответ 250 2.0.0 Ok: queued подтверждает работоспособность аутентификации. Ошибка 535 указывает на неверные учетные данные или проблему в цепочке Postfix-Dovecot.

Проблемы с аутентификацией: вход в почтовый ящик не работает

Когда пользователь не может войти в почтовый ящик через IMAP или POP3, проблема почти всегда связана с Dovecot. Этот компонент отвечает за проверку учетных данных и предоставление доступа к письмам. Диагностика начинается с тестирования конкретного пользователя.

Проверка пользователей и паролей в Dovecot

Для проверки учетных данных используйте встроенную команду Dovecot:

doveadm auth test user@example.com password

Успешный вывод содержит информацию о пользователе и подтверждение аутентификации. Ошибка auth failed указывает на неверный пароль или проблему в конфигурации passdb. Проверьте, какие базы данных паролей настроены:

doveconf -n | grep -A5 passdb

Типичная конфигурация для системных пользователей:

passdb {
  driver = pam
}

Для виртуальных пользователей часто используется passwd-file или SQL. Если используется passwd-file, проверьте права доступа к файлу и корректность формата записей. Ошибка User unknown означает, что пользователь не найден в userdb. Проверьте наличие пользователя:

doveadm user user@example.com

Настройка механизмов аутентификации

Механизмы аутентификации определяют, как клиент передает учетные данные серверу. Dovecot поддерживает plain, login, cram-md5 и другие. Параметр auth_mechanisms задает разрешенные механизмы:

doveconf -n | grep auth_mechanisms

Рекомендуемая конфигурация для современных почтовых клиентов:

auth_mechanisms = plain login

Механизмы plain и login передают пароль в открытом виде, поэтому их использование допустимо только при включенном TLS. Механизм cram-md5 обеспечивает хеширование пароля, но требует хранения паролей в открытом виде на сервере, что снижает безопасность. Настройка TLS обязательна для защиты учетных данных при передаче по сети.

Ошибки подключения почтовых клиентов: IMAP, POP3, SMTP

Ошибки подключения проявляются по-разному: клиент не может установить соединение, соединение зависает, или появляется предупреждение о недействительном сертификате. Диагностика строится на последовательной проверке сетевой доступности, состояния служб и корректности SSL/TLS.

Проверка портов и сетевой доступности

Ошибка Connection refused означает, что на целевом порту никто не слушает. Ошибка Connection timed out указывает на блокировку брандмауэром или проблему маршрутизации. Проверьте, слушает ли сервис нужный порт:

ss -tulpn | grep -E ':143|:993|:110|:995'

Если порт отсутствует, проверьте конфигурацию Dovecot. Параметр listen определяет адреса, на которых сервис принимает подключения:

doveconf -n | grep listen

Значение listen = * означает прослушивание всех интерфейсов. Если указан конкретный IP, проверьте, что клиенты подключаются именно к нему. Для проверки доступности порта с клиентской машины используйте telnet или nc:

telnet mail.example.com 993

Успешное подключение выводит баннер сервиса. Таймаут указывает на блокировку брандмауэром. Проверьте правила файрвола на сервере и промежуточных устройствах.

Настройка SSL/TLS для почтовых протоколов

Ошибки сертификатов - частая причина отказа почтовых клиентов от подключения. Проверьте сертификат напрямую:

openssl s_client -connect mail.example.com:993 -servername mail.example.com

В выводе обратите внимание на строки Verify return code. Значение 0 (ok) подтверждает валидность сертификата. Коды 18 (self signed certificate) или 20 (unable to get local issuer certificate) указывают на проблемы с цепочкой доверия.

Проверьте пути к сертификатам в конфигурации Dovecot:

doveconf -n | grep ssl

Типичная конфигурация:

ssl = required
ssl_cert = </etc/letsencrypt/live/mail.example.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.example.com/privkey.pem

После обновления сертификатов перезагрузите Dovecot. Если используется Let's Encrypt, настройте автоматическое обновление через certbot, чтобы избежать повторных сбоев из-за истечения срока действия сертификата.

Задержки доставки: почему письма идут медленно

Задержки доставки редко вызывают полный отказ, но ухудшают пользовательский опыт и могут приводить к потере писем при превышении срока хранения в очереди. Причины делятся на внешние и внутренние: недоступность принимающего сервера, DNS-сбои, greylisting и перегрузка собственной очереди.

Анализ очереди и причин откладывания писем

Для анализа очереди используйте mailq или postqueue -p. Письма со статусом deferred отложены. Чтобы понять причину, просмотрите конкретное сообщение:

postcat -q QUEUE_ID

В выводе обратите внимание на строку Diagnostic-Code. Типичные причины задержек:

  • Connection timed out - принимающий сервер недоступен по сети
  • Host or domain name not found - ошибка DNS-резолвинга
  • Connection refused - сервер доступен, но порт 25 закрыт
  • 450 4.7.1 Greylisting in action - принимающий сервер применяет greylisting

Greylisting - это временная задержка первого письма от нового отправителя. Принимающий сервер отклоняет сообщение с кодом 450, ожидая повторной отправки. Это нормальное поведение, и письмо доставляется при повторной попытке. Подробнее о задержках в Gmail и методах их устранения читайте в материале об очереди отправки в Gmail.

Оптимизация параметров повторной доставки

Postfix управляет повторными попытками доставки через несколько параметров. Проверьте текущие значения:

postconf -n | grep -E "queue_run_delay|maximal_queue_lifetime|bounce_queue_lifetime"

Параметр queue_run_delay задает интервал между сканированиями очереди. Значение по умолчанию - 300 секунд. Для высоконагруженных серверов можно уменьшить до 60 секунд, но это увеличит нагрузку на процессор. Параметр maximal_queue_lifetime определяет, сколько письмо хранится в очереди до возврата отправителю. Значение по умолчанию - 5 дней. Увеличение до 7-10 дней дает больше шансов на доставку при длительных сбоях на принимающей стороне.

Для принудительной обработки очереди используйте:

postqueue -f

Эта команда запускает немедленную попытку доставки всех отложенных писем. Полезно после устранения причины задержки, когда нужно быстро разгрузить очередь.

Инструменты и команды для диагностики почтового сервера

Собранный набор команд служит шпаргалкой для быстрой диагностики. Держите этот раздел под рукой: он покрывает проверку конфигурации, ручное тестирование SMTP и анализ логов.

Проверка конфигурации Postfix и Dovecot

Перед применением изменений всегда проверяйте синтаксис конфигурационных файлов. Для Postfix:

postfix check

Команда не выводит ничего при отсутствии ошибок. При наличии проблем выводит описание ошибки и номер строки. Для просмотра эффективной конфигурации:

postconf -n

Эта команда показывает только параметры, отличающиеся от значений по умолчанию. Аналогичная команда для Dovecot:

doveconf -n

Регулярная проверка конфигурации перед перезагрузкой предотвращает сбои из-за опечаток и синтаксических ошибок.

Тестирование SMTP-сессии вручную

Ручное тестирование SMTP-диалога изолирует проблему, исключая влияние почтового клиента. Подключитесь к серверу через telnet:

telnet mail.example.com 25

После подключения проведите диалог:

EHLO test.example.com
MAIL FROM: <sender@example.com>
RCPT TO: <recipient@example.com>
DATA
Subject: Test message

Test body
.
QUIT

Коды ответов интерпретируются так: 250 - команда принята, 550 - отказ, 554 - ошибка пересылки. Ответ 250 2.0.0 Ok: queued после завершения DATA подтверждает, что письмо принято в очередь. Для тестирования с TLS используйте openssl:

openssl s_client -connect mail.example.com:465 -crlf

Подробнее о комплексной проверке почтового сервера читайте в руководстве по диагностике почтового сервера.

Профилактика: как избежать ошибок почтового сервера

Профилактика снижает частоту сбоев и сокращает время восстановления. Три направления: мониторинг ключевых параметров, регулярное обслуживание и тестирование изменений перед применением в продуктивной среде.

Настройка мониторинга ключевых параметров

Мониторинг должен отслеживать четыре группы метрик: размер очереди, доступность портов, загрузку процессора и ошибки в логах. Для базового мониторинга подходит monit:

check process postfix with pidfile /var/spool/postfix/pid/master.pid
  start program = "/usr/bin/systemctl start postfix"
  stop program = "/usr/bin/systemctl stop postfix"
  if failed port 25 protocol smtp then alert

Для отслеживания размера очереди используйте скрипт, который проверяет количество deferred-писем и отправляет алерт при превышении порога. Порог зависит от нормальной нагрузки: для небольшого сервера 100 deferred-писем - повод для проверки, для крупного - 1000. Инструменты вроде Zabbix позволяют строить графики и настраивать сложные условия алертов.

Регулярное обслуживание и обновления

Составьте план обслуживания из четырех пунктов. Первый - еженедельное обновление пакетов:

apt update && apt upgrade postfix dovecot

Второй - ежемесячная проверка сертификатов на предмет скорого истечения срока. Третий - ежеквартальный анализ логов на аномалии: необычные пики отказов, попытки подбора паролей, подозрительные подключения. Четвертый - резервное копирование конфигураций:

tar -czf /backup/mail-config-$(date +%Y%m%d).tar.gz /etc/postfix /etc/dovecot

Любые изменения конфигурации тестируйте в staging-среде перед применением в продуктивной. Это правило предотвращает сбои из-за несовместимости версий или ошибок в новых настройках. Для развертывания почтового сервера в изолированной среде подходит контейнеризация, о которой читайте в гайде по почтовому серверу в Docker и Kubernetes.

Если вы разворачиваете почтовую инфраструктуру с нуля, начните с пошагового руководства по настройке почтового сервера. Для углубленного изучения анализа логов пригодится шпаргалка по grep и awk для поиска ошибок.

Поделиться:
Сохранить гайд? В закладки браузера