Posta e smtp.office365.com

Sto seguendo Troubleshoot email on a new Discourse install - #2 per capire perché le email non vengono inviate su una nuova istanza di Discourse.

Riesco a inviare email dal dispositivo utilizzando swaks

Posso fare telnet al server di posta smtp.office365.com sulla porta 587 (dopo aver impostato un nome di dominio completamente qualificato)

Non sembrano esserci errori nel log di produzione.

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)

Vedo messaggi del genere

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

quando eseguo tail -f shared/web_only/log/var-log/mail.log

Qualche idea sul motivo per cui “/var/log/exim4/mainlog” risulterebbe bloccato e referenziato in shared/web_only/log/var-log/mail.log?

Quel log era un falso positivo.

Il problema principale era la comunicazione con smtp.office365.com

  1. È stato necessario configurare il dispositivo in modo che utilizzasse un nome di dominio fully qualified valido. Fino ad allora
    telnet smtp.office365.com 587 falliva.
  2. È stato necessario impostare le configurazioni corrette nel file yaml, in particolare 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. È stato necessario impostare SiteSetting.notification_email
./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. Riavviato il container
./launcher destroy web_only
./launcher start web_only
  1. Fatto!