Configuração SMTP para usar localhost ou 172.17.0.1 não está funcionando, como depurar

Continuando a discussão de Como configurar SMTP para usar localhost?:

Estou tentando me conectar ao Protonmail Bridge rodando na máquina host, e falha com connection refused. Minhas configurações são:

  DISCOURSE_SMTP_ADDRESS: 172.17.0.1
  DISCOURSE_SMTP_PORT: 1025

Agora, testes com nmap:

nmap 127.0.0.1 na máquina host exibe:

Nmap scan report for localhost (127.0.0.1)
Host is up (0.000010s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
1025/tcp open  NFS-or-IIS
1042/tcp open  afrog

nmap 172.17.0.1 no container docker não exibe nenhuma porta 1025.

Eu também tentei no meu arquivo app.yml, na seção expose:

172.17.0.1:1025:1025

Mas então o container docker falhou ao iniciar, com o erro “the port is already in use”.

Finalmente, se eu tento me conectar usando openssl a partir do localhost:

openssl s_client -connect 127.0.01:1025 -starttls smtp

funciona bem; mas não quando eu tento a partir do container docker:

openssl s_client -connect 172.17.0.1:1025 -starttls smtp

Verificando com ss na máquina host:

ss -plnt
State  Recv-Q  Send-Q  Local Address:Port  Peer Address:Port  Process
LISTEN   0      4096       127.0.0.1:1025      0.0.0.0:*    users:(("proton-bridge",pid=953,fd=12))

O que estou fazendo de errado?


Uma coisa que encontrei nesta resposta do stackoverflow diz:

  • você só poderá acessar serviços do host que estão ou (a) escutando em INADDR_ANY (também conhecido como 0.0.0.0) ou que estão explicitamente escutando na interface docker0.

Primeiro, verifiquei iptables --list, que acredito que fornece a saída padrão:

iptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy DROP)
target     prot opt source               destination
DOCKER-USER  all  --  anywhere             anywhere
DOCKER-ISOLATION-STAGE-1  all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
DOCKER     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain DOCKER (1 references)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             172.17.0.2           tcp dpt:https
ACCEPT     tcp  --  anywhere             172.17.0.2           tcp dpt:http

Chain DOCKER-ISOLATION-STAGE-1 (1 references)
target     prot opt source               destination
DOCKER-ISOLATION-STAGE-2  all  --  anywhere             anywhere
RETURN     all  --  anywhere             anywhere

Chain DOCKER-ISOLATION-STAGE-2 (1 references)
target     prot opt source               destination
DROP       all  --  anywhere             anywhere
RETURN     all  --  anywhere             anywhere

Chain DOCKER-USER (1 references)
target     prot opt source               destination
RETURN     all  --  anywhere             anywhere

Agora, estou me perguntando se o serviço Protonmail Bridge que está escutando em 127.0.0.1:1025 não está aceitando conexões do container Docker porque elas não são exatamente de 127.0.0.1?

Acontece que o tráfego precisa ser redirecionado, leia mais aqui:

1 curtida

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.