Email ne fonctionne pas du tout

Bonjour. Depuis quelques jours, je lutte pour configurer un forum Discourse, et tous ces problèmes viennent de la configuration de l’email. J’ai réussi à mettre le forum en ligne en sautant l’inscription par email, mais j’ai toujours besoin que cette fonctionnalité soit opérationnelle pour que les utilisateurs puissent s’inscrire. J’obtiens toujours les mêmes résultats, et j’ai essayé de nombreuses choses différentes, mais rien ne semble fonctionner. À chaque fois, l’un des deux scénarios suivants se produit :

  1. L’erreur lors du test d’email indique : « le nom d’hôte … ne correspond pas au certificat du serveur »
  2. L’erreur lors du test d’email indique « 502 », et dans Sidekiq, l’erreur est Jobs::HandledExceptionWrapper: Wrapped Net::ReadTimeout: Net::ReadTimeout with #<TCPSocket:(closed)>

Alors, quand apparaît chacun d’eux ? Le premier apparaît dans tous les scénarios possibles. Le second, en revanche, ne se manifeste que lorsque j’utilise le port 465. Cela prend un certain temps pour « envoyer un email de test », puis cette erreur apparaît. À l’instant, j’ai désactivé SSL, donc le port 587 est utilisable, mais au lieu d’afficher l’erreur 1 ou 2, il reste bloqué sur « Envoi de l’email de test ».

Je ne sais plus quoi faire à ce stade. Je lutte avec ce problème depuis quelques jours et je n’ai toujours pas trouvé de solution. Toute aide serait grandement appréciée. Merci pour votre temps et votre aide.

MISE À JOUR : En utilisant la commande curl --ssl-reqd, j’ai testé les ports 465, 587, 25 et 2525. Voici les résultats :
25 : Ne fonctionne pas (Erreur Curl 35, numéro de version incorrect)
465 : Fonctionne comme prévu avec une réponse rapide
587 : Ne fonctionne pas (Erreur Curl 35, numéro de version incorrect)
2525 : Ne provoque pas d’échec, mais n’envoie jamais d’email (le temps s’écoule indéfiniment sans envoi d’email)

Si cela peut aider, mes paramètres actuels (avec l’erreur 502) sont :

  DISCOURSE_SMTP_ADDRESS: CENSORED
  DISCOURSE_SMTP_PORT: 465
  DISCOURSE_SMTP_USER_NAME: CENSORED
  DISCOURSE_SMTP_PASSWORD: CENSORED
  # DISCOURSE_SMTP_ENABLE_START_TLS: true           # (optionnel, valeur par défaut true)

Modèles :

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
## Décommentez ces deux lignes si vous souhaitez ajouter Lets Encrypt (https)
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"

Et exposition :

expose:
  - "80:80"   # http
  - "443:443" # https

Voici une image contenant les informations sur l’email :

Utilisez-vous l’un des fournisseurs de messagerie recommandés ?

Où le serveur Discourse est-il installé ?

Je ne le pense pas. L’adresse e-mail est fournie par VoltHosting, si cela peut aider.

De plus, le serveur Discourse est installé dans var/discourse et il fonctionne (je peux accéder au site et naviguer avec un compte administrateur que j’ai créé en sautant l’étape de l’e-mail). C’est aussi ainsi que je teste les e-mails (en essayant d’envoyer des e-mails de test à la fois dans E-mail > Paramètres et E-mail > Aperçu du résumé, où j’obtiens ces erreurs). Merci tout de même pour votre aide.

Essayez d’utiliser l’un des fournisseurs recommandés, cela vous aidera rapidement à déterminer si le problème vient de votre installation Discourse ou du serveur de messagerie que vous essayez de contacter.

La liste des fournisseurs recommandés existe parce qu’ils ont été validés pour fonctionner avec Discourse. SMTP peut être pénible même dans les meilleures conditions, et on suppose généralement que si vous n’utilisez pas la configuration recommandée, vous assumez la charge technique supplémentaire qu’elle engendre.

Merci pour votre réponse. Je ne pense pas pouvoir utiliser l’un des fournisseurs recommandés, car la personne qui a établi le plan possède également plusieurs comptes email chez cette entreprise, et cela entraînerait un coût supplémentaire en plus de celui du VPS lui-même. Je ne pense pas que ce soit possible pour le moment. Y aurait-il une autre méthode pour tester plus efficacement les services de messagerie sans avoir à reconstruire le forum à chaque fois ? Merci pour votre aide.

Vous n’avez pas besoin de recompiler pour modifier vos paramètres de messagerie. Vous pouvez exécuter :

./launcher destroy app
./launcher start app

Après avoir modifié les paramètres de messagerie, les nouveaux seront pris en compte. Cela s’applique également à toutes les variables d’environnement.

Si le certificat du serveur de VoltHosting ne correspond pas au nom d’hôte, contactez leur support pour le système de messagerie. Ce n’est pas un problème de Discourse, mais quelque chose qu’ils doivent corriger. Il peut exister un nom d’hôte alternatif valide que vous pouvez utiliser.

Dans tous les cas, je recommande d’utiliser l’une des périodes d’essai gratuites proposées sur la page liée ci-dessus pour vérifier que Discourse gère correctement les e-mails. Vous pourrez toujours revenir à SMTP VoltHosting une fois que vous aurez prouvé que Discourse fonctionne correctement.

Pour vérification, l’instance a-t-elle été installée en suivant ce guide ?

Merci. Je l’utiliserai certainement à l’avenir, mais je cherche toujours une solution possible. Si cela peut aider, voici une capture d’écran de l’erreur Sidekiq :

image

Je pourrais bien sûr utiliser les essais gratuits, mais après tout, c’est un essai gratuit et il présente certaines limitations. Et oui, j’ai bien suivi le guide officiel pour installer le forum Discourse. Il est opérationnel, mais les e-mails ne fonctionnent tout simplement pas. Merci pour votre aide.

À ce stade, vos options consistent vraiment à tester avec un fournisseur recommandé ou à contacter VoltHosting. Les erreurs indiquent que le certificat présenté par le serveur SMTP n’est pas valide pour le nom d’hôte utilisé pour la connexion.

Sauf si vous pouvez prouver le contraire en testant avec l’un des services recommandés, il est très peu probable que ce problème soit lié à votre installation Discourse.

Cette erreur de délai d’attente suggère que vous ne pouvez pas vous connecter à votre serveur de messagerie. Soit Digital Ocean bloque l’accès, soit autre chose le fait.

Vous devriez pouvoir exécuter la commande suivante :

telnet server.hostname server-port

Vous aurez probablement besoin de l’aide de la personne qui a configuré ou qui contrôle le serveur de messagerie.

Merci pour votre réponse. J’ai exécuté la commande à l’instant. Voici les résultats :


Je ne suis pas sûr que cela soit censé me permettre d’utiliser AUTH LOGIN ou non. Si c’est le cas, alors je suppose que c’est le problème, n’est-ce pas ? Merci pour votre aide.

Hmm. Eh bien, ce n’était pas au niveau du serveur. Ma prochaine hypothèse est un problème de réseau Docker. Mais cela pourrait être autre chose.

Merci pour votre réponse. Si possible, bien sûr, comment pourrais-je mener une investigation plus approfondie à ce sujet ? Existe-t-il une commande Docker que je pourrais exécuter pour tester cela et voir ce qu’elle affiche, ou autre chose ? Y a-t-il un moyen de tester cela quelque part afin d’obtenir une sortie indiquant le problème ? Sinon, c’est tout à fait compréhensible. Merci pour votre aide.

MISE À JOUR : En utilisant la commande curl --ssl-reqd, j’ai testé les ports 465, 587, 25 et 2525. Les résultats sont les suivants :
25 : N’a pas fonctionné (Erreur Curl 35, numéro de version incorrect)
465 : A fonctionné comme prévu avec une réponse email rapide
587 : N’a pas fonctionné (Erreur Curl 35, numéro de version incorrect)
2525 : N’a pas échoué, mais n’a jamais envoyé d’email (le temps écoulé a continué d’augmenter sans jamais s’arrêter, sans envoi d’email)

Si cela aide, mes paramètres actuels (avec l’erreur 502) sont :

  DISCOURSE_SMTP_ADDRESS: CENSORED
  DISCOURSE_SMTP_PORT: 465
  DISCOURSE_SMTP_USER_NAME: CENSORED
  DISCOURSE_SMTP_PASSWORD: CENSORED
  # DISCOURSE_SMTP_ENABLE_START_TLS: true           # (optionnel, valeur par défaut true)

Modèles :

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
## Décommentez ces deux lignes si vous souhaitez ajouter Lets Encrypt (https)
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"

Et exposition :

expose:
  - "80:80"   # http
  - "443:443" # https

Voici une image contenant les informations sur l’email :


Je ne suis pas sûr que la raison soit due au fait que Discourse ne se connecte pas avec SSL/TLS, ou à autre chose. J’espère que ces informations seront utiles et aideront à résoudre le problème.

Ajoutez ceci et voyez si cela fonctionne :

DISCOURSE_SMTP_ENABLE_START_TLS: False

Merci pour votre réponse. Malheureusement, cela n’a pas fonctionné. Je rencontre toujours la même erreur 502.

Je ne sais pas si cela aide, mais j’ai pu exécuter la commande curl --ssl-reqd depuis le VPS et envoyer un email avec succès (comme je l’ai mentionné dans cette réponse). Qui plus est, j’ai lancé cette commande à l’intérieur de l’application (en accédant via ./launcher enter app), et cela a fonctionné, donnant les mêmes résultats que le test précédent (le port 465 fonctionne, les ports 25 et 587 ne fonctionnent pas, et le port 2525 renvoie une erreur de délai d’attente). Pourtant, j’obtiens toujours une erreur 502 lorsque je teste sur le forum lui-même (en utilisant des emails de test). J’espère que ces informations supplémentaires seront utiles. Merci pour votre aide.

Avez-vous trouvé une solution ?