Последняя версия Discourse не отправляет email

Похоже, у меня возникла проблема с отправкой писем через SMTP в Discourse.

Я подтвердил имя хоста у моего провайдера почтовых услуг и успешно отправлял письма с помощью Telnet, а также через sendmail на виртуальной машине-хосте и внутри Docker-контейнера Discourse через Telnet.

Я попытался интегрировать sendmail внутри Docker-контейнера, но при отправке писем напрямую из CLI получил ошибку «не удалось разрешить имя хоста».

На мой взгляд, это означает, что проблем с коммуникацией между виртуальной машиной и провайдером SMTP-услуг нет.

Я перепробовал все стандартные порты SMTP и считаю, что конфигурация в файле app.yml верна. Виртуальная машина работает под управлением Linux 20.04; также проводились тесты на версиях 24.04 и 22.04.

Шифрование осуществляется с помощью сертификата Let’s Encrypt.

  DISCOURSE_SMTP_ADDRESS: <smtp_provider>
  DISCOURSE_SMTP_PORT:  <port>
  DISCOURSE_SMTP_AUTHENTICATION: login
  DISCOURSE_SMTP_USER_NAME: apikey
  DISCOURSE_SMTP_PASSWORD: "<secret>"
  DISCOURSE_SMTP_ENABLE_START_TLS: true

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

Проверьте ограничения вашего почтового провайдера. Иногда отправка не удаётся, когда исчерпан лимит. Попробуйте отправить письмо из Outlook. Со мной такое однажды случалось. Ваша проблема может быть иной, но этот совет всё же может быть полезен кому-то.

Если вы получаете сообщение «имя хоста не может быть разрешено», это означает, что имя хоста не разрешается, что является проблемой.

Работает ли команда rake emails:test[you@somewhere.com]? См. также Устранение неполадок электронной почты при новой установке Discourse

Спасибо за ответы. Я посмотрел в выходные. Я создал виртуальную машину на Digital Ocean и настроил SMTP с Brevo. Всё работало нормально. :slight_smile:

Значит, с Discourse всё в порядке.

Полагаю, Discourse использует Ruby GEM, например NET::smtp, для отправки почты, и по умолчанию внутри контейнера нет SMTP-сервера. Проблема, с которой мы столкнулись, возникает в арендаторе Azure.

Мне кажется, что запрос к внешнему SMTP-сервису где-то блокируется. Возможно, каким-то механизмом анти-спам, работающим поверх арендатора.

У меня есть ещё несколько тестов, которые нужно провести, чтобы сузить круг поиска.

Будет здорово получить любую информацию о том, как Discourse обеспечивает отправку писем :slight_smile: Я немного новичок в Ruby on Rails.

Но вы настроили SMTP так же, как на экземпляре Digital Ocean?

Что происходит при запуске задачи rake?

То же самое: нет подключения.

Я использую разные SMTP-шлюзы в каждом экземпляре.

Я провожу несколько тестов для проверки:

  • Установка Discourse через docker-compose локально
  • Установка Discourse в другом арендаторе Azure в рамках другой подписки
  • Проверка работы SMTP-шлюзов Brevo и SendGrid

Я обновлю пост после завершения этих тестов…

Нет соединения — значит, нет соединения. Довольно очевидно, что вы заблокированы фаерволом.

Попробуйте порт 2525? Или уточните у вашего провайдера (например, DigitalOcean), не блокируется ли желаемый порт.

@pfaffman Спасибо, что нашли время для этого. Как выяснилось, проблема была связана с DNS.

Всё теперь работает правильно :grinning: