From 2b93507abb6a85cdd9ef86e6861a9b3b0feef089 Mon Sep 17 00:00:00 2001 From: ah-admin Date: Wed, 7 Oct 2026 19:55:25 +0200 Subject: [PATCH] kimi.md: Retry-Haertung + Race-Fix der Mail-API dokumentiert --- kimi.md | 1 + 1 file changed, 1 insertion(+) diff --git a/kimi.md b/kimi.md index 20b519a..9ca085b 100644 --- a/kimi.md +++ b/kimi.md @@ -893,4 +893,5 @@ Zustellung an axel@hocks.eu status=sent, Test-Ticket bereinigt. - Bekannte Lücke (nicht behoben): Mail-Versand aus der API ist fire-and-forget ohne Retry bei RCPT-Zeit-Fehlern (mail-api fängt nur OSError; smtplib.SMTPRecipientsRefused → Mail geht verloren, 451/550 beim Relay). Beim Test mit kaputter virtual-Map aufgetreten. - HINWEIS: sfg-mail (Schulportal, /opt/sfg-mail/postfix) hat denselben Aufbau (sender_canonical → noreply@hocks.eu) — dort ggf. denselben Loop prüfen/nachrüsten. Queue aktuell leer. - Erledigt: sfg-postfix identisch nachgerüstet — `nichtantworten@fv-sfg.de → axel@hocks.eu` (lmdb-Virtual-Alias). Kein Loop-Verkehr in 72 h sichtbar, SMTP-EHLO von sfg-mail-api ok, Queue leer, 45 s Beobachtung ohne Bounces. Env/Netz/Restart-Policy des Containers übernommen. +- Retry-Härtung mp-mail-api (`/opt/mp-mail/api/server.py`, nur Server): `/send` legt bei JEDEM Fehler (statt nur OSError) in die Outbox; Worker loggt VERSANDT OK / Fehlversuche / ALARM nach 10 Versuchen (sichtbar in docker logs); erfolgreiche und endgültig gescheiterte Einträge werden entfernt. **Race-Fix:** Outbox-Laden/Speichern unter Lock — zuvor rasten 2 parallele /send-Aufrufe (Registrierung sendet 2 Verwaltungs-Mails gleichzeitig) zu korruptem outbox.json mit Eintragverlust (real aufgetreten 17:38, „Extra data"). Korrupte Datei archiviert (`/data/outbox.json.corrupt-20261007`). Retry-Mechanik isoliert getestet (Fehler→Outbox→Zähler→Erfolg-Entfernung: alle Schritte bestanden); Live-Sofortversand weiterhin ok (status=sent). sfg-Mail-API hat denselben Mechanismus bereits eingebaut — dort nichts zu tun.