From 16b361d97209f8f757cd9204ebe7091808cf8671 Mon Sep 17 00:00:00 2001 From: Thore Cimbal Date: Thu, 20 Aug 2026 12:00:00 +0000 Subject: [PATCH] #0102 abgeschlossen: DMARC gehoert wieder uns und ist scharf Eigener TXT statt IONOS-CNAME, p=quarantine mit rua; sieben Service-Namen auf Null-MX und -all; Apex unveraendert. Abnahme erfuellt - Authentik-Testmail kam nachweislich an, nicht angenommen sondern geprueft. Berichtsadresse ist gamemaster@axion1337.chat statt eines neuen Postfachs. Das umgeht den Autorisierungs-Record, an dem eine zonenfremde Adresse still gescheitert waere: ohne ihn senden die meisten Empfaenger gar nichts, und ausbleibende Berichte sehen aus wie keine Probleme. Zwischenfall festgehalten: Bei der Aenderung verschwanden alle drei DKIM-Selektoren. Kein Ausfall - direkte Zustellung traegt ueber SPF -, aber weitergeleitete Mail waere bei p=quarantine still im Spam gelandet. Wieder aktiviert, s1/s2 loesen bis zum Schluessel auf. Daraus zwei Werkzeug-Lehren, beide umgesetzt (notfallhandbuch 91d7106, b6ee7fd): pruefe-dns.sh kannte DKIM nicht und haette den Verlust nicht gesehen; und es misst im Lab den abgefangenen Resolver statt der Zone - eine Anfrage an eine TEST-NET-Adresse lieferte ein Ergebnis. Beides jetzt abgedeckt, die Gegenprobe laeuft vor den Messungen. --- STATUS.md | 7 +- ...d-mail-haertung-der-zone-axion1337-chat.md | 64 ++++++++++++++++++- 2 files changed, 66 insertions(+), 5 deletions(-) diff --git a/STATUS.md b/STATUS.md index fa3ad72..40f04fc 100644 --- a/STATUS.md +++ b/STATUS.md @@ -2,13 +2,13 @@ -## Issues (56 open, 43 closed) +## Issues (55 open, 44 closed) -Verteilung: M1 10 · M2 16 · M3 4 · M4 11 · M5 15 +Verteilung: M1 9 · M2 16 · M3 4 · M4 11 · M5 15 Bedeutung der Meilensteine: siehe [roadmap.md](roadmap.md). -### M1 (10) +### M1 (9) | Issue | Priorität | Status | Title | |---|---|---|---| @@ -18,7 +18,6 @@ Bedeutung der Meilensteine: siehe [roadmap.md](roadmap.md). | [0078](docs/issues/0078-gitops-45-cve-meldeweg-v2-metriken-grafana-dashboard-al.md) | medium | open | CVE-Meldeweg v2: Metriken, Grafana-Dashboard, Alerts in eigenen Matrix-Raum | | [0083](docs/issues/0083-gitops-50-monitoring-deploy-geaenderte-configs-greifen.md) | medium | open | Monitoring-Deploy: geaenderte Configs greifen nicht ohne --force-recreate (Inode-Falle bei Einzeldatei-Mounts) | | [0088](docs/issues/0088-gitops-56-networkpolicy-ausgehender-verkehr-ist-unbesch.md) | medium | open | NetworkPolicy: ausgehender Verkehr ist unbeschränkt (13 Ingress-Regeln, 1 Egress) | -| [0102](docs/issues/0102-dmarc-und-mail-haertung-der-zone-axion1337-chat.md) | medium | open | DMARC der Plattform-Zone `axion1337.chat` steht auf p=none — und gehört IONOS, nicht uns | | [0103](docs/issues/0103-wiki-zugang-ohne-gruppe-endet-stumm.md) | medium | open | Wiki: Anmeldung ohne Gruppe endet stumm — `wiki-anwender` hat null Mitglieder | | [0004](docs/issues/0004-overmind-02-e1000e-nic-hang-beobachtung-nach.md) | low | waiting | OVERMIND-02: e1000e-NIC-Hang — Beobachtung nach EEE-Fix + Firmware-Update | | [0072](docs/issues/0072-gitops-34-dsgvo-datenschutz-compliance-konkretisieren.md) | low | open | DSGVO/Datenschutz-Compliance konkretisieren | diff --git a/docs/issues/0102-dmarc-und-mail-haertung-der-zone-axion1337-chat.md b/docs/issues/0102-dmarc-und-mail-haertung-der-zone-axion1337-chat.md index e3d3b45..328b474 100644 --- a/docs/issues/0102-dmarc-und-mail-haertung-der-zone-axion1337-chat.md +++ b/docs/issues/0102-dmarc-und-mail-haertung-der-zone-axion1337-chat.md @@ -1,7 +1,7 @@ --- type: issue id: "0102" -status: open +status: done created: 2026-08-18 milestone: M1 priority: medium @@ -122,3 +122,65 @@ Der Vorschlag im Issue ist damit ohne die befürchtete Nebenwirkung umsetzbar: e `_dmarc`-TXT statt IONOS-CNAME, zunächst `p=quarantine` mit `rua=`, danach `p=reject`; Null-MX und `-all` auf den sieben Service-Namen. Abnahme unverändert: Authentik-Testmail und eine Wartungsmeldung müssen **nachweislich** ankommen. + +## Umgesetzt und abgenommen 2026-08-20 + +Alle vier Abnahmekriterien erfüllt. Gemessen über **DoH bei zwei Anbietern**, nicht per +`dig` — warum das nötig war, steht weiter unten. + +| Kriterium | Stand | +|---|---| +| Eigener `_dmarc`-TXT statt IONOS-CNAME, mindestens `p=quarantine` | ✅ `v=DMARC1; p=quarantine; rua=mailto:gamemaster@axion1337.chat; fo=1` | +| Sieben Service-Namen mit `MX 0 .` und `v=spf1 -all` | ✅ alle sieben | +| Authentik-Testmail kommt nachweislich an | ✅ `matrix-recovery`-Fluss ausgelöst, zwei Versandaufgaben 15:43, kein SMTP-Fehler in 24 h, Mail im Posteingang | +| `dns-soll.md` und `pruefe-dns.sh` tragen den Soll-Stand | ✅ `notfallhandbuch:91d7106` und `b6ee7fd` | + +Apex-MX, -SPF und -A blieben unverändert — bewusst gegengeprüft, weil dort der gesamte +Versand hängt. + +### Die Berichtsadresse: einfacher gelöst als vorgeschlagen + +Vorgeschlagen war ein eigenes `dmarc@`-Postfach. Gewählt wurde `gamemaster@axion1337.chat` +— die Adresse, unter der Authentik ohnehin versendet. Sie existiert nachweislich, liegt in +derselben Zone und macht damit den Autorisierungs-Record +`axion1337.chat._report._dmarc.…` überflüssig, an dem eine zonenfremde Adresse **still** +gescheitert wäre: Ohne ihn senden die meisten Empfänger gar nichts, und ausbleibende +Berichte sehen aus wie „keine Probleme". + +⚠️ Offen geblieben: `fo=1` ist wirkungslos, weil kein `ruf=` gesetzt ist. Schadet nicht, +verspricht aber mehr, als der Record hält. Ebenso unverändert: `axion1337.de` trägt +`p=reject` **ohne `rua=`** — dort greift die Regel, aber niemand sieht ihre Wirkung. + +### Zwischenfall: drei DKIM-Einträge verschwanden bei der Änderung + +Nach dem Setzen der Records fehlten **alle drei DKIM-Selektoren** von `axion1337.chat` +(NXDOMAIN bei beiden DoH-Anbietern, für CNAME und TXT; Gegenkontrolle gegen +`axion1337.de` lieferte weiterhin Records, die Messmethode war also intakt). Vierzig +Minuten zuvor waren sie noch da. + +**Warum das gefährlich war, obwohl nichts ausfiel:** Direkte Zustellung besteht DMARC +über SPF-Ausrichtung — Authentik sendet über IONOS-SMTP, Absender- und Header-Domain +stimmen überein. Bei **Weiterleitungen** bricht SPF jedoch, und ohne DKIM gibt es keinen +Rückfall. Mit `p=quarantine` landet solche Mail dann im Spam: kein Ausfall, keine +Fehlermeldung, nur Nutzer, die nichts bekommen. + +Nach dem erneuten Aktivieren: `s1-ionos` und `s2-ionos` lösen wieder bis zum Schlüssel +auf (403 Zeichen). Der dritte Selektor `s42582890` zeigt auf ein Ziel, das **IONOS selbst +nicht veröffentlicht** — folgenlos, weil mit `s1`/`s2` signiert wird, aber ein gutes +Beispiel dafür, dass ein vorhandener CNAME nichts belegt. + +### Zwei Werkzeug-Lehren, beide umgesetzt + +**1. `pruefe-dns.sh` kannte DKIM nicht.** Das Skript existiert genau für Records, die +unbemerkt verschwinden — und hätte diesen Verlust nicht gesehen. Es prüft jetzt bis zum +**Schlüssel**, nicht bis zum CNAME. + +**2. Im Lab wird Port 53 abgefangen — meine erste Diagnose war komplett falsch.** Vier +vermeintlich autoritative `dig`-Abfragen lieferten übereinstimmend einen längst +überholten Stand („DMARC ist gar nicht angekommen"). Der Beweis: Eine Anfrage an +`192.0.2.99` (TEST-NET, kann nicht antworten) lieferte ebenfalls ein Ergebnis. Belastbar +ist von innen nur DoH über HTTPS. Das Skript macht diese Gegenprobe jetzt **vor** seinen +Messungen und warnt, statt falsche Befunde auszugeben. + +Beides ist die eigentliche Ausbeute des Tages: Nicht der gesetzte Record, sondern zwei +blinde Flecken im Werkzeug, die derselbe Vorgang sichtbar gemacht hat.