## 被屏蔽邮箱域名同步
一次性邮箱地址是垃圾注册和临时账户的常见来源。Discourse 已经提供了一个 blocked_email_domains 设置项来应对这个问题,但社区维护的列表 disposable-email-domains 包含大约 10,000 个域名——通过管理界面粘贴维护这个列表实在太大了。
我们还发现,之前粘贴的该列表几乎每个条目都隐藏了一个回车符,导致 Discourse 只能匹配到少数几个域名。这个工作流每周从上流重新构建一个干净的以 | 连接的列表,保留几个隐私别名域名和主要服务商不被屏蔽,并且仅在有实际变化时才进行写入。
以下是工作流的源代码:
### 安装
-
从上面的链接下载工作流源代码。
-
转到论坛管理界面中的“工作流”页面(
/admin/plugins/discourse-workflows/workflows)。 -
点击“+ 新建工作流”按钮。
将创建并打开一个新工作流。
- 点击工作流画布右上角的 ⋮ 按钮。
将打开一个菜单。
- 从菜单中选择“导入”。
将打开“打开”对话框。
-
从对话框中选择
blocked-email-domains-sync.json文件。 -
点击对话框中的“打开”按钮。
工作流内容将被添加。
- 按照工作流画布中现在显示的“便签”中提供的额外说明进行操作。
### 工作原理
-
每周一 04:30(cron,工作流时区)开始运行。
-
获取上流列表从 GitHub 下载
disposable_email_blocklist.conf。无需 API 密钥。 -
构建列表转换为小写并修剪空白,删除空行和注释,添加你可选的
EXTRAS,移除EXCLUDE(默认值:simplelogin.com,passmail.net)以及包含主要服务商的SAFE列表,仅保留有效的主机名,去重,排序,并使用|连接。如果上流数据看起来被截断或条目少于 5,000 个,则中止且不写入。 -
**是否更改?**仅当构建的值与当前设置不同(包括残留的空白字符)时继续。
-
保存 blocked_email_domains 使用插件的站点设置节点作为
system,因此不需要管理员 API 密钥。 -
验证回读设置并确认匹配。
-
警报:列表已更改(可选)向全局变量
$vars.alerts_channel中指定的聊天频道发布简短摘要——请创建该变量,或删除警报节点。
对于大约 10k 域名的列表,此流程运行时间约为 330–490 ms 实际时间,代码执行时间约为 33–51 ms,远低于 1000 ms 的限制。
首次运行可能会添加数千个域名。先手动运行一次,检查执行记录,然后发布。该设置位于管理员 → 设置 → blocked_email_domains。
更新——第 3 周


