1 D(DOMAIN, REGISTRAR, DnsProvider(PROVIDER),
3 // Publish CAA records indicating that only letsencrypt and globalsign (Fastly) should issue certificates
8 iodef: "mailto:hostmaster@openstreetmap.org",
11 "globalsign.com", // Used by Fastly for CDN certificates
15 "globalsign.com", // Used by Fastly for CDN certificates
21 MX("@", 10, QUALIFY("a.mx")),
22 MX("messages", 10, QUALIFY("a.mx")),
23 MX("noreply", 10, QUALIFY("a.mx")),
24 MX("otrs", 10, QUALIFY("a.mx")),
25 MX("community", 10, QUALIFY("a.mx")),
26 MX("supporting", 10, QUALIFY("a.mx")),
28 A("a.mx", IPV4["fafnir.he"]),
29 AAAA("a.mx", IPV6["fafnir.he"]),
30 A("mail", IPV4["fafnir.he"]),
31 AAAA("mail", IPV6["fafnir.he"]),
32 A("mta-sts", IPV4["fafnir.he"]),
33 AAAA("mta-sts", IPV6["fafnir.he"]),
35 // Publish SPF records indicating that only shenron sends mail
41 "ip4:184.104.226.98", // fafnir ipv4 (he.net)
42 "ip6:2001:470:1:b3b::2", // fafnir ipv6 (he.net)
43 "ip4:87.252.214.98", // fafnir ipv4 (equinix)
44 "ip6:2001:4d78:fe03:1c::2", // fafnir ipv6 (equinix)
45 "ip4:193.60.236.0/24", // ucl external
46 "ip4:82.199.86.96/27", // amsterdam external (equinix)
47 "ip6:2001:4d78:500:5e3::/64", // amsterdam external (equinix)
48 "ip4:87.252.214.96/27", // dublin external (equinix)
49 "ip6:2001:4d78:fe03:1c::/64", // dublin external (equinix)
50 "ip4:184.104.179.128/27", // amsterdam external (he.net)
51 "ip6:2001:470:1:fa1::/64", // amsterdam external (he.net)
52 "ip4:184.104.226.96/27", // dublin external (he.net)
53 "ip6:2001:470:1:b3b::/64", // dublin external (he.net)
54 "mx", // safety net if we change mx
63 "include:openstreetmap.org", // main openstreetmap.org spf record
72 "include:openstreetmap.org", // main openstreetmap.org spf record
81 "include:openstreetmap.org", // main openstreetmap.org spf record
90 "include:openstreetmap.org", // main openstreetmap.org spf record
99 "include:openstreetmap.org", // main openstreetmap.org spf record
104 // Publish DKIM public key
106 TXT("20200301._domainkey", "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzvoNZVOGfw1V4A171hxHMhzVTAnIUQVJ8iX3wbqCld8A5iIaXeTGYvBmewymax/cYJS4QqzbpUzkgrrTA9avuZhd+QGJDgjADgx4VyMOaOS6FwAxS0uXtLrt+lsixRDx/feKyZHaxjzJAQy46ok77xXL4UXIaaovw6G6eZpIScMzZQ2zkKNJxTICzzSOduIilHhMWte4XP+/2PdRmD7Ge9jb0U4bZjswX0AqKSGzDKYw+yxVna9l53adeCnklqg2ofoXu+ResiH+kt05aCUOMo8en3em6yBnRCMalgi1E3Tt7I5BWcYFRkT/8agUGW4gGC6XMV9IskOsYL0emG0kGwIDAQAB", AUTOSPLIT),
108 // Publish DMARC report-only policy
113 "mailto:openstreetmap-d@dmarc.report-uri.com"
118 // Announce MTA-STS policy and TLSRPT policy for error reports
120 TXT("_mta-sts", "v=STSv1; id=202001291805Z"),
121 TXT("_smtp._tls", "v=TLSRPTv1; rua=mailto:openstreetmap-d@tlsrpt.report-uri.com"),
123 // Fastly cert domain ownership confirmation
125 TXT("@", "_globalsign-domain-verification=ps00GlW1BzY9c2_cwH_pFqRkvzZyaCVZ-3RLssRG6S"),
126 TXT("@", "_globalsign-domain-verification=W0buKB5ZmL-VwwHw2oQyQImk3I1q3hSemf2qmB1hjP"),
128 // Facebook Business domain verification
130 TXT("@", "facebook-domain-verification=j5hix5i8r0kortfugqf2p9wx9x9by0"),
132 // Bluesky domain verification
134 TXT("_atproto", "did=did:plc:i6llv7iwybeipknl57v4dalb"),
136 // Delegate MTA-STS policy for subdomains
138 CNAME("_mta-sts.messages", QUALIFY("_mta-sts")),
139 CNAME("_mta-sts.noreply", QUALIFY("_mta-sts")),
140 CNAME("_mta-sts.otrs", QUALIFY("_mta-sts")),
141 CNAME("_mta-sts.community", QUALIFY("_mta-sts")),
142 CNAME("_mta-sts.supporting", QUALIFY("_mta-sts")),
144 // Google postmaster tools verification
146 CNAME("af323lytato5", "gv-o4v3qh5pfayqex.dv.googlehosted.com."),
147 CNAME("irzdddnmh465", "gv-cwr6bvt7xsgact.dv.googlehosted.com."),
149 // Main web servers and their aliases
151 HTTPS("www", 1, ".", "alpn=h2"),
152 HTTPS("api", 1, ".", "alpn=h2"),
153 HTTPS("maps", 1, ".", "alpn=h2"),
154 HTTPS("mapz", 1, ".", "alpn=h2"),
156 // A("@", IPV4["spike-01.he"]),
157 // AAAA("@", IPV6["spike-01.he"]),
158 // A("www", IPV4["spike-01.he"]),
159 // AAAA("www", IPV6["spike-01.he"]),
160 // A("api", IPV4["spike-01.he"]),
161 // AAAA("api", IPV6["spike-01.he"]),
162 // A("maps", IPV4["spike-01.he"]),
163 // AAAA("maps", IPV6["spike-01.he"]),
164 // A("mapz", IPV4["spike-01.he"]),
165 // AAAA("mapz", IPV6["spike-01.he"]),
167 // A("@", IPV4["spike-02.he"]),
168 // AAAA("@", IPV6["spike-02.he"]),
169 // A("www", IPV4["spike-02.he"]),
170 // AAAA("www", IPV6["spike-02.he"]),
171 // A("api", IPV4["spike-02.he"]),
172 // AAAA("api", IPV6["spike-02.he"]),
173 // A("maps", IPV4["spike-02.he"]),
174 // AAAA("maps", IPV6["spike-02.he"]),
175 // A("mapz", IPV4["spike-02.he"]),
176 // AAAA("mapz", IPV6["spike-02.he"]),
178 // A("@", IPV4["spike-03.he"]),
179 // AAAA("@", IPV6["spike-03.he"]),
180 // A("www", IPV4["spike-03.he"]),
181 // AAAA("www", IPV6["spike-03.he"]),
182 // A("api", IPV4["spike-03.he"]),
183 // AAAA("api", IPV6["spike-03.he"]),
184 // A("maps", IPV4["spike-03.he"]),
185 // AAAA("maps", IPV6["spike-03.he"]),
186 // A("mapz", IPV4["spike-03.he"]),
187 // AAAA("mapz", IPV6["spike-03.he"]),
189 A("@", IPV4["spike-06"], CF_PROXY_ON),
190 AAAA("@", IPV6["spike-06"], CF_PROXY_ON),
191 A("www", IPV4["spike-06"], CF_PROXY_ON),
192 AAAA("www", IPV6["spike-06"], CF_PROXY_ON),
193 A("api", IPV4["spike-06"], CF_PROXY_ON),
194 AAAA("api", IPV6["spike-06"], CF_PROXY_ON),
195 A("maps", IPV4["spike-06"], CF_PROXY_ON),
196 AAAA("maps", IPV6["spike-06"], CF_PROXY_ON),
197 A("mapz", IPV4["spike-06"], CF_PROXY_ON),
198 AAAA("mapz", IPV6["spike-06"], CF_PROXY_ON),
200 A("@", IPV4["spike-07"], CF_PROXY_ON),
201 AAAA("@", IPV6["spike-07"], CF_PROXY_ON),
202 A("www", IPV4["spike-07"], CF_PROXY_ON),
203 AAAA("www", IPV6["spike-07"], CF_PROXY_ON),
204 A("api", IPV4["spike-07"], CF_PROXY_ON),
205 AAAA("api", IPV6["spike-07"], CF_PROXY_ON),
206 A("maps", IPV4["spike-07"], CF_PROXY_ON),
207 AAAA("maps", IPV6["spike-07"], CF_PROXY_ON),
208 A("mapz", IPV4["spike-07"], CF_PROXY_ON),
209 AAAA("mapz", IPV6["spike-07"], CF_PROXY_ON),
211 A("@", IPV4["spike-08"], CF_PROXY_ON),
212 AAAA("@", IPV6["spike-08"], CF_PROXY_ON),
213 A("www", IPV4["spike-08"], CF_PROXY_ON),
214 AAAA("www", IPV6["spike-08"], CF_PROXY_ON),
215 A("api", IPV4["spike-08"], CF_PROXY_ON),
216 AAAA("api", IPV6["spike-08"], CF_PROXY_ON),
217 A("maps", IPV4["spike-08"], CF_PROXY_ON),
218 AAAA("maps", IPV6["spike-08"], CF_PROXY_ON),
219 A("mapz", IPV4["spike-08"], CF_PROXY_ON),
220 AAAA("mapz", IPV6["spike-08"], CF_PROXY_ON),
224 CNAME("nominatim", "nominatim.geo.openstreetmap.org."),
225 CNAME("qgis.nominatim", "nominatim.geo.openstreetmap.org."),
226 CNAME("qa-tile.nominatim", "longma.openstreetmap.org."),
230 CNAME("tile", "dualstack.n.sni.global.fastly.net."),
231 CNAME("a.tile", "dualstack.n.sni.global.fastly.net."),
232 CNAME("b.tile", "dualstack.n.sni.global.fastly.net."),
233 CNAME("c.tile", "dualstack.n.sni.global.fastly.net."),
235 A("render", IPV4["culebre.he"]),
236 A("render", IPV4["nidhogg"]),
237 AAAA("render", IPV6["culebre.he"]),
238 AAAA("render", IPV6["nidhogg"]),
240 // Vector tile servers
242 CNAME("vector", "dualstack.n.sni.global.fastly.net."),
246 HTTPS("planet", 1, ".", "alpn=h2"),
248 A("backup", IPV4["norbert"]),
249 AAAA("backup", IPV6["norbert"]),
250 A("planet", IPV4["norbert"]),
251 AAAA("planet", IPV6["norbert"]),
253 // A("backup", IPV4["horntail.he"]),
254 // AAAA("backup", IPV6["horntail.he"]),
255 // A("planet", IPV4["horntail.he"]),
256 // AAAA("planet", IPV6["horntail.he"]),
258 // Development server with wildcard alias for user sites
260 A("dev", IPV4["faffy"]),
261 AAAA("dev", IPV6["faffy"]),
262 A("*.dev", IPV4["faffy"]),
263 AAAA("*.dev", IPV6["faffy"]),
264 A("ooc", IPV4["faffy"]),
265 AAAA("ooc", IPV6["faffy"]),
266 A("a.ooc", IPV4["faffy"]),
267 AAAA("a.ooc", IPV6["faffy"]),
268 A("b.ooc", IPV4["faffy"]),
269 AAAA("b.ooc", IPV6["faffy"]),
270 A("c.ooc", IPV4["faffy"]),
271 AAAA("c.ooc", IPV6["faffy"]),
272 A("npe", IPV4["faffy"]),
273 AAAA("npe", IPV6["faffy"]),
277 HTTPS("blog", 1, ".", "alpn=h2"),
278 HTTPS("foundation", 1, ".", "alpn=h2"),
280 A("blog", IPV4["ridley"]),
281 A("foundation", IPV4["ridley"]),
285 HTTPS("matomo", 1, ".", "alpn=h2"),
286 HTTPS("piwik", 1, ".", "alpn=h2"),
288 A("matomo", IPV4["smaug.he"]),
289 AAAA("matomo", IPV6["smaug.he"]),
290 A("piwik", IPV4["smaug.he"]),
291 AAAA("piwik", IPV6["smaug.he"]),
295 HTTPS("agri", 1, ".", "alpn=h2"),
296 HTTPS("a.agri", 1, ".", "alpn=h2"),
297 HTTPS("b.agri", 1, ".", "alpn=h2"),
298 HTTPS("c.agri", 1, ".", "alpn=h2"),
300 A("agri", IPV4["lockheed"]),
301 AAAA("agri", IPV6["lockheed"]),
302 A("a.agri", IPV4["lockheed"]),
303 AAAA("a.agri", IPV6["lockheed"]),
304 A("b.agri", IPV4["lockheed"]),
305 AAAA("b.agri", IPV6["lockheed"]),
306 A("c.agri", IPV4["lockheed"]),
307 AAAA("c.agri", IPV6["lockheed"]),
309 HTTPS("act-imagery", 1, ".", "alpn=h2"),
310 HTTPS("a.act-imagery", 1, ".", "alpn=h2"),
311 HTTPS("b.act-imagery", 1, ".", "alpn=h2"),
312 HTTPS("c.act-imagery", 1, ".", "alpn=h2"),
314 A("act-imagery", IPV4["lockheed"]),
315 AAAA("act-imagery", IPV6["lockheed"]),
316 A("a.act-imagery", IPV4["lockheed"]),
317 AAAA("a.act-imagery", IPV6["lockheed"]),
318 A("b.act-imagery", IPV4["lockheed"]),
319 AAAA("b.act-imagery", IPV6["lockheed"]),
320 A("c.act-imagery", IPV4["lockheed"]),
321 AAAA("c.act-imagery", IPV6["lockheed"]),
323 HTTPS("au-vic-melbourne-imagery", 1, ".", "alpn=h2"),
324 HTTPS("a.au-vic-melbourne-imagery", 1, ".", "alpn=h2"),
325 HTTPS("b.au-vic-melbourne-imagery", 1, ".", "alpn=h2"),
326 HTTPS("c.au-vic-melbourne-imagery", 1, ".", "alpn=h2"),
328 A("au-vic-melbourne-imagery", IPV4["lockheed"]),
329 AAAA("au-vic-melbourne-imagery", IPV6["lockheed"]),
330 A("a.au-vic-melbourne-imagery", IPV4["lockheed"]),
331 AAAA("a.au-vic-melbourne-imagery", IPV6["lockheed"]),
332 A("b.au-vic-melbourne-imagery", IPV4["lockheed"]),
333 AAAA("b.au-vic-melbourne-imagery", IPV6["lockheed"]),
334 A("c.au-vic-melbourne-imagery", IPV4["lockheed"]),
335 AAAA("c.au-vic-melbourne-imagery", IPV6["lockheed"]),
337 HTTPS("os", 1, ".", "alpn=h2"),
338 HTTPS("a.os", 1, ".", "alpn=h2"),
339 HTTPS("b.os", 1, ".", "alpn=h2"),
340 HTTPS("c.os", 1, ".", "alpn=h2"),
342 A("os", IPV4["lockheed"]),
343 AAAA("os", IPV6["lockheed"]),
344 A("a.os", IPV4["lockheed"]),
345 AAAA("a.os", IPV6["lockheed"]),
346 A("b.os", IPV4["lockheed"]),
347 AAAA("b.os", IPV6["lockheed"]),
348 A("c.os", IPV4["lockheed"]),
349 AAAA("c.os", IPV6["lockheed"]),
351 HTTPS("tiler", 1, ".", "alpn=h2"),
352 HTTPS("us-imagery", 1, ".", "alpn=h2"),
353 HTTPS("a.us-imagery", 1, ".", "alpn=h2"),
354 HTTPS("b.us-imagery", 1, ".", "alpn=h2"),
355 HTTPS("c.us-imagery", 1, ".", "alpn=h2"),
357 A("tiler", IPV4["lockheed"]),
358 AAAA("tiler", IPV6["lockheed"]),
359 A("us-imagery", IPV4["lockheed"]),
360 AAAA("us-imagery", IPV6["lockheed"]),
361 A("a.us-imagery", IPV4["lockheed"]),
362 AAAA("a.us-imagery", IPV6["lockheed"]),
363 A("b.us-imagery", IPV4["lockheed"]),
364 AAAA("b.us-imagery", IPV6["lockheed"]),
365 A("c.us-imagery", IPV4["lockheed"]),
366 AAAA("c.us-imagery", IPV6["lockheed"]),
368 // Prometheus server and munin redirect
370 HTTPS("prometheus", 1, ".", "alpn=h2"),
371 HTTPS("munin", 1, ".", "alpn=h2"),
373 A("prometheus", IPV4["stormfly-03"]),
374 AAAA("prometheus", IPV6["stormfly-03"]),
375 A("munin", IPV4["stormfly-03"]),
376 AAAA("munin", IPV6["stormfly-03"]),
380 HTTPS("acme", 1, ".", "alpn=h2"),
381 HTTPS("chef", 1, ".", "alpn=h2"),
382 HTTPS("dns", 1, ".", "alpn=h2"),
383 HTTPS("git", 1, ".", "alpn=h2"),
384 HTTPS("hardware", 1, ".", "alpn=h2"),
386 A("acme", IPV4["idris.he"]),
387 AAAA("acme", IPV6["idris.he"]),
388 A("apt", IPV4["idris.he"]),
389 AAAA("apt", IPV6["idris.he"]),
390 A("chef", IPV4["idris.he"]),
391 AAAA("chef", IPV6["idris.he"]),
392 A("dns", IPV4["idris.he"]),
393 AAAA("dns", IPV6["idris.he"]),
394 A("git", IPV4["idris.he"]),
395 AAAA("git", IPV6["idris.he"]),
396 A("hardware", IPV4["idris.he"]),
397 AAAA("hardware", IPV6["idris.he"]),
399 // Bytemark machine, and the services which operate from it
401 HTTPS("lists", 1, ".", "alpn=h2"),
402 HTTPS("help", 1, ".", "alpn=h2"),
404 A("lists", IPV4["shenron"]),
405 AAAA("lists", IPV6["shenron"]),
406 A("help", IPV4["shenron"]),
407 AAAA("help", IPV6["shenron"]),
411 HTTPS("svn", 1, ".", "alpn=h2"),
412 HTTPS("trac", 1, ".", "alpn=h2"),
413 HTTPS("irc", 1, ".", "alpn=h2"),
414 HTTPS("blogs", 1, ".", "alpn=h2"),
415 HTTPS("welcome", 1, ".", "alpn=h2"),
416 HTTPS("operations", 1, ".", "alpn=h2"),
417 HTTPS("hot", 1, ".", "alpn=h2"),
418 HTTPS("dmca", 1, ".", "alpn=h2"),
419 // HTTPS("otrs", 1, ".", "alpn=h2"), - OTRS is not available using HTTPS/2
420 HTTPS("birthday20", 1, ".", "alpn=h2"),
422 A("svn", IPV4["naga.he"]),
423 AAAA("svn", IPV6["naga.he"]),
424 A("trac", IPV4["naga.he"]),
425 AAAA("trac", IPV6["naga.he"]),
426 A("irc", IPV4["naga.he"]),
427 AAAA("irc", IPV6["naga.he"]),
428 A("blogs", IPV4["naga.he"]),
429 AAAA("blogs", IPV6["naga.he"]),
430 A("welcome", IPV4["naga.he"]),
431 AAAA("welcome", IPV6["naga.he"]),
432 A("operations", IPV4["naga.he"]),
433 AAAA("operations", IPV6["naga.he"]),
434 A("hot", IPV4["naga.he"]),
435 AAAA("hot", IPV6["naga.he"]),
436 A("dmca", IPV4["naga.he"]),
437 AAAA("dmca", IPV6["naga.he"]),
438 A("otrs", IPV4["naga.he"]),
439 AAAA("otrs", IPV6["naga.he"]),
440 A("birthday20", IPV4["naga.he"]),
441 AAAA("birthday20", IPV6["naga.he"]),
445 HTTPS("wiki", 1, ".", "alpn=h2"),
447 A("wiki", IPV4["konqi.he"]),
448 AAAA("wiki", IPV6["konqi.he"]),
452 HTTPS("query", 1, ".", "alpn=h2"),
454 A("query", IPV4["grisu.he"]),
455 AAAA("query", IPV6["grisu.he"]),
459 HTTPS("gps-tile", 1, ".", "alpn=h2"),
460 HTTPS("a.gps-tile", 1, ".", "alpn=h2"),
461 HTTPS("b.gps-tile", 1, ".", "alpn=h2"),
462 HTTPS("c.gps-tile", 1, ".", "alpn=h2"),
463 HTTPS("gps-a.tile", 1, ".", "alpn=h2"),
464 HTTPS("gps-b.tile", 1, ".", "alpn=h2"),
465 HTTPS("gps-c.tile", 1, ".", "alpn=h2"),
467 A("gps-tile", IPV4["muirdris.he"]),
468 AAAA("gps-tile", IPV6["muirdris.he"]),
469 A("a.gps-tile", IPV4["muirdris.he"]),
470 AAAA("a.gps-tile", IPV6["muirdris.he"]),
471 A("b.gps-tile", IPV4["muirdris.he"]),
472 AAAA("b.gps-tile", IPV6["muirdris.he"]),
473 A("c.gps-tile", IPV4["muirdris.he"]),
474 AAAA("c.gps-tile", IPV6["muirdris.he"]),
475 A("gps.tile", IPV4["muirdris.he"]),
476 AAAA("gps.tile", IPV6["muirdris.he"]),
477 A("gps-a.tile", IPV4["muirdris.he"]),
478 AAAA("gps-a.tile", IPV6["muirdris.he"]),
479 A("gps-b.tile", IPV4["muirdris.he"]),
480 AAAA("gps-b.tile", IPV6["muirdris.he"]),
481 A("gps-c.tile", IPV4["muirdris.he"]),
482 AAAA("gps-c.tile", IPV6["muirdris.he"]),
484 // Donation site and new OSMF crm site
486 HTTPS("donate", 1, ".", "alpn=h2"),
487 HTTPS("support", 1, ".", "alpn=h2"),
488 HTTPS("supporting", 1, ".", "alpn=h2"),
490 A("donate", IPV4["ridley"]),
491 A("support", IPV4["ridley"]),
492 A("supporting", IPV4["ridley"]),
494 // Discourse server ("community")
496 HTTPS("community", 1, ".", "alpn=h2"),
497 HTTPS("communities", 1, ".", "alpn=h2"),
498 HTTPS("c", 1, ".", "alpn=h2"),
500 A("community", IPV4["fume.he"]),
501 A("communities", IPV4["fume.he"]),
502 A("c", IPV4["fume.he"]),
503 AAAA("community", IPV6["fume.he"]),
504 AAAA("communities", IPV6["fume.he"]),
505 AAAA("c", IPV6["fume.he"]),
507 CNAME("community-cdn", "dualstack.n.sni.global.fastly.net."),
508 TXT("community", "google-site-verification=hQ8GZyj4KwnPqAX2oAzpbLrh6I5dfR08PSdL3icVkfg"),
510 HTTPS("forum", 1, ".", "alpn=h2"),
512 A("forum", IPV4["fume.he"]),
513 AAAA("forum", IPV6["fume.he"]),
515 // Taginfo and Staging Blog Server
517 HTTPS("taginfo", 1, ".", "alpn=h2"),
519 A("taginfo", IPV4["tabaluga"]),
520 AAAA("taginfo", IPV6["tabaluga"]),
522 HTTPS("staging.blog", 1, ".", "alpn=h2"),
524 A("staging.blog", IPV4["tabaluga"]),
525 AAAA("staging.blog", IPV6["tabaluga"])