Итак, я занимаюсь этим уже около 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.