متابعةً للنقاش من كيفية ضبط إعدادات SMTP لاستخدام localhost؟:
أحاول الاتصال بـ Protonmail Bridge الذي يعمل على الجهاز المضيف، ويفشل مع رسالة “connection refused”. إعداداتي هي:
DISCOURSE_SMTP_ADDRESS: 172.17.0.1
DISCOURSE_SMTP_PORT: 1025
الآن، اختبارات nmap:
nmap 127.0.0.1 على الجهاز المضيف يُخرج:
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 في حاوية docker لا يُخرج أي منفذ 1025.
لقد جربت أيضًا في ملف app.yml الخاص بي، في قسم expose:
172.17.0.1:1025:1025
ولكن بعد ذلك فشلت حاوية docker في البدء مع خطأ “المنفذ قيد الاستخدام بالفعل”.
أخيرًا، إذا حاولت الاتصال باستخدام openssl من localhost:
openssl s_client -connect 127.0.01:1025 -starttls smtp
فإنها تعمل بشكل جيد؛ ولكن ليس عندما أحاول من حاوية docker:
openssl s_client -connect 172.17.0.1:1025 -starttls smtp
بالتحقق باستخدام ss على الجهاز المضيف:
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))
ماذا أفعل بشكل خاطئ؟
شيء وجدته في إجابة stackoverflow هذه يقول:
- ستتمكن فقط من الوصول إلى خدمات المضيف التي إما (أ) تستمع على
INADDR_ANY(المعروفة أيضًا باسم 0.0.0.0) أو التي تستمع بشكل صريح على واجهةdocker0.
أولاً، لقد تحققت من iptables --list، والذي أعتقد أنه يعطي الإخراج الافتراضي:
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
الآن، أتساءل عما إذا كانت خدمة Protonmail Bridge التي تستمع على 127.0.0.1:1025 لا تقبل الاتصالات من حاوية Docker لأنها ليست من 127.0.0.1 بالضبط؟