Ottenere la posta in arrivo funzionante quando si inoltrano le porte da un router

Ho spostato un ambiente di test funzionante da DigitalOcean a una macchina Linux domestica (Ubuntu) ma ho difficoltà a far funzionare la posta in arrivo. Sto inoltrando la porta 25 sul mio router e posso vedere la posta arrivare guardando i log di posta (posso vedere il To: e il From: nei log). Il fallimento sembra verificarsi quando il ricevitore di posta tenta di eseguire il POST dell’e-mail a Discourse e ricevo un timeout. Sospetto che ciò sia dovuto al fatto che il mio ISP non consente il loopback attraverso il router, quindi se il nome di dominio pubblico dell’istanza Discourse viene utilizzato nel comando POST, si bloccherà poiché semplicemente non c’è risposta poiché il router scarta i pacchetti.

Questo mi ha anche impedito di visualizzare il sito Web Discourse sulla macchina su cui è in esecuzione… finché non ho capito che potevo inserire una riga nel file /etc/hosts che puntava il nome di dominio pubblico all’indirizzo IP della rete interna e da allora posso visualizzare l’istanza Discourse in Firefox.

Presumo che ci possa essere qualche trucco che posso fare in modo che il container mail-receiver sappia fare qualcosa di simile. Dalle mie letture, non utilizza il file /etc/hosts e questo potrebbe essere la fonte del problema. Ho provato ad aggiungere righe al file mail-receiver.yml per consentire extra_hosts: ma non riesco a farlo registrare. Se accedo all’app mail-receiver e provo ad aggiungere un’altra riga a /etc/hosts (con cat >>) anche se vedo apparire la riga, lo stesso problema persiste.

Questa è la riga dai log in cui mostra il fallimento del POST (nota: il dominio è inventato per questo esempio):

<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’

Qualche idea?

Avendo riprovato e realizzando di aver inserito l’indirizzo IP/hostname nel verso sbagliato nel file /etc/hosts, penso di averlo fatto funzionare. Tuttavia, se il container mail-receiver viene riavviato, perde la riga aggiuntiva che ho aggiunto al file /etc/hosts del container. Esiste un modo per far sì che il file mail-receiver.yml aggiunga automaticamente la riga aggiuntiva?

Puoi dare un’occhiata ad altri template che modificano i file. I template web lo fanno, ad esempio.