Lokaler SMTP-Server kann keine E-Mails senden

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.

Ich würde eher vermuten, dass bei deinem Setup etwas nicht stimmt, als dass es sich um Fehler in Discourse handelt. :wink:

2 „Gefällt mir“

Verwenden Sie zufällig smtp-relay.gmail.com, vielleicht von DigitalOcean? Das scheint kürzlich gestört zu sein, und niemand weiß bisher genau, warum.

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 verwende einen lokalen SMTP-Server, der sich auf derselben Maschine wie der Discourse-Docker-Container befindet.

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

Was bedeutet dieser Fehler?

3 „Gefällt mir“

Es scheint, dass die oben genannte Fehlermeldung sich auf das SSL-Zertifikat des Servers bezieht.

Das SSL-Zertifikat auf dem Server ist korrekt und enthält den richtigen Hostnamen.

Es sieht so aus, als ob dies ein Fehler in Discourse ist, bei dem Discourse das SSL-Zertifikat des Servers nicht korrekt erkennen kann.

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.

Hier finden Sie einige hilfreiche Informationen: https://docs.pingidentity.com/bundle/solution-guides/page/iqs1569423823079.html

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.

Dieser Fehler betrifft nicht das Site-Zertifikat, sondern das Zertifikat Ihres SMTP-Dienstes.

2 „Gefällt mir“

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.

In der Realität ist es subdomain.domain.com und nicht mail.subdomain.domain.com.

Korrekte Werte:
DISCOURSE_SMTP_ADDRESS: forum.domain.com
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: postmaster@forum.domain.com
DISCOURSE_SMTP_PASSWORD: "password"
DISCOURSE_SMTP_ENABLE_START_TLS: true           # (optional, Standard: true)

Discourse gibt nicht klar an, was mit „Serverzertifikat

2 „Gefällt mir“

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.

Wie kann dieses Problem behoben werden?

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.

In den Exim4-Protokollen erscheint eine Fehlermeldung. Was bedeutet diese?

2021-01-21 00:39:39 H=(localhost.localdomain) [172.17.0.2] X=TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256 CV=no F=<noreply@forum.domain.com> A=dovecot_plain:postmaster@forum.domain.com rejected RCPT <admin@email.com>: Absenderverifizierung fehlgeschlagen