邮件服务器长期关闭期间的重试

我不是运行 Discourse 实例的 AWS EC2 实例的系统管理员,但我自己是 Discourse 实例的管理员。三个星期前,我们的 AWS SES 电子邮件服务因安全原因被关闭。我们的云团队现在才修复它。因此,三周以来,我们的网站无法发送电子邮件,我看到超过 40000 个作业失败以及同样多的重试。我不是网页开发人员,所以我不太懂 Sidekiq 页面在说什么,但我担心当我们的电子邮件服务器重新上线时,这些失败的作业会被重试,导致人们收到他们三周以来未收到的过时电子邮件。会是这样吗?Discourse 是否会重新发送因电子邮件服务器离线而无法发送的电子邮件?如果是这样,我该如何禁用它以避免向人们发送我们网站的电子邮件?我们可以调整粒度吗?例如,只发送自某个给定日期以来显示新活动的电子邮件?

您的恐惧是合理的。

我不确定您有多少时间来解决这个问题?一种解决方案是设置和配置一个邮件服务器,该服务器接受电子邮件但将其丢弃。

解决此问题的真正快速(且非常)粗糙的方法是使用 redis-cli 并发出 flushdb 命令。这将删除所有排队的作业。它还将注销所有用户。然后重新启动您的 Discourse 以确保所有常规作业再次运行。

3 个赞

注销所有用户肯定不是我们想要的……电子邮件服务器今天应该能修好,但我不知道我们的系统管理员是否有能力将电子邮件服务器设置成丢弃所有内容。

我在 Sidekiq 的“重试”页面底部看到了一个“全部杀死”和“全部删除”按钮(见附件)。这能帮上忙吗?


清除队列中特定类型的全部作业应该可以解决问题。

(我得回去试着挖出如何做到这一点……)

2 个赞

我认为你是确定的。他们花了三周时间才将其修复。

你可以问他们是否可以谷歌搜索如何从 sidekiq 中清除作业并删除邮件作业。我认为这是你最好的选择。

我猜你无权自行操作或聘请任何人帮忙。你能 SSH 登录到运行它的 ec2 吗?你可以尝试从 Web 界面删除所有 50k 个。

1 个赞

助手页面上的删除选项已生效。无需 EC2 系统管理员,仅需论坛管理员即可从助手页面操作,我删除了所有排队的电子邮件。
邮件服务器恢复联机后,没有“排队”的邮件被重新发送。

2 个赞