E-Mail und smtp.office365.com

Ich arbeite mich durch Troubleshoot email on a new Discourse install - #2, um herauszufinden, warum auf einer neuen Discourse-Instanz keine E-Mails versendet werden.

Ich kann von dem Gerät aus E-Mails mit swaks versenden.

Ich kann eine Telnet-Verbindung zum Mailserver smtp.office365.com auf Port 587 herstellen (nachdem ich einen vollständig qualifizierten Domänennamen festgelegt habe).

Im Produktionsprotokoll scheinen keine Fehler aufzutreten.

tail -f shared/web_only/log/rails/production.log
Started POST "/u/action/send_activation_email" for 115.64.14.90 at 2019-12-23 08:20:28 +0000
Processing by UsersController#send_activation_email as */*
  Parameters: {"username"=>"csmu"}
  Rendering text template
  Rendered text template (Duration: 0.1ms | Allocations: 1)
Completed 200 OK in 36ms (Views: 1.0ms | ActiveRecord: 0.0ms | Allocations: 4557)

Ich sehe Meldungen wie diese:

Cannot open main log file "/var/log/exim4/mainlog"

wenn ich tail -f shared/web_only/log/var-log/mail.log ausführe.

Habt ihr eine Idee, warum “/var/log/exim4/mainlog” gesperrt ist und in shared/web_only/log/var-log/mail.log referenziert wird?

Dieser Log-Eintrag war ein Fehlalarm.

Das Hauptproblem lag in der Kommunikation mit smtp.office365.com.

  1. Das Gerät musste auf einen gültigen vollständig qualifizierten Domainnamen (FQDN) eingestellt werden. Bis dahin schlug telnet smtp.office365.com 587 fehl.
  2. Die korrekten Einstellungen mussten in der YAML-Datei vorgenommen werden, insbesondere DISCOURSE_SMTP_AUTHENTICATION: login.
  DISCOURSE_SMTP_ADDRESS: smtp.office365.com
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: discourse@domain
  DISCOURSE_SMTP_PASSWORD: "validPassword"
  DISCOURSE_SMTP_AUTHENTICATION: login
  DISCOURSE_SMTP_ENABLE_START_TLS: true
  1. Die SiteSetting.notification_email musste gesetzt werden.
./launcher enter web_only
root@discourse-web-only:/var/www/discourse# rails console
[1] pry(main)> SiteSetting.notification_email = "discourse@domain"
[2] pry(main)> exit
root@discourse-web-only:/var/www/discourse# exit

  1. Der Container wurde neu gestartet.
./launcher destroy web_only
./launcher start web_only
  1. Aufgabe erledigt!