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

Redmine无法发送邮件,出现execution expired错误求助

我来帮你一步步排查Redmine邮件发送的问题,这种情况我在运维过程中碰到过好几次,咱们从几个核心方向入手:

一、SMTP模式下的核心排查点

当你用SMTP配置出现execution expired错误时,大概率是网络或配置匹配问题:

  • 核对SMTP参数与服务商要求一致:不同邮箱服务商的SMTP地址、端口、加密规则差异很大,比如QQ邮箱SMTP地址是smtp.qq.com,端口465(SSL加密),而Gmail是smtp.gmail.com,端口587(TLS加密)。要确保configuration.yml里的address、port、enable_starttls_auto/ssl这些参数完全符合要求,比如用SSL加密时要设置ssl: true,别混用TLS的配置。
  • 确认账号密码/授权码正确性:很多国内邮箱(QQ、网易等)要求用SMTP授权码而非登录密码,你得先去邮箱后台开启SMTP服务,生成专属授权码填到配置里,别直接用登录密码。
  • 测试服务器到SMTP的网络连通性:在Redmine服务器上执行命令测试能不能连上SMTP服务器,比如:
    telnet smtp.qq.com 465
    # 或者用nc命令
    nc -zv smtp.gmail.com 587
    
    如果连不通,说明服务器防火墙拦截了对应端口,或者服务器本身没有外网权限,这时候得先打通网络。
  • 开启详细邮件日志排查:production.log只显示成功但没收到邮件,可能是日志级别不够。在configuration.yml里添加以下配置:
    email_delivery:
      delivery_method: :smtp
      smtp_settings:
        # 你的原有SMTP配置
        logger: :file
        log_file: log/mail.log
    
    重新发送测试邮件后,查看log/mail.log,里面会有更具体的发送细节,比如认证失败、被收件方拒收等。
二、Sendmail模式的排查方向

换成:sendmail后测试显示成功但仍收不到,得从服务器本地邮件服务入手:

  • 确认sendmail服务状态:先检查服务器是否安装了sendmail,执行sendmail -V看版本信息;再用systemctl status sendmail(systemd系统)或service sendmail status(SysV系统)确认服务是否正常运行。
  • 直接测试本地sendmail发信:在服务器上执行命令手动发信,看是否能成功:
    echo "邮件测试内容" | sendmail -v your-test-email@example.com
    
    终端会输出发信的详细过程,如果出现relay denied之类的错误,说明sendmail本身的中继配置有问题,需要调整sendmail.cf里的规则。
  • 检查邮件队列状态:用mailq命令查看sendmail的邮件队列,如果队列里有积压的邮件,说明邮件没被成功投递,可能是DNS解析失败、目标邮箱域名不存在,或者被对方服务器拒收了。
三、容易忽略的小细节
  • 检查收件方垃圾邮件箱:有时候邮件其实已经发送成功,但被收件方的反垃圾系统拦截了,去垃圾邮件文件夹里找找看。
  • 确认Redmine配置文件的权限与语法:YAML格式对缩进非常严格,必须用空格不能用制表符;同时要确保Redmine的运行用户(比如www-data)有读取configuration.yml的权限,否则配置不会生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:50:22