SMTP-Fehler: STARTTLS-Befehl muss zuerst ausgegeben werden

Ich versuche, Discourse 2.7.0.beta4 mit dem MailerSend SMTP-Dienst zu konfigurieren.

Nach dem Ausführen von ./discourse-doctor erhielt ich den folgenden Fehler:

SMTP-Fehler: Zuerst muss ein STARTTLS-Befehl ausgegeben werden

Dies ist meine aktuelle app.yml-Konfiguration in Bezug auf SMTP:

  DISCOURSE_SMTP_ADDRESS: 'smtp.mailersend.net'
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: username@subdomain.domain.org
  DISCOURSE_SMTP_PASSWORD: mypasswordhere
 #DISCOURSE_SMTP_ENABLE_START_TLS: true           # (optional, Standardwert: true)
 #DISCOURSE_SMTP_AUTHENTICATION: login
 #DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none

Ich habe bereits versucht, DISCOURSE_SMTP_ENABLE_START_TLS explizit auf true zu setzen, indem ich den Kommentar entfernte, aber der Fehler bleibt bestehen. Gleiches gilt für DISCOURSE_SMTP_AUTHENTICATION: login.

Nach jeder Änderung in der YML-Datei starte ich das System mit folgendem Befehl neu:

./launcher destroy app; ./launcher start app

Haben Sie einen Tipp, was hier los ist?

Vielen Dank im Voraus!

Ich habe kürzlich einige Änderungen an discourse-setup vorgenommen und auch eine Änderung an dem von dir verwendeten Rake-Task (die meines Erachtens noch nicht gemergt wurde).

Wenn du mir Zugriff auf deinen Server geben möchtest, werde ich mir das ansehen.

2 „Gefällt mir“

Wie ich bereits per PN erwähnt habe, kann ich aus Sicherheitsgründen keinen Zugriff auf den Server gewähren. Vielen Dank jedoch an @pfaffman für deine Hilfe und deine Bemühungen, dieses Problem zu lösen.

Ich möchte noch etwas mehr Kontext zu diesem Problem hinzufügen: Ein vorheriger Administrator hat Discourse mit dem Mailgun SMTP-Dienst installiert, aber dieser funktioniert nicht mehr, und ich habe keinen Zugriff auf dieses Konto.

Wie gesagt, versuche ich nun, es mit Mailersend zu konfigurieren. Ich habe dieses Thema [1] und andere über STARTTLS hier im Forum gelesen, bin mir aber nicht sicher, wie die erforderlichen Änderungen umgesetzt werden sollen.

Ich habe auch folgende Einstellung versucht, aber der Fehler bleibt bestehen:

DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none

Wenn dies mit einem kürzlich erschienenen Update zusammenhängt, wäre es dann nicht besser, eine Downgrade in Betracht zu ziehen?

[1] Can't send email with certificate issue - #3 by supermathie

1 „Gefällt mir“

Ist es dir gelungen, das zum Laufen zu bringen?

Nein, ich habe mich für einen anderen E-Mail-Dienst entschieden. Jetzt funktioniert es einwandfrei mit Mailjet.

1 „Gefällt mir“

Ich habe ein ähnliches Problem. Gestern habe ich drei Stunden lang den E-Mail-Versand auf einer neuen Discourse-Instanz ohne Erfolg debuggt. Ich versuche, E-Mails über Fastmail mit STARTTLS über Port 587 zu senden. Andere Dienste funktionieren mit denselben Anmeldeinformationen.

Ich erhalte bei diesen Einstellungen nicht die Fehlermeldung „Must issue a STARTTLS command first“:

DISCOURSE_SMTP_ADDRESS: 'smtp.fastmail.com'
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: 'myuser@fastmail.fm'
DISCOURSE_SMTP_PASSWORD: 'mypass'
DISCOURSE_SMTP_ENABLE_START_TLS: true

…gefolgt von einem ./launcher rebuild app. Wenn ich ./discourse-doctor ausführe und eine E-Mail sende, erhalte ich als Antwort einen Fehler 500 5.5.1 Invalid command.

Heute habe ich begonnen, die Kommunikation mit tcpdump zu verfolgen, und festgestellt, dass Discourse STARTTLS anscheinend nicht verwendet. Hier ist, was passiert, wenn ich eine Grafana-Wiederherstellungs-E-Mail sende:

< 220 smtp.fastmail.com ESMTP ready
> EHLO 9b5ba1569f77
< 250-smtp.fastmail.com
< 250-PIPELINING
< 250-SIZE 71000000
< 250-ENHANCEDSTATUSCODES
< 250-8BITMIME
< 250 STARTTLS
> STARTTLS
< ...[encrypted]

Aber mit Discourse passiert Folgendes:

< 220 smtp.fastmail.com ESMTP ready
> EHLO localhost
< 250-smtp.fastmail.com
< 250-PIPELINING
< 250-SIZE 71000000
< 250-ENHANCEDSTATUSCODES
< 250-8BITMIME
< 250 STARTTLS
> AUTH PLAIN [redacted]
< 500 5.5.1 Invalid command

Es scheint also, dass Discourse meine Anmeldeinformationen im Klartext über das Internet sendet, obwohl STARTTLS in den Einstellungen aktiviert ist? Ist das ein Fehler?

Ich habe auch festgestellt, dass beim Ausführen von ./discourse-doctor die Zusammenfassung „YML SETTINGS“ am Anfang Folgendes auflistet:

==================== YML SETTINGS ====================
DISCOURSE_HOSTNAME=forum.[redacted]
SMTP_ADDRESS=smtp.fastmail.com
DEVELOPER_EMAILS=sysadmin@[redacted]
SMTP_PASSWORD=[redacted]
SMTP_PORT=587
SMTP_USER_NAME=[redacted]@fastmail.fm
LETSENCRYPT_ACCOUNT_EMAIL=

Es gibt jedoch keine Erwähnung von DISCOURSE_SMTP_ENABLE_START_TLS, obwohl es in app.yml gesetzt ist. Ich bin mir nicht sicher, ob dieses Problem damit zusammenhängt.

2 „Gefällt mir“

Das ist seltsam. Ich habe manuell ein Benutzerkonto erstellt (über rake admin:create) und mich dann angemeldet, und plötzlich funktionierten E-Mail-Benachrichtigungen. Das Senden über discourse-doctor schlägt jedoch immer noch fehl.

Ist discourse-doctor vielleicht kaputt?

1 „Gefällt mir“

Es tut mir leid. Ich weiß, wie frustrierend das sein kann.

Das ist möglich. Es macht einige Dinge, um zu versuchen, das Problem zu debuggen, daher könnte es sein, dass die verwendete Logik in Ihrem Fall fehlerhaft ist.

Es gibt auch eine Rake-Aufgabe, die wahrscheinlich eine bessere Wahl für Sie gewesen wäre.

    rake emails:test[x@y.com]

Haben Sie Fehlerbehebung bei E-Mails bei einer neuen Discourse-Installation befolgt?

2 „Gefällt mir“

Ich war mir dieses Befehls nicht bewusst, das scheint in der Tat nützlich zu sein! Das Ergebnis ist jedoch dasselbe:

root@app:/var/www/discourse# rake emails:test redacted@example.com
Testing sending to  using smtp.fastmail.com:587, username:myuser@fastmail.fm with plain auth.
======================================== ERROR ========================================
                                    UNEXPECTED ERROR
500 5.5.1 Invalid command


====================================== SOLUTION =======================================
This is not a common error. No recommended solution exists!

Please report the exact error message above to https://meta.discourse.org/
(And a solution, if you find one!)
=======================================================================================

Wenn ich mir tcpdump ansehe, sehe ich wieder, dass die Anmeldedaten AUTH PLAIN im Klartext ohne STARTTLS-Verschlüsselung gesendet werden.

Ich habe mir diese Seite angesehen, ja.

Basierend auf tcpdump scheint dies jedoch ein Fehler in den Diagnosewerkzeugen zu sein, da STARTTLS nicht verwendet wird, obwohl die Einstellung in app.yml aktiviert ist. (Die Discourse-Anwendung selbst verwendet STARTTLS. Ich gehe davon aus, dass viele E-Mail-Anbieter auch unverschlüsselte E-Mail-Übermittlung zulassen, sodass dieses Problem nur auftritt, wenn jemand die Diagnosewerkzeuge verwendet UND einen Anbieter verwendet, der keine unverschlüsselte Übermittlung über SMTP akzeptiert.)

1 „Gefällt mir“

Ah. Es sieht so aus, als ob diese Rake-Aufgabe dieselbe ist, die discourse-doctor aufruft. Entschuldigung dafür.

Vielleicht kann sich jemand ansehen, wie diese Rake-Aufgabe dem tatsächlichen Prozess ähnlicher gemacht werden kann, oder zumindest nicht aufgibt, wenn ihre Versuche, herauszufinden, was vor sich geht, unbeholfen sind. Ein guter erster Schritt wäre zu sagen: „Nun, XXX scheint kaputt zu sein, aber wir werden es trotzdem versuchen…“

1 „Gefällt mir“