Courrier et smtp.office365.com

Je suis en train de suivre Troubleshoot email on a new Discourse install - #2 pour comprendre pourquoi les e-mails ne partent pas sur une nouvelle instance Discourse.

Je parviens à envoyer des e-mails depuis l’appareil en utilisant swaks.

Je peux me connecter en telnet au serveur de messagerie smtp.office365.com sur le port 587 (après avoir défini un nom de domaine pleinement qualifié).

Il semble qu’il n’y ait aucune erreur dans le journal de production.

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)

Je vois des messages comme celui-ci :

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

lorsque j’exécute tail -f shared/web_only/log/var-log/mail.log.

Avez-vous des idées sur la raison pour laquelle “/var/log/exim4/mainlog” serait verrouillé et référencé dans shared/web_only/log/var-log/mail.log ?

Ce journal était un faux positif.

Le problème principal concernait la communication avec smtp.office365.com.

  1. Il a fallu configurer l’appareil pour qu’il utilise un nom de domaine pleinement qualifié valide. Jusqu’à présent, la commande
    telnet smtp.office365.com 587 échouait.
  2. Il a fallu définir les paramètres corrects dans le fichier YAML, en particulier 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. Il a fallu définir le paramètre 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. Redémarrage du conteneur
./launcher destroy web_only
./launcher start web_only
  1. Mission accomplie !