E-Mail-Testfehler in discourse-doctor

Ich versuche, SMTP-Probleme mit ./discourse-doctor zu beheben.

Das nächstgelegene verwandte Problem, das ich finden konnte, ist Yet other SMTP 587 port email various errors.
Bevor ich die Vorschläge umsetzte, hatte ich durchgängig Timeouts.

Nach der Konfiguration:

DISCOURSE_SMTP_FORCE_TLS: true
DISCOURSE_SMTP_ENABLE_START_TLS: false

erhalte ich Folgendes von discourse-doctor:

==================== MAIL TEST ====================
Für einen robusten Test, holen Sie sich eine Adresse von http://www.mail-tester.com/
Oder senden Sie einfach eine Testnachricht an sich selbst.
E-Mail-Adresse für den Mailtest? ('n' zum Überspringen) [admin@burlyqna.org]:
Sende Mail an admin@burlyqna.org. . .
Teste das Senden an admin@burlyqna.org über smtp.mailfence.com:465, Benutzername:philion@mailfence.com mit einfacher Authentifizierung.
SMTP-Serververbindung erfolgreich.
Sende an admin@burlyqna.org. . .
Senden der Mail fehlgeschlagen.
Dateiende erreicht

Siehe: http://talk.burlyqna.org/NjdhMDAwYTk4NmM3MmM1.txt

Ich kann die SMTP-Serverkonfiguration extern mit folgendem Befehl validieren:

swaks --to philion@gmail.com --from admin@burlyqna.org --server smtp.mailfence.com:465 --auth LOGIN --tlsc --auth-user philion@mailfence.com

Irgendwelche Hinweise, wie SMTP-Serververbindung erfolgreich. aber Senden der Mail fehlgeschlagen. sein kann?

Vielen Dank,
Paul

1 „Gefällt mir“

Sollten Sie für TLS Port 587 verwenden?

Ich würde versuchen, puts error.backtrace (oder Ähnliches) nach

hinzuzufügen und discourse-doctor erneut auszuführen.

1 „Gefällt mir“

Das hat unser Auto-Responder herausgefunden. Ich denke, es ist einen Versuch wert, die SMTP-Domain auszuprobieren.

1 „Gefällt mir“

Thomas,

In den Supportforen gibt es viele Diskussionen über Port 465. Nach meiner Lektüre scheint es, dass Discourse viele Annahmen über SSL und TLS über SMTP trifft und es eine Handvoll Umgebungsvariablen gibt, die das detaillierte Verhalten steuern.

ALLERDINGS habe ich angesichts der Anzahl der gemeldeten Fehler und verwandten Fragen in diesen Foren den starken Eindruck, dass diese Einstellungen schlecht dokumentiert und schwer zu verwenden sind. Und da ähnliche Probleme bis ins Jahr 2017 zurückreichen, ist dies seit Jahren ein Problem.

Suchen nach „Port 465“ oder „Net::ReadTimeout smtp“ können eine lange Liste ähnlicher Probleme aufdecken.

Ich werde es versuchen. Danke!

Thomas,

Ich versuche, diese Datei im Docker-Build zu finden, und es gelingt mir nicht. Ich sehe, dass sie in einem Container verpackt ist, aber ich habe discourse/discourse_docker und nicht discourse/discourse geklont.

Wenn ich versuche, die App mit launcher enter app zu betreten, gibt es keine Möglichkeit, diese Datei zu bearbeiten oder vi zu installieren.

Ich kann keine Dokumentation oder Flags finden, um ./discourse-doctor mit aktivierten Debug-Protokollen auszuführen.

Schlägt auf die gleiche Weise fehl: E-Mail kann nicht gesendet werden, ./discourse-doctor meldet den gleichen Fehler.

app.yml wie vorgeschlagen aktualisiert, App neu erstellt (keine E-Mail), ./discourse-doctor versucht und dieselbe Fehlermeldung erhalten.

./launcher enter  app
sudo apt update && sudo apt install neovim -y

sollte helfen.

Danke! Ich werde ziemlich alt, wenn ich nicht mehr „sudo apt install vi“ kann. Ich muss mich daran erinnern, dass es jetzt neovim heißt.

Angesichts der vorgeschlagenen Änderung zum Ausgeben des Stack-Trace biete ich an: http://talk.burlyqna.org/ODgyZjg5Y2QyMTU1ZmEx.txt

Der relevante Ausschnitt:

/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-protocol-0.2.2/lib/net/protocol.rb:237:in `rbuf_fill'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-protocol-0.2.2/lib/net/protocol.rb:199:in `readuntil'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-protocol-0.2.2/lib/net/protocol.rb:209:in `readline'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:1017:in `recv_response'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:1008:in `block in getok'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:1027:in `critical'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:1006:in `getok'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:986:in `quit'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:732:in `do_finish'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:645:in `ensure in start'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:645:in `start'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mail-2.8.1/lib/mail/network/delivery_methods/smtp.rb:109:in `start_smtp_session'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mail-2.8.1/lib/mail/network/delivery_methods/smtp.rb:100:in `deliver!'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mail-2.8.1/lib/mail/message.rb:269:in `deliver!'
/usr/local/lib/ruby/3.3.0/delegate.rb:87:in `method_missing'
/var/www/discourse/lib/email/sender.rb:296:in `send'

Es scheint, als hätte die andere Seite die Verbindung beendet.

Übrigens: http://talk.burlyqna.org/NjdhMDAwYTk4NmM3MmM1.txt ist nicht mehr verfügbar

1 „Gefällt mir“

Werden diese Protokolldateien bei einem Neuerstellungsvorgang beibehalten?

Ich habe Passwörter aktualisiert, um Symbole zu entfernen, auf die SMTP-Authentifizierungsverzögerung gewartet (lange genug, um zu Mittag zu essen), die richtigen Anmeldedaten bestätigt, um E-Mails mit swaks korrekt zu senden, und…

Gleicher Fehler.

Ich stelle fest, dass das Neuerstellen den Stacktrace-Dump entfernt, also werde ich ihn wieder hinzufügen und versuchen: ./launcher destroy app && ./launcher start app

1 „Gefällt mir“

Installierter Debug-Trace, Doctor ausgeführt:
http://talk.burlyqna.org/NWQ5MjBlMTIwN2JiNGNl.txt

==================== MAIL TEST ====================
Für einen robusten Test, besorgen Sie sich eine Adresse von http://www.mail-tester.com/
Oder senden Sie einfach eine Testnachricht an sich selbst.
E-Mail-Adresse für Mail-Test? ('n' zum Überspringen) [admin@burlyqna.org]:
Sende Mail an admin@burlyqna.org. . .
Teste das Senden an admin@burlyqna.org unter Verwendung von smtp.mailfence.com:465, Benutzername: philion mit einfacher Authentifizierung.
SMTP-Serververbindung erfolgreich.
Sende an admin@burlyqna.org. . .
Senden der Mail fehlgeschlagen.
Dateiende erreicht
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-protocol-0.2.2/lib/net/protocol.rb:237:in `rbuf_fill'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-protocol-0.2.2/lib/net/protocol.rb:199:in `readuntil'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-protocol-0.2.2/lib/net/protocol.rb:209:in `readline'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:1017:in `recv_response'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:1008:in `block in getok'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:1027:in `critical'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:1006:in `getok'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:986:in `quit'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:732:in `do_finish'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:645:in `ensure in start'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:645:in `start'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mail-2.8.1/lib/mail/network/delivery_methods/smtp.rb:109:in `start_smtp_session'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mail-2.8.1/lib/mail/network/delivery_methods/smtp.rb:100:in `deliver!'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mail-2.8.1/lib/mail/message.rb:269:in `deliver!'

Haben Sie versucht, Ihre vollständige E-Mail-Adresse als Anmeldenamen zu verwenden?

app.yml aktualisiert, um die vollständige E-Mail als Benutzer zu verwenden, neu bereitgestellt mit ./launcher destroy app && ./launcher start app.

Gleicher Fehler: http://talk.burlyqna.org/ZDg1YWE1YTA2YWU1Zjhj.txt

Destroy und Start haben auch das Debugging gelöscht, aber ich gehe davon aus, dass es dasselbe Problem ist:

case rv = @io.read_nonblock(BUFSIZE, tmp, exception: false)

gibt ein Nil zurück, und das führt zu einer EOF- und Nicht-/Fehlermeldung.

Nach viel Testen und viel Hilfe von @thoka biete ich die folgende Zusammenfassung an:

Ich kann SMTP-Tests mit denselben Anmeldeinformationen durchführen, die ich container/app.yml zur Verfügung gestellt habe und die sowohl mit swaks (Swaks - Swiss Army Knife for SMTP) als auch mit dem von @thoka bereitgestellten Ruby-Beispielcode (siehe unten) funktionieren.

Diese funktionieren konsistent. Der Versuch, einen Discourse-Server einzurichten (der die erste E-Mail an den Administratorbenutzer nicht senden kann) oder den discourse-doctor-Bot zu verwenden, führt jedoch zu E-Mail-Fehlern:

==================== MAIL TEST ====================
Für einen robusten Test, holen Sie sich eine Adresse von http://www.mail-tester.com/
Oder senden Sie einfach eine Testnachricht an sich selbst.
E-Mail-Adresse für Mail-Test? ('n' zum Überspringen) [admin@burlyqna.org]:
Sende Mail an admin@burlyqna.org. . .
Teste Senden an admin@burlyqna.org mit smtp.mailfence.com:465, Benutzername:xxx@mailfence.com mit Plain Auth.
SMTP-Serververbindung erfolgreich.
Senden an admin@burlyqna.org. . .
Senden der Mail fehlgeschlagen.
Dateiende erreicht

Dies scheint ein Fehler in der Protokollkonfiguration zu sein, da ich mit Standard-Ruby-Tools Test-E-Mails senden kann:

require 'mail'

SMTP_SERVER = 'smtp.mailfence.com'
SMTP_PORT = 465
USERNAME = 'xyz'
PASSWORD = '...'

FROM = 'admin@burlyqna.org'
TO = 'testing@gmail.com'
SUBJECT = 'Test von Ruby'

BODY = "Hallo,\n\nDies ist eine Test-E-Mail, die von Ruby über eine SSL-verschlüsselte Verbindung gesendet wurde.\n\nViele Grüße!"

Mail.defaults do
  delivery_method :smtp, {
    address: SMTP_SERVER,
    port: SMTP_PORT,
    user_name: USERNAME,
    password: PASSWORD,
    domain: "burlyqna.org",
    enable_starttls_auto: :false,
    authentication: :plain,
    ssl: true,
  }
end

begin
  puts 'Sende E-Mail...'
  puts "SMTP_SERVER: #{SMTP_SERVER}"
  puts "SMTP_PORT: #{SMTP_PORT}"
  puts "USERNAME: #{USERNAME}"
  puts "PASSWORD: #{PASSWORD}"
  puts "FROM: #{FROM}"
  puts "TO: #{TO}"

  mail = Mail.new do
    to TO
    from FROM
    subject SUBJECT
    body BODY
  end

  mail.deliver!
end

Die aktuellen SMTP-Einstellungen in meiner app.yml sind:

DISCOURSE_SMTP_ADDRESS: smtp.mailfence.com
DISCOURSE_SMTP_PORT: 465
DISCOURSE_SMTP_USER_NAME: xxx@mailfence.com
DISCOURSE_SMTP_PASSWORD: '...'
DISCOURSE_SMTP_FORCE_TLS: true                   # https://meta.discourse.org/t/cannot-send-email-problem-with-port-465/246004/8
DISCOURSE_SMTP_ENABLE_START_TLS: false           # (optional, Standard true)
DISCOURSE_SMTP_DOMAIN: burlyqna.org              # (von einigen Anbietern erforderlich)
DISCOURSE_NOTIFICATION_EMAIL: noreply@talk.burlyqna.org
1 „Gefällt mir“

Abschließendes Follow-up: E-Mail funktioniert!

Die Probleme, die ich unterwegs hatte:

  • DISCOURSE_SMTP_PASSWORD hatte Symbole, war aber nicht in Anführungszeichen
  • DISCOURSE_SMTP_FORCE_TLS: true, um SSL zu ermöglichen
  • DISCOURSE_SMTP_ENABLE_START_TLS: false, um den TLS-Handshake zu stoppen
  • DISCOURSE_NOTIFICATION_EMAIL auf eine nicht existierende E-Mail-Adresse gesetzt
DISCOURSE_SMTP_ADDRESS: smtp.mailfence.com
DISCOURSE_SMTP_PORT: 465
DISCOURSE_SMTP_USER_NAME: example@mailfence.com
DISCOURSE_SMTP_PASSWORD: 'passwd'
DISCOURSE_SMTP_FORCE_TLS: true                  
DISCOURSE_SMTP_ENABLE_START_TLS: false
DISCOURSE_NOTIFICATION_EMAIL: admin@example.org
1 „Gefällt mir“

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.