Continuant la discussion de Comment configurer SMTP pour utiliser localhost ? :
J’essaie de me connecter à Protonmail Bridge qui tourne sur la machine hôte, et cela échoue avec connection refused. Mes paramètres sont :
DISCOURSE_SMTP_ADDRESS: 172.17.0.1
DISCOURSE_SMTP_PORT: 1025
Maintenant, les tests nmap :
nmap 127.0.0.1 sur la machine hôte affiche :
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 dans le conteneur docker ne renvoie aucun port 1025.
J’ai aussi essayé dans mon fichier app.yml, dans la section expose :
172.17.0.1:1025:1025
Mais ensuite, le conteneur docker n’a pas pu démarrer en indiquant “le port est déjà utilisé”.
Enfin, si j’essaie de me connecter avec openssl depuis localhost :
openssl s_client -connect 127.0.01:1025 -starttls smtp
cela fonctionne bien ; mais pas lorsque j’essaie depuis le conteneur docker :
openssl s_client -connect 172.17.0.1:1025 -starttls smtp
En vérifiant avec ss sur la machine hôte :
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))
Qu’est-ce que je fais de mal ?
Une chose que j’ai trouvée dans cette réponse stackoverflow dit :
- vous ne pourrez accéder aux services hôtes que s’ils sont soit (a) en écoute sur
INADDR_ANY(alias 0.0.0.0), soit explicitement en écoute sur l’interfacedocker0.
Premièrement, j’ai vérifié iptables --list, ce qui, je crois, donne la sortie par défaut :
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
Maintenant, je me demande si le service Protonmail Bridge qui écoute sur 127.0.0.1:1025 n’accepte pas les connexions du conteneur Docker parce qu’elles ne proviennent pas exactement de 127.0.0.1 ?