你好!
我的论坛中有很多导入的用户,他们的邮箱域名已失效。
有数千名用户的邮箱地址属于此类情况。
此前这并非问题,但我最近提高了“抑制摘要邮件的天数”设置,导致论坛发送了大量摘要邮件,其中包括许多发往无效邮箱域的用户。
这引发了大量退信,导致 Mailgun 禁用了我的域名。
我该如何处理这些账户,以防止此类问题并解决当前困境?其中许多账户属于尚未返回论坛的合法用户,并不一定是废弃账户。
由于该问题,用户目前无法在论坛注册,直到问题得到解决。
你好!
我的论坛中有很多导入的用户,他们的邮箱域名已失效。
有数千名用户的邮箱地址属于此类情况。
此前这并非问题,但我最近提高了“抑制摘要邮件的天数”设置,导致论坛发送了大量摘要邮件,其中包括许多发往无效邮箱域的用户。
这引发了大量退信,导致 Mailgun 禁用了我的域名。
我该如何处理这些账户,以防止此类问题并解决当前困境?其中许多账户属于尚未返回论坛的合法用户,并不一定是废弃账户。
由于该问题,用户目前无法在论坛注册,直到问题得到解决。
查看 处理退信
不知为何我用搜索没找到这个主题……我想我当时有点慌了!![]()
非常感谢您的快速回复!
但如果有数百万个像 bademail.domain 这样的电子邮件地址,您可能想执行类似以下操作:
rake posts:remap['bademail.domain', 'no-email.invalid']
如 Replace a string in all posts 中所述。这将使所有此类电子邮件地址无法被 Discourse 发送邮件。另一个不错的解决方案是类似以下操作:
bad=User.find_by_email <some search that will get them all>
bad.update_all(active: false)
并停用所有已知虚假电子邮件地址的用户。我一时想不起具体如何实现第一部分,但这应该很容易弄清楚。
是的,我考虑过这样做来消除这些电子邮件域名。
我注意到 Discourse 的一个方法会创建 @no-email.invalid 格式的邮箱地址:
而在导入脚本的基础类中,它使用的是 @email.invalid,两者略有不同:
这两个不同的“虚拟域名”在 Discourse 需要发送邮件时是否都会被忽略?
我是否应该将我的无效域名替换为 @no-email.invalid 或 @email.invalid,还是说具体用哪个无所谓?
@pfaffman,我不太理解为什么要在帖子中进行重映射,而不是直接修改用户邮箱……
除非我漏掉了什么,否则这些邮箱地址并不出现在帖子中。
如果这是推荐的做法,我只想把每个个人资料中的 @brokendomains.com 地址替换为 @no-email.invalid 或 @email.invalid。我知道该怎么操作,只是不确定该用哪个“假”域名。
我非常确定 posts:remap 会在所有表中对该域名进行重映射,但他们必须将其放在某个类中。
你也可以直接在 UserEmails 表(或该表的实际名称)中编写自己的替换规则。
我非常确定 whatever.invalid 会告知全球系统这是一个无效地址,系统因此不会尝试发送该邮件。
不错。那我想这样应该可以解决问题了?
User.find_each do |u|
if u.email.include? "@brokendomain.com"
u.update(email: SecureRandom.hex + "@email.invalid")
end
end
我觉得我可能可以这样写:
UserEmail.where("email like '%@brokendomain.com'").each do |e|
e.update(email: SecureRandom.hex + "@email.invalid")
end
你的方案也可能可行,但我不确定在用户邮箱被迁移到另一个模型或表之后,User 模型是否已更新以支持 u.email.include? 这样的操作。
我尝试运行了我的脚本,只是为了看看它是否能返回目标邮箱地址,结果是有效的。
你的脚本应该比我的更快,因为你使用了查询来筛选特定的邮箱域名,而不是遍历所有用户。
非常感谢你的帮助 ![]()
哎呀,这是我原本想发的重映射命令。它只是:
discourse remap old new
参见 https://meta.discourse.org/t/change-the-domain-name-or-rename-my-discourse/16098。
我认为上述方法应该可行,但 UserEmails 方案可能稍微更好一些。
谢谢。我使用的是这个方案。
在总共 17000 名用户中,有超过 5000 名用户使用了这类邮箱域名。难怪当我增加 抑制摘要邮件的天数 后,退信数量激增……
这是 Discourse 对任何以 .invalid 结尾的内容的特殊处理,.invalid 是一个 保留 顶级域名。