feat(PROJ-56c): GoBD-Retention-Purge als Cron-Job + Delete()-Konsistenzfix
archivmail purge ist ein neuer CLI-Befehl, der Mails mit abgelaufener retain_until löscht, aus dem Suchindex entfernt und pro Mail einen Audit-Eintrag (mail_purged) schreibt — analog zu Pilers purge.sh, nachts 03:40 Uhr über deploy/cron.d/archivmail. Nur Mails mit explizit gesetztem und abgelaufenem retain_until werden angefasst; ohne retain_until bleibt alles unberührt, die Löschsperre (PROJ-34) greift weiterhin. Beim Testen aufgedeckt: Store.Delete() entfernte die Datei vor dem DB-Delete und verschluckte den Fehler, wenn email_refs/email_attachments per Fremdschlüssel die Löschung blockierten — Ergebnis war ein DB-Eintrag ohne zugehörige Datei. Jetzt läuft die DB-Löschung (inkl. abhängiger Zeilen) zuerst in einer Transaktion, die Datei wird erst nach erfolgreichem Commit entfernt. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
d826fe1da7
commit
586af2478c
@@ -26,6 +26,11 @@
|
||||
# Pause beenden um 06:00 Uhr
|
||||
0 6 * * * root /usr/local/bin/archivmail-ocr-pause.sh stop
|
||||
|
||||
# ── GoBD-Retention-Purge (PROJ-56c) ─────────────────────────────────────
|
||||
# Löscht Mails mit abgelaufener Aufbewahrungsfrist (retain_until < NOW()),
|
||||
# entfernt sie aus dem Suchindex und schreibt pro Mail einen Audit-Eintrag
|
||||
# ("mail_purged") — analog zu Pilers purge.sh, nachts um 03:40 Uhr.
|
||||
40 3 * * * root /opt/archivmail/archivmail purge --config /etc/archivmail/config.yml >> /var/log/archivmail/purge.log 2>&1
|
||||
|
||||
# ── Weitere Jobs (geplant, noch nicht implementiert) ────────────────────
|
||||
# 40 3 * * * archivmail /usr/local/bin/archivmail-purge.sh # GoBD-Retention-Purge
|
||||
# 30 2 * * * archivmail /opt/archivmail/archivmail reindex # nächtlicher Voll-Reindex
|
||||
|
||||
Reference in New Issue
Block a user