jeff_y
2020 年11 月 17 日 01:07
1
首次注册邮件使用最新 Docker 镜像安装时,我的 SMTP 服务器返回了以下响应:
意外返回代码 554(期望 250):
“访问被拒绝:用户 `arn:aws:iam::[acct]:user/[user]' 无权对资源 `arn:aws:ses:us-west-1:[acct]:identity/[identity]' 执行 `ses:SendRawEmail' 操作”。
然而,Discourse 日志文件 production.log 显示如下内容:
Started PUT "/finish-installation/resend-email" for [ip] at 2020-11-16 20:58:10 +0000
Processing by FinishInstallationController#resend_email as HTML
Parameters: ...
Completed 200 OK in 23ms (Views: 6.4ms | ActiveRecord: 0.0ms | Allocations: 6023)
...
Delivered mail [randid]@[hostname] (191.3ms)
在我看来,网站或至少日志应该返回错误信息,而不是成功消息。
谢谢,
Jeff
1 个赞
sam
(Sam Saffron)
2020 年11 月 17 日 01:17
2
通常情况下,邮件是在后台队列中发送的,因此对用户来说是不可见的。
不过,我也可以接受让向导在出现失败时更加醒目和突出,但这需要轮询服务器来检测状态。这可能是一个较大的改动,我也不太确定。
2 个赞
jeff_y
2020 年11 月 17 日 01:28
3
对于向导:向导不显示失败是可以的,但也不应表明邮件已成功发送。更接近事实的提示会更有帮助。如果显示返回状态过于困难,不如改为:“注册邮件已成功加入队列。请检查 /path/to/log 以查看状态。”
对于日志:工作线程应记录状态,尤其是在发生错误时。我不熟悉该架构,但在“unicorn.stderr.log”或其他任何地方都看不到有用的信息。一定有什么东西在吞没返回码和错误消息……
1 个赞
sam
(Sam Saffron)
2020 年11 月 17 日 01:31
4
如果您有冒险精神,我非常乐意看到能改进此内容的 PR。
2 个赞
jeff_y
2020 年11 月 17 日 01:34
5
感谢你对这一变更持开放态度。我会将其加入待办事项清单,但如果有人抢先处理,我也完全不会介意
1 个赞
jeff_y
2020 年11 月 20 日 23:15
6
管理员登录后,管理员控制台会显示邮件错误,表明这些错误已存储在数据库中,并且在首次管理员注册完成之前,本应可以通过数据库访问。
表 skipped_email_logs 包含了我正在寻找的信息。
如果您以用户 discourse 登录到 Discourse 容器,可以运行以下命令:
psql discourse -c "select * from skipped_email_logs"