#Что произошло и как распознать неисправность
На сервере Linux Exim принимает сообщения от сайтов и пользователей, но не может доставить их внешним доменам. Очередь exim -bp растёт, а в журнале встречаются Connection timed out, Network is unreachable или Connection refused при попытке соединиться с MX по TCP 25. Частая причина — блокировка исходящего порта 25 провайдером VPS, облаком или сетевой политикой. Прежде чем просить открыть исходящий порт, следует исключить ошибочный MX, DNS, маршрут и блокировку конкретного удалённого адресата. Порт 587 с авторизацией служит для отправки через предоставленный релейный SMTP-сервер; он не заменяет прямое соединение с произвольным MX на порту 25.
#Причины и отличительные признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Провайдер ограничил исходящие соединения к TCP 25Многие VPS-провайдеры применяют ограничения для борьбы со спамом. | С нескольких внешних MX нет TCP-соединения 25, но DNS и остальные сервисы работают. | Попросить провайдера подтвердить и согласованно снять ограничение или использовать доверенный relay. |
| Межсетевой экран сервера блокирует исходящий трафикСобственное правило nftables/iptables запрещает исходящий TCP 25. | В журнале фильтрации виден drop/reject, другие соединения работают. | Исправить только неверное исходящее правило после проверки политики. |
| Проблема маршрута или IPv6Exim выбирает недоступный IPv6-адрес, хотя IPv4 соединяется. | В журнале network unreachable для IPv6; с IPv4 путь доступен. | Настроить корректную сеть, а не отключать IPv6 глобально. |
| Временный отказ конкретного MXУдалённый сервер или его политика ограничивают доставку независимо от провайдера. | Сбой только для одного домена, другие MX принимают письма. | Следовать коду удалённого SMTP и штатным повторным попыткам Exim. |
#Пошаговая диагностика и исправление
- Сохраните состояние очереди и не очищайте еёПодключитесь по SSH как администратор к серверу Exim. Выполните
sudo exim -bp, оцените число сообщений и их возраст. Не запускайте команды удаления сообщений и не переносите spool вручную: очередь может содержать важные письма. Запишите исходный размер и несколько идентификаторов для последующей проверки. - Найдите настоящую причину задержки одного письмаВыберите идентификатор из
exim -bpи выполнитеsudo exim -Mvl ID_СООБЩЕНИЯ, подставив реальный ID. Это показывает историю попыток выбранного письма; команда не доставляет и не удаляет его. Запишите реальный MX, IP, порт и сетевую ошибку. Если журнал уже показывает 550 permanent rejection, причина не в исходящем блокировании 25. - Убедитесь, что DNS разрешает MXНа сервере выполните
dig MX example.net +shortдля домена получателя иdig A имя-MX +short, используя реальные значения. Если MX вообще не определяется, сначала разберите проблемы DNS. Если разрешается IPv6, проверьте, что сервер действительно имеет рабочий IPv6-маршрут. Не редактируйте /etc/hosts ради случайного MX. - Проверьте TCP 25 в сторону двух разных MXВ терминале выполните
nc -vz -w 5 mail.example.net 25, подставив реальное имя почтового MX, полученное из DNS. Флаг-zпроверяет соединение без отправки писем,-vпоказывает результат,-w 5ограничивает ожидание пятью секундами. Повторите для второго разрешённого MX другого домена. Еслиncотсутствует, попросите администратора воспользоваться доступным штатным сетевым инструментом; не устанавливайте дополнительные пакеты на критичный сервер без согласования. - Сопоставьте сетевые ошибки с правилами провайдераПосмотрите панель VPS и сведения поставщика о блокировке исходящего SMTP. Если несколько MX недоступны, а DNS и другие порты работают, откройте обращение с исходящим IP, временными метками и обезличенными ошибками. Не сканируйте чужие адреса массово, не пытаясь обойти провайдера случайными портами.
- Проверьте локальные правила и IPv6В Linux под администратором проверьте активный набор правил
sudo nft list ruleset(если используется nftables) и маршрутыip route,ip -6 route. Ищите выходящие запреты TCP 25 и отсутствие маршрута для фактически выбранного семейства. Нельзя сбрасывать весь брандмауэр ради теста; при подтверждённом ошибочном правиле исправьте точечное правило с сохранением предыдущего набора. - Используйте разрешённый релейный сервер, если прямой 25 закрытЕсли провайдер не снимает ограничение, настройте Exim на отправку через доверенный SMTP relay, который предоставляет порт 587 с STARTTLS и обязательной аутентификацией. Получите точные настройки и учётные данные в личном кабинете провайдера релея. Секреты храните с ограниченными правами; перед изменением сохраните конфигурацию и проверьте синтаксис Exim по документации вашей версии. Не открывайте анонимный почтовый ретранслятор.
- Проверьте доставку постепенно и сохраните возможность откатаПосле исправления сделайте одиночную проверку соединения, затем дайте Exim штатно повторить отправки. Следите за очередью по
exim -bpи логами нескольких конкретных сообщений. Не запускайте на большой очереди массовые принудительные повторы-qff, чтобы не нарушить лимиты SMTP relay и не вызвать новый 421. Если поток снова застрял, верните прежний маршрут и обратитесь к провайдеру с новыми ошибками. - Команды для отдельных ситуацийВыберите только подходящий вариант. Это не одна последовательность: часть команд диагностирует проблему, а часть меняет настройки или данные.
#Как проверить результат и что делать при неуспехе
Успешное исправление — Exim устанавливает исходящие соединения либо работает через авторизованный релейный сервер, ранее задержанные письма доставляются и очередь уменьшается. Если провайдер сохраняет блокировку, необходимы его разрешённый SMTP relay либо согласованное изменение тарифа/сети; обход ограничений небезопасен.