您好,
几周以来,我从 Discourse 实例发送邮件一直失败。SMTP 设置未更改,curl 测试仍然有效,但明显变慢。我们主机提供商的 SMTP 服务器(我们需要用它发送邮件)的发送时间稳定在 7 秒。
cat testmail | curl -vvv --url 'smtp://smtp.<HOST>:587' --mail-from mail@<DOMAIN> --mail-rcpt <ME> --user "mail@<DOMAIN>:<PW>" -T -
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Trying <IP>...
* Connected to smtp.<HOST> (<IP>) port 587 (#0)
< 220 mailproxy1.<HOST> Dovecot ready.
> EHLO ecm2
< 250-mailproxy1.<HOST>
< 250-8BITMIME
< 250-AUTH PLAIN LOGIN
< 250-BURL imap
< 250-ENHANCEDSTATUSCODES
< 250-SIZE
< 250-STARTTLS
< 250 PIPELINING
> AUTH PLAIN
< 334
> xxxxxx=
0 0 0 0 0 0 0 0 --:--:-- 0:00:06 --:--:-- 0< 235 2.7.0 Authentication successful
0 0 0 0 0 0 0 0 --:--:-- 0:00:07 --:--:-- 0> MAIL FROM:<mail@<DOMAIN>>
< 250 2.1.0 Ok
> RCPT TO:<ME>
< 250 2.1.5 Ok
> DATA
< 354 End data with <CR><LF>.<CR><LF>
} [89 bytes data]
100 89 0 0 0 89 0 11 --:--:-- 0:00:07 --:--:-- 20< 250 2.0.0 Ok: queued as 356C3288C85
100 89 0 0 0 89 0 11 --:--:-- 0:00:07 --:--:-- 26
* Connection #0 to host smtp.<HOST> left intact
我将其与我们内部邮件服务器进行了比较,每封邮件不到 1 秒。来自邮件主机商的 7 秒本来不是什么大问题,但我无法找到一个设置来解除(似乎是硬编码的?)5 秒超时。open_timeout 以及在我看来更相关的 read_timeout 也可以在 /admin/email 的测试界面中看到:
- Docker 应用程序容器中的计时与本地测试或 Docker 主机上的测试相同。
- cURL 发送的邮件已正确送达(在等待 7 秒后立即送达)。
- 出于隐私原因,sendgrid、mailgun 等常用解决方案很遗憾无法使用。
- 也许切换到
ActionMailer7.0.x 触发了我的这个问题?- rails/actionmailer/CHANGELOG.md at v7.0.3.1 · rails/rails · GitHub
-
为 SMTP 设置的
open_timeout和read_timeout都配置了默认值 5。
感谢您提供关于如何配置 read_timeout 的任何建议。

