Discourse SMTP sendet „EHLO localhost“ statt Domain, was Google smtp-relay unterbricht

@iwaffles -

Hast du die Lösungsschritte in diesem Thread und den anderen verwandten Threads bereits ausprobiert?

Füge eine Zeile zu deiner app.yml hinzu:

DISCOURSE_SMTP_DOMAIN: [deine Server-FQDN]

Anschließend im Verzeichnis /var/discourse: ./launcher rebuild app

discourse-doctor meldet möglicherweise weiterhin Fehler, aber E-Mails, die über die Admin-Konsole gesendet werden, sollten funktionieren, und der normale E-Mail-Verkehr sollte wieder aufgenommen werden.

Sollte das nicht funktionieren, melde dich bitte erneut, denn dann gibt es noch einen weiteren Aspekt, der bisher nicht entdeckt wurde.

3 „Gefällt mir“

Ich habe den Neuaufbau versucht, und er funktioniert!

Du hast recht, discourse-doctor schlägt bei mir immer noch fehl.

Ich glaube, ich habe Discourse zuvor neu gestartet anstatt es neu aufzubauen, was wahrscheinlich der Grund dafür ist, dass die Änderung keine Wirkung zeigte. Danke an @Syonyk!

2 „Gefällt mir“

Es scheint klar, dass localhost immer falsch ist, aber die meisten SMTP-Server ignorieren diesen Wert, sodass es bisher keine Rolle gespielt hat.

Die drei Stellen, an denen smtp_domain in https://github.com/discourse/discourse vorkommt, sind allesamt zwischen 2 und 7 Jahre alt. Ich frage mich, ob vielleicht eine Bibliothek aus irgendeinem Grund plötzlich localhost sendet.

Ich denke, die beste Lösung wäre – trotz der Bedenken von @Falco – dies an einer geeigneten Stelle zu beheben.

Unabhängig davon, ob sich die Mehrheitsmeinung dafür ausspricht, trotz der Abweichung von den RFCs weiterhin localhost zu senden, ist die oben beschriebene Korrektur der Rake-Aufgabe erforderlich. Übrigens: Ich bin derjenige, der diesen Code geschrieben hat. :man_shrugging: Aber Moment. Ich sehe, action_mailer.smtp_settings['domain'] kann leer sein. Also schätze ich, dass

    Net::SMTP.start(smtp[:address], smtp[:port], 'localhost', smtp[:user_name], smtp[:password], smtp[:authentication])

vorläufig durch

     Net::SMTP.start(smtp[:address], smtp[:port], smtp[:domain] || 'localhost', smtp[:user_name], smtp[:password], smtp[:authentication])

ersetzt werden sollte.

Das sollte nämlich die domain verwenden, falls eine vorhanden ist, und andernfalls das aktuelle (aber falsche?) Verhalten beibehalten, bei dem localhost genutzt wird, wenn discourse_smtp_host nicht definiert ist.

Ich bin zögerlich, dies zu discourse-setup hinzuzufügen, da es für fast alle so funktioniert, wie es ist, und es wäre eine weitere eher verwirrende Frage. (Und ich bin dabei, eine Frage für notification_email hinzuzufügen; wenn wir nicht aufpassen, wird es bald so wirken, wie ich mich an die Linux-Kernel-Entwicklung vor ein paar Jahrzehnten erinnere.)

Vielleicht stammt localhost von hier?

2 „Gefällt mir“

Ich wurde gerade auf dieses Problem aufmerksam gemacht und kann bestätigen, dass die Korrektur funktioniert. Auch unsere normalerweise verkehrsarme Instanz hat Sidekiq überlastet, anscheinend durch wiederholte Wiederholungen von Digest-Jobs.

Ich dachte, Google habe neue Nutzungslimits eingeführt, da die dort angezeigte Fehlermeldung der entspricht, die sie bei DoS-Ablehnungen ausgeben.

2 „Gefällt mir“

Danke für den Bericht! Ich werde demnächst eine Korrektur dafür in die Discourse-Einrichtung integrieren.

2 „Gefällt mir“

Dies ist nun:

  • Als Beispiel-Umgebungskonfiguration in allen Beispieldateien hinzugefügt

  • Während der Einrichtung einer neuen Discourse-Installation abgefragt

  • Im Discourse Doctor und in der Rake-Aufgabe behoben

Vielen Dank an alle :tada:

5 „Gefällt mir“