Actualmente estoy intentando configurar un host con Discourse en Docker en mi servidor doméstico para probarlo. Está funcionando bastante bien hasta ahora, la instancia funciona sin problemas.
Sin embargo, no consigo enviar los correos electrónicos a través de mi propio servidor. En principio, el envío a través de un proveedor de servicios funciona.
Tengo un smtpd propio en funcionamiento. Sin embargo, he desactivado los puertos estándar 465 y 587 para enviar a través de IPv4 con el fin de restringir los escaneos de puertos. Solo el puerto 23456 está abierto para enviar a través de IPv4.
Una comprobación con
root@HomeServer:/Ruby/docker.ruby.discourse# ./discourse-doctor
resulta en:
==================== PRUEBA DE CORREO ====================
Para una prueba robusta, obtén una dirección de http://www.mail-tester.com/
O simplemente envíate un mensaje de prueba a ti mismo.
¿Dirección de correo electrónico para la prueba de correo? ('n' para omitir) [hostmaster@example.com]:
Enviando correo a hostmaster@example.com. . .
Probando el envío a hostmaster@example.com usando smtpd.example.com:23456, nombre de usuario:mbox_hostmaster@example.com con autenticación simple.
======================================== ERROR ========================================
ERROR INESPERADO
Net::ReadTimeout
====================================== SOLUCIÓN =======================================
Este no es un error común. ¡No existe una solución recomendada!
Por favor, informa del mensaje de error exacto anterior en https://meta.discourse.org/
(¡Y una solución, si encuentras alguna!)
=======================================================================================
Luego intenté conectarme a través de telnet, eso no es un problema:
root@HomeServer:/Ruby/docker.ruby.discourse# docker exec -t -i 50544a79b91a /bin/bash
root@discourse:/# telnet smtpd.example.com 23456
Trying 1.2.3.4...
Connected to smtpd.example.com.
Escape character is '^]'.
quit
Connection closed by foreign host.
root@discourse:/# exit
La configuración real en app.yml es:
DISCOURSE_SMTP_ADDRESS: smtpd.example.com
DISCOURSE_SMTP_PORT: 23456
DISCOURSE_SMTP_USER_NAME: mbox_hostmaster@example.com
DISCOURSE_SMTP_PASSWORD: pa$$word
DISCOURSE_SMTP_ENABLE_START_TLS: true # (opcional, por defecto true)
#DISCOURSE_SMTP_DOMAIN: discourse.example.com # (requerido por algunos proveedores)
DISCOURSE_NOTIFICATION_EMAIL: no-reply@discourse.example.com # (dirección desde la que enviar notificaciones)
# DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none
# DISCOURSE_SMTP_AUTHENTICATION: "login"
También intenté hacerlo funcionar a través de IPv6, pero sin éxito. ¿Hay alguna solución para habilitar la conectividad IPv6 dentro de la aplicación docker?
Estamos en 2024 y 26 años después de que se estandarizaron los protocolos, he configurado mis sistemas con él; todo funciona muy bien.
¡Gracias por tu ayuda!
Achim