“取消撤销”电子邮件以及已撤销电子邮件的未发送消息日志记录

我正在协助一位用户排查未收到邮件的问题,并发现其账户日志中记录了“撤销邮件”操作。请问如何取消或撤销此操作?

另外:如果用户的邮箱被撤销,这一情况是否会反映在“已发送邮件”或“跳过邮件”的日志中?还是仅出现在“撤销邮件”操作中?

继续讨论 日志中的“撤销邮件”操作是什么意思?

1 个赞

“撤销邮件”操作会在发送给用户的多封邮件退回(未能成功投递)时触发。每发生一次邮件退回,用户的“退回分数”就会根据您站点设置的“软退回分数”或“硬退回分数”值相应增加。一旦用户的退回分数达到您站点设置的“退回分数阈值”(默认为 4),系统将自动触发“撤销邮件”操作。

您可以通过进入用户的管理员页面,点击页面顶部“退回分数”行中的“重置”按钮来撤销此操作。

如果您未点击“重置”按钮,Discourse 将在 reset bounce score after days 设置的时间段过去后自动清除用户的退回分数。该设置默认为 30 天。过了这段时间后,Discourse 将再次尝试向该用户发送邮件。

如果因用户超过站点的“退回分数阈值”而未向其发送邮件,则会在“已跳过”日志中添加一条记录。跳过原因将设置为“超过退回分数阈值”。

4 个赞

谢谢。所以,如果我在最近发给用户 X 的邮件的“跳过(Skipped)”日志中看到“超过反弹分数阈值(Exceeded bounce_score_threshold)”,是否可以推断之前对该用户执行了“撤销邮件(revoke email)”操作,反之亦然?

背景是:我的一位用户没有收到来自我们 Discourse 实例的邮件。他非常专业,我相信他的报告,即他已经检查了垃圾邮件文件夹等。我曾在一段时间前重置过他的反弹分数,但直到今天才偶然在日志中发现针对他的“撤销邮件(Revoke Email)”记录。

2 个赞

这很有趣。我原本以为对于那些邮箱尚未被禁用的用户,退信分数会被重置(就像 Mailman 的工作方式那样)。我想最接近的做法是将此设置改为 10 年左右!

1 个赞

据我所知,Discourse 总是会重置用户的退信分数,然后尝试重新向该用户发送邮件。临时退信和永久退信的处理方式唯一的不同在于:永久退信会将退信分数增加默认值 2(由站点设置 hard bounce score 设定),而不是增加默认值 1(由站点设置 soft bounce score 设定)。

这样做确实可以解决问题,但可能会带来意想不到的后果。例如,那些因最近的 Gmail 故障而超过 bounce score threshold(退信分数阈值)的用户,将不得不等待 10 年才能自动重置其退信分数。

3 个赞

Mailman 2 的退信设置/阈值默认值更高,但一旦达到该阈值,用户就会被取消订阅。两种观点都有道理。编辑:我记不清具体细节了,但记得在某个阶段,系统会提供回复一封管理邮件的机会,这将重置你的退信分数,并使你保留在列表中。

许多自行托管 Discourse 的人可能使用的是 Mailgun,该服务在发生一次“永久性失败”后,会将邮箱地址列入其抑制列表,因此会忽略 Discourse 较为宽松的处理方式。

据称,可以通过 Mailgun API 获取该抑制列表,我想或许也可以将其与 Discourse 的设置进行同步。

今天我收到了一封来自 Google 的邮件,明确告知有人获取了我的密码——“Google 已意识到有其他人知道您的密码”——因此我在想这是否与此次“服务中断”有关……

3 个赞

我刚刚注意到这一点:Configure VERP to handle bouncing e-mails - #166

这篇文章是关于移除 bounce_score_threshold_deactivate 设置的。我不禁怀疑这是否是个失误。如果默认设置难以达到,正确的做法应该是降低该阈值。

对于大型论坛而言,移除该设置的一个潜在意外后果是,在多年间持续尝试向越来越多的无效地址发送邮件。这可能会导致与外部服务(如 Mailgun,该服务会在单次“永久失败”退信后屏蔽某个地址)产生纠纷,或影响 IP 信誉。

目前的情况是,除非我理解有误,否则 Discourse 认为它正在发送邮件,而 Mailgun 仅因其屏蔽列表而拒绝发送,且无法将 Discourse 的处理方式与 Mailgun 的机制同步。

2 个赞

我差点忘了这一点。不过,我不确定 bounce_score_threshold_deactivate 设置是否真的能防止 Discourse 尝试向无效地址发送邮件。问题在于,一旦用户的“退信分数”达到阈值,Discourse 就会停止向其发送邮件,直到 reset bounce score after days 设置的时间段过去。届时,该用户的退信分数将被重置,整个过程又将重新开始。

我不确定解决这个问题的最佳方案是什么。如果我的理解正确,随着时间的推移,Discourse 站点似乎确实会尝试向越来越多的无效地址发送邮件。

3 个赞

这个问题至少有两方面。一方面,假设邮件发送方(例如 localhost)会配合,Discourse 应采取什么样的良好策略。另一方面,如何与不配合的邮件发送服务(例如 Mailgun)进行同步。

我认为 Discourse 中已经有一条类似“请检查您的邮箱地址,因为我们在向其发送邮件时遇到问题”的提示。也许 Discourse 需要采取更积极的措施来禁用退信的邮箱,并配合一条不可关闭的站点通知,说明邮件发送存在问题。

与外部发送服务的同步会更困难。Mailgun 表示可以通过其 API 获取他们的抑制列表,但我不确定是否也能通过 API 移除地址。如果两者都可行,那么 Discourse 可以在地址进入抑制列表时立即禁用该地址,并在管理员或用户在 Discourse 中执行手动操作(例如回复确认邮件)时将其从抑制列表中移除。与此相关的另一个问题是,每个提供商的规则可能各不相同。

编辑:上方的删除线已添加,因为现在可以通过 API 从 Mailgun 抑制列表中移除电子邮件地址:https://documentation.mailgun.com/en/latest/api-suppressions.html#delete-a-single-bounce

1 个赞