DigitalOcean + Siteground 通过 465 端口发送邮件无效(2525 端口可用)

你好,
我在 Digital Ocean 上启动了一个 Discourse Droplet,本质上就是 Discourse 的 Docker 镜像。
一切运行正常,直到我到达注册步骤:

我们已向 admin.discourse@ourdomain.coop 发送了一封激活邮件

但邮件从未收到。

tail -f /var/discourse/shared/standalone/log/rails/production.log
Sent mail to admin.discourse@ourdomain.coop (61113.9ms)
Job exception: Net::ReadTimeout

于是我尝试通过 telnet 发送邮件,结果成功了,但前提是必须使用 AUTH PLAIN,正如 Using Telnet with an SMTP Server – That's Geeky 中所述。
随后我发现了一个如 https://stackoverflow.com/questions/42272644/why-do-i-get-done-after-auth-login-command 中描述的 bug。

首先,我切换到端口 2525,并成功收到了邮件 [Discourse] Confirm your new account。于是我用 https://www.base64encode.net/ 验证了新密码并重新构建了应用,但再次出现 Job exception: Net::ReadTimeout
之后我又改回端口 2525,这次没有收到邮件,但日志显示:

tail -f /var/discourse/shared/standalone/log/rails/production.log
Sent mail to admin.discourse@ourdomain.coop (61113.9ms)

这次没有 Job exception: Net::ReadTimeout 错误。

我现在完全懵了。

DISCOURSE_SMTP_ADDRESS: itm13.siteground.biz
DISCOURSE_SMTP_PORT: 465
DISCOURSE_SMTP_USER_NAME: admin.discourse@ourdomain.coop
DISCOURSE_SMTP_PASSWORD: MyPassword
DISCOURSE_SMTP_ADDRESS: mail.ourdomain.coop 
DISCOURSE_SMTP_PORT: 2525
DISCOURSE_SMTP_USER_NAME: admin.discourse@ourdomain.coop
DISCOURSE_SMTP_PASSWORD: MyPassword

注意:没有使用括号、引号等特殊字符!

swaks --to myemail@ourdomain.coop --from admin.discourse@ourdomain.coop --server itm13.siteground.biz --auth LOGIN --auth-user admin.discourse@ourdomain.coop -tls

swaks --to myemail@gmail.com --from admin.discourse@ourdomain.coop --server itm13.siteground.biz --auth LOGIN --auth-user admin.discourse@ourdomain.coop -tls

运行成功

我刚刚注意到,(仅那一次)发送的邮件的发件人与 app.yml 中设置的不同。它显示的是旧的主机名,而不是我正在测试使用的新主机名,尽管我一直只在使用新主机名。