Dans le texte ci-dessous, remplacez <DOT> par . - car je suis un nouvel utilisateur et Discourse ne me permet pas de poster des liens.
J’ai installé Discourse sur un serveur cloud Hetzner nouvellement créé, et l’URL s’y résout correctement : forum<DOT>thewizardofosc<DOT>com
Cependant, l’email avec lequel je me suis inscrit n’est jamais envoyé. Dans le fichier journal, le message de Discourse est Net::ReadTimeout, si cela signifie quelque chose.
telnet se connecte - taper "telnet mail<DOT>thewizardofosc<DOT>com 465" donne "Connecté à thewizardofosc<DOT>com".
De plus, Curl envoie un email avec succès !
En tapant ce qui suit : curl --ssl smtps://mail<DOT>thewizardofosc<DOT>com --mail-from discourse@thewizardofosc<DOT>com --mail-rcpt <VARIOUS_WORKED> --upload-file email.txt --user 'discourse@thewizardofosc<DOT>com:<PASSWORD>'
L’envoi se fait avec succès.
Mais alors pourquoi Discourse ne fonctionne-t-il pas ?
Voici ce que je suppose être les sections pertinentes de mon fichier d’application :
## lors de l'inscription initiale, exemple 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: 'iliasb@thewizardofosc<DOT>com'
## TODO : Le serveur SMTP utilisé pour valider les nouveaux comptes et envoyer des notifications
# L'adresse SMTP, le nom d'utilisateur et le mot de passe sont requis
# ATTENTION : le caractère '#' dans le mot de passe SMTP peut causer des problèmes !
DISCOURSE_SMTP_ADDRESS: mail<DOT>thewizardofosc<DOT>com
DISCOURSE_SMTP_PORT: 465
DISCOURSE_SMTP_USER_NAME: discourse@thewizardofosc<DOT>com
DISCOURSE_SMTP_PASSWORD: <PASSWORD>
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (optionnel, valeur par défaut true)
## Si vous avez ajouté le modèle Lets Encrypt, décommentez ci-dessous pour obtenir un certificat SSL gratuit
LETSENCRYPT_ACCOUNT_EMAIL: me@example<DOT>com
Sans grand succès. L’exécution de discourse-doctor me donne la même sortie : Net::ReadTimeout,
que je vois également dans shared/standalone/log/rails/production.log
Étrange. Si vous pouvez vous connecter depuis l’extérieur du conteneur, vérifiez si la commande curl fonctionne à l’intérieur du conteneur. Mon seul soupçon est que vous rencontrez un problème de réseau avec Docker.
C’est une tentative hasardeuse, mais puisque vous utilisez le port 465 plutôt que le port 587, vous pourriez essayer ceci dans votre fichier yml de conteneur :
DISCOURSE_SMTP_ENABLE_START_TLS: false
Puis reconstruisez le conteneur et voyez si vous avez de la chance
Référence :
GMail (par exemple, pour comparer) expose les ports et méthodes d’authentification suivants.
TLS/STARTTLS (parfois appelé TLS explicite) : utilise le port 587
SSL (parfois appelé TLS implicite) : utilise le port 465
… on tente notre chance sur celui-ci… mais peut-être que nous aurons de la chance
Si cela ne fonctionne pas, vous pourrez toujours revenir en arrière.
Oui, c’était un coup de poker… désolé d’avoir perdu ton temps avec ça !
Ma seule autre « idée folle » pour le moment est de voir si tu peux accéder à ton serveur de messagerie (quel qu’il soit) et définir le port sur 587 (de nombreux fournisseurs SMTP te proposent un choix) et « rejouer le jeu » avec DISCOURSE_SMTP_ENABLE_START_TLS: true, bien sûr.
Franchement, je ne suis normalement pas un « joueur de dés » et je suis plutôt guidé par les faits ; donc si tu ne veux pas essayer, je comprends tout à fait, @onar3d !!
C’est noté. Je n’ai plus d’idées folles pour le moment et il est temps que je me repose pour la nuit ; bonne chance et espérons qu’un des membres de l’équipe aura de meilleures idées à essayer.
Après quelques tentatives supplémentaires (merci beaucoup @IAmGav !), ma configuration Discourse a été confirmée comme fonctionnelle avec un autre serveur de messagerie, ce qui élimine plusieurs pistes à explorer.
Mon fournisseur de serveur de messagerie m’a fait parvenir un message d’erreur de leur part ainsi qu’une suggestion :
L’ingénieur a examiné les journaux et l’erreur observée depuis leur adresse IP concerne les paramètres SSL. Ils utilisent probablement une ancienne version ou des paramètres de connexion obsolètes.
Preuve :
Erreur TLS lors de la connexion depuis [95.216.139.49]:33568 SSL_accept : la connexion TCP a été fermée par le pair.
Essayez avec le mode SSL désactivé pour voir si cela fonctionne.
J’ai essayé en définissant DISCOURSE_SMTP_ENABLE_START_TLS à false comme indiqué ci-dessus, sur le port 465 ainsi que sur le port 26 (répertorié par mon fournisseur comme le port pour les connexions non SSL), mais rien n’a fonctionné.
Est-ce parce que je n’ai pas acheté de certificat SSL pour le domaine thewizardofosc.com ? Je m’en rends compte maintenant après avoir un peu davantage fait des recherches.
Si cela ne fonctionne pas avec l’option sans SSL, cela ne fonctionnera pas non plus avec un SSL payant. Votre hébergeur de messagerie devrait vous fournir un SSL gratuit Let’s Encrypt.
Vous pourriez envisager d’exécuter vos tests curl avec l’option verbose -v activée, pour pouvoir analyser pleinement la poignée de main réussie, puis remonter à partir de cette analyse.