Faire fonctionner la réception de courrier lors du transfert de port depuis un routeur

J’ai déplacé un environnement de test fonctionnel de DigitalOcean vers une boîte Linux à domicile (Ubuntu), mais j’ai du mal à faire fonctionner la réception des e-mails. Je redirige le port 25 sur mon routeur et je peux voir les e-mails arriver en consultant les journaux de messagerie (je peux voir le To: et le From: dans les journaux). L’échec semble se produire lorsque le récepteur de courrier tente d’envoyer l’e-mail à Discourse via POST et que j’obtiens un délai d’attente. Je soupçonne que c’est parce que mon FAI n’autorise pas la boucle locale via le routeur, donc si le nom de domaine public de l’instance Discourse est utilisé dans la commande POST, cela bloquera car il n’y aura tout simplement aucune réponse, le routeur abandonnant les paquets.

Cela m’a également empêché de consulter le site Web de Discourse sur la machine sur laquelle il est exécuté… jusqu’à ce que je réalise que je pouvais ajouter une ligne dans le fichier /etc/hosts qui pointait le nom de domaine public vers l’adresse IP du réseau interne et depuis, je peux consulter l’instance Discourse dans Firefox.

Je suppose qu’il pourrait y avoir une astuce que je peux faire pour que le conteneur mail-receiver sache faire quelque chose de similaire. D’après mes recherches, il n’utilise pas le fichier /etc/hosts et c’est peut-être la source du problème. J’ai essayé d’ajouter des lignes au fichier mail-receiver.yml pour autoriser extra_hosts: mais je n’arrive pas à le faire enregistrer. Si j’entre dans l’application mail-receiver et que j’essaie d’ajouter une autre ligne à /etc/hosts (avec cat >>) bien que je voie la ligne apparaître, le même problème persiste.

Voici la ligne des journaux où l’échec du POST est montré (note : le domaine est inventé pour cet exemple) :

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

Des idées ?

Après avoir réessayé et réalisé que j’avais inversé l’adresse IP/le nom d’hôte dans le fichier /etc/hosts, je pense que j’ai réussi. Cependant, si le conteneur mail-receiver est redémarré, il perd la ligne supplémentaire que j’ai ajoutée au fichier /etc/hosts du conteneur. Existe-t-il un moyen de faire en sorte que le fichier mail-receiver.yml ajoute automatiquement la ligne supplémentaire ?

Vous pouvez examiner d’autres modèles qui modifient des fichiers. Les modèles Web le font, par exemple.