Релейный SMTP Google G Suite не работает

Здравствуйте! Я впервые пытаюсь установить Discourse на Linux VPS от DigitalOcean. Этот VPS работает с несколькими сайтами через Nginx, и я следовал руководству по установке Discourse на нескольких сайтах здесь: Run other websites on the same machine as Discourse - #182 by angus

Discourse установился и работал нормально. Но когда я создаю учётную запись администратора, я никогда не получаю письмо. Я следовал этому руководству: crunchify[dot]com/how-to-setup-email-for-discourse-forum-with-google-apps-smtp-relay-right-way/

Мой сервер использует postfix для пересылки писем через Google G Suite, и это работает нормально с WordPress и MyBB. Однако в приведённом выше руководстве не упоминается postfix, и я предполагаю, что оно предполагает прямое подключение к Google G Suite.

Я также следовал этому руководству по устранению проблем с электронной почтой: meta.discourse[dot]org/t/troubleshooting-email-on-a-new-discourse-install/16326

Я могу подключиться к SMTP-ретранслятору через telnet:

$ sudo telnet smtp-relay.gmail.com 587
Trying 2607:f8b0:400d:c04::1c...
Connected to smtp-relay.gmail.com.
Escape character is '^]'.
220 smtp-relay.gmail.com ESMTP n18sm708840ooi.26 - gsmtp

В продакшн-логе написано:

Rendering layouts/email_template.html.erb
  Rendered layouts/email_template.html.erb (Duration: 0.1ms | Allocations: 32)
Delivered mail cf23dab4-3e43-421e-8e54-228489c58874@forums.neuronootropic.org (610.1ms)
Job exception: end of file reached

  Rendering layouts/email_template.html.erb
  Rendered layouts/email_template.html.erb (Duration: 0.2ms | Allocations: 32)
Delivered mail a092f703-b590-4792-bd73-d9e4700c3e3c@forums.neuronootropic.org (261.1ms)
Job exception: end of file reached

Я попытался изменить адрес электронной почты в файле конфигурации app.yml на noreply@forums.neuronootropic.org, так как знаю, что этот адрес работает, но результат тот же. Письма всё ещё отправляются с такими номерами, я предполагаю, что это какой-то вид шифрования? Они никогда не попадают в мой почтовый ящик.


Моя другая проблема связана с nginx. Вчера всё работало нормально, но сегодня я экспериментировал с файлом конфигурации app.yml и изменил URL так, чтобы форум размещался в подкаталоге, а не в поддомене.

Я хотел проверить, не является ли поддомен причиной проблем с отправкой писем, так как мой текущий форум MyBB работает в подкаталоге и не имеет проблем с электронной почтой.

Это действие, похоже, сломало nginx. По какой-то причине nginx теперь пытается загрузить SSL-сертификат из директории Discourse, хотя в моём файле конфигурации nginx это не указано. Вот ошибка:

$ sudo nginx -t
nginx: [emerg] BIO_new_file("/var/discourse/shared/standalone/ssl/ssl.crt") failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/var/discourse/shared/standalone/ssl/ssl.crt','r') error:2006D080:BIO routines:BIO_new_file:no such file)
nginx: configuration file /etc/nginx/nginx.conf test failed

Я использую Let’s Encrypt для SSL-сертификата, и он работает нормально. У nginx не было проблем вчера до того, как я попытался запустить Discourse в подкаталоге вместо поддомена.

Буду благодарен за любую помощь.

На самом деле я не настраивал ретранслятор G-Suite для электронной почты, но кажется, что вам нужно добавить и подтвердить домен forum.neuronootropic.org в качестве отправляющего домена в вашей учетной записи администратора G-Suite. Если это так, то, исходя из документации Google, нет причин, по которым это не должно работать.

Однако, если у вас подтвержден домен neuronootr0pic.org в G-Suite, вы можете использовать, например, noreply_forum@neuronootropic.org для отправки электронной почты.

Спасибо за предложение.

Я вернулся и протестировал работу почты. Оказалось, что адрес noreply@forums.neuronootropic.org может только получать письма, но не отправлять их. Я настроил его как отдельный домен в G Suite и полагал, что MX-записи основного домена будут достаточны для обоих.

Однако это не так. Я добавил MX-записи для forums.neuronootropic.org, и теперь я могу отправлять и получать письма.

Тем не менее, Discourse всё ещё не отправляет письмо с активацией при регистрации администратора.

Есть какие-либо идеи?

Также я не понимаю, почему nginx пытается загрузить SSL-сертификат из директории Discourse, хотя я никогда этого не указывал. Есть ли какие-либо идеи, как подойти к решению этой проблемы?

Редактирование: Я изменил настройку «Уведомительный email» на отправку писем с основного домена вместо поддомена. Пересобрал Discourse, но он всё ещё отправляет письма с поддомена.

exec: rails r "SiteSetting.notification_email='noreply@neuronootropic.org'"

$ tail shared/standalone/log/rails/production.log
  Parameters: {"authenticity_token"=>"K6dxoAPvh8PEU6mLHjyFRhY/CcZFFIalhrX08AIh9EgGuOHrJos7i1w0dgdS7okeoSBTrmWJSsc77YpfTnMO4A=="}
  Rendering finish_installation/resend_email.html.erb within layouts/finish_installation
  Rendered finish_installation/resend_email.html.erb within layouts/finish_installation (Duration: 0.4ms | Allocations: 110)
  Rendered layouts/_head.html.erb (Duration: 0.4ms | Allocations: 145)
Completed 200 OK in 19ms (Views: 7.8ms | ActiveRecord: 0.0ms | Allocations: 3036)
  Rendering layouts/email_template.html.erb
  Rendered layouts/email_template.html.erb (Duration: 0.1ms | Allocations: 32)
Delivered mail bce41ef8-2288-42cd-b7ae-e1eb990a4646@forums.neuronootropic.org (705.1ms)
Job exception: end of file reached

Я исправил проблему с nginx. Оказалось, что в директории sites-enabled остался файл конфигурации nginx. Не понимаю, как он там оказался, поскольку я связываю файлы из sites-available с sites-enabled и не работаю напрямую с директорией sites-enabled.

Проблема с ретранслятором SMTP G Suite остаётся нерешённой. Не понимаю, почему. В продакшн-логе Discourse ошибок не зафиксировано.

Discourse doctor:

==================== ТЕСТ ПИСЕМ ====================
Для надёжного теста получите адрес на http://www.mail-tester.com/
Или просто отправьте тестовое письмо самому себе.
Адрес электронной почты для теста? ('n' чтобы пропустить) [forums@neuronootropic.org]: forums@neuronootropic.org
Отправка письма на forums@neuronootropic.org... . .
Тестирование отправки на forums@neuronootropic.org через smtp-relay.gmail.com:587.
======================================== ОШИБКА ========================================
                                    НЕОЖИДАННАЯ ОШИБКА

достигнут конец файла

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

Пожалуйста, сообщите точное сообщение об ошибке выше на https://meta.discourse.org/
(И решение, если вы его найдёте!)
=======================================================================================

Что это означает?

Я, э-э… забыл нажать «Сохранить» при настройке ретранслятора в G Suite, ха-ха

Теперь почта работает. :slight_smile: