Отказано в доступе к релейному серверу почтового получателя

Пытаюсь включить ответы по электронной почте с помощью контейнера mail-receiver. Постоянно получаю ошибки:

NOQUEUE: reject: RCPT from ... 454 4.7.1 <...>: Relay access denied

Почему это происходит? Как можно зайти в контейнер mail-receiver, изучить конфигурацию Postfix и отладить её? Я отключил сервер Postfix на системе, где это работает, из-за конфликта с портом 25. Неужели я ошибся?

Я достаточно уверен, что MX-записи DNS настроены верно, и эта проблема возникает при входящей почте с любого сервера. Для исходящей почты в контейнере приложения я использую Amazon SES, и всё работает нормально.

Я новичок в Discourse и не знаю, как отлаживать эту экосистему. Я эксперт в Postfix, но не понимаю, как его настроить в этой контейнеризованной среде.

Прежде всего, если у вас уже запущен экземпляр Postfix, контейнер для получения почты вам на самом деле не нужен.

Вы можете настроить Postfix как получатель писем для ответов и настроить Discourse на опрос этого почтового ящика.

Это howto от 2014 года даст вам достаточно представлений для начала, и я предполагаю, что вы сможете разобраться с Postfix самостоятельно.

Я совершенно не согласен с этим. Преимущество mail-receiver в том, что письма доставляются через API, а не опрашиваются. Существует существенная разница во времени доставки писем в Discourse при использовании mail-receiver (минуты против секунд).

Также есть огромная разница в простоте настройки: для mail-receiver нужно обновить всего три строки в yml-файле, а для postfix OOBE требуется… больше.

Эта ошибка указывает на то, что домены почты не совпадают.

Поскольку вы скрываете части сообщения, мы не можем легко помочь вам в решении этой проблемы.

Если вы получаете любые письма так, как ожидали, это означает, что кто-то пытается использовать ваш почтовый сервер для отправки писем на другой домен. Например, кто-то указал свой MX-запись на ваш IP-адрес. Или, и я никогда об этом не слышал :wink:, кто-то пытался злонамеренно заставить ваш почтовый сервер отправлять нежелательную почту.

Все ли эти ошибки от одного IP-адреса? Можете ли вы увидеть в логах, для какого домена предназначались ошибочные сообщения?

Самое простое — проигнорировать это.

У меня возникла эта проблема с ранее работавшим mail-receiver, в который я внес некоторые изменения. Я думал пересобрать контейнер, но явно что-то пошло не так, так как я получил множество ошибок «Relay access denied» для всех получателей. DNS был настроен правильно.

В итоге всё исправилось с помощью простого git pull и команды launcher rebuild mail-receiver. Публикую это на случай, если кому-то ещё это поможет.

Получаю ту же ошибку в отчётах mail-receiver: Relay access denied (в ответ на команду RCPT TO).

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

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

Я настроил это для того же поддомена, что и сайт Discourse.

Для записи MX значение — «subdomain.domain», а в поле хоста должно быть указано просто «subdomain» или @?

Кто-нибудь знает, что вызывает ошибку «Relay access denied»?

Это происходит, когда домен получателя не совпадает с доменом, настроенным в mail-receiver.yml.

Это тот адрес, на который вы отправляете письма?

Тот же адрес, теперь работает после пересборки mail-receiver.

Думаю, я уже пересобирал это раньше, но не работало. Хорошо, что теперь всё в порядке.

Нужно ли мне дополнительно открыть порт 25 для корректной работы mail-receiver?

В данном случае под корректной работой подразумевается отображение входящих писем в логах .\launcher logs mail-receiver и их доступность в административном интерфейсе Discourse.

Да, порт 25 необходимо открыть. Это можно добавить в данное руководство как дополнительное правило.

Что ж, у меня не открыто 25 портов. Так что нет.

Но ufw status не так уж интересен. Вместо этого лучше использовать nft list ruleset.

Обновление: команда ufw deny 25 применена, и mail-receiver работает корректно (07/02/2025)

Могу подтвердить, что всё верно, хотя я допустил одну другую ошибку. Это уже мой второй форум с внедрением mail-receiver, и на первом я указал значение MX-записи домена, принимающего почту, в качестве параметра DISCOURSE_BASE_URL.

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

Примечание: такое представление о правильности могло возникнуть из-за того, что после изменения файла yml я не выполнил команду ./launcher rebuild mail-receiver (06/02/2015)

Предполагаю, что на панели фаервола Azure или VPS, например, не нужно разрешать порт 25 — так было до Ubuntu.

Поскольку значение MX-записи должно указывать на веб-сайт, а не на домен почты, это интересно.

В официальном руководстве указано, что порт 25 должен быть открыт:

У меня самого возникла проблема с получением почты, потому что я забыл открыть порт 25 в брандмауэре. Добавление правила решило проблему.

возможно, лучшим решением будет разрешить только соответствующий IP-адрес?

Давайте не будем говорить об этом моему почтовому получателю :wink:

Исходящая почта отправляется через Amazon SES. Входящая поступает по MX-записи на домен форума, и затем подключается Docker.

Причина этого — в Docker и особенностях его работы. Он просто игнорирует ufw. Если хотите получить подробное объяснение, подождите секунду — я однажды спрашивал, почему Discourse не учитывает мой фаервол, и ответ был связан с сетевым трафиком. Но глубоко разбираться в том, что происходит, — не совсем моё. Для меня достаточно, чтобы всё работало. И поверьте: в ufw открыты только порты 22, 80 и 443.

Полагаю, вы процитировали ситуацию, когда почтовый получатель также отвечает за отправку писем с помощью Postfix.