1.我的 PVE 中(192.168.1.99/24, 网关 192.168.1.1)
直接跑了个 docker 应用并创立了自己的网络 invoiceninja_invoiceninja (网段 172.27.0.0/16, 网关 172.27.0.1)
同时在 docker-compose.yml 中指定了外部网络如下: networks:
同时参考了这个帖子 https://www.v2ex.com/t/1042150 在 PVE 宿主机中增加了对应的邮件 smtp 端口, 但是容器中仍然无法链接远程 smtp 邮件服务器, 我该怎么做?
root@datahub:~# ufw allow from 172.27.0.0/16 to any port 25 Rules updated root@datahub:~# ufw allow from 172.27.0.0/16 to any port 587 Rules updated root@datahub:~# ufw allow from 172.27.0.0/16 to any port 465 Rules updated
上述 docker 容器内和 PVE 宿主都开了 ipv4 转发.
最后容器中运行 netstat -tln 如下.
"/var/www/app # netstat -tln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.11:34747 0.0.0.0:* LISTEN
tcp 0 0 :::9000 :::* LISTEN "
PVE 宿主机中运行 netstat -tln 如下: (这是因为宿主机的 25/587/465smtp 相关端口没打开的原因吗?
root@datahub:/opt/invoiceninja/invoiceninja# netstat -tln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:10000 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:8384 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:9000 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:85 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:52345 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:20172 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:20171 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:20170 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:35143 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:52283 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:3939 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:3838 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:2222 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:7564 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22000 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22222 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:5005 0.0.0.0:* LISTEN
tcp6 0 0 :::10000 :::* LISTEN
tcp6 0 0 :::8384 :::* LISTEN
tcp6 0 0 :::9000 :::* LISTEN
tcp6 0 0 :::52283 :::* LISTEN
tcp6 0 0 :::3128 :::* LISTEN
tcp6 0 0 :::3306 :::* LISTEN
tcp6 0 0 :::3939 :::* LISTEN
tcp6 0 0 :::3838 :::* LISTEN
tcp6 0 0 :::2222 :::* LISTEN
tcp6 0 0 :::3000 :::* LISTEN
tcp6 0 0 :::2017 :::* LISTEN
tcp6 0 0 :::111 :::* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 :::7564 :::* LISTEN
tcp6 0 0 :::8006 :::* LISTEN
tcp6 0 0 :::8080 :::* LISTEN
tcp6 0 0 :::6565 :::* LISTEN
tcp6 0 0 :::22000 :::* LISTEN
tcp6 0 0 :::22222 :::* LISTEN
tcp6 0 0 :::5005 :::* LISTEN
tcp6 0 0 ::1:25 :::* LISTEN
1
kk2syc 168 天前
在 docker-compose.yml 中配置端口映射了吗?
```YML services: app: image: your-image ports: - "25:25" ``` |
3
stevenshuang 168 天前 via iPhone
不太清楚 PVE 。但是看你 docker 加了 192 的那个 IP ,你应该是想访问 192 的 25 ,456 端口,从你的 pve 的 netstat 看,你的 25 端口绑定在 127.0.0.1 和::1 上了,没有 456 的监听端口,你可以试试让你的邮件服务监听 0.0.0.0
|
4
kkk9 168 天前
pve 对虚拟机的安全组(包括宿主机的防火墙安全组)是否放行对应端口?优先测试 465 ,考虑到你的物理网络运营商可能封 25 端口了
|
6
KINGWAY OP @stevenshuang #3 PVE 就是 debian,
|
7
iyiluo 168 天前
先试试把 network 换成 host ,排除主机连接邮件服务器的问题
|
8
miscnote 168 天前
多半是你的出站 smtp 连接被封了。
|
10
KINGWAY OP @iyiluo #7 其实我考虑过这个问题, 但是你看到 docker-compose.yml 文件中下面设置, 应该没问题吧.
invoiceninja extra_hosts: "in5.localhost:192.168.1.99 " #host and ip |
11
defunct9 168 天前
这种问题不可能出现啊,啥都不配,直接跑 docker ,容器内禁止访问外部 25 端口,不可能啊
|
12
masterclock 168 天前
465 的话,是不是证书问题?
|
13
KINGWAY OP @masterclock #12 远程自建服务器用的是 mailcow, https://docs.mailcow.email/client/client-manual/
不过 465/587 以及多种证书加密组合都尝试过了, 不行. |