Hola. Tengo un Discourse sin Docker en mi servidor local. También instalé iRedMail. Primero intenté usar el servidor SMTP de mail.ru. Los mensajes de prueba se enviaron, al igual que las invitaciones, pero no llegaron las notificaciones por correo electrónico y tampoco se pudo restablecer la contraseña. Decidí que debería instalar mi propio servidor de correo local y revisar los registros para ver por qué los mensajes no salían. Lo hice. Los mensajes locales se envían correctamente entre buzones, lo cual es suficiente para pruebas. Pensé que sería suficiente para tener Discourse y el correo funcionando localmente. Configuré mi servidor SMTP local. Envié un correo de prueba… ¡y llegó! ¡Ganador (no)! Revisé el archivo /var/log/mail.log del servidor de correo.
Bien. Ahora estoy enviando una invitación al mismo buzón… Reviso los registros del servidor de correo… y no hay nada. Está vacío. No sé cuál es el problema.
Todo lo que pido es una guía sobre cómo hacer que Discourse se comunique con Postfix.
En este momento tengo una cuenta de administrador activa porque la habilité manualmente, ya que, como habrás adivinado, no recibí el correo de verificación. Puedo proporcionar cualquier archivo, como configuraciones y registros, si me lo piden.
Normalmente, cuando tenemos este tipo de problema, ejecutamos algo como:
sendmail -vvv A_VALID_EMAIL_ADDRESS < email.txt
Esto te proporcionará una salida muy detallada del intercambio de información entre tú y el servidor SMTP; y normalmente ese registro detallado te dará las pistas necesarias para resolver tu problema.
¡Hola! No tengo mucha experiencia. Instalé Discourse y un servidor de correo por primera vez. ¿Podrías explicar con más detalle qué es exactamente lo que necesito hacer? Gracias.
Primero, necesitas “olvidarte” temporalmente de Discourse y centrarte en configurar tu relay de correo SMTP, probarlo y asegurarte de que pueda retransmitir correos.
Creé 2 buzones en mi dominio local “@ugda.space”. Y los mensajes se están enviando entre sí. A los buzones de Gmail/Yandex, los mensajes no llegan entre sí. No lo configuré, porque pensé que podría tener suficiente comunicación intra-local para las pruebas.
@Anv Seré directo: una buena regla no escrita debería ser algo como “no pidas a la gente que hable contigo si no estás dispuesto a esforzarte por escucharlos”. Con “escuchar”, me refiero a considerar lo que te están diciendo. Supongo que participar en un foro cuenta como “pedirle a la gente que hable contigo”, especialmente si estás pidiendo ayuda.
Seguir repitiendo lo mismo y obligar a tu interlocutor a repetirse tampoco lleva a ningún lado. Para nadie.
Ahora bien, ¿por qué aún no has ejecutado esa línea de comandos?
Entiendo tu frustración; y lamento no tener más tiempo libre para depurar cada vez que respondes sobre tu problema con el relay SMTP.
Parece que tu servidor SMTP está recibiendo correos; pero eso no necesariamente significa que funcione correctamente como relay SMTP.
Recuerdo, de memoria, que existe una opción para usar sendmail y otros clientes de correo y verificar si el servidor SMTP funciona correctamente como relay. Podrías investigar sobre la opción sendmail -G (o buscar otra forma de probarlo). Básicamente, necesitas enviar el correo a una dirección de prueba diferente a la del servidor en el que estás trabajando, utilizando tu nuevo servidor SMTP como relay.
Un poco de historia
En el pasado, la mayoría de los servidores SMTP retransmitían correos de forma predeterminada; pero luego todos los servidores SMTP de la red se convirtieron en grandes centros de SPAM, ya que los spammers simplemente explotaban la funcionalidad de relay (sin que el dueño del servidor lo supiera) para enviar spam a todo el mundo.
La conclusión es que necesitas verificar si tu nuevo servidor SMTP puede retransmitir el correo por ti.
¿Revisaste detenidamente el tutorial de configuración para ver si mencionaba la configuración del servidor SMTP como relay?
Solo estoy pensando en voz alta y espero que esto te ayude, aunque sea un poco, a dar el siguiente paso en tu proyecto con el servidor SMTP.
Mencionaste que tienes Discourse instalado sin Docker. ¿Sería posible que realices una instalación nueva y limpia de la forma “clásica” (con Docker) usando el correo electrónico que creaste durante esta nueva instalación? ¿O no puedes ejecutar Docker en la máquina que estás utilizando?
Lo intenté con docker, pero no llegó ningún correo. Ni siquiera pude crear una cuenta de administrador. Decidí eliminar docker porque no tenía experiencia.
Seguro que esto no es de gran ayuda, pero como «solo otro dato más», nunca he tenido problemas configurando el correo SMTP en Discourse, ni en una instalación de producción basada en Docker ni en un entorno de desarrollo en macOS (sin Docker) en el escritorio; sin embargo, siempre he utilizado un servicio SMTP de terceros.
Me han llamado la atención; así que ahora me interesa mucho este pequeño acertijo y procuraré encontrar tiempo en las próximas semanas para configurar un retransmisor SMTP en una partición VPS con Ubuntu Linux y ver si puedo lograr que Discourse funcione con un retransmisor SMTP «a la antigua», en lugar de depender de «soluciones de terceros».
Me disculpo de antemano si me lleva unas semanas construir esta configuración. Me estoy quedando atrás con un montón de trámites gubernamentales aburridos porque me he estado divirtiendo demasiado aprendiendo sobre el desarrollo de plugins de Discourse y cómo funciona Rails con todas sus partes móviles.
Después de varios intentos y errores, he logrado que Discourse funcione con Postfix. Aquí están los pasos que utilicé, espero que puedan ser útiles:
Configura un registro A que apunte a tu nuevo servidor, por ejemplo forum.domain.com.
Instala Postfix, establece forum.domain.com como myhostname y agrega 172.17.0.0/16 a mynetworks para que el contenedor de Discourse pueda comunicarse con Postfix sin autenticación. 172.17.0.0/16 es la red predeterminada utilizada por los contenedores de Docker.
Asegúrate de que Postfix pueda enviar correos electrónicos. Prefiero usar swaks.
swaks -t tu_nombre@gmail.com
Deberías recibir un correo electrónico con el asunto “This is a test mailing”.
En containers/app.yml, asegúrate de comentar las 3 líneas correspondientes a DISCOURSE_SMTP_USER_NAME, DISCOURSE_SMTP_PASSWORD y DISCOURSE_SMTP_ENABLE_START_TLS.
Luego establece DISCOURSE_SMTP_DOMAIN en forum.domain.com (asegúrate de reemplazarlo con tu nombre de dominio aquí).
Para probar, puedes conectarte al contenedor de Discourse ejecutando docker exec -it app bash y luego: