Recebendo e-mails de entrada para funcionar ao encaminhar portas de um roteador

Mudei um ambiente de teste funcional do DigitalOcean para uma caixa Linux doméstica (Ubuntu), mas estou com dificuldades para fazer o e-mail de entrada funcionar. Estou encaminhando a porta 25 no meu roteador e consigo ver o e-mail chegando ao verificar os logs de e-mail (consigo ver o Para: e o De: nos logs). A falha parece ocorrer quando o receptor de e-mail tenta POSTAR o e-mail para o Discourse e recebo um timeout. Suspeito que isso ocorra porque meu ISP não permite loopback através do roteador, então se o nome de domínio público da instância do Discourse for usado no comando POST, ele ficará pendurado, pois simplesmente não haverá resposta, pois o roteador descarta os pacotes.

Isso também me impediu de visualizar o site do Discourse na máquina em que ele está em execução… até que percebi que poderia adicionar uma linha ao arquivo /etc/hosts que apontava o nome de domínio público para o endereço IP da rede interna e, desde então, consigo visualizar a instância do Discourse no Firefox.

Presumo que possa haver alguma mágica que eu possa fazer para que o contêiner do receptor de e-mail saiba fazer algo semelhante. Pelo que li, ele não usa o arquivo /etc/hosts e esse pode ser a origem do problema. Tentei adicionar linhas ao arquivo mail-receiver.yml para permitir extra_hosts:, mas não consigo fazê-lo registrar. Se eu entrar no aplicativo do receptor de e-mail e tentar adicionar outra linha ao /etc/hosts (com cat >>), embora eu veja a linha aparecer, o mesmo problema persiste.

Esta é a linha dos logs onde mostra a falha do POST (nota: o domínio é inventado para este exemplo):

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

Alguma ideia?

Depois de tentar novamente e perceber que eu tinha colocado o endereço IP/nome do host na ordem errada no arquivo /etc/hosts, acho que consegui. No entanto, se o contêiner mail-receiver for reiniciado, ele perde a linha extra que adicionei ao arquivo /etc/hosts do contêiner. Existe uma maneira de fazer o arquivo mail-receiver.yml adicionar a linha extra automaticamente?

Você pode olhar outros modelos que modificam arquivos. Os modelos da web fazem isso, por exemplo.