Почтовые серверы Linux / почтовый сервер

Почтовый сервер: SMTP соединение работает на 25 порту, но нет доступа на 587

  • Обновлено
  • Чтение ≈ 3 минуты
  • Нужны права администратора

Краткий ответ

Почтовый сервер доступен для соединений на TCP 25, но почтовая программа не может подключиться к порту 587. Порт 25 для межсерверного обмена не гарантирует включённую службу submission: это отдельный слушатель и отдельные сетевые правила.

В этой статье
  1. Симптомы и область применимости
  2. Причины и диагностические признаки
  3. Пошаговая диагностика и исправление
  4. Как убедиться, что проблема устранена
  5. Если проблема осталась

#Симптомы и область применимости

Почтовый сервер доступен для соединений на TCP 25, но почтовая программа не может подключиться к порту 587. Порт 25 для межсерверного обмена не гарантирует включённую службу submission: это отдельный слушатель и отдельные сетевые правила.

#Причины и диагностические признаки

Возможная причинаКак узнатьЧто делать
Служба submission не включенаВ master.cf отключена строка submission или служба не запущена.В ss есть порт 25, а 587 отсутствуетПроверьте master.cf и валидность конфигурации.
Доступ блокирует сетевое правилоБрандмауэр ОС, хостинга или облачная группа безопасности отсекает TCP.Локально 587 отвечает, снаружи timeoutСопоставьте локальный и внешний тест.
Клиент использует неправильный тип TLSНа 587 обычно требуется STARTTLS, а не немедленный TLS как на 465.TCP есть, но TLS рукопожатие не проходитУточните настройки клиента и защитные параметры сервера.

#Пошаговая диагностика и исправление

  1. 1. Уточните, что именно не работаетВ почтовой программе откройте настройки исходящего SMTP, запишите hostname, порт 587, метод защиты STARTTLS и время ошибки. «Connection timed out» отличается от «535 Authentication failed»: во втором случае доступ к порту обычно есть, искать нужно авторизацию.
  1. 2. Установите состояние слушающего процессаНа Linux-сервере выполните ss с правами чтения информации о процессах. Если есть 0.0.0.0:587 или [::]:587, служба слушает сеть; 127.0.0.1:587 доступна лишь локально. Не снимайте ограничения брандмауэра до установления источника отказа.
  2. Linux, чтение
    Linux · Терминал (Bash)КомандаНужен sudo
    Linux, чтение. Наличие процесса на 25 не означает доступности 587.
    sudo ss -ltnp | grep -E ":(25|587)\b"
  1. 3. Проверьте, включён ли submission у PostfixОткройте /etc/postfix/master.cf и найдите строку службы submission. Если она закомментирована или отсутствует в активной конфигурации, настройки main.cf сами по себе порт не откроют. Перед изменением сделайте резервную копию и проверьте назначение сервера.
  2. Дополнительная команда по теме
    Linux · Терминал (Bash)КомандаНужен sudo
    Postfix, просмотр master.cf средствами postconf; пустой ответ требует ручной проверки файла.
    sudo postconf -M | grep '^submission/'
  1. 4. Проверьте TLS-режим сервераНа submission обычно включают обязательный STARTTLS и SMTP AUTH для почтовых клиентов. Не переносите настройку smtpd_tls_security_level=encrypt на публичный сервер на порту 25: это может нарушить входящую почту от обычных серверов.
  2. Дополнительная команда по теме
    Linux · Терминал (Bash)КомандаНужен sudo
    Postfix, только чтение переопределений; конкретные параметры зависят от вашей конфигурации.
    sudo postconf -P | grep '^submission/'
  1. 5. Сравните локальную и внешнюю проверкиС почтового сервера выполните проверку соединения с localhost:587, затем с другого компьютера проверьте публичное DNS-имя. Если локально есть ответ, а снаружи timeout, ищите блокировку маршрута. На Windows для внешней проверки используйте PowerShell Test-NetConnection.
  2. OpenSSL на клиентском компьютере; замените домен
    Linux · Терминал (Bash)Команда
    OpenSSL на клиентском компьютере; замените домен. Успех означает ответ TLS, не успешный SMTP AUTH.
    openssl s_client -starttls smtp -connect mail.example.com:587 -servername mail.example.com </dev/null
  1. 6. Проверьте доступ только к нужному портуОткройте панель брандмауэра хостера и локальные правила Linux. Если сервер должен обслуживать внешних пользователей, разрешите входящий TCP 587 только там, где он действительно нужен, с сохранением остальных защит. Не открывайте все порты и не изменяйте SSH-правила ради SMTP.
  1. 7. Проверьте конфигурацию перед запуском слушателяПосле резервного копирования настройте строку submission для вашей реализации SASL, выполните postfix check. Примените штатную перезагрузку в окно обслуживания и посмотрите журнал на ошибки bind/address in use. Если порт уже занят другим сервисом, устраните конфликт, не выключая случайный процесс.
    Linux · Терминал (Bash)КомандаНужен sudo
    Postfix, проверка. Команда не открывает порт и не включает его сама.
    sudo postfix check
  1. 8. Проверьте отправку и защиту от открытого ретранслятораПосле появления 587 установите защищённое подключение из внешнего клиента и отправьте одно письмо на собственный адрес с авторизацией. Затем убедитесь, что без SMTP AUTH почта на посторонний домен не ретранслируется. Не отключайте TLS или пароль ради успешного теста.

#Как убедиться, что проблема устранена

Порт 587 слушается на ожидаемом интерфейсе, снаружи проходит STARTTLS и авторизованная отправка, а неавторизованная пересылка третьим лицам закрыта. Порт 25 продолжает штатно принимать межсерверные сообщения.

#Если проблема осталась

Если ss показывает слушатель, а внешний тест всё равно не проходит, исследуйте брандмауэр облака, NAT и журнал сетевых блокировок. Если TLS проходит, но пароль отвергается, перейдите к отдельной диагностике SMTP AUTH.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.