#Симптомы и область применимости
После обновления Postfix почтовая программа подключается к SMTP, но не может войти: сервер не предлагает AUTH после STARTTLS либо отвечает 535/454. Рассматриваем сервер Postfix с Dovecot SASL или Cyrus SASL, а не пароль исходящего шлюза, когда Postfix работает SMTP-клиентом.
#Причины и диагностические признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Переопределение настроек submissionВ master.cf у службы submission свои параметры -o, отличные от main.cf. | AUTH есть на 25, но отсутствует на 587 или наоборот | Проверьте эффективную настройку каждой службы. |
| Недоступен сокет DovecotВзаимодействие Postfix с выбранной реализацией SASL разорвано. | В журнале Postfix упомянут private/auth или cannot connect to saslauthd | Проверьте сокет, пользователей и каталоги без ослабления прав. |
| Отличается политика TLSПри smtpd_tls_auth_only=yes это нормальная защита учётных данных. | AUTH не показывается до STARTTLS | Проверяйте возможности после установки шифрования. |
#Пошаговая диагностика и исправление
- 1. Определите точный ответ почтовой программыОткройте настройки исходящей почты клиента, запишите сервер, порт, тип шифрования и время неудачной попытки. Ошибка 535 означает отказ в учётных данных, 454 может указывать на временный сбой аутентификации. Проверьте, что вход в IMAP тем же паролем работает, но не считайте это доказательством исправности SMTP AUTH.
- 2. Убедитесь, что используется submission, а не входящий SMTPНа Linux-сервере выполните чтение списка слушающих портов. Ожидайте 587/tcp, если этот порт включён для почтовых клиентов; порт 25 предназначен прежде всего для передачи между серверами. Если 587 отсутствует, посмотрите службу submission в master.cf.
- Linux, чтение сокетов; вывод показывает слушающий процессLinux · Терминал (Bash)КомандаНужен sudoLinux, чтение сокетов; вывод показывает слушающий процесс. Отсутствие 465 нормально, если SMTPS не используется.
sudo ss -ltnp | grep -E ":(25|587|465)\b"
- 3. Проверьте эффективную конфигурацию PostfixВ терминале выведите отличающиеся от умолчаний параметры и отдельно переопределения master.cf. Найдите smtpd_sasl_type, smtpd_sasl_path, smtpd_tls_auth_only и smtpd_sasl_auth_enable. После обновления именно служба submission могла сменить способ запуска.
- Postfix с правами чтения конфигурации; посторонние секреты в выводе скрывайтеLinux · Терминал (Bash)КомандаНужен sudoPostfix с правами чтения конфигурации; посторонние секреты в выводе скрывайте.
sudo postconf -n && sudo postconf -P | grep -E "submission|smtps"
- 4. Проверьте наличие поддержки выбранного SASLВыполните postconf -a: для интеграции с Dovecot в списке должно присутствовать dovecot. Не переключайте на cyrus вслепую: это другой источник учётных данных. Если поддержка отсутствует после смены пакета, установите соответствующий пакет вашей системы из доверенного репозитория по руководству дистрибутива.Linux · Терминал (Bash)КомандаLinux, Postfix; только чтение. Вывод — список серверных механизмов SASL, не статус авторизации.
postconf -a
- 5. Сверьте путь сокета Dovecot и праваДля распространённой связки Dovecot/Postfix ожидается private/auth относительно каталога очереди Postfix, часто /var/spool/postfix/private/auth. Проверьте определение unix_listener в Dovecot и реальное существование сокета. Не ставьте всем пользователям режим 777 и не удаляйте сокет вручную.
- Дополнительная команда по темеLinux · Терминал (Bash)КомандаНужен sudoLinux, путь только пример стандартной интеграции; отсутствие файла требует сверки с фактическим smtpd_sasl_path.
sudo ls -l /var/spool/postfix/private/auth
- 6. Прочитайте сообщения Postfix и Dovecot за время отказаВ журнале systemd выполните чтение последних событий почтовых служб; если сервисы пишут в /var/log/mail.log, откройте соответствующий файл. Разделите неверный пароль, отсутствие механизма SASL, ошибку сокета и отказ по политике отправителя. Не выкладывайте чужие адреса и идентификаторы сообщений.
- systemd, только чтениеLinux · Терминал (Bash)КомандаНужен sudosystemd, только чтение. На дистрибутивах может использоваться иной журнал/название unit.
sudo journalctl -u postfix -u dovecot --since "30 minutes ago" --no-pager
- 7. Проверьте AUTH только внутри защищённого сеансаНа рабочем компьютере с OpenSSL откройте STARTTLS-подключение к 587 и посмотрите расширения EHLO после защищённого рукопожатия. Наличие 250-AUTH указывает, что вход предложен; оно не гарантирует верный пароль. Не тестируйте PLAIN/LOGIN в незашифрованном сеансе.Linux · Терминал (Bash)КомандаЗамените домен. Терминал, без администратора; проверьте имя сертификата и наличие ошибок проверки цепочки.
openssl s_client -starttls smtp -connect mail.example.com:587 -servername mail.example.com -crlf </dev/null
- 8. Внесите точечную правку и испытайте отправкуСделайте резервные копии main.cf и master.cf, исправьте только неверный параметр SASL или путь сокета; при необходимости приведите unix_listener Dovecot к документированной схеме с доступом группы postfix. Выполните postfix check, затем штатную перезагрузку сервиса и отправьте одно тестовое письмо на свой адрес. Не снимайте требование TLS ради появления AUTH.Linux · Терминал (Bash)КомандаНужен sudoLinux, Postfix; синтаксическая и структурная проверка без отправки писем.
sudo postfix check
#Как убедиться, что проблема устранена
После STARTTLS на 587 доступно AUTH, авторизованный пользователь отправляет одно тестовое письмо, а в логах нет предупреждений о сокете. Отдельно убедитесь, что неавторизованный клиент по-прежнему не может пересылать почту на чужие домены.
#Если проблема осталась
Если ошибка 535 осталась, проверьте саму запись пользователя и пароль в выбранном источнике SASL, дополнительные механизмы входа и разрешённые адреса отправителя. Если 454 или connection refused — вернитесь к журналам и доступности сокета, откатите последнюю правку при ухудшении.