展示你的工作流

## 被屏蔽邮箱域名同步

一次性邮箱地址是垃圾注册和临时账户的常见来源。Discourse 已经提供了一个 blocked_email_domains 设置项来应对这个问题,但社区维护的列表 disposable-email-domains 包含大约 10,000 个域名——通过管理界面粘贴维护这个列表实在太大了。

我们还发现,之前粘贴的该列表几乎每个条目都隐藏了一个回车符,导致 Discourse 只能匹配到少数几个域名。这个工作流每周从上流重新构建一个干净的以 | 连接的列表,保留几个隐私别名域名和主要服务商不被屏蔽,并且仅在有实际变化时才进行写入。

以下是工作流的源代码:

GitHub 上的源代码:GitHub - hhftechnology/discourse-workflow-blocked-email-domains: Discourse Workflows: keep blocked_email_domains synced with the disposable-email-domains list · GitHub

### 安装

  1. 从上面的链接下载工作流源代码。

  2. 转到论坛管理界面中的“工作流”页面(/admin/plugins/discourse-workflows/workflows)。

  3. 点击“+ 新建工作流”按钮。

将创建并打开一个新工作流。

  1. 点击工作流画布右上角的 ⋮ 按钮。

将打开一个菜单。

  1. 从菜单中选择“导入”。

将打开“打开”对话框。

  1. 从对话框中选择 blocked-email-domains-sync.json 文件。

  2. 点击对话框中的“打开”按钮。

工作流内容将被添加。

  1. 按照工作流画布中现在显示的“便签”中提供的额外说明进行操作。

### 工作原理

  1. 每周一 04:30(cron,工作流时区)开始运行。

  2. 获取上流列表从 GitHub 下载 disposable_email_blocklist.conf。无需 API 密钥。

  3. 构建列表转换为小写并修剪空白,删除空行和注释,添加你可选的 EXTRAS,移除 EXCLUDE(默认值:simplelogin.com,passmail.net)以及包含主要服务商的 SAFE 列表,仅保留有效的主机名,去重,排序,并使用 | 连接。如果上流数据看起来被截断或条目少于 5,000 个,则中止且不写入。

  4. **是否更改?**仅当构建的值与当前设置不同(包括残留的空白字符)时继续。

  5. 保存 blocked_email_domains 使用插件的站点设置节点作为 system,因此不需要管理员 API 密钥。

  6. 验证回读设置并确认匹配。

  7. 警报:列表已更改(可选)向全局变量 $vars.alerts_channel 中指定的聊天频道发布简短摘要——请创建该变量,或删除警报节点。

对于大约 10k 域名的列表,此流程运行时间约为 330–490 ms 实际时间,代码执行时间约为 33–51 ms,远低于 1000 ms 的限制。

首次运行可能会添加数千个域名。先手动运行一次,检查执行记录,然后发布。该设置位于管理员 → 设置 → blocked_email_domains。

更新——第 3 周

2 个赞