如何配置 aws_sns_topic_arn_allowlist?

更新到 2026.1.5 之后,我现在看到如下站点提示:

服务器已配置为通过 Amazon SES 发送邮件,但您尚未将任何 SNS 主题 ARN 加入白名单。在您将合法的 ARN 添加到 aws_sns_topic_arn_allowlist 之前,退信通知将被拒绝。

不过,我找不到有关此设置的相关信息。

我在 2026.1.5 的更新日志中找到了这一条,但它并没有真正说明该怎么做:SECURITY: Prevent any signed AWS SNS TopicARN from being accepted via… · discourse/discourse@3a3d315 · GitHub

我也看到了。

在 Amazon SNS 控制台中,我已经设置好了两个“主题”。我对设置 SES 的记忆已经有些模糊了。那一定是按照 Discourse 的相关说明进行的。最近的这个帖子也提到了这一点:How do I properly configure the AWS SNS topic ARN allowlist?

其中一个用于处理退信,另一个用于处理投诉,每个主题都有对应的 ARN,格式为 arn:aws:sns:eu-west-1:111111111111:DiscourseBounces。我将这两个 ARN 都添加到了 Discourse 的 aws_sns_topic_arn_allowlist 设置中,警告信息就不再出现了。希望这意味着我做对了……

根据这篇帖子,这个设置似乎是用于让 Discourse 学习通过 SES 发送后由 Amazon 接收到的退信。

然而,我使用 SES 仅仅是为了发送 forum.example.com 的消息,并使用 mail-receiver 来接收回复和退信。我认为 Discourse 仪表板中的警告信息仅适用于通过 SES 接收回复和退信的用户,对吗?而不是适用于 MX 记录指向我们自有服务器的用户?

Discourse 团队在软件中添加了这条警告,却没有提供任何解释,这确实非常令人失望。

话虽如此,我可以补充一点,自七月以来我一直未对此做任何处理,但似乎并没有引发任何问题。

啊,感谢这个主题,我之前一直疏忽了这一点。我们应该解释清楚该设置何时生效以及如何找到对应的值,而且警告信息也过于宽泛。

只要 SMTP 主机名看起来像 SES,且允许列表为空,就会出现该提示,即使你的配置中并未使用 SNS。

如果 SES 退信反馈是通过 mail-receiver 到达 Discourse 的,你无需填充此设置。你可以将其留空。

@Jonathan5,你添加的退信主题 ARN 是正确的值。不过有个小提醒 —— Discourse 目前仅通过此 webhook 处理退信,因此添加投诉主题并不会启用投诉处理功能。

我们已更新了描述和警告信息以说明这一点,当不适用时可忽略它们。感谢你的反馈!