Проблема с письмами администратора при регистрации

Итак, я занимаюсь этим уже около 6 часов и решил наконец обратиться за помощью.
Я настроил Discourse на сервере, запустил контейнер и попытался зарегистрировать первую учетную запись администратора.
Проблема: письмо для регистрации не приходит.

Что я уже сделал:

  • Убедился, что SMTP правильно настроен в параметрах, и использовал онлайн-инструмент для проверки SMTP Test Tool, чтобы подтвердить работоспособность этих настроек — всё работает (проверял через этот сайт).
  DISCOURSE_SMTP_ADDRESS: MY_SMTP_HOST
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: MY_SMTP_USERNAME
  DISCOURSE_SMTP_PASSWORD: MY_SMTP_PASSWORD
  DISCOURSE_SMTP_ENABLE_START_TLS: true           # (опционально, по умолчанию true)
  • Убедился, что для первоначальной настройки учётных записей администраторов настроен только один адрес электронной почты.

  • Проверил, что SSL действительно работает (работает!).

  • Дважды выполнил чистую переустановку Ubuntu и следовал руководству по настройке, опубликованному в интернете.

  • Проверил, что нет сетевых брандмауэров, блокирующих исходящий или входящий трафик.

  • Удалось успешно выполнить telnet-подключение к SMTP-серверу с сервера, на котором размещён Discourse.

  • Также правильно настроил дополнительный параметр:
    - exec: rails r "SiteSetting.notification_email='noreply@MY_WEB_SITE'"
    в конце файла app.yml.

Не знаю, что ещё можно попробовать. Спасибо.

Если вы запускаете discourse-doctor, выдаёт ли он какую-либо очевидную ошибку?

cd /var/discourse
./discourse-doctor

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


==================== ТЕСТ ПОЧТЫ ====================
Для надежного теста получите адрес на http://www.mail-tester.com/
Или просто отправьте тестовое сообщение самому себе.
Адрес электронной почты для теста? ('n' чтобы пропустить) [MY_EMAIL]:
Отправка письма на MY_EMAIL. . .
Тестирование отправки на MY_EMAIL через smtp.MY_SMTP:587.
Соединение с SMTP-сервером успешно.
Отправка на MY_EMAIL. . .
Отправка письма не удалась.
Замена: SMTP_PASSWORD
Замена: LETSENCRYPT_ACCOUNT_EMAIL
Замена: DEVELOPER_EMAILS
Замена: DISCOURSE_DB_PASSWORD
Замена: Отправка письма на

==================== ГОТОВО! ====================
Хотите предоставить общедоступную версию этого файла? (Y/n)

Я заметил, что по какой-то причине выводится Отправка письма не удалась., хотя Соединение с SMTP-сервером было успешным.

Если ваш пароль каким-то образом содержит специальные символы, пробовали ли вы заключить пароль в кавычки?

Ранее оно было заключено в кавычки, но я следовал руководству из интернета, где кавычек не было. Попробую снова с двойными кавычками ".

Сейчас идёт пересборка.

Хорошо, всё снова работает. Одна минута.

Та же ошибка:


==================== ТЕСТ ПОЧТЫ ====================
Для надёжного теста получите адрес на http://www.mail-tester.com/
Или просто отправьте тестовое сообщение себе.
Адрес электронной почты для теста? ('n' чтобы пропустить) [MY_EMAIL]: MY_EMAIL
Отправка письма на MY_EMAIL. . .
Проверка отправки на MY_EMAIL через MY_SMTP_SERVER:587.
Подключение к SMTP-серверу успешно.
Отправка на MY_EMAIL. . .
Отправка письма не удалась.
Замена: SMTP_PASSWORD
Замена: LETSENCRYPT_ACCOUNT_EMAIL
Замена: DEVELOPER_EMAILS
Замена: DISCOURSE_DB_PASSWORD
Замена: Отправка письма на

==================== ГОТОВО! ====================
Хотите сделать эту публично доступную версию файла доступной? (Y/n)n
Публичный лог не сгенерирован.

Вы можете просмотреть вывод этого скрипта с помощью команды:
LESS=-Ri less /tmp/discourse-debug.txt

НО СНАЧАЛА убедитесь, что вы знаете первые три команды ниже!!!

Команды, которые нужно знать при просмотре файла с помощью вышеуказанной команды (называемой 'less'):
q              -- выход
/error<ENTER>  -- поиск слова 'error'
n              -- поиск следующего вхождения
g              -- перейти в начало файла
f              -- перейти на страницу вперёд
b              -- перейти на страницу назад
G              -- перейти в конец файла

Попробовал со стандартным паролем без спецсимволов, с кавычками и без них — результат остался прежним.

Отправка почты не удалась.

Я бы предложил вам попробовать настроить Mailgun.

Я попробую это сейчас. Спасибо.

Прежде чем попробовать это, я воспользуюсь ссылкой Discourse app.yml doesn't like email password contain "#" - #15 by elijah и добавлю к паролю двойные кавычки, а затем в конце концов установлю пароль без специальных символов.

Если это не сработает, я настрою Mailgun (как крайнюю меру, так как на моем текущем почтовом сервере хранится много писем).

ПРОГРЕСС! После двойного кавычирования пароля таким образом "'mypass'" появилось новое сообщение об ошибке

==================== ТЕСТ ПОЧТЫ ====================
Для надежного теста получите адрес на http://www.mail-tester.com/
Или просто отправьте тестовое сообщение себе.
Адрес электронной почты для теста почты? ('n' для пропуска) [sender_email]: my_email
Отправка письма на my_email... . .
Тестирование отправки на my_email с использованием my_smtp:587.
======================================== ОШИБКА ========================================
                                    НЕОЖИДАННАЯ ОШИБКА

Запрошена SMTP-AUTH, но отсутствует секретная фраза

====================================== РЕШЕНИЕ =======================================
Это нечастая ошибка. Нет рекомендованного решения!

Пожалуйста, сообщите точное сообщение об ошибке выше на https://meta.discourse.org/
(И решение, если вы его найдете!)
=======================================================================================
Замена: SMTP_PASSWORD
Замена: LETSENCRYPT_ACCOUNT_EMAIL
Замена: DEVELOPER_EMAILS
Замена: DISCOURSE_DB_PASSWORD
Замена: Отправка письма на

==================== ГОТОВО! ====================
Хотите опубликовать общедоступную версию этого файла? (Y/n)

Ручная отправка письма через telnet, похоже, работает, но при использовании email-функций Discourse что-то не так.

в production.log я нашёл это, может ли это быть причиной?


Ошибка подключения к Redis на localhost:6379 (Errno::EADDRNOTAVAIL) подписка не удалась, повторная попытка через 1 секунду. Стек вызовов ["/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.3/lib/redis/client.rb:362$
Исключение задачи: Ошибка подключения к Redis на localhost:6379 (Errno::EADDRNOTAVAIL)

Исключение задачи: Ошибка подключения к Redis на localhost:6379 (Errno::EADDRNOTAVAIL)

Исключение задачи: Ошибка подключения к Redis на localhost:6379 (Errno::EADDRNOTAVAIL)

Исключение задачи: Ошибка подключения к Redis на localhost:6379 (Errno::EADDRNOTAVAIL)

Исключение задачи: Ошибка подключения к Redis на localhost:6379 (Errno::EADDRNOTAVAIL)

Ошибка подключения к Redis на localhost:6379 (Errno::EADDRNOTAVAIL) подписка не удалась, повторная попытка через 1 секунду. Стек вызовов ["/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.3/lib/redis/client.rb:362$
Исключение задачи: Ошибка подключения к Redis на localhost:6379 (Errno::EADDRNOTAVAIL)

Ошибка подключения к Redis на localhost:6379 (Errno::EADDRNOTAVAIL) подписка не удалась, повторная попытка через 1 секунду. Стек вызовов ["/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.3/lib/redis/client.rb:362$
Исключение задачи: Ошибка подключения к Redis на localhost:6379 (Errno::EADDRNOTAVAIL)

Дальнейшее расследование выявило Исключение задачи: SSL_connect returned=1 errno=0 state=error: dh key too small, похоже, что у SSL почтового сервера возникли проблемы. Время Mailgun.