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?