Введение в разработку для отправки уведомлений по электронной почте через Gmail

Здравствуйте,

Я новичок в Ruby и Docker, но имею опыт разработки в других областях. У меня уже работают экземпляры Discourse: один для разработки, другой для продакшена, так что зависимости, похоже, выполнены. Я хотел бы добавить функциональность OAuth 2.0 для no-reply@discourse.example.com, чтобы отправлять уведомления через учётную запись Google Workspace.

Прошу вашей помощи в следующем:

  • Как создать образ Docker из репозитория Discourse на Git?
  • В какой части кода реализована аутентификация SMTP для no-reply и отправка уведомлений?

Если всё получится, я хотел бы сделать эту возможность выбираемой в скрипте ./discourse-setup, чтобы веб-мастер мог настроить OAuth 2.0 для большинства почтовых провайдеров, а в случае с Google — автоматически использовать OAuth 2.0. Если это будет полезно, я могу отправить результат на рецензию.

С уважением

Вам, вероятно, стоит прочитать это здесь:

Настоятельно рекомендуем использовать стандартную установку.

Спасибо за быстрый ответ. Я бы использовал скрипт ./discourse-setup, однако мне нужно настроить Discourse как OAuth-клиент, а не как SMTP-клиент, поэтому сначала мне нужно добавить изменения в исходный код. Я не могу найти исходный код Discourse в репозитории discourse_docker. Как я могу изменить исходный код Discourse, а затем запустить скрипт ./discourse-setup? Если вы не рекомендуете использовать ./launcher, я готов отказаться от этого варианта.

В настоящее время у меня есть репозитории discourse и discourse_docker.

Это было бы что-то вроде подтягивания локального репозитория к скрипту запуска/настройки Discourse вместо upstream-репозитория?

Вы имеете в виду SMTP с аутентификацией OAuth вместо базовой аутентификации? Или вы ищете способ отправки почты через другой канал?

Discourse не поддерживает аутентификацию SMTP через OAuth, поэтому самый простой подход — настроить Discourse так, чтобы он передавал электронную почту локальному почтовому серверу, который настроен на отправку писем с необходимой аутентификацией.

Поддерживаемый Google механизм для этого выглядит так:

Я имею в виду, что в моём случае Discourse должен подключаться к почтовому провайдеру через OAuth 2, а не через SMTP. К сожалению, я обнаружил, что мои письма, скорее всего, попадают в спам, если не использовать крупного почтового провайдера, поэтому я решил добавить аутентификацию OAuth 2 для учётной записи no-reply, используемой Discourse, и подключиться к Google Workspace. Я также пробовал Mailgun, однако мне потребовалась бы поддержка IMAP (для других учётных записей пользователей, а не для no-reply). У меня есть время, я могу поиграть с этим, мне нужна лишь небольшая помощь на старте :slight_smile: (и, возможно, ещё позже).

Правильнее было бы сформулировать так:

Я хочу, чтобы Discourse аутентифицировался на SMTP-сервере с помощью OAuth2 вместо базовой аутентификации

Это для ответов пользователей / входящей почты?

Я знаю, что для этого существует плагин Mailgun, хотя сам я его не использовал.

Да, именно это я и хочу :slight_smile: Я уже подписался на Google Workspace и хотел бы использовать его по максимуму.

Google Workspace не предназначен для транзакционной рассылки. Вам потребуется использовать другое решение.

Если вы хотите, чтобы ваш форум мог получать письма, ознакомьтесь с инструкцией Настройка входящей почты с прямой доставкой для самохостинговых сайтов с помощью Mail-Receiver

Обычно вы настраиваете какой-либо сервис транзакционной почты для отправки с адреса noreply@forum.example.com, а Mail-Receiver получает отправленные ему письма и передаёт их в Discourse.

Спасибо большое, я сейчас пробую.