Configuración SMTP no funciona con smtp-relay de GMail

Aunque creo que el error de @kvsf ya está solucionado o que se han cambiado algunas cosas fundamentales en tu configuración, me gustaría continuar este hilo publicando mi propia configuración, mi enfoque adicional y mi búsqueda de ayuda dentro del mismo dominio de problemas.

Configuración Básica

  • Google Workspace Business Starter
  • Configurar Gmail-Routing > SMTP-Relay con i) solo usuarios registrados dentro del dominio, ii) lista blanca de IP con la IP de mi servidor de alojamiento de foros y forzar autenticación SMTP, iii) forzar TLS
  • Instalación de discourse docker según la documentación de discourse
  • Configuración de app.yml según
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

Mis Pruebas

Al ejecutar ./discourse-doctor, esta configuración genera el error

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

Primero revisé los diferentes registros de discourse y de correo electrónico
Probando manualmente el mismo proceso desde dentro de docker (conectando usando docker exec -it <CONTAINER_ID> bash) a través de

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

no presenta problemas y funciona bien. Así que creo que o mi configuración de parámetros en app.yml es extraña O discourse internamente tiene alguna mala comunicación de scripts O … tantas posibilidades. ^^
Para no tener que ejecutar siempre ./launcher rebuild app después de cambiar app.yml para probar diferentes configuraciones, comencé a editar directamente /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/mail-2.8.1/lib/mail/network/delivery_methods/smtp.rb cambiando el código existente a:

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

lo que lleva al mismo comportamiento que el anterior (dadas las configuraciones personalizadas de app.yml).

Búsqueda de ayuda

Y ahora estoy atascado. Por supuesto, podría jugar más con las configuraciones restantes (e incluso podría volver a usar SSL solamente, aunque esto está obsoleto por discourse), pero me gustaría:

  1. aprender cómo analizar este problema más profunda y extensamente
  2. comprender así qué está pasando realmente y cuál es el problema
  3. solucionarlo y poder usar todo sin problemas (+ finalmente poner en marcha el foro correctamente)

Gracias de antemano por tu ayuda.