feat(PROJ-58): Indexierung + OCR optional als Cron-Batch statt Dauerbetrieb

Neues config.yml-Feld batch_mode (index/ocr, Default false = unverändertes
Verhalten). Bei batch_mode:true verarbeiten neue Cron-Jobs (index-pending,
ocr-reprocess) die Backlogs in größeren Abständen statt sofort bei jedem
Mail-Import, um Schreiblast auf der Festplatte zu glätten. Zeiten in
/etc/cron.d/archivmail frei anpassbar.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
sysops
2026-06-24 23:07:17 +02:00
co-authored by Claude Sonnet 4.6
parent 76655f78a2
commit fae274f930
10 changed files with 407 additions and 20 deletions
+24
View File
@@ -32,5 +32,29 @@
# ("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.
#
# 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 /opt/archivmail/archivmail index-pending --config /etc/archivmail/config.yml --limit 500 >> /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 /opt/archivmail/archivmail ocr-reprocess --config /etc/archivmail/config.yml --status pending --limit 500 >> /var/log/archivmail/ocr-reprocess.log 2>&1
# ── Weitere Jobs (geplant, noch nicht implementiert) ────────────────────
# 30 2 * * * archivmail /opt/archivmail/archivmail reindex # nächtlicher Voll-Reindex