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

群晖NAS Docker部署Redmine5.0.2 网页端无法发送邮件通知

问题根因

这个故障和SMTP账号、认证方式配置无关,核心是Redmine Web工作进程与CLI Rake进程的运行环境差异,结合Docker容器的TLS证书配置缺陷导致:

  • 你在命令行执行rake redmine:email:test[User]时,是前台独立运行的Ruby进程,会自动搜索容器内所有可用的CA证书路径完成TLS握手,只要账号密码正确就能发信成功,无法代表Web侧的运行状态。
  • Web端处理发信请求的是Puma/Unicorn常驻工作进程,sameersbn/redmine镜像默认没有给Rails生产环境显式指定CA证书路径,进程发起SMTPS/STARTTLS连接时会卡在证书校验环节,直到触发Net::ReadTimeout with #<Socket:(closed)>错误,连接被强制断开。
  • 你测试无加密的SMTP服务器时不需要走TLS证书校验流程,因此不会触发该问题。
排查解决步骤

1. 补全SMTP配置的TLS参数

编辑Redmine的config/configuration.yml文件,在production环境的smtp_settings配置段补充TLS相关参数,原有已配置的地址、端口、账号、密码、authentication: :login项保留即可:

production:
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      # 以下为需要补充的参数
      # 用587端口STARTTLS加密时开这个,用465端口SMTPS就把这行改成 tls: true
      enable_starttls_auto: true
      openssl_verify_mode: 'peer'
      ca_file: "/etc/ssl/certs/ca-certificates.crt"
      read_timeout: 60

2. 校验容器内CA证书完整性

进入Redmine运行容器执行以下操作,确认根证书文件存在且可用:

# 进入容器命令行,替换成你实际的Redmine容器名称
docker exec -it redmine bash
# 检查CA证书文件是否存在
ls /etc/ssl/certs/ca-certificates.crt

如果提示文件不存在,直接在容器内执行以下命令安装根证书包:

apt update && apt install -y ca-certificates

安装完成后退出容器,重启Redmine容器。

3. 排查群晖侧网络拦截

如果上述操作后还是超时,做两个检查:

  • 进入群晖Docker管理页,把Redmine容器的网络模式从默认bridge改为host模式再测试,部分版本群晖Docker的bridge网桥会对长连接TLS握手做不合理的超时截断
  • 检查群晖自带防火墙、安全顾问的出站规则,确认没有拦截容器进程发往SMTP服务465/587端口的请求,群晖部分安全规则会默认拦截非常驻系统进程发起的加密出站连接

4. 修复验证

直接登录Redmine Web后台,进入邮件通知设置页点击发送测试邮件即可,不需要重复执行rake命令验证——rake命令跑通仅能证明CLI环境配置正常,和Web进程的运行环境不互通。

内容的提问来源于stack exchange,提问作者mululu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 17:18:24