Bon, pour commencer, il s’agit d’un environnement de production, et je n’arrive pas à envoyer le premier email d’inscription.
Je suis certain que mes paramètres SMTP sont corrects.
Je parviens à faire un ping et un telnet vers mon serveur de messagerie avec le port utilisé, mais dès que je tape “EHLO mailserver”, la connexion est fermée par l’hôte distant.
J’ai essayé de m’assurer que mes paramètres SMTP étaient corrects en exécutant /var/discourse/discourse-doctor, mais il ne parvient pas à valider mes paramètres. Il indique :
==================== YML SETTINGS ====================
awk: not an option: --field-separator=:
DISCOURSE_HOSTNAME=
awk: not an option: --field-separator=:
SMTP_ADDRESS=
awk: not an option: --field-separator=:
DEVELOPER_EMAILS=
awk: not an option: --field-separator=:
SMTP_PASSWORD=
awk: not an option: --field-separator=:
SMTP_PORT=
awk: not an option: --field-separator=:
SMTP_USER_NAME=
awk: not an option: --field-separator=:
LETSENCRYPT_ACCOUNT_EMAIL=
## TODO: The SMTP mail server used to validate new accounts and send notifications
# SMTP ADDRESS, username, and password are required
# WARNING the char '#' in SMTP password can cause problems!
DISCOURSE_SMTP_ADDRESS: mail.redacted.com
DISCOURSE_SMTP_PORT: 465
DISCOURSE_SMTP_USER_NAME: redacted@redacted.com
DISCOURSE_SMTP_PASSWORD: "redacted"
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (optional, default true)
## If you added the Lets Encrypt template, uncomment below to get a free SSL certificate
LETSENCRYPT_ACCOUNT_EMAIL: redacted@redacted.com
@irwinstar, j’ai supprimé le serveur de messagerie réel pour éviter d’exposer mon serveur sur un forum public. Mais je peux garantir qu’il est correct, car j’ai copié les paramètres de mon client de messagerie (qui fonctionne) et je les ai également comparés aux paramètres SMTP de mon véritable serveur de messagerie.
Merci pour votre proposition d’aide. Je pense que le problème vient des enregistrements SPF/DKIM, donc j’essaie de les corriger.
Néanmoins, discourse-doctor devrait toujours l’analyser correctement. Je ne sais pas ce qui se passe là, car je n’ai pas édité le fichier moi-même dans vim/nano. Pour être clair, le YAML a été généré à l’aide de discourse-setup.
Et je pense que Discourse ne prend pas encore en charge le protocole sur le port 465. Si votre serveur de messagerie prend en charge le port 587, vous pouvez le modifier pour utiliser 587 à la place.
Malheureusement, mon serveur de messagerie ne peut pas utiliser le port 587, j’ai donc ajouté un proxy de messagerie externe à Discourse.
@irwinstar, Si cela est correct, c’est une information extrêmement importante et cela expliquerait pourquoi ma configuration de messagerie ne fonctionne pas. Avez-vous une source pour ces informations ?
Je ne suis pas sûr à ce sujet, mais j’ai essayé plusieurs fois le port 465. Finalement, j’utilise l’image Docker « hieulq/mailproxy » comme proxy de messagerie. J’utilise également ce paramètre app.yml pour Discourse. Cette utilisation semble mauvaise, mais cela fonctionne. J’ai cherché un plugin de messagerie aujourd’hui, mais je n’en ai trouvé aucun.
J’essaie d’éviter d’acheter des serveurs de messagerie cloud ou d’utiliser des proxies (car si je voulais une solution peu recommandable, je me contenterais d’obtenir un compte administrateur à ce stade), alors que j’ai déjà un serveur de messagerie chez HostGator.
Je suis certain que les enregistrements SPF sont configurés pour l’adresse IP de mon serveur Discourse. Je cherche simplement à valider les enregistrements DKIM pour le moment.
Si quelqu’un peut confirmer que le port 465 n’est pas autorisé, ce serait une excellente nouvelle, car cela m’éviterait de m’enfoncer trop loin dans une impasse sur un problème qui n’existe pas. Le port 465 posait problème, comme indiqué dans le message ci-dessous.
En utilisant le port 587, je peux réussir à établir une connexion Telnet complète pour un email et m’authentifier sans problème. J’ai donc fait ce changement.
Maintenant, lorsque l’email est envoyé, je reçois l’erreur suivante :
Email livré d86b48cc-b0f4-4df3-8960-ab5ff96613a0@discourse.imbleau.com (251,0 ms)
Exception du job : le nom d'hôte "mail.redacted.com" ne correspond pas au certificat du serveur
Cependant, j’ai remarqué que ce n’est plus un dépassement de délai de connexion (déclenché après 60 secondes complètes), mais une exception différente reçue en 250 ms.
Cela est probablement dû au fait que j’ai utilisé un email système@discourse.redacted.com, mais que cet email utilise en interne mail.redacted.com comme serveur de messagerie.
Je ne sais pas vraiment comment résoudre ce problème. J’ai essayé ce qui suit :
./launcher enter app
rails r "SiteSetting.notification_email = 'system@mail.redacted.com'"
exit
Puis j’ai reconstruit le conteneur pour l’utiliser juste cette fois. Toujours sans succès. La même erreur persiste.
PROBLÈME DE COURRIEL RÉSOLU ! (discourse-doctor interprète toujours incorrectement)
J’ai fait quelques recherches supplémentaires sur Ruby et sur les raisons pour lesquelles cette erreur se produisait en coulisses, ce qui m’a conduit à ce problème sur Stack Overflow.
C’était le coupable. La solution consistait à modifier la négociation SSL, ce qui m’a donné l’idée de désactiver ce paramètre dans le fichier app.yml DISCOURSE_SMTP_ENABLE_START_TLS: false # (facultatif, par défaut true)
Cela désactivera le chiffrement TLS, alors que le seul problème est que vous utilisez un nom d’hôte incorrect, c’est-à-dire que le serveur de messagerie présente un certificat indiquant autre chose que mail.redacted.com. De nombreux serveurs de messagerie sont souvent connus sous plusieurs noms d’hôtes différents ; vous devez simplement identifier celui qu’il utilise pour son certificat.
Vous pouvez essayer de déterminer quel nom d’hôte il indique et ajuster votre configuration en conséquence.
Merci @RGJ ! Étrangement, il indique que le CN est l’un de mes sous-domaines, sans aucun rapport avec la messagerie. Cela vaut la peine d’être investigué. Merci pour vos conseils.
Ah. Le problème vient du fait que vous avez une version d’awk autre que GNU awk, et l’option --field-separator porte un nom différent dans votre version d’awk.
Quelle version d’awk avez-vous ? Quel système d’exploitation utilisez-vous ?