// Publish CAA records indicating that only letsencrypt and globalsign (Fastly) should issue certificates
- CAA("@", "issue", "letsencrypt.org", CF_TTL_ANY),
- CAA("@", "issuewild", "letsencrypt.org", CF_TTL_ANY),
- CAA("@", "issue", "globalsign.com", CF_TTL_ANY),
- CAA("@", "issuewild", "globalsign.com", CF_TTL_ANY),
- CAA("@", "iodef", "mailto:hostmaster@openstreetmap.org"),
+ CAA_BUILDER({
+ label: "@",
+ ttl: "1h",
+ iodef: "mailto:hostmaster@openstreetmap.org",
+ issue: [
+ "letsencrypt.org",
+ "globalsign.com", // Used by Fastly for CDN certificates
+ ],
+ issuewild: [
+ "letsencrypt.org",
+ "globalsign.com", // Used by Fastly for CDN certificates
+ ],
+ }),
// Use shenron as the MX host
// Publish SPF records indicating that only shenron sends mail
- TXT("@", "v=spf1 ip4:212.110.172.32 ip6:2001:41c9:1:400::32 mx -all"),
- TXT("otrs", "v=spf1 ip4:212.110.172.32 ip6:2001:41c9:1:400::32 mx -all"),
+ SPF_BUILDER({
+ label: "@",
+ ttl: "1h",
+ parts: [
+ "v=spf1",
+ "ip4:212.110.172.32", // shenron ipv4
+ "ip6:2001:41c9:1:400::32", // shenron ipv6
+ "mx", // safety net if we change mx
+ "-all"
+ ]
+ }),
+
+ SPF_BUILDER({
+ label: "messages",
+ ttl: "1h",
+ parts: [
+ "v=spf1",
+ "ip4:212.110.172.32", // shenron ipv4
+ "ip6:2001:41c9:1:400::32", // shenron ipv6
+ "mx", // safety net if we change mx
+ "-all"
+ ]
+ }),
+
+ SPF_BUILDER({
+ label: "noreply",
+ ttl: "1h",
+ parts: [
+ "v=spf1",
+ "ip4:212.110.172.32", // shenron ipv4
+ "ip6:2001:41c9:1:400::32", // shenron ipv6
+ "mx", // safety net if we change mx
+ "-all"
+ ]
+ }),
+
+ SPF_BUILDER({
+ label: "otrs",
+ ttl: "1h",
+ parts: [
+ "v=spf1",
+ "ip4:212.110.172.32", // shenron ipv4
+ "ip6:2001:41c9:1:400::32", // shenron ipv6
+ "mx", // safety net if we change mx
+ "-all"
+ ]
+ }),
// Publish DKIM public key
TXT("20200301._domainkey", "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzvoNZVOGfw1V4A171hxHMhzVTAnIUQVJ8iX3wbqCld8A5iIaXeTGYvBmewymax/cYJS4QqzbpUzkgrrTA9avuZhd+QGJDgjADgx4VyMOaOS6FwAxS0uXtLrt+lsixRDx/feKyZHaxjzJAQy46ok77xXL4UXIaaovw6G6eZpIScMzZQ2zkKNJxTICzzSOduIilHhMWte4XP+/2PdRmD7Ge9jb0U4bZjswX0AqKSGzDKYw+yxVna9l53adeCnklqg2ofoXu+ResiH+kt05aCUOMo8en3em6yBnRCMalgi1E3Tt7I5BWcYFRkT/8agUGW4gGC6XMV9IskOsYL0emG0kGwIDAQAB", AUTOSPLIT),
+ // Publish DMARC report-only policy
+
+ DMARC_BUILDER({
+ policy: "none",
+ rua: [
+ "mailto:openstreetmap-d@dmarc.report-uri.com"
+ ],
+ ruf: [
+ "mailto:admins@openstreetmap.org"
+ ],
+ failureOptions: 1
+ }),
+
// Announce MTA-STS policy and TLSRPT policy for error reports
TXT("_mta-sts", "v=STSv1; id=202001291805Z"),
- TXT("_smtp._tls", "v=TLSRPTv1; rua=mailto:postmaster@openstreetmap.org"),
-
+ TXT("_smtp._tls", "v=TLSRPTv1; rua=mailto:openstreetmap-d@tlsrpt.report-uri.com"),
+
// Fastly cert domain ownership confirmation
TXT("@", "_globalsign-domain-verification=ps00GlW1BzY9c2_cwH_pFqRkvzZyaCVZ-3RLssRG6S"),
// Rails application servers
- A("thorn-01.ams", THORN01_INTERNAL),
- A("rails1.ams", THORN01_INTERNAL),
- A("thorn-01.oob", THORN01_OOB),
-
A("thorn-02.ams", THORN02_INTERNAL),
A("rails2.ams", THORN02_INTERNAL),
A("thorn-02.oob", THORN02_OOB),
A("dulcy.ams", DULCY_INTERNAL),
A("dulcy.oob", DULCY_OOB),
+ A("stormfly-04", STORMFLY04_IPV4),
+ AAAA("stormfly-04", STORMFLY04_IPV6),
+ A("stormfly-04.oob", STORMFLY04_OOB),
+
CNAME("nominatim", "nominatim.geo.openstreetmap.org."),
+ CNAME("qgis.nominatim", "nominatim.geo.openstreetmap.org."),
// Taginfo server
A("bowser", BOWSER_IPV4),
+ A("balerion", BALERION_IPV4),
+
A("albi", ALBI_IPV4),
AAAA("albi", ALBI_IPV6),
CNAME("a.tile", "dualstack.osff2.map.fastly.net.", TTL("10m")),
CNAME("b.tile", "dualstack.osff2.map.fastly.net.", TTL("10m")),
CNAME("c.tile", "dualstack.osff2.map.fastly.net.", TTL("10m")),
-
+
// Services machine
A("ironbelly", IRONBELLY_IPV4),
// Prometheus server
- A("prometheus", TIAMAT11_IPV4),
+ A("stormfly-03", STORMFLY03_IPV4),
+ AAAA("stormfly-03", STORMFLY03_IPV6),
+ A("prometheus", STORMFLY03_IPV4, TTL("10m")),
+ AAAA("prometheus", STORMFLY03_IPV6, TTL("10m")),
+ A("stormfly-03.oob", STORMFLY03_OOB),
// Chef server
A("clifford.ucl", CLIFFORD_INTERNAL),
A("clifford.oob", CLIFFORD_OOB),
+ // Discourse server
+
+ A("lockheed", LOCKHEED_IPV4),
+ AAAA("lockheed", LOCKHEED_IPV6),
+ A("lockheed.ams", LOCKHEED_INTERNAL),
+ A("lockheed.oob", LOCKHEED_OOB),
+
// KVMs
A("kvm1.ucl", KVM1_INTERNAL),
AAAA("toothless", TOOTHLESS_IPV6),
A("sarkany", SARKANY_IPV4),
AAAA("sarkany", SARKANY_IPV6),
- A("cmok", CMOK_IPV4),
- AAAA("cmok", CMOK_IPV6),
- A("stormfly-03", STORMFLY03_IPV4),
- AAAA("stormfly-03", STORMFLY03_IPV6),
- A("stormfly-03.oob", STORMFLY03_OOB),
- A("stormfly-04", STORMFLY04_IPV4),
- AAAA("stormfly-04", STORMFLY04_IPV6),
- A("stormfly-04.oob", STORMFLY04_OOB),
- A("culebre", CULEBRE_IPV4),
A("kalessin", KALESSIN_IPV4),
AAAA("kalessin", KALESSIN_IPV6),
A("angor", ANGOR_IPV4),
AAAA("ladon", LADON_IPV6),
A("ascalon", ASCALON_IPV4),
A("cherufe", CHERUFE_IPV4),
- A("norbert", NORBERT_IPV4),
- AAAA("norbert", NORBERT_IPV6),
A("chrysophylax", CHRYSOPHYLAX_IPV4),
AAAA("chrysophylax", CHRYSOPHYLAX_IPV6),
A("keizer", KEIZER_IPV4),
AAAA("keizer", KEIZER_IPV6),
A("vipertooth", VIPERTOOTH_IPV4),
AAAA("vipertooth", VIPERTOOTH_IPV6),
- A("waima", WAIMA_IPV4),
A("nidhogg", NIDHOGG_IPV4),
AAAA("nidhogg", NIDHOGG_IPV6),
A("boitata", BOITATA_IPV4),
AAAA("boitata", BOITATA_IPV6),
- A("fafnir", FAFNIR_IPV4),
- AAAA("fafnir", FAFNIR_IPV6),
A("fume", FUME_IPV4),
- A("balerion", BALERION_IPV4),
- A("naga", NAGA_IPV4),
- AAAA("naga", NAGA_IPV6),
A("takhisis", TAKHISIS_IPV4),
AAAA("takhisis", TAKHISIS_IPV6),
A("neak", NEAK_IPV4),
// Donation site
- A("donate", RIDLEY_IPV4, TTL("10m")),
+ A("donate", RIDLEY_IPV4),
// Uptime site at StatusCake
- CNAME("uptime", "uptimessl.statuscake.com."),
+ CNAME("uptime", "uptimessl-new.statuscake.com."),
// Custom Domain for https://github.com/osmfoundation/welcome-mat/