发送电子邮件失败(301 错误)

你好,

按照这份指南设置邮件回复功能时遇到了问题。我已遵循故障排查建议,发现邮件卡在队列中,且邮件接收日志中存在错误……

将电子邮件 POST 到 http://community.parseplatform.org/admin/email/handle_mail 失败:301

如果这是重复问题,敬请见谅,但我未能找到相同主题的帖子。

这个错误很容易修复。
您需要在邮件接收器的 yml 配置中使用带 https 的链接。

错误末尾的 301 是正确的,因为 http 链接已被 301 重定向到 https,导致 POST 请求无法获得正确的 200 响应。

谢谢,确实是个简单的修复!也许应该更新邮件接收模板——大家不都在用 HTTPS 运行 Discourse 吗?

我没想到这是一个标准的 HTTP 响应代码 :man_facepalming:

虽然有点跑题,但我必须说 Discourse 是一款非常出色的软件。我在设置过程中遇到了一些问题,但考虑到其底层的复杂性以及我在这方面经验的缺乏,整个过程竟然出奇地顺利!

我也遇到了同样的问题,尝试将 URL 修改为 https(并重新构建应用),但问题依然存在:

<22>Apr 13 10:18:10 postfix/smtpd[323]: connect from mail-vs1-f50.google.com[209.85.217.50]
<22>Apr 13 10:18:11 postfix/smtpd[323]: 403AF81D15: client=mail-vs1-f50.google.com[209.85.217.50]
<22>Apr 13 10:18:11 postfix/cleanup[329]: 403AF81D15: message-id=<XXXXXXXXX@mail.gmail.com>
<22>Apr 13 10:18:11 postfix/qmgr[80]: 403AF81D15: from=<XXXXXXXXX@gmail.com>, size=2555, nrcpt=1 (queue active)
<22>Apr 13 10:18:11 postfix/smtpd[323]: disconnect from mail-vs1-f50.google.com[209.85.217.50] ehlo=1 mail=1 rcpt=1 data=1 quit=1 commands=5
<23>Apr 13 10:18:11 receive-mail[331]: Recipient: testing@mydomain.com
<19>Apr 13 10:18:11 receive-mail[331]: Failed to POST the e-mail to http://forum.mydomain.com/admin/email/handle_mail: 301
<22>Apr 13 10:18:11 postfix/pipe[330]: 403AF81D15: to=<testing@mydomain.com.ar>, relay=discourse, delay=0.72, delays=0.55/0.01/0/0.16, dsn=4.3.0, status=deferred (temporary failure)

也许我需要在电子邮件模板中启用 SSL 选项?我的 Discourse 部署在一个全局 Nginx 实例之后(我看到 mail-receiver.template 中暴露了 25 端口)。

感谢您的时间,一如既往。

这是你的问题所在。
请编辑 mail-receiver.yml 文件,将地址改为 https://forum.mydomain.com,问题应该就能解决。

我尝试按照您之前所说添加了 https,但需要 rebuild mail-receiver(不是全局应用 :sweat_smile:)。

每天我都能从 Linux、Docker 和 Discourse 中学到一些新东西。

各位,这是我很久以来见过的最棒的社区。再次感谢!

通常情况下,如果我们要修改 yml 文件,就必须重新构建相关的容器。

很高兴你解决了这个问题,也很抱歉我在之前的回答中没有表达清楚。