Продолжаем обсуждение из темы Как настроить 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.0.1: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))
Что я делаю не так?
Один из ответов в этой теме на Stack Overflow гласит:
- вы сможете получить доступ только к службам хоста, которые либо (a) прослушивают
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?