Correo y smtp.office365.com

Estoy siguiendo Troubleshoot email on a new Discourse install - #2 para averiguar por qué no se envían correos en una nueva instancia de Discourse.

Puedo enviar correos desde el dispositivo usando swaks.

Puedo hacer telnet al servidor de correo smtp.office365.com en el puerto 587 (después de configurar un nombre de dominio totalmente cualificado).

Parece que no hay errores en el registro de producción.

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)

Veo cosas como esta:

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

cuando ejecuto tail -f shared/web_only/log/var-log/mail.log.

¿Alguna idea sobre por qué se bloquea y se hace referencia a “/var/log/exim4/mainlog” en shared/web_only/log/var-log/mail.log?

Ese registro fue un falso positivo.

El problema principal era la conexión con smtp.office365.com

  1. Fue necesario configurar el dispositivo para que usara un nombre de dominio completamente calificado válido. Hasta entonces, el comando telnet smtp.office365.com 587 fallaba.
  2. Fue necesario configurar los ajustes correctos en el archivo 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. Fue necesario establecer 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. Se reinició el contenedor
./launcher destroy web_only
./launcher start web_only
  1. ¡Listo!