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?