#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.
This commit is contained in:
Thore Cimbal
2026-08-20 12:00:00 +00:00
parent 9e01e665ef
commit 16b361d972
2 changed files with 66 additions and 5 deletions
+3 -4
View File
@@ -2,13 +2,13 @@
<!-- Generated by scripts/gen_status.py — do not edit. -->
## 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 |
@@ -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.