Ich habe den SMTP-Server mit Telnet getestet:
Telnet hat eine Verbindung zum SMTP-Server hergestellt.
Telnet hat es ermöglicht, sich am SMTP-Server zu authentifizieren.
Telnet hat es ermöglicht, eine E-Mail erfolgreich über den SMTP-Server zu versenden. Dabei habe ich exakt dieselben Werte verwendet, die auch in der Datei /var/discourse/containers/app.yaml enthalten sind.
Discourse Doctor bescheinigt, dass Discourse erfolgreich eine Verbindung zum SMTP-Server hergestellt hat.
Discourse Doctor meldet jedoch, dass Discourse gescheitert ist, die Test-E-Mail zu versenden.
Daher enthält Discourse Fehler, die das Versenden von E-Mails verhindern.
Nein. Der SMTP-Server funktioniert einwandfrei, wie bereits beschrieben, und Discourse ist ordnungsgemäß installiert und zeigt den Bildschirm zur Eingabe der Admin-Registrierungs-E-Mail korrekt an. Diese E-Mail wird jedoch nicht versendet.
Ich habe einen Fehler in /var/discourse/shared/standalone/log/rails/production.log gefunden:
Rendering layouts/email_template.html.erb
Rendered layouts/email_template.html.erb (Duration: 0.1ms | Allocations: 32)
Delivered mail f915c15e-9c4d-4d4e-9527-81bc4984540c@forum.domain.com (63.7ms)
Job exception: hostname "mail.forum.domain.com" does not match the server certificate
Das klingt nicht nach einem Fehler in Discourse. Es scheint ein Problem mit der Konfiguration des DNS-Resolvers des Hosts oder dem SSL-Zertifikat zu sein.
Da Telnet kein SSL verwendet, ist das wohl der Grund, warum es bei Ihnen funktioniert hat. Unter Linux können Sie möglicherweise mit OpenSSL etwas weiter kommen, um die Verbindung zu testen und die Zertifikate zu untersuchen.
Das HTTPS auf der Website funktioniert, da das grüne Vorhängeschloss in der Adressleiste angezeigt wird. Mit dem SSL-Zertifikat der Website ist alles in Ordnung. Das Problem liegt in der Art und Weise, wie Discourse das SSL-Zertifikat erkennt.
Das SMTP-Dienstezertifikat ist lediglich das SSL-Zertifikat des Servers, nicht das SSL-Zertifikat der Website. Das Server-SSL-Zertifikat ist korrekt und funktioniert.
Bei der Einrichtung eines lokalen SMTP-Servers auf derselben Maschine wie der Discourse-Container gibt Discourse keine exakten korrekten Werte für die SMTP-Einstellungen in app.yml vor. Dies führt zu erheblicher Verwirrung und Fehlern.
In den app.yml-Einstellungen gibt Discourse nicht klar an, was unter DISCOURSE_SMTP_ADDRESS zu verstehen ist.
Jetzt meldet Discourse Doctor, dass die E-Mail gesendet wurde:
E-Mail wird an admin@email.com gesendet...
Senden an admin@email.com über forum.domain.com:587 wird getestet.
SMTP-Server-Verbindung erfolgreich.
Senden an admin@email.com...
E-Mail vom SMTP-Server akzeptiert.
Allerdings befindet sich keine E-Mail im Posteingang oder im Spam-Ordner des Empfängers.
Schauen Sie sich die Protokolle Ihres lokalen SMTP-Servers an. Wenn Discourse die E-Mail ordnungsgemäß an den SMTP-Server übermittelt hat, liegt sie nicht mehr in der Verantwortung von Discourse.