You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 12:02:01