Redmine 不发送电子邮件

Redmine 不发送电子邮件

我的 Debian 服务器上安装了 redmine 1.4.1。configuration.yaml 包含以下内容

production:
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      tls: true
      enable_starttls_auto: true
      address: "smtp.yandex.ru"
      port: 465
      domain: "my.domain.com" 
      authentication: :plain
      user_name: "Username"
      password: "Password"

当 redmine 尝试发送电子邮件时,我可以在 nginx 日志中看到此信息

[info] 23788#0: *1 client prematurely closed connection, so upstream connection is closed too while sending request to upstream, client: 37.57.17.197, server: redmine.my.domain.com, request: "GET /admin/test_email HTTP/1.1", upstream: "passenger:unix:/passenger_helper_server:", host: "redmine.my.domain.com", referrer: "http://redmine.my.domain.com/settings"

我尝试过不同的 smtp 服务器,但结果是一样的。

我将这些规则应用于 iptables,但没有任何帮助。

 iptables -A INPUT -p tcp --dport 465 -m state --state NEW,ESTABLISHED -j ACCEPT
 iptables -A OUTPUT -p tcp --sport 465 -m state --state ESTABLISHED -j ACCEPT

答案1

首先检查端口是否打开(假设 smtp.yandex.ru 是您的 SMTP 服务器):

telnet smtp.yandex.ru 465

然后我建议您使用以下命令检查问题tcpdump

第一阶段,检查服务器之间的通信(-i eth0必要时使用):

sudo tcpdump -nl host smtp.yandex.ru and port 465

然后,如果远程主机响应并且存在 TCP/IP 通信,请检查从服务器接收的实际数据(如果发现任何错误)。

sudo tcpdump -nl -s1500 -w- src host smtp.yandex.ru | strings

如果这没有帮助,请使用上述方法更新您的问题并提供更多详细信息。

答案2

对我来说,将 tls : true 更改为ssl: true并将 plain 更改为 login 可以解决问题:

production:
  email_delivery:
  delivery_method: :smtp
  smtp_settings:
    ssl: true
    enable_starttls_auto: true
    address: "smtp.yandex.ru"
    port: 465
    domain: "my.domain.com" 
    authentication: :login
    user_name: "Username"
    password: "Password"

相关内容