Il semble se connecter au serveur et envoyer un e-mail de test correctement lorsque je le fais manuellement :
> sudo ./launcher enter app
root@support-app:/var/www/discourse# openssl s_client -connect mail.xxxxxxxx.com:465
:
:
une quantité massive de données inutiles
:
:
220 xxxxxxx.com Anti-spam GT for Coremail System (mispb-6da2110f-64b0-4d67-acf1-2d302bd594f9-xxxxxxx.com[20220915])
EHLO mail.xxxxxxxxx.com
250-mail
250-PIPELINING
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-coremail 1Uxr2xKj7kG0xkI17xGrUDI0s8FY2U3Uj8Cz28x1UUUUU7Ic2I0Y2UrpDiNKUCa0xDrUUUUj
250-STARTTLS
250-SMTPUTF8
250 8BITMIME
AUTH PLAIN xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
235 Authentication successful
mail from: <xxx@xxxxxx.com>
250 Mail OK
rcpt to: <xxxx@xxxxxxx.com>
250 Mail OK
data
354 End data with <CR><LF>
content
.
250 Mail OK queued as AQAAfwBXr9nSGHdj3hEgAA--.7073S2
Il est probable que le port sortant soit bloqué par votre fournisseur d’hébergement. Si vous utilisez un service comme Mailgun (ou la plupart des autres), le port 2525 devrait fonctionner. S’il s’agit d’un serveur de messagerie que vous gérez, vous pouvez le faire écouter sur un autre port (comme le 2525).
Ou (probablement le plus difficile) vous pouvez ouvrir un ticket auprès de votre hébergeur de serveur et lui demander d’ouvrir le port.
Eh bien, considérant que je peux ./launcher enter app puis openssl se connecter au serveur de messagerie, me connecter via SMTP et envoyer avec succès un e-mail depuis le conteneur discourse, je doute que ce soit le port qui ne fonctionne pas…
J’ai retracé le code et il semble que EHLO n’ait même pas été atteint. Le serveur SMTP est connecté mais le handshake SSL semble manquer, donc le serveur se déconnecte et Discourse n’a reçu aucune réponse, d’où l’erreur.
J’ai donc suspecté que le support du port 465 semblait avoir un bug (il utilise SSL par défaut, mais je ne pense pas que Discourse le reconnaisse), donc la connexion SSL n’est probablement jamais établie.
Passer au port 25 semble au moins supprimer l’erreur, bien que je ne reçoive toujours aucun e-mail envoyé…
EDIT : Je peux confirmer que le port 25 fonctionne correctement (tout comme le 587, mais malheureusement mon serveur smtp n’expose pas le 587).
Je n’avais pas reçu d’e-mails auparavant parce que l’adresse IP du serveur Discourse était temporairement mise sur liste noire par le serveur smtp en raison de trop nombreuses tentatives échouées.
J’ai également vu pas mal de sujets sur le « problème 465 ». Cependant, mon débogage d’e-mails pour tout ce qui n’est pas évident n’est pas excellent, j’ai donc cité le guide de dépannage :
Y a-t-il quelque chose que nous puissions ajouter à cela pour aider les gens ?
EDIT : @RGJ Je peux confirmer que DISCOURSE_SMTP_FORCE_TLS: true dans app.yml résout le problème avec succès !
Je suggère un avertissement en gras disant Si vous utilisez le port 465, définissez DISCOURSE_SMTP_FORCE_TLS: true, ou Discourse ne devrait-il pas être assez intelligent pour le détecter ?