Erste Registrierungs-E-Mail nicht gesendet

Hallo,

ich habe gerade eine frische Installation von Discourse durchgeführt.

Bei der ersten Verbindung wurde ich aufgefordert, einen Benutzernamen und ein Passwort für das Administratorkonto zu erstellen. Es sollte mir eine Aktivierungs-E-Mail gesendet werden.

Diese Aktivierungs-E-Mail ist jedoch nicht eingegangen (ich habe selbstverständlich auch den Spam-Ordner überprüft). Daher habe ich [den „Doctor

Es könnten zwei Dinge schiefgelaufen sein:

  • Die E-Mail wurde nicht gesendet
  • Die E-Mail wurde gesendet, aber nicht zugestellt

Da dies eine neue Instanz ist, ist es am einfachsten, alle ausgehenden E-Mail-Protokolle über die Rails-Konsole zu überprüfen:

discourse(prod)> EmailLog.all.pluck(:to_address, :email_type, :created_at, :smtp_transaction_response)

Wenn Sie Einträge sehen, wissen Sie, dass die E-Mail zumindest an den SMTP-Server übergeben wurde, an dem die Verantwortung von Discourse endet.

Wenn Sie keine Einträge sehen, wurde die E-Mail wahrscheinlich nicht gesendet. In diesem Fall finden Sie wahrscheinlich aussagekräftige Protokolle, indem Sie nach dem Einloggen als Administrator die URL-Pfade /logs und /sidekiq überprüfen.

Wir können sehen, dass die Test-Nachricht gesendet wurde (und ich habe sie tatsächlich erhalten) mit ./discourse-doctor, aber es gibt keinen Eintrag für die Registrierungs-Nachrichten:

discourse(prod)> EmailLog.all.pluck(:to_address, :email_type, :created_at, :smtp_transaction_response)
=> [["user@domain.org", "test_message", 2026-05-13 16:23:41.417177000 UTC +00:00, "250 2.0.0 Ok: queued as 4B4DDB0059A"]]

Im production.log finden wir vier Registrierungs-Nachrichten (ich habe tatsächlich vier Mal versucht, mich zu registrieren). Diese Registrierungs-Nachrichten wurden jedoch nie empfangen, also vermute ich, dass sie nie gesendet wurden, auch wenn kein Fehler oder keine Warnung vorliegt.
Man bemerkt, dass in diesen Logs keine Spur der erfolgreich gesendeten (und empfangenen) Test-Nachricht zu finden ist.

root@my-vps-app:/var/www/discourse/log# cat production.log | grep user
  Parameters: {"authenticity_token" => "ityyLIdjT7xvdxEd01LjMT08-xxxx", "email" => "user@domain.org", "username" => "admin", "password" => "[FILTERED]", "commit" => "Register"}
  Parameters: {"authenticity_token" => "tnDxYkOOwXYcv59Ez4t8vWPir-xxxx", "email" => "user@domain.org", "username" => "admin", "password" => "[FILTERED]", "commit" => "Register"}
  Parameters: {"authenticity_token" => "bvOwVYHS3N_UELipxVEG3L3LY-xxxx", "email" => "user@domain.org", "username" => "admin", "password" => "[FILTERED]", "commit" => "Register"}
  Parameters: {"authenticity_token" => "oo6GN-n7clGI5F1-uqzsZcadeP-xxxx", "email" => "user@domain.org", "username" => "admin", "password" => "[FILTERED]", "commit" => "Register"}

Andere Log-Dateien sind leer:

root@my-vps-app:/var/www/discourse/log# cat production_errors.log 
root@my-vps-app:/var/www/discourse/log# cat sidekiq.log 
root@my-vps-app:/var/www/discourse/log# cat unicorn.stderr.log 
root@my-vps-app:/var/www/discourse/log# cat unicorn.stdout.log 

Die Docker-Logs der Discourse-App zeigen vier Meldungen, dass etwas fehlt (und wir haben vier fehlgeschlagene Registrierungs-Nachrichten):

root@my-vps:/var/discourse# docker logs app
...
I, [2026-05-13T16:14:30.769269 #3290]  INFO -- : worker=7 gen=0 pid=4295 registered
I, [2026-05-13T16:14:30.815178 #4295]  INFO -- : worker=7 gen=0 pid=4295 ready
X-Accel-Mapping header missing
X-Accel-Mapping header missing
X-Accel-Mapping header missing
X-Accel-Mapping header missing

Kann das helfen?

Da die Registrierungs-E-Mail nie ankam, habe ich das Administratorkonto über die Kommandozeile aktiviert.

Ich habe mich mit dem Administratorkonto eingeloggt und eine Test-E-Mail an anotheruser@anotherdomain.org gesendet (unter Admin / E-Mail-Einstellungen / Servereinstellungen → Test-E-Mail senden).

Diese Test-E-Mail wurde sofort gesendet, wie unten zu sehen ist, und wurde in meinem Posteingang zugestellt:

root@my-vps:/var/discourse# ./launcher enter app
x86_64 arch detected.
root@my-vps-app:/var/www/discourse# rails console
Loading production environment (Rails 8.0.5)
discourse(prod)> EmailLog.all.pluck(:to_address, :email_type, :created_at, :smtp_transaction_response)
=> 
[["user@domain.org",
  "test_message",
  2026-05-13 16:23:41.417177000 UTC +00:00,
  "250 2.0.0 Ok: queued as 4B4DDB0059A"],
 ["anotheruser@anotherdomain.org",
  "test_message",
  2026-05-16 14:44:42.978862000 UTC +00:00,
  "250 2.0.0 Ok: queued as D79DFB00573"]]

Anschließend habe ich versucht, mich mit derselben E-Mail-Adresse (anotheruser@anotherdomain.org) zu registrieren, aber die Registrierungs-E-Mail wurde nicht zugestellt (und auch nicht gesendet, da sie nicht in den Logs der Rails-Konsole erscheint).

Zusammenfassend: Test-E-Mails werden gesendet und zugestellt, aber Registrierungs-E-Mails werden nicht gesendet, obwohl ein Eintrag in production.log zu finden ist:

cat production.log | grep anotheruser
  Parameters: {"email_address" => "anotheruser@anotherdomain.org"}
Started GET "/u/check_email?email=anotheruser%40anotherdomain.org" for xxx.xxx.xxx.xxx at 2026-05-16 17:40:45 +0000
  Parameters: {"email" => "anotheruser@anotherdomain.org"}
  Parameters: {"email" => "anotheruser@anotherdomain.org", "password" => "[FILTERED]", "username" => "NewUser", "password_confirmation" => "[FILTERED]", "challenge" => "xxxxxxxx", "timezone" => "Europe/Paris"}

Menschen können sich nicht registrieren. Was kann ich tun, um das Problem zu beheben?

Endlich habe ich zu einem anderen SMTP-Anbieter gewechselt und alles funktioniert einwandfrei, aber es frustriert mich, dass ich nicht herausfinden konnte, was passiert ist…

Manche E-Mail-Provider funktionieren einfach nicht. Ich habe am Anfang auch lange gebraucht, um die Ursache zu finden. Später habe ich Mailgun verwendet und es lief problemlos. Mir ist bekannt, dass QQ-Mail für Discourse nicht gut funktioniert.

Haben Sie sich als Administrator eingeloggt und dort etwas angezeigt?

Dort sollten genügend Informationen vorhanden sein, um das Problem zu lösen.