Configuration SMTP pour utiliser localhost ou 172.17.0.1 ne fonctionne pas, comment déboguer

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’interface docker0.

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 ?

Il s’avère que le trafic doit être redirigé, en savoir plus ici :

1 « J'aime »

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