Ich hoste Discourse seit vielen Jahren selbst und hatte mehrere Instanzen auf einem ziemlich leistungsstarken Rechner am Laufen.
Heute bemerkte ich, dass eines meiner Foren ausgefallen war. Der erste Verdacht war mangelnder Festplattenspeicher, den ich behoben habe. Danach habe ich die Discourse-Instanz neu gestartet.
Seitdem fällt sie jedoch regelmäßig aus. Jedes Mal, wenn ich sie starte, sehe ich sofort, wie Sidekiq verrücktspielt und eine riesige Anzahl fehlgeschlagener E-Mail-Jobs auftritt, die auch dazu führen, dass Redis eine massive Menge an Zustand speichert, was meiner Meinung nach die eigentliche Ursache für das Problem mit dem Festplattenspeicher war. (Ich werde beim nächsten Mal, wenn ich die Maschine hochfahren kann, einen Flush durchführen, da ich sonst schnell keinen Speicherplatz mehr auf dieser Maschine haben werde und Discourse nicht einmal starten kann, um ihn zu leeren. Aber der Flush scheint den Festplattenverbrauch von Redis kaum zu reduzieren.)
Die Fehlermeldung deutet auf ein Problem mit der Zertifikatsnamenübereinstimmung hin, was ich etwas überraschend finde, da der von mir verwendete Mailserver intern ist und keine TLS-Verschlüsselung oder Authentifizierung benötigt. Ich konnte auf einer meiner anderen Instanzen (mit der gleichen E-Mail-Konfiguration) überprüfen, dass E-Mails nicht mehr funktionieren. In den Hauptproduktionsprotokollen sehe ich nur einen 422-Fehler, aber wenn ich etwas wie eine Passwortzurücksetzung sende, sehe ich in den Sidekiq-Protokollen eine ähnliche Fehlermeldung:
Jobs::HandledExceptionWrapper: Wrapped OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=error: certificate verify failed (Hostname mismatch)
Ich konnte verifizieren, dass ich E-Mails über die Befehlszeile senden kann, daher scheint dies kein Problem mit dem E-Mail-Server selbst zu sein, sondern etwas mit der Discourse-Konfiguration ist fehlerhaft.
Hier ist die ursprüngliche Mail-Konfiguration, die bis vor kurzem funktionierte:
DISCOURSE_SMTP_ADDRESS: outbound-relays.techservices.illinois.edu
DISCOURSE_SMTP_PORT: 25
DISCOURSE_SMTP_ENABLE_START_TLS: false
Auch hier gilt: Dieser Mailserver ist intern und benötigt keinen Benutzernamen oder Passwort, und diese Einstellungen funktionierten bis vor kurzem. Ich habe mit DISCOURSE_SMTP_OPENSSL_VERIFY_MODE experimentiert, aber ich kann nicht sagen, ob es noch unterstützt wird. Unabhängig davon scheint es nicht zu helfen. Ich habe bemerkt, dass seit der Einrichtung dieser Foren ein paar neue E-Mail-Einstellungen hinzugefügt wurden, aber diese scheinen angesichts der Konfiguration dieses Mailservers nicht notwendig zu sein.
Jede Hilfe wäre willkommen! An diesem Punkt fällt es mir ehrlich gesagt sogar schwer, sicher zu sein, was falsch ist oder wie ich iterieren kann, da das Neuerstellen des Containers eine Weile dauert und die Fehlermeldung in den Produktionsprotokollen nur den 422-Fehler enthält und ich nicht herausfinden kann, wo ich nach der eigentlichen Ursache suchen soll. (Sie muss irgendwo sein, oder? Ich bin mir sicher, dass ich sie nur übersehe.)