我的 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"