Bonjour à tous,
Je connais ce problème, qui est bien connu et assez facile à rencontrer. J’ai lu et effectué de nombreux tests, mais je suis déjà bloqué à l’étape « envoi d’e-mail ».
J’ai suivi ce guide : discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub. Voici les étapes que j’ai suivies :
git clone https://github.com/discourse/discourse_docker.git /var/discourse
cd /var/discourse
Accédez au dossier /samples/ et copiez standalone.yml vers /containers/app.yml.
Veuillez modifier les informations concernant votre serveur.
Ensuite :
sudo ./discourse-doctor
Première expérience
Lorsque mon fichier app.yml était configuré ainsi :
DISCOURSE_HOSTNAME : 'localhost'
Et que j’avais rempli les informations suivantes :
DISCOURSE_SMTP_ADDRESS: XXX
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: XXX
DISCOURSE_SMTP_PASSWORD: XXX
DISCOURSE_SMTP_ENABLE_START_TLS: true
Le serveur de messagerie est également hébergé sur le réseau interne.
Au début, cela fonctionnait. Discourse pouvait correctement envoyer les e-mails d’inscription et j’avais également un accès normal à l’administration.
Cependant, lorsque j’ai défini le HOSTNAME sur localhost, je n’ai plus pu accéder au site via l’adresse IP interne (par exemple, 10.1.X.X) dans mon navigateur.
Deuxième expérience
J’ai donc uniquement modifié DISCOURSE_HOSTNAME sans toucher aux autres informations dans app.yml :
DISCOURSE_HOSTNAME : '10.1.3.91'
PS : 10.1.3.91 est mon adresse IP interne (réseau local).
Après ce changement de hostname, j’ai pu accéder au site via mon navigateur. Cependant, le serveur de messagerie ne fonctionne plus ; je ne reçois aucun e-mail de Discourse.
Complément
J’ai tenté d’envoyer un e-mail via Python en utilisant mon serveur SMTP.
Voici le script :
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import smtplib
content = MIMEMultipart()
content["subject"] = "Learn Code With Mike"
content["from"] = " (mon e-mail) "
content["to"] = " (e-mail de test) "
content.attach(MIMEText("Démonstration d'envoi d'e-mail en Python"))
with smtplib.SMTP(host=" (identique à DISCOURSE_SMTP_ADDRESS) ", port="587") as smtp:
try:
smtp.ehlo()
smtp.starttls()
smtp.login(" (identique à DISCOURSE_SMTP_USER_NAME) ", " (identique à DISCOURSE_SMTP_PASSWORD) ")
smtp.send_message(content)
print("Terminé !")
except Exception as e:
print("Message d'erreur : ", e)
Cela a fonctionné sans problème. Cela prouve-t-il que les informations SMTP de l’e-mail sont correctes et utilisables ?
Avez-vous une idée concernant ce problème ?
Concernant le serveur de messagerie, j’ai également essayé Elastic Email et Mailjet, mais sans succès.
Conclusion :
Si DISCOURSE_HOSTNAME est défini sur localhost, le serveur de messagerie fonctionne.
Si DISCOURSE_HOSTNAME est modifié pour une IP interne (c’est-à-dire une adresse IP locale), le serveur de messagerie ne fonctionne plus.
Merci beaucoup !!!
Cordialement,
Chieh