Настройка SMTP не работает с smtp-relay от GMail

Хотя я считаю, что ошибка @kvsf уже исправлена или в вашей конфигурации были внесены какие-то фундаментальные изменения, я хотел бы продолжить эту тему, опубликовав свою собственную конфигурацию, свои дальнейшие шаги и свой поиск помощи в той же проблемной области.

Базовая конфигурация

  • Google Workspace Business Starter
  • Настройка маршрутизации Gmail > SMTP-релей с: i) только зарегистрированными пользователями из домена, ii) белым списком IP-адресов с IP-адресом сервера хостинга форума и принудительной аутентификацией SMTP, iii) принудительным использованием TLS
  • Установка Discourse через Docker согласно документации Discourse
  • Конфигурация app.yml согласно:
expose:
  - "80:80"   # http
  - "443:443" # https

env:
  DISCOURSE_HOSTNAME: "forum.mydomain.com"
  DISCOURSE_DEVELOPER_EMAILS: 'dev@mydomain.com'

  DISCOURSE_SMTP_ADDRESS: "smtp-relay.gmail.com"
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: "user@mydomain.com"
  DISCOURSE_SMTP_PASSWORD: "mypass"
  DISCOURSE_SMTP_ENABLE_START_TLS: true 
  DISCOURSE_SMTP_AUTHENTICATION: login
  DISCOURSE_SMTP_OPEN_TIMEOUT: 25
  DISCOURSE_SMTP_READ_TIMEOUT: 25
  DISCOURSE_SMTP_DOMAIN: "mydomain.com"
  DISCOURSE_NOTIFICATION_EMAIL: "noreply@mydomain.com"
  LETSENCRYPT_ACCOUNT_EMAIL: dev@mydomain.com

Мои тесты

При запуске ./discourse-doctor эта конфигурация приводит к ошибке:

Testing sending to ...
SMTP server connection successful.
Sending to artificial.testadress@gmail.com. . .
Sending mail failed.
end of file reached

Затем я сначала проверил различные журналы Discourse и электронной почты
Ручное тестирование того же процесса внутри Docker (подключившись с помощью docker exec -it <CONTAINER_ID> bash) через

openssl s_client -starttls smtp -crlf -connect smtp.gmail.com:587

не вызывает проблем и работает нормально. Поэтому я считаю, что либо мои параметры конфигурации в app.yml странные, либо внутри Discourse есть какая-то нестыковка в скриптах, либо… так много возможностей. ^^
Чтобы не выполнять ./launcher rebuild app каждый раз после изменения app.yml для проверки различных настроек, я начал напрямую редактировать /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/mail-2.8.1/lib/mail/network/delivery_methods/smtp.rb, изменив существующий код на:

class SMTP
  attr_accessor :settings

  DEFAULTS = {
    :address              => 'smtp-relay.gmail.com',
    :port                 => 587,
    :domain               => 'mydomain.com',
    :user_name            => 'user@mydomain.com',
    :password             => 'mypass',
    :authentication       => 'login',
    :enable_starttls      => nil,
    :enable_starttls_auto => true,
    :openssl_verify_mode  => 'peer',
    :ssl                  => nil,
    :tls                  => nil,
    :open_timeout         => 25,
    :read_timeout         => 25
  }

  def initialize(values)
    self.settings = DEFAULTS #.merge(values)
  end

что приводит к тому же поведению, что и выше (с учетом настроенных параметров app.yml).

Поиск помощи

И теперь я застрял. Конечно, я мог бы поэкспериментировать с оставшимися настройками (и даже вернуться к использованию только SSL, хотя это устарело в Discourse), но я хотел бы:

  1. научиться глубже и детальнее анализировать эту проблему
  2. понять, что на самом деле происходит и в чём заключается проблема
  3. исправить это и использовать всё гладко (+наконец-то запустить форум корректно)

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