Estimados todos,
Conozco este problema; es un problema conocido y bastante común. He leído y realizado muchas pruebas, pero ya me he quedado atascado en la etapa de “enviar correo electrónico”.
Estaba siguiendo esta guía: discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub. A continuación, detallo mis pasos:
git clone https://github.com/discourse/discourse_docker.git /var/discourse
cd /var/discourse
Diríjase a /samples/ y copie standalone.yml a /containers/app.yml.
Por favor, actualice la información sobre su servidor.
A continuación:
sudo ./discourse-doctor
Primer experimento
Cuando mi app.yml estaba configurado así:
DISCOURSE_HOSTNAME : 'localhost'
Y completé esta información:
DISCOURSE_SMTP_ADDRESS: XXX
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: XXX
DISCOURSE_SMTP_PASSWORD: XXX
DISCOURSE_SMTP_ENABLE_START_TLS: true
El servidor de correo también está alojado en la red interna.
Al principio, funcionó correctamente. Discourse pudo enviar el correo de registro y también pude acceder al panel de administración con normalidad.
Sin embargo, cuando configuré HOSTNAME como localhost, no pude acceder mediante la IP interna (por ejemplo, 10.1.X.X) desde el navegador.
Segundo experimento
Por lo tanto, solo modifiqué DISCOURSE_HOSTNAME y no cambié otra información en app.yml:
DISCOURSE_HOSTNAME : '10.1.3.91'
Nota: 10.1.3.91 es mi IP interna (de red local).
Después de cambiar el hostname de esta manera, pude acceder desde mi navegador. Sin embargo, el servidor de correo dejó de funcionar. No puedo recibir correos de Discourse.
Complemento
Intenté enviar un correo mediante Python usando mi SMTP.
El script es el siguiente:
from email.mime.multipart import MIMEMultipart
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import smtplib
content = MIMEMultipart()
content["subject"] = "Learn Code With Mike"
content["from"] = " (mi correo) "
content["to"] = " (correo de prueba) "
content.attach(MIMEText("Demo python send email"))
with smtplib.SMTP(host=" (igual que DISCOURSE_SMTP_ADDRESS) ", port="587") as smtp:
try:
smtp.ehlo()
smtp.starttls()
smtp.login(" (igual que DISCOURSE_SMTP_USER_NAME) ", " (igual que DISCOURSE_SMTP_PASSWORD) ")
smtp.send_message(content)
print("¡Completado!")
except Exception as e:
print("Mensaje de error: ", e)
Funcionó correctamente. ¿Esto demuestra que la información de SMTP es correcta y usable?
¿Tienen alguna idea sobre este problema?
En cuanto al servidor de correo, también probé con Elastic Email y Mailjet, pero tampoco funcionó.
Conclusión:
Si DISCOURSE_HOSTNAME se establece en localhost, el servidor de correo funciona.
Si DISCOURSE_HOSTNAME se cambia a una IP interna (es decir, IP de red local), el servidor de correo no funciona.
¡Muchas gracias!
Saludos cordiales,
Chieh