E-mail e smtp.office365.com

Estou seguindo o guia Troubleshoot email on a new Discourse install - #2 para descobrir por que o e-mail não está sendo enviado em uma nova instância do Discourse.

Consegui enviar e-mail do dispositivo usando swaks

Consegui fazer telnet no servidor de e-mail smtp.office365.com na porta 587 (após definir um nome de domínio totalmente qualificado)

Parece que não há erros no log de produção.

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)

Vejo mensagens como esta:

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

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

Alguma ideia de por que “/var/log/exim4/mainlog” estaria bloqueado e referenciado em shared/web_only/log/var-log/mail.log?

Esse log foi um falso positivo.

O principal problema era a comunicação com smtp.office365.com

  1. Foi necessário configurar o dispositivo para usar um nome de domínio totalmente qualificado válido. Até então, o comando
    telnet smtp.office365.com 587 falhava.
  2. Foi necessário configurar as opções corretas no arquivo yaml, especialmente 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. Foi necessário definir o 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. Reiniciou o contêiner
./launcher destroy web_only
./launcher start web_only
  1. Trabalho concluído!