You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 2726560
Browse filesBrowse the repository at this point in the historyBrowse files
An interactive map showing whether Swiss municipalities use hyperscaler email services (Microsoft 365, Google Workspace, AWS SES) or sovereign/self-hosted email infrastructure.
6
+
An interactive map showing where Swiss municipalities host their email — whether with US hyperscalers (Microsoft, Google, AWS) or Swiss providers or other solutions.
7
7
8
8
**[View the live map](https://mxmap.ch)**
9
9
10
-
Inspired by [belibre.be/map](https://belibre.be/map/nl.html).
10
+
[](https://mxmap.ch)
11
11
12
12
## How it works
13
13
14
14
The data pipeline has three steps:
15
15
16
16
1.**Preprocess** -- Fetches all ~2100 Swiss municipalities from Wikidata, performs MX and SPF DNS lookups on their official domains, and classifies each municipality's email provider.
17
-
2.**Postprocess** -- Scrapes websites of still-unclassified municipalities for email addresses, resolves those email domains via DNS, and applies manual overrides for edge cases.
17
+
2.**Postprocess** -- Applies manual overrides for edge cases, retries DNS for unresolved domains, then scrapes websites of still-unclassified municipalities for email addresses.
18
18
3.**Validate** -- Cross-validates MX and SPF records, assigns a confidence score (0-100) to each entry, and generates a validation report.
19
19
20
20
## Quick start
@@ -43,29 +43,6 @@ uv run ruff check src tests
43
43
uv run ruff format src tests
44
44
```
45
45
46
-
47
-
## Methodology
48
-
49
-
Classification uses a **MX-first** approach:
50
-
51
-
1.**MX records** are checked first -- they show where mail is actually delivered
52
-
2.**SPF records** are used as fallback only when no MX records exist, to avoid misclassifying self-hosted mail that merely authorizes third-party senders (e.g. for newsletters)
53
-
3. For municipalities with no website or DNS records, domain guessing generates plausible `.ch` domains from the municipality name
<metaname="twitter:title" content="MXmap — Email Sovereignty of Swiss Municipalities">
32
33
<metaname="twitter:description" content="Interactive map showing where Swiss municipalities host their official email. DNS analysis of all ~2,100 municipalities.">
0 commit comments