我正在协助一位用户排查未收到邮件的问题,并发现其账户日志中记录了“撤销邮件”操作。请问如何取消或撤销此操作?
另外:如果用户的邮箱被撤销,这一情况是否会反映在“已发送邮件”或“跳过邮件”的日志中?还是仅出现在“撤销邮件”操作中?
继续讨论 日志中的“撤销邮件”操作是什么意思?:
我正在协助一位用户排查未收到邮件的问题,并发现其账户日志中记录了“撤销邮件”操作。请问如何取消或撤销此操作?
另外:如果用户的邮箱被撤销,这一情况是否会反映在“已发送邮件”或“跳过邮件”的日志中?还是仅出现在“撤销邮件”操作中?
继续讨论 日志中的“撤销邮件”操作是什么意思?:
“撤销邮件”操作会在发送给用户的多封邮件退回(未能成功投递)时触发。每发生一次邮件退回,用户的“退回分数”就会根据您站点设置的“软退回分数”或“硬退回分数”值相应增加。一旦用户的退回分数达到您站点设置的“退回分数阈值”(默认为 4),系统将自动触发“撤销邮件”操作。
您可以通过进入用户的管理员页面,点击页面顶部“退回分数”行中的“重置”按钮来撤销此操作。
如果您未点击“重置”按钮,Discourse 将在 reset bounce score after days 设置的时间段过去后自动清除用户的退回分数。该设置默认为 30 天。过了这段时间后,Discourse 将再次尝试向该用户发送邮件。
如果因用户超过站点的“退回分数阈值”而未向其发送邮件,则会在“已跳过”日志中添加一条记录。跳过原因将设置为“超过退回分数阈值”。
谢谢。所以,如果我在最近发给用户 X 的邮件的“跳过(Skipped)”日志中看到“超过反弹分数阈值(Exceeded bounce_score_threshold)”,是否可以推断之前对该用户执行了“撤销邮件(revoke email)”操作,反之亦然?
背景是:我的一位用户没有收到来自我们 Discourse 实例的邮件。他非常专业,我相信他的报告,即他已经检查了垃圾邮件文件夹等。我曾在一段时间前重置过他的反弹分数,但直到今天才偶然在日志中发现针对他的“撤销邮件(Revoke Email)”记录。
这很有趣。我原本以为对于那些邮箱尚未被禁用的用户,退信分数会被重置(就像 Mailman 的工作方式那样)。我想最接近的做法是将此设置改为 10 年左右!
据我所知,Discourse 总是会重置用户的退信分数,然后尝试重新向该用户发送邮件。临时退信和永久退信的处理方式唯一的不同在于:永久退信会将退信分数增加默认值 2(由站点设置 hard bounce score 设定),而不是增加默认值 1(由站点设置 soft bounce score 设定)。
这样做确实可以解决问题,但可能会带来意想不到的后果。例如,那些因最近的 Gmail 故障而超过 bounce score threshold(退信分数阈值)的用户,将不得不等待 10 年才能自动重置其退信分数。
Mailman 2 的退信设置/阈值默认值更高,但一旦达到该阈值,用户就会被取消订阅。两种观点都有道理。编辑:我记不清具体细节了,但记得在某个阶段,系统会提供回复一封管理邮件的机会,这将重置你的退信分数,并使你保留在列表中。
许多自行托管 Discourse 的人可能使用的是 Mailgun,该服务在发生一次“永久性失败”后,会将邮箱地址列入其抑制列表,因此会忽略 Discourse 较为宽松的处理方式。
据称,可以通过 Mailgun API 获取该抑制列表,我想或许也可以将其与 Discourse 的设置进行同步。
今天我收到了一封来自 Google 的邮件,明确告知有人获取了我的密码——“Google 已意识到有其他人知道您的密码”——因此我在想这是否与此次“服务中断”有关……
我刚刚注意到这一点:Configure VERP to handle bouncing e-mails - #166
这篇文章是关于移除 bounce_score_threshold_deactivate 设置的。我不禁怀疑这是否是个失误。如果默认设置难以达到,正确的做法应该是降低该阈值。
对于大型论坛而言,移除该设置的一个潜在意外后果是,在多年间持续尝试向越来越多的无效地址发送邮件。这可能会导致与外部服务(如 Mailgun,该服务会在单次“永久失败”退信后屏蔽某个地址)产生纠纷,或影响 IP 信誉。
目前的情况是,除非我理解有误,否则 Discourse 认为它正在发送邮件,而 Mailgun 仅因其屏蔽列表而拒绝发送,且无法将 Discourse 的处理方式与 Mailgun 的机制同步。
我差点忘了这一点。不过,我不确定 bounce_score_threshold_deactivate 设置是否真的能防止 Discourse 尝试向无效地址发送邮件。问题在于,一旦用户的“退信分数”达到阈值,Discourse 就会停止向其发送邮件,直到 reset bounce score after days 设置的时间段过去。届时,该用户的退信分数将被重置,整个过程又将重新开始。
我不确定解决这个问题的最佳方案是什么。如果我的理解正确,随着时间的推移,Discourse 站点似乎确实会尝试向越来越多的无效地址发送邮件。
这个问题至少有两方面。一方面,假设邮件发送方(例如 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