激活邮件已跳过,因为“用户为匿名”

我已向十一位同事发送了邮件邀请,他们同意协助我测试自托管的 Discourse 实例。其中大多数人顺利创建了账户,但有一位例外。

当我首次向他发送邀请邮件时,邮件被软退回(我使用 MailJet 发送外部邮件,而他的邮箱域名是 mac.com)。八天后我重新发送,结果再次被软退回。在此期间,我用个人邮箱一直能成功给他发送邮件,因此我直接生成了一个邀请链接并通过其他方式发给了他。

他点击链接后成功创建了账户并设置了密码,但并未收到激活邮件。我在管理面板中看到,该激活邮件出现在“已跳过”(Skipped)标签页下,跳过的原因是“用户为匿名用户”(User is anonymous)。

我不确定在此上下文中“匿名用户”具体指什么。我以为通过链接邀请的用户通常会收到一封激活邮件以验证邮箱地址。我已勾选“需要填写全名”,而他在个人资料中也已填写了该字段。

您是否启用了匿名模式?在 Discourse 中,该功能默认是禁用的。

以下是我修改默认设置后包含“匿名”的选项:

“需要登录”:已勾选
“启用注册号召性用语”:未勾选
“允许匿名发帖”:已勾选

请记住,所有匿名账户均为临时账户,仅在已登录用户选择“进入匿名模式”选项时按需创建。

好的,这很有趣。我没想到他能在从未被激活且无法登录的情况下进入匿名模式。

我使用数据浏览器查询了数据库,以查看哪些匿名用户与哪些原始用户关联。他的账户显示为与我的管理员账户关联的匿名用户。

我不清楚他为什么会出现在 anonymous_users 表中。

您的 SSO 代码可能存在问题,您是否正在使用 SSO?

除此之外,我认为您的安装在某些方面已损坏。

我没有使用单点登录(SSO),仅使用内置的用户认证功能。

如果我的安装出了问题,重新部署能否解决?

这也是我升级到 2.4.0.beta6 后邀请的第一个用户,也是唯一一个通过链接而非邮件邀请的用户。

你是在匿名模式下邀请他们的吗(生成邀请链接)?:thinking:

我在生成链接时使用的是管理员账户(并非匿名模式)。

更新:为了尝试用另一个电子邮件地址复现该问题,我使用个人 iCloud 邮箱向自己的备用邮箱(一个由 Gmail 托管的 .edu 邮箱)发送了邀请链接。

点击邀请链接并完成注册后,Discourse 向该 .edu 邮箱发送了一封激活邮件。我进入管理员账户确认,新创建的账户并未出现在 anonymous_users 列表中。随后我退出管理员账户,并通过激活邮件中的链接成功激活了该账户。

删除该新用户后,我再次尝试使用系统自动生成的邀请邮件进行流程,一切均按预期正常工作。

由于我无法用另一个由我控制的邮箱复现该问题,这是否可能与该特定用户的邮箱账户和/或邮件服务提供商有关?我之前发送的两封邀请邮件曾在不同时间出现软退信(soft-bounce),但当时我可以通过个人邮箱成功向他发送邮件。(我认为问题不太可能出在邮件服务提供商上,因为他和我都使用 Mac - Apple Discourse 向自己的个人邮箱发送邮件也完全正常)。

此外,为排查邮件投递问题,我刚刚通过 admin/email 向该用户发送了一封“可投递性测试”邮件,MailJet 显示该邮件已成功送达。自上次尝试通过系统向他发送邮件至今,唯一的变化是我在 DNS 中添加了 DMARC 记录(此前 SPF 和 DKIM 已配置成功,但尚未设置 DMARC)。