Prezados,
Eu já conhecia esse problema, que é conhecido e bastante comum de ocorrer. Li bastante e fiz muitos testes, mas já estou travado na etapa de “envio de e-mail”.
Estive seguindo este guia: discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub. Abaixo estão os meus passos:
git clone https://github.com/discourse/discourse_docker.git /var/discourse
cd /var/discourse
Vá até /samples/ e copie standalone.yml para /containers/app.yml.
Por favor, ajuste as informações do seu servidor.
Em seguida:
sudo ./discourse-doctor
Primeiro experimento
Quando configurei meu app.yml com:
DISCOURSE_HOSTNAME: 'localhost'
E preenchi as seguintes informações:
DISCOURSE_SMTP_ADDRESS: XXX
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: XXX
DISCOURSE_SMTP_PASSWORD: XXX
DISCOURSE_SMTP_ENABLE_START_TLS: true
O servidor de e-mail também está em uma rede interna.
No início, tudo funcionou. O Discourse enviou corretamente o e-mail de registro e também pude acessar o painel administrativo normalmente.
No entanto, ao definir o HOSTNAME como localhost, não consigo acessar o sistema pelo navegador usando o IP interno (por exemplo, 10.1.X.X).
Segundo experimento
Então, alterei apenas o DISCOURSE_HOSTNAME e não modifiquei outras informações no app.yml:
DISCOURSE_HOSTNAME: '10.1.3.91'
Obs: 10.1.3.91 é o meu IP interno (da rede local).
Após essa alteração, consegui acessar o sistema pelo navegador. Porém, o servidor de e-mail parou de funcionar. Não consigo receber e-mails do Discourse.
Complemento
Tentei enviar um e-mail via Python usando meu SMTP.
O script é o seguinte:
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import smtplib
content = MIMEMultipart()
content["subject"] = "Learn Code With Mike"
content["from"] = " (meu e-mail) "
content["to"] = " (e-mail de teste) "
content.attach(MIMEText("Demo python send email"))
with smtplib.SMTP(host=" (igual ao DISCOURSE_SMTP_ADDRESS) ", port="587") as smtp:
try:
smtp.ehlo()
smtp.starttls()
smtp.login(" (igual ao DISCOURSE_SMTP_USER_NAME) ", " (igual ao DISCOURSE_SMTP_PASSWORD) ")
smtp.send_message(content)
print("Concluído!")
except Exception as e:
print("Mensagem de erro: ", e)
Funcionou corretamente. Isso prova que as informações do SMTP estão corretas e podem ser usadas?
Alguém tem alguma ideia sobre esse problema?
Quanto ao servidor de e-mail, também tentei usar Elastic Email e Mailjet, mas sem sucesso.
Conclusão:
Se DISCOURSE_HOSTNAME for definido como localhost, o servidor de e-mail funciona.
Se DISCOURSE_HOSTNAME for alterado para um IP interno (ou seja, IP da rede local), o servidor de e-mail não funciona.
Muito obrigado!!!
Atenciosamente,
Chieh