Hotdry.

Article

瑞士市政邮箱供应商地图:2100个域名的DNS管道与分类实现

解析瑞士2100个市政官方域名的邮箱供应商识别管道,详述10并发探测、SPF/DKIM/DMARC多信号聚合与置信度评分的工程参数。

2026-04-20systems

在数字主权议题日益重要的当下,了解政府 IT 基础设施的云服务供应商分布具有现实意义。MXmap 项目通过自动化管道抓取瑞士约 2100 个市政的官方邮箱域名,解析其 DNS 记录并生成交互式地图,清晰展示各市政是使用美国 hyperscaler(Microsoft 365、Google Workspace、AWS)还是瑞士本地供应商。这一项目的工程实现值得记录,其数据管道、探测协议与分类算法可为类似政府 IT 透明度项目提供可复用的技术参数。

数据管道的两阶段架构

该项目的核心数据处理分为两个独立阶段,每个阶段输出明确的中间产物,便于调试与增量更新。

第一阶段:市政域名解析。管道首先从两个权威数据源拉取完整的瑞士市政列表 ——Wikidata 的 SPARQL 端点提供语义化的市政属性数据,瑞士联邦统计局(BFS)的 API 则提供官方的行政区划编码。两者合并后,对每个市政执行两类域名候选生成:一是抓取该市政官方网站并提取页面中的邮箱地址,从邮箱前缀推断域名;二是基于市政名称的规范化规则直接猜测可能的官方域名(如将 "Gemeinde" 替换为域名格式)。生成的候选域名通过 MX 记录查询进行验证,只有存在有效 MX 记录的候选才会进入下一轮评分。评分逻辑采用多源加权机制 —— 当 Wikidata、BFS 与网站抓取三种来源指向同一域名时,置信度最高;单一来源的匹配则需要额外的 MX 验证来确认。该阶段输出municipality_domains.json,包含每个市政对应的官方域名及其来源置信度。

第二阶段:供应商分类。分类阶段以第一阶段输出的唯一域名列表为输入,对每个域名执行 10 种并发探测,这些探测从不同技术角度提取供应商特征信号。MX 记录本身提供最直接的线索 ——Microsoft 365 的 MX 主机名遵循*.protection.outlook.com*.mail.protection.outlook.com模式,Google Workspace 使用*.aspmx.l.google.com,而瑞士本地供应商如 Infomaniak 则使用自有 MX 主机名模式。探测还包括 SPF 记录的解析 —— 从中提取被授权发送邮件的 IP 段并与已知云服务的 IP 范围比对;DKIM 记录的 selector 与公钥提取可识别特定供应商的密钥特征;DMARC 策略分析则补充了域名对邮件认证的重视程度。对于 Microsoft 365 域名,Autodiscover 记录的 CNAME 链指向autodiscover.outlook.com是强特征;SMTP 横幅(banner)中的供应商特定字符串同样具有区分度。ASN(自治系统号)查询可将 MX 主机的 IP 映射到特定的网络运营商,Tenant 查找则通过 Microsoft 公开 API 解析租户标识。所有 10 种探测结果进入加权聚合阶段,每种探测对不同供应商类别的贡献权重不同 —— 例如,Microsoft 365 的 Autodiscover 特征对微软类别的权重设为高,而 DKIM 签名的特定 selector 模式对谷歌类别的权重更高。最终,分类器计算每个供应商类别的加权得分,取最高分者为主要判定,同时输出 0 到 100 的置信度分数。该阶段输出完整的data.json与前端专用的minified版本data.min.json

关键工程参数与实现细节

理解该管道的技术参数,有助于在其他国家的类似项目中复用。并发探测数量设为 10,这意味着对每个域名会同时发起 10 个独立的网络查询请求,典型的实现使用 asyncio 或 concurrent.futures 进行调度,单个域名的完整探测周期控制在数秒内。DNS 查询采用公共解析器(如 Google 的 8.8.8.8 或 Cloudflare 的 1.1.1.1)以确保结果的一致性,避免本地 DNS 缓存带来的偏差。

分类置信度的计算采用阈值过滤策略 —— 当最高得分低于预设门槛(如 60 分)时,分类结果标记为 "未知" 或 "混合",需要人工介入。置信度评分公式综合考虑信号强度与信号数量:单一强信号(如明确的 MX 模式匹配)可能直接产生高分,但项目倾向于要求多个独立信号相互印证,以降低误判风险。这种设计在政府数据的准确性要求下是合理的,因为错误分类可能引发政策层面的误判。

数据更新方面,项目建议周期性执行完整管道 —— 典型更新频率为每月或每季度一次,以反映市政邮箱系统的迁移与配置变更。对于已知的误分类,项目维护overrides.json文件允许人工干预修正,这一机制在测试覆盖率要求(90% 以上)的约束下提供了质量保障。

可视化与数据开放

管道的最终产物通过 Leaflet 地图在前端呈现,每个市政根据其邮箱供应商类别着色,美国供应商、瑞士供应商与自托管方案分别使用不同的色系。前端代码开源,数据集同样以 JSON 格式发布在 GitHub 仓库,任何人都可以下载原始数据进行分析或二次开发。这种开放姿态本身也是数字透明度的体现 —— 它让公民、研究者与政策制定者能够直观看到本国市政 IT 基础设施的供应商分布现状。

值得注意的是,该项目的方法论已被多个欧洲国家借鉴 fork,形成了德国、荷兰、挪威、比利时、拉脱维亚、葡萄牙与法国的本地化版本。这种快速扩散说明政府 IT 基础设施的透明度建设具有普遍需求,而 MXmap 提供的两阶段管道与十信号分类架构已验证可跨国家迁移。


资料来源:MXmap GitHub 仓库(https://github.com/davidhuser/mxmap)与项目官网(https://mxmap.ch)。

systems