SMTP-Einrichtung funktioniert nicht mit GMail's smtp-relay

Obwohl ich glaube, dass der Fehler von @kvsf entweder bereits behoben wurde oder einige grundlegende Dinge in Ihrer Konfiguration geändert wurden, möchte ich diesen Thread fortsetzen, indem ich meine eigene Konfiguration, meinen weiteren Ansatz und meine Bitte um Hilfe im selben Problembereich poste.

Grundlegende Konfiguration

  • Google Workspace Business Starter
  • Gmail-Routing konfigurieren > SMTP-Relay mit i) nur registrierten Benutzern aus der Domäne, ii) IP-Whitelisting mit der IP meines Foren-Hosting-Servers und Erzwingung der SMTP-Authentifizierung, iii) Erzwingung von TLS
  • Discourse Docker-Installation gemäß Discourse-Dokumentation
  • app.yml-Konfiguration gemäß
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

Meine Tests

Beim Ausführen von ./discourse-doctor führt diese Konfiguration zu dem Fehler:

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

Ich habe dann zuerst die verschiedenen Discourse- und E-Mail-Protokolle überprüft.
Der manuelle Test desselben Prozesses von innerhalb von Docker (durch Verbindung mit docker exec -it <CONTAINER_ID> bash) über

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

tritt keine Probleme auf und funktioniert einwandfrei. Ich glaube daher, dass entweder meine Parameterkonfiguration in der app.yml seltsam ist ODER Discourse intern eine Skript-Fehlkommunikation hat ODER … so viele Möglichkeiten. ^^
Um nicht immer ./launcher rebuild app ausführen zu müssen, nachdem ich app.yml geändert habe, um verschiedene Einstellungen zu testen, habe ich begonnen, /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/mail-2.8.1/lib/mail/network/delivery_methods/smtp.rb direkt zu bearbeiten, indem ich den vorhandenen Code zu:

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

was zum gleichen Verhalten wie oben führt (bei den angepassten app.yml-Einstellungen).

Suche nach Hilfe

Und jetzt stecke ich fest. Natürlich könnte ich mehr mit den verbleibenden Einstellungen spielen (und könnte sogar wieder auf die ausschließliche Verwendung von SSL umsteigen, obwohl dies von Discourse als veraltet gilt), aber ich möchte:

  1. lernen, wie man dieses Problem tiefer und weiter analysiert
  2. dadurch verstehen, was wirklich vor sich geht und was das Problem ist
  3. es beheben und alles reibungslos nutzen können (+ endlich das Forum richtig zum Laufen bringen)

Vielen Dank im Voraus für Ihre Hilfe.