我发现我的 Discourse 论坛每天都会被创建少量但数量稳定的垃圾账户。许多账户似乎使用了虚假或无效的电子邮件地址。
我正在寻找一种自动化以下流程的方法:
- 新用户创建账户,Discourse 发送激活/验证电子邮件。
- 如果激活电子邮件导致确认的硬退信(hard bounce),则自动删除未激活的用户账户。
- 系统记录退信电子邮件地址的域名。
- 如果在规定的时间内,多个使用相同域名的新账户导致硬退信,则该域名会自动添加到被阻止的电子邮件域名列表中。
- 常见的合法电子邮件提供商(如 Gmail、Outlook、Yahoo 等)需要排除在自动域名阻止之外。
例如,如果在几天内创建了多个使用不同电子邮件地址但来自 suspicious-domain.example 的账户,且所有这些账户的激活电子邮件都发生硬退信,那么该域名最终将被阻止创建更多账户。
目标是利用退信数据作为识别自动化垃圾注册的另一个信号,同时自动清理使用不存在的电子邮件地址创建的未激活账户。
Discourse 目前是否有插件或现有功能可以实现这一点?如果没有,Discourse 的退信处理流程中是否有可用的钩子(hooks),可用于构建插件来实现此功能?
你好 @LotusJeff
你是否查看过这些设置?我认为它们能帮你解决部分问题:
在 /admin/settings/ 中配置这些设置
| 设置项 |
建议值 |
效果 |
purge_unactivated_users_grace_period_days |
1 |
在 1 天内删除未激活的账户,而不是 14 天。虽然不像 #2 中要求的那样即时生效,但效果相同,只是延迟更短。 |
blocked_email_domains |
手动添加已知的垃圾邮件顶级域名/域名 |
阻止已知违规者的注册 |
对于真正自动化的解决方案,我认为需要开发一个插件(据我所知目前可能没有),或者你可以看看 新的工作流功能。我不确定你是否能实现想要的功能,但该功能几乎每天都在更新,所以谁知道呢 
如果选择插件路线,你可以挂钩 DiscourseEvent.on(:email_bounce) 事件。
另外,也值得看看 Configure VERP to handle bouncing e-mails
谢谢。我已经启用了 VERP,目前我正在手动检查退信邮件,删除相关账户,并按照你提到的设置将重复违规的域名添加到被屏蔽的邮件域名列表中。
看来我接下来需要深入研究一下工作流(Workflows)了。是时候学习 Discourse 的另一个新功能,看看能在那里自动化多少流程了。
我之前用工作流 AI 快速测试了一下,据我观察,效果很有希望。让我们知道进展如何!
Lilly
(Lillian )
5
你是否启用了 discourse-captcha?
请使用成熟的预防性控制措施,而不是可能根本不存在的补救或反应性解决方案。