GitLab Docker容器无法连接邮件服务器SMTP端口排查求助
GitLab Docker容器SMTP连接超时问题
本地部署了GitLab CE 16.9.2版本的Docker实例,此前SMTP邮件发送功能正常,现在无法通过公司邮件服务器发送邮件。
SMTP配置
gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "mail.mycompany.de" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_domain'] = "mycompany.de" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_user_name'] = 'username' gitlab_rails['smtp_password'] = 'passwd' gitlab_rails['smtp_enable_starttls_auto'] = false gitlab_rails['smtp_tls'] = true gitlab_rails['smtp_ssl'] = true gitlab_rails['smtp_pool'] = false gitlab_rails['smtp_openssl_verify_mode'] = 'none' gitlab_rails['gitlab_email_enabled'] = true
注:公司其他软件可正常使用该邮件服务器,SMTP配置本身无问题,上述认证信息为测试用,所有收件邮箱均由该服务器管理。
邮件测试错误
在GitLab控制台执行测试命令:
Notify.test_email('my.name@mycompany.de', 'Message Subject', 'Message Body').deliver_now
返回超时错误:
Delivered mail 65f95c1432f38_374d32d009195e@gitlab.mycompany.de.mail (30043.0ms) /opt/gitlab/embedded/lib/ruby/gems/3.1.0/gems/net-smtp-0.3.3/lib/net/smtp.rb:645:in `rescue in tcp_socket': Timeout to open TCP connection to mail.mycompany.de:465 (exceeds 30 seconds) (Net::OpenTimeout) /opt/gitlab/embedded/lib/ruby/3.1.0/socket.rb:61:in `connect_internal': Connection timed out - user specified timeout (Errno::ETIMEDOUT)
网络测试结果
- 容器内可Ping通邮件服务器,DNS解析正常
- 容器内连接465端口超时,但宿主机可正常连接该端口
- 容器内curl外部网站正常
容器启动配置
启动命令:
docker run --detach \ --hostname gitlab.mycompany.de \ -p 127.0.0.1:8443:443 \ --name gitlab \ --restart unless-stopped \ --volume /var/www/gitlab/config:/etc/gitlab \ --volume /var/www/gitlab/logs:/var/log/gitlab \ --volume /var/www/gitlab/data:/var/opt/gitlab \ --network plantuml-n \ --shm-size 256m \ gitlab/gitlab-ce:$1
其中$1为指定版本,容器使用提前创建的bridge模式网络:
docker network create plantuml-n
抓包分析
容器IP为172.19.0.2,向邮件服务器a.b.c.d:465发送SYN包后无响应,持续重传;宿主机对应网络网桥可看到这些包,但邮件服务器所在网桥及容器内均未收到SYN包。
补充环境信息
- 容器及宿主机OS:Ubuntu 22.04
- 防火墙:容器无防火墙,宿主机使用ufw
- 容器内无
iptables-save命令,宿主机iptables规则已提供 - 容器路由:
172.19.0.0/16 dev eth0 scope link src 172.19.0.3 - 宿主机路由:
default via a.b.c.d dev enp0s31f6 proto static onlink 10.8.1.0/24 dev wg0 proto kernel scope link src 10.8.1.1 172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 172.18.0.0/16 dev br-260e4a48fccf proto kernel scope link src 172.18.0.1 linkdown 172.19.0.0/16 dev br-5d7297ff3a1b proto kernel scope link src 172.19.0.1 172.21.0.0/16 dev br-79dd7e626a8f proto kernel scope link src 172.21.0.1
请问是什么原因导致容器向外的SMTP流量被阻塞?
内容的提问来源于stack exchange,提问作者mmyta
相关产品推荐
相关产品推荐

