Ниже приведён отчёт, подготовленный для меня ChatGPT на основе моего реального опыта установки Discourse (я не очень разбираюсь в технологиях, поэтому полагался на помощь ИИ в выполнении сложных задач). В данный момент мне не нужна помощь, но я надеюсь, что этот отчёт может стать полезной обратной связью по поводу версии 3.5.0.beta2-dev.
==================
Уважаемая команда Discourse,
Я хочу поделиться некоторыми деталями устранения неполадок, связанных с электронной почтой, с которыми я столкнулся при работе с Discourse 3.5.0.beta2-dev. Мне не требуется прямая помощь, так как я решил вернуться к версии 3.4.0.beta4-dev, но надеюсь, что этот отчёт поможет выявить потенциальные проблемы в последней версии разработки.
1. Краткое описание проблемы
Я выполнил чистую установку Discourse на новом экземпляре Vultr, используя SMTP-сервис 20i (smtp.stackmail.com). Однако письма никогда не доставлялись, несмотря на:
- Успешный тест подключения к SMTP (
openssl s_client -connect smtp.stackmail.com:587 -starttls smtp). - Отсутствие ошибок в почтовых логах 20i (что указывает на то, что Discourse фактически не отправлял письма).
- Сбои Sidekiq при обработке задач по отправке почты.
Это было неожиданно, поскольку несколько недель назад я успешно установил Discourse 3.4.0.beta4-dev на идентичный экземпляр без каких-либо проблем с почтой.
После тщательной отладки я обнаружил, что моя текущая установка неожиданно использовала Discourse 3.5.0.beta2-dev, что, вероятно, и стало причиной проблем.
2. Выявленные ключевые проблемы
A. Письма не доставлялись
- Настройки SMTP были правильными, что подтверждено ручным тестированием (тесты
swaksиopensslпрошли успешно). - Письма помещались в очередь Sidekiq, но никогда не доставлялись.
- Почтовые логи 20i не показывали ни отказов, ни попыток доставки (что говорит о том, что сообщения никогда не покидали Discourse).
- В
production.logне было ошибок, связанных с почтой (командаgrep "smtp"ничего не вернула).
B. Проблемы с Sidekiq и Redis
- Изначально Sidekiq не работал (
Sidekiq::Workers.new.sizeвозвращал0). - Ручная перезагрузка Sidekiq (
sv restart sidekiq) не удалась, так как Sidekiq отсутствовал как служба. - Redis работал (
redis-cli pingвозвращалPONG), но логи Discourse всё ещё показывали ошибки подключения к Redis (Errno::ECONNREFUSED). - Логи Sidekiq указывали на сбои задач из-за проблем с подключением к Redis, хотя Redis, как было подтверждено, был активен.
- Ручный запуск Sidekiq (
bundle exec sidekiq) позволил обрабатывать задачи, но письма всё равно не отправлялись.
C. Несоответствие версий между установками
- Моя предыдущая установка (которая работала) была на версии 3.4.0.beta4-dev.
- Моя текущая установка неожиданно использовала версию 3.5.0.beta2-dev, несмотря на использование того же метода настройки.
- Поскольку почта работала идеально в 3.4.0.beta4-dev, я подозреваю регрессию или разрушительное изменение в версии 3.5.
3. Предпринятые действия (все не увенчались успехом)
Мы последовательно попробовали следующие решения:
Подтвердили подключение к SMTP с помощью:
openssl s_client -connect smtp.stackmail.com:587 -starttls smtp # Успешно
swaks --to my-email --server smtp.stackmail.com --port 587 --auth LOGIN # Успешно
Проверили, что письма помещались в очередь:
Jobs.enqueue(:user_email, type: :test_message, to_address: 'masden@kumagaku.ac.jp') # Вернул ID задачи
Sidekiq::Queue.new("default").size # Вернул 0 (что означает, что задача была обработана)
Проверили логи Discourse:
grep "smtp" /shared/log/rails/production.log # Ошибок, связанных с SMTP, не найдено
- Сбои подключения к Redis (
Errno::ECONNREFUSEDвproduction.log).
Перезапустили и вручную запустили службы:
sv restart sidekiq # Не удалось, служба отсутствует
redis-cli ping # Подтверждено, что работает
bundle exec sidekiq # Задачи обрабатывались, но письма не отправлялись
Проверили, не блокирует ли 20i письма:
- В почтовых логах 20i не было отказов или попыток доставки.
- Если бы письма отклонялись, в логах должна была бы быть запись, но ничего не появилось.
4. Вывод: Откат к версии 3.4.0.beta4-dev
После тщательной отладки я решил полностью удалить установку и переустановить версию 3.4.0.beta4-dev, поскольку моя предыдущая установка на этой версии работала безупречно.
Хотя мне не требуется прямая помощь, я хотел сообщить об этих проблемах, потому что:
- Обработка почты могла измениться в версии 3.5, что препятствует передаче SMTP.
- Отсутствие службы Sidekiq и ошибки Redis указывают на проблемы с обработкой фоновых задач в версии 3.5.
- Поскольку я смог установить 3.4.0.beta4-dev без проблем, это говорит о возможной регрессии в версии 3.5.
Я надеюсь, что этот отчёт поможет выявить потенциальные проблемы в Discourse 3.5.0.beta2-dev.
С уважением,
Кирк

