He movido un entorno de prueba que funcionaba de DigitalOcean a una máquina Linux doméstica (Ubuntu), pero tengo problemas para que el correo entrante funcione. Estoy reenviando el puerto 25 en mi router y puedo ver que el correo llega al mirar los registros de correo (puedo ver el Para: y el De: en los registros). El fallo parece ocurrir cuando el receptor de correo intenta POSTear el correo electrónico a Discourse y obtengo un tiempo de espera agotado. Sospecho que esto se debe a que mi ISP no permite el loopback a través del router, por lo que si se utiliza el nombre de dominio público de la instancia de Discourse en el comando POST, se colgará, ya que simplemente no hay respuesta porque el router descarta los paquetes.
Esto también ha impedido que pudiera ver el sitio web de Discourse en la máquina en la que se ejecuta… hasta que me di cuenta de que podía poner una línea en el archivo /etc/hosts que apuntaba el nombre de dominio público a la dirección IP de la red interna y desde entonces puedo ver la instancia de Discourse en Firefox.
Supongo que podría haber alguna magia que pueda hacer para que el contenedor del receptor de correo sepa hacer algo similar. Por lo que he leído, no utiliza el archivo /etc/hosts y ese podría ser el origen del problema. He intentado añadir líneas al archivo mail-receiver.yml para permitir extra_hosts:, pero no parece que consiga que se registre. Si entro en la aplicación del receptor de correo e intento añadir otra línea a /etc/hosts (con cat >>) aunque veo que la línea aparece, el mismo problema persiste.
Esta es la línea de los registros donde se muestra el fallo del POST (nota: el dominio es inventado para este ejemplo):
<23>Feb 23 01:00:31 receive-mail[133]: Recipient: abc@example-discourse.org.uk<19>Feb 23 01:01:31 receive-mail[133]: Failed to POST the e-mail to https://example-discourse.org.uk/admin/email/handle_mail: execution expired (Net::OpenTimeout)<19>Feb 23 01:01:31 receive-mail[133]: /usr/lib/ruby/2.7.0/net/http.rb:960:in `initialize’
¿Alguna idea?