Проблема с почтой в Discourse при использовании обратного прокси

Я настроил в моем app.yml отправку почты следующим образом:

  DISCOURSE_SMTP_ADDRESS: mail.mysecrect.tld
  DISCOURSE_SMTP_PORT: 465
  DISCOURSE_SMTP_USER_NAME: minegenix@mysecret.tld
  DISCOURSE_SMTP_PASSWORD: <секрет>

Также нашел это в логах:

fail
Доставка почты 3ff63fed-4142-4042-ab33-29493b32b3a6@beta2.mysecret.tld (30001.9 мс)
Исключение задачи: истекло время выполнения

Возможно, вам потребуется добавить это в ваш app.yml

DISCOURSE_SMTP_ENABLE_START_TLS: false

Ладно, кстати, я использую mailcow!

Запущен ли сервер с доменом beta2.mysecret.tld, а не mysecret.tld?

Попробуйте следующие параметры:

DISCOURSE_SMTP_ADDRESS: 172.17.0.1 # используйте внутренний IP здесь — домен почтового сервера может быть разрешён некорректно
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: "ВАШ-ПОЛЬЗОВАТЕЛЬ-SMTP"
DISCOURSE_SMTP_PASSWORD: "ВАШ-ПАРОЛЬ-SMTP"
#DISCOURSE_SMTP_ENABLE_START_TLS: true           # (необязательно, по умолчанию true)
DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none
DISCOURSE_SMTP_DOMAIN: mysecret.tld

mysecret.tld — это просто заглушка, скрывающая мой настоящий домен, так как я не хочу раскрывать адрес своего форума :slight_smile:

Вы отправляете письма с адреса отправителя вроде «…@ beta2. mysecret.tld», но ваш аккаунт в mailcow зарегистрирован на «…@mysecret.tld»?

Нет, я отправляю письма с адреса …@mysecret.tld, а сайт работает по адресу beta2.mysecret.tld

@Sprisa, добавь настройки, которые я опубликовал, и пересобери проект.

Посмотри, поможет ли это.

@rrit, ты упустил суть :man_facepalming:

да, я сейчас этим занимаюсь

Кстати, нужно ли запускать bootstrap каждый раз после пересборки?

Хорошо, я добавил настройки, но это не помогло.

Как отладить проблемы с первым подключением к SMTP-серверу

1. Войдите в ваш контейнер:

./launcher enter app

2. Проверьте разрешение DNS для имени вашего SMTP-сервера с помощью getent hosts:

(dig, nslookup, ping и т. д. не установлены внутри контейнера.)

getent hosts ваш.smtp.сервер

Результат при успехе:

# IPv4
123.123.123.123 ваш.smtp.сервер

# IPv6
2001:db8:0:0:0:ff00:42:8329 ваш.smtp.сервер

3. Попробуйте установить соединение с вашим SMTP-сервером через openssl:

(telnet, nc и т. д. не установлены внутри контейнера.)

Поэкспериментируйте с различными настройками, пока не добьётесь успешного подключения.

openssl s_client -connect ваш.smtp.сервер:465
openssl s_client -connect ваш.smtp.сервер:587 -starttls smtp

# IPv4
openssl s_client -connect 172.17.0.123:465
openssl s_client -connect 172.17.0.123:587 -starttls smtp

# IPv6
openssl s_client -6 -connect "[2001:db8:0:0:0:ff00:42:8329]:465"
openssl s_client -6 -connect "[2001:db8:0:0:0:ff00:42:8329]:587" -starttls smtp

См.: Как проверить SMTP-соединение → Шаг 3: Проверка SMTP-соединения через TLS с помощью OpenSSL

4. Используйте найденные рабочие настройки подключения в Discourse.

:rocket:

Бонус: показать IP-адрес Discourse изнутри Docker-контейнера

( ifconfig , ip и т. д. не установлены внутри контейнера.)

hostname -I

Результат, например:

172.17.0.2

Не удаётся установить соединение с openssl. Кроме того, при выполнении getent я получаю только следующее:

2606:4700:3032::ac43:d2f1 mail.secret.tdl
2606:4700:3033::6815:4db8 mail.secret.tld

(вместо моего реального домена указано secret.tld)

Предположим наугад: это публичный IP-адрес? Настроен ли ваш mailcow на прослушивание SMTP-подключений именно на этом публичном IP-адресе или только во внутренней сети?

Внутри контейнера Discourse вы можете получить IP-адрес контейнера с помощью команды:

hostname -I

Находится ли ваш mailcow в той же внутренней (docker-)сети?

172.17.0.2 — это то, что я получаю от команды hostname -I

Можете ли вы зайти в контейнер mailcow и выполнить команду hostname -I? Являются ли Mailcow и Discourse двумя отдельными контейнерами Docker на одном и том же хосте?

Как мне попасть в контейнер mailcow? Скрипта запуска нет.

Я тоже не знаю о mailcow. Возможно, лучше обратиться к сообществу mailcow: https://community.mailcow.email/

Что мне использовать для настройки почтовой системы или какое программное обеспечение я могу установить на Ubuntu, чтобы оно работало как почтовый сервис для моих форумов?