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 interfacedocker0.
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?