E-Mail funktioniert überhaupt nicht

Hallo! In den letzten paar Tagen habe ich große Schwierigkeiten gehabt, ein Discourse-Forum einzurichten, und all diese Probleme kamen von der E-Mail-Konfiguration. Ich konnte das Forum zwar hochfahren, indem ich die E-Mail-Anmeldung übersprungen habe, aber ich brauche sie trotzdem funktionsfähig, damit sich auch andere Benutzer anmelden können. Immer wieder erhalte ich dieselben Ergebnisse, und ich habe viele verschiedene Dinge ausprobiert, doch nichts scheint zu funktionieren. Jedes Mal passiert eines von zwei Dingen:

  1. Der Test-E-Mail-Fehler meldet: „Hostname . . . stimmt nicht mit dem Serverzertifikat überein“.
  2. Der Test-E-Mail-Fehler meldet: „502“, und in Sidekiq erscheint der Fehler Jobs::HandledExceptionWrapper: Wrapped Net::ReadTimeout: Net::ReadTimeout with #<TCPSocket:(closed)>.

Wann tritt jeweils welcher Fehler auf? Nun, Fehler Nummer 1 taucht in jedem einzelnen Szenario auf. Fehler Nummer 2 hingegen trat auf, als ich Port 465 verwendete. Es dauerte eine Weile, bis „ein Test-E-Mail gesendet“ wurde, und dann erschien dieser Fehler. Gerade eben habe ich SSL deaktiviert, sodass Port 587 nutzbar ist, aber statt Fehler 1 oder 2 bleibt es einfach bei „Test-E-Mail wird gesendet“ hängen.

Ich weiß im Moment nicht weiter und kämpfe seit einigen Tagen mit diesem Problem, ohne eine Lösung gefunden zu haben. Jegliche Hilfe wäre sehr willkommen. Vielen Dank für Ihre Zeit und Unterstützung.

UPDATE: Mit dem Befehl curl --ssl-reqd habe ich die Ports 465, 587, 25 und 2525 getestet. Die Ergebnisse waren:
25: Funktioniert nicht (Curl-Fehler 35, falsche Versionsnummer)
465: Funktioniert wie vorgesehen, schnelle E-Mail-Antwort
587: Funktioniert nicht (Curl-Fehler 35, falsche Versionsnummer)
2525: Kein Fehler, aber es wurde keine E-Mail gesendet (die Zeit lief hoch, ohne dass eine E-Mail versendet wurde)

Falls es hilft, hier sind meine aktuellen Einstellungen (mit dem 502-Fehler):

  DISCOURSE_SMTP_ADDRESS: CENSORED
  DISCOURSE_SMTP_PORT: 465
  DISCOURSE_SMTP_USER_NAME: CENSORED
  DISCOURSE_SMTP_PASSWORD: CENSORED
  # DISCOURSE_SMTP_ENABLE_START_TLS: true           # (optional, Standard: true)

Vorlagen:

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
## Diese beiden Zeilen auskommentieren, wenn Sie Lets Encrypt (https) hinzufügen möchten
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"

Und expose:

expose:
  - "80:80"   # http
  - "443:443" # https

Dies ist ein Bild mit den E-Mail-Informationen:

Verwendest du einen der empfohlenen E-Mail-Anbieter?

Wo ist der Discourse-Server installiert?

Das glaube ich nicht. Die E-Mail wird von VoltHosting bereitgestellt, falls das hilft.

Außerdem ist der Discourse-Server unter var/discourse installiert und funktioniert (ich kann die Website besuchen und mit einem Admin-Account, den ich erstellt habe (indem ich die E-Mail-Verifizierung übersprungen habe), durchsuchen. Genau so teste ich auch E-Mails (indem ich versuche, Test-E-Mails sowohl unter E-Mail > Einstellungen als auch unter E-Mail > Vorschau-Zusammenfassung zu senden, wo ich diese Fehler erhalte). Vielen Dank trotzdem für die Hilfe.

Versuchen Sie es mit einem der empfohlenen Anbieter. Das hilft Ihnen schnell herauszufinden, ob das Problem bei Ihrer Discourse-Installation oder beim Mailserver liegt, mit dem Sie kommunizieren möchten.

Die Liste der empfohlenen Anbieter existiert, weil sie als mit Discourse kompatibel validiert wurden. SMTP kann selbst unter den besten Umständen mühsam sein, und es wird allgemein davon ausgegangen, dass Sie, wenn Sie nicht die empfohlene Konfiguration verwenden, die zusätzlichen technischen Herausforderungen in Kauf nehmen.

1 „Gefällt mir“

Vielen Dank für die Antwort. Ich glaube nicht, dass ich einen der empfohlenen Anbieter nutzen kann, da die Person, die den Plan erstellt hat, bereits weitere E-Mails bei diesem Unternehmen hat. Das würde zusätzliche Kosten über die des VPS selbst hinaus verursachen, und ich denke nicht, dass dies im Moment möglich wäre. Gibt es vielleicht eine andere Möglichkeit, die E-Mail-Dienste effizienter zu testen, ohne das Forum jedes Mal neu aufbauen zu müssen? Vielen Dank für Ihre Hilfe.

Sie müssen nicht neu aufbauen, um Ihre E-Mail-Einstellungen zu ändern. Führen Sie stattdessen Folgendes aus:

./launcher destroy app
./launcher start app

Nachdem Sie die E-Mail-Einstellungen bearbeitet haben, werden die neuen Einstellungen übernommen. Das Gleiche gilt für alle Umgebungsvariablen.

Wenn der Serverzertifikat nicht mit dem Hostnamen übereinstimmt, wenden Sie sich zur Unterstützung an VoltHosting. Dies ist kein Problem von Discourse, sondern etwas, das von ihnen behoben werden muss. Es könnte auch eine alternative, gültige Hostname-Option geben, die Sie verwenden können.

In jedem Fall empfehle ich, eine der kostenlosen Testversionen auf der oben verlinkten Seite zu nutzen, um nachzuweisen, dass Discourse selbst die E-Mail-Kommunikation korrekt verarbeitet. Sobald Sie bestätigt haben, dass Discourse einwandfrei funktioniert, können Sie jederzeit wieder zu VoltHosting SMTP wechseln.

Nur zur Sicherheit: Wurde die Instanz gemäß diesem Leitfaden installiert, korrekt?

1 „Gefällt mir“

Vielen Dank. Das werde ich in Zukunft sicherlich nutzen, aber ich suche weiterhin nach einer möglichen Lösung. Falls es hilft, hier ist ein Screenshot des Sidekiq-Fehlers:

image

Ich könnte natürlich die kostenlosen Testversionen nutzen, aber schließlich ist es eine kostenlose Testversion und hat einige Einschränkungen. Ja, ich habe den offiziellen Leitfaden zur Installation des Discourse-Forums befolgt. Es läuft, aber die E-Mails funktionieren einfach nicht. Vielen Dank für die Hilfe.

An diesem Punkt sind Ihre Optionen wirklich, entweder einen empfohlenen Anbieter zu testen oder sich an VoltHosting zu wenden. Die Fehler deuten darauf hin, dass das vom SMTP-Server präsentierte Zertifikat für den verwendeten Hostnamen nicht gültig ist.

Es sei denn, Sie können durch Tests mit einem der empfohlenen Dienste das Gegenteil beweisen, ist es sehr unwahrscheinlich, dass dieses Problem mit Ihrer Discourse-Installation zusammenhängt.

Dieser Timeout-Fehler deutet darauf hin, dass Sie keine Verbindung zu Ihrem Mailserver herstellen können. Entweder blockiert Digital Ocean den Zugriff oder etwas anderes tut dies.

Sie sollten in der Lage sein, den folgenden Befehl auszuführen:

telnet server.hostname server-port

Wahrscheinlich benötigen Sie die Hilfe der Person, die den Mailserver eingerichtet oder verwaltet.

1 „Gefällt mir“

Vielen Dank für die Antwort. Ich habe den Befehl gerade ausgeführt. Hier sind die Ergebnisse:


Ich bin mir nicht sicher, ob AUTH LOGIN hier erlaubt sein sollte oder nicht. Wenn ja, gehe ich davon aus, dass das das Problem ist, richtig? Vielen Dank für die Hilfe.

Hmm. Nun, es lag nicht auf der Serverebene. Meine nächste Vermutung ist ein Problem mit dem Docker-Netzwerk. Aber es könnte auch etwas anderes sein.

Vielen Dank für die Antwort. Wenn es möglich ist, wie könnte ich das weiter untersuchen? Gibt es einen Docker-Befehl, den ich ausführen kann, um es zu testen und die Ausgabe zu sehen, oder etwas anderes? Gibt es eine Möglichkeit, es irgendwo zu testen, damit ich eine Ausgabe des Problems erhalte? Falls nicht, ist das auch verständlich. Vielen Dank für die Hilfe.

UPDATE: Mit dem Befehl curl --ssl-reqd habe ich die Ports 465, 587, 25 und 2525 getestet. Die Ergebnisse waren:
25: Funktioniert nicht (Curl-Fehler 35, falsche Versionsnummer)
465: Funktioniert wie vorgesehen und liefert schnelle E-Mail-Antworten
587: Funktioniert nicht (Curl-Fehler 35, falsche Versionsnummer)
2525: Hat nicht fehlschlagen, aber es wurde keine E-Mail gesendet (die Zeit lief weiter, ohne dass eine E-Mail gesendet wurde)

Falls es hilft, hier sind meine aktuellen Einstellungen (mit dem 502-Fehler):

  DISCOURSE_SMTP_ADDRESS: CENSORED
  DISCOURSE_SMTP_PORT: 465
  DISCOURSE_SMTP_USER_NAME: CENSORED
  DISCOURSE_SMTP_PASSWORD: CENSORED
  # DISCOURSE_SMTP_ENABLE_START_TLS: true           # (optional, default true)

Vorlagen:

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
## Diese beiden Zeilen auskommentieren, wenn Sie Lets Encrypt (https) hinzufügen möchten
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"

Und freigegeben:

expose:
  - "80:80"   # http
  - "443:443" # https

Dies ist ein Bild mit den E-Mail-Informationen:


Ich bin mir nicht sicher, ob der Grund darin liegt, dass Discourse möglicherweise keine Verbindung über SSL/TLS herstellt, oder an etwas anderem. Ich hoffe, diese Informationen sind hilfreich und tragen zur Lösung des Problems bei.

1 „Gefällt mir“

Füge dies hinzu und schaue, ob es funktioniert:

DISCOURSE_SMTP_ENABLE_START_TLS: False

Vielen Dank für die Antwort. Leider hat es nicht funktioniert. Ich erhalte immer noch denselben 502-Fehler.

Ich bin mir nicht sicher, ob das hilft, aber ich konnte den Befehl curl --ssl-reqd von der VPS aus ausführen und eine E-Mail erfolgreich versenden (wie ich in dieser Antwort erwähnt habe). Darüber hinaus habe ich diesen Befehl innerhalb der App ausgeführt (betreten mit ./launcher enter app), und er funktionierte ebenfalls mit denselben Ergebnissen wie beim vorherigen Test (465 funktioniert, 25 und 587 funktionieren nicht, und 2525 ergibt einen Timeout-Fehler). Dennoch erhalte ich beim Ausführen auf dem Forum selbst (unter Verwendung von Test-E-Mails) weiterhin einen 502-Fehler. Hoffentlich hilft diese zusätzliche Information. Vielen Dank für Ihre Hilfe.

1 „Gefällt mir“

Hast du eine Lösung gefunden?