Läuft nachts um 04:10 Uhr, nach dem Purge-Job und außerhalb der OCR-Pause. Ohne diesen Eintrag existierte der neue Subcommand "archivmail reconcile" nur manuell aufrufbar, ohne produktiven Betrieb. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
77 lines
4.6 KiB
Plaintext
77 lines
4.6 KiB
Plaintext
# /etc/cron.d/archivmail
|
||
#
|
||
# Zentrale Cron-Datei für archivmail — analog zum mailpiler-Vorbild
|
||
# (/etc/cron.d/piler), das ebenfalls alle Wartungs-Jobs in einer Datei
|
||
# bündelt. Neue Jobs (Purge, nächtlicher Reindex, Watch-Folder-Import, ...)
|
||
# kommen hier als weitere Zeile dazu, statt eigene cron.d-Dateien
|
||
# anzulegen.
|
||
#
|
||
# Format: Minute Stunde Tag Monat Wochentag User Befehl
|
||
|
||
# ── OCR-Pausenfenster (PROJ-56) ──────────────────────────────────────────
|
||
# Steuert paused_hours in /etc/archivmail/config.yml und löst per
|
||
# "systemctl reload" (SIGHUP) einen Reload aus, damit die neue Pausenzeit
|
||
# sofort greift — ohne den Prozess neu zu starten (kein Verbindungsabbruch
|
||
# für SMTP/IMAP/API). Mails gehen dabei nie verloren: ocr_status='pending'
|
||
# bleibt in der DB bestehen und wird von der Backfill-Goroutine laufend
|
||
# nachgezogen, unabhängig von Pausen oder Neustarts.
|
||
#
|
||
# Anpassen: einfach die beiden Uhrzeiten unten ändern und an die
|
||
# crontab-Syntax halten. Bei wrap-around Fenstern (z.B. 22:00–06:00)
|
||
# "start" auf den späteren, "stop" auf den früheren Zeitpunkt legen.
|
||
|
||
# Pause starten um 22:00 Uhr
|
||
0 22 * * * root /usr/local/bin/archivmail-ocr-pause.sh start 22 6
|
||
|
||
# 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
|
||
|
||
# ── Batch-Modus: Indexierung + OCR per Cron (PROJ-58) ───────────────────
|
||
# NUR relevant, wenn in /etc/archivmail/config.yml index.batch_mode: true
|
||
# bzw. ocr.batch_mode: true gesetzt ist. In diesem Modus startet der Daemon
|
||
# den jeweiligen Dauerbetrieb-Worker NICHT — neue Mails bleiben mit
|
||
# indexed_at IS NULL bzw. ocr_status='pending' in der DB stehen und werden
|
||
# erst vom nächsten Cron-Lauf hier durchsuchbar / OCR-verarbeitet gemacht.
|
||
# Sinn: viele kleine Schreibzugriffe (Manticore, tesseract, DB) werden zu
|
||
# geblockten Batches gebündelt, statt sofort bei jedem Mail-Import zu laufen.
|
||
#
|
||
# Bei index.batch_mode: false / ocr.batch_mode: false (Default) sind diese
|
||
# beiden Zeilen WIRKUNGSLOS bzw. redundant — der Worker läuft dann ohnehin
|
||
# dauerhaft und arbeitet alles sofort ab. Wer batch_mode nicht nutzt, kann
|
||
# die beiden Zeilen einfach auskommentiert lassen.
|
||
#
|
||
# Die Jobs rufen Wrapper-Skripte auf (archivmail-index-pending.sh /
|
||
# archivmail-ocr-reprocess.sh), die per PID-Lockfile unter /var/run/archivmail/
|
||
# überlappende Läufe verhindern — analog zum mailpiler-Vorbild
|
||
# (indexer.delta.sh mit MAINTMPFILE/DELTATMPFILE). Ohne diesen Schutz könnte
|
||
# ein Lauf mit großem Backlog länger dauern als das Intervall und sich mit
|
||
# dem nächsten Tick überlappen, was die Last-Glättung wieder aufheben würde.
|
||
#
|
||
# Anpassen: Intervall/Uhrzeiten unten nach Bedarf ändern (crontab-Syntax).
|
||
# Die beiden Jobs sind bewusst leicht versetzt, damit Index- und OCR-Lauf
|
||
# nicht exakt zeitgleich starten.
|
||
|
||
# Index-Backlog (indexed_at IS NULL) alle 15 Minuten verarbeiten
|
||
*/15 * * * * root /usr/local/bin/archivmail-index-pending.sh >> /var/log/archivmail/index-pending.log 2>&1
|
||
|
||
# OCR-Backlog (ocr_status='pending') alle 15 Minuten, um 5 Min versetzt
|
||
5,20,35,50 * * * * root /usr/local/bin/archivmail-ocr-reprocess.sh >> /var/log/archivmail/ocr-reprocess.log 2>&1
|
||
|
||
# ── Vollständigkeits-Reconciliation (PROJ-52) ───────────────────────────
|
||
# Berechnet täglich pro Tenant/Quelle (SMTP-Journal, IMAP-Konto, POP3-Konto,
|
||
# Datei-Import) die Anzahl archivierter Mails und schreibt einen Report
|
||
# nach reconciliation_reports. Bei Abweichung > reconciliation.alert_threshold_pct
|
||
# (config.yml, Default 50%) unter dem 7-Tage-Durchschnitt wird ein
|
||
# Audit-Log-Eintrag (reconciliation_anomaly) geschrieben. Läuft nachts um
|
||
# 04:10 Uhr, also nach Purge (03:40) und außerhalb der OCR-Pause.
|
||
10 4 * * * root /opt/archivmail/archivmail reconcile --config /etc/archivmail/config.yml >> /var/log/archivmail/reconcile.log 2>&1
|
||
|
||
# ── Weitere Jobs (geplant, noch nicht implementiert) ────────────────────
|
||
# 30 2 * * * archivmail /opt/archivmail/archivmail reindex # nächtlicher Voll-Reindex
|