# archivmail Docker-Konfiguration
# Kopieren nach: /etc/archivmail/config.yml
# Wird als Read-Only-Volume in den Container gemountet.

server:
  api_port: 8080
  smtp_port: 2525

database:
  host: postgres       # Docker Compose Service-Name (nicht localhost!)
  port: 5432
  name: archivmail
  user: archivmail
  password: CHANGE_ME_DB_PASSWORD
  sslmode: disable

storage:
  store_path:  /var/archivmail/store
  astore_path: /var/archivmail/astore
  keyfile:     /etc/archivmail/keyfile
  # PROJ-34: GoBD-Löschsperre in Tagen (0 = keine; z.B. 3650 für 10 Jahre)
  retention_days:     0
  # PROJ-51: globale Mindest-Aufbewahrungsfrist; Regeln/Mandanten dürfen nur
  # verlängern, nie verkürzen (0 = keine Mindestfrist)
  min_retention_days: 0

index:
  backend:          manticore
  manticore_dsn:    "manticore@tcp(127.0.0.1:9306)/?charset=utf8mb4"
  batch_size:       100
  async_queue_size: 1000
  # PROJ-58: batch_mode (optional, Default false wenn weggelassen).
  # true = der Dauerbetrieb-Index-Worker wird NICHT gestartet; neue Mails
  # bleiben indexed_at IS NULL bis der Cron-Job 'archivmail index-pending'
  # sie verarbeitet (siehe deploy/cron.d/archivmail, Zeiten dort anpassbar).
  # Glättet Schreiblast auf der Festplatte. false = sofortige, fortlaufende
  # Indexierung. Für Neuinstallationen ist batch_mode hier standardmäßig
  # aktiviert — bei Bedarf einfach auf false setzen.
  batch_mode: true

api:
  bind:           "0.0.0.0:8080"
  secret:         CHANGE_ME_64_CHAR_SECRET
  secure_cookies: true
  trusted_proxies:
    - "172.16.0.0/12"   # Docker-interne Netzwerke
    - "127.0.0.1"

smtp:
  enabled:           true
  bind:              "0.0.0.0:2525"
  domain:            mail.example.com
  max_size_mb:       25
  allowed_ips:
    - "0.0.0.0/0"
    - "::/0"
  tenant_routing:    default
  default_tenant_id: 1

imap_server:
  enabled: false
  bind:    "0.0.0.0:1143"

# PROJ-56: OCR-Last-Entzerrung (optional).
# paused_hours definiert ein lokales Zeitfenster [start, end), in dem der
# OCR-Worker NICHT verarbeitet (Aufträge bleiben als pending erhalten).
# Wrap-around über Mitternacht wird unterstützt, z.B. [22, 6] = Pause 22:00–06:00.
# Ohne Sektion / ohne paused_hours: altes Verhalten (immer aktiv).
# ocr:
#   paused_hours: [8, 18]   # OCR pausiert während der Geschäftszeiten
#
# PROJ-58: ocr.batch_mode (optional, Default false wenn weggelassen).
# true = der Dauerbetrieb-OCR-Worker wird NICHT gestartet; neue Mails bleiben
# ocr_status='pending' bis der Cron-Job
# 'archivmail ocr-reprocess --status pending' sie verarbeitet
# (siehe deploy/cron.d/archivmail, Zeiten dort anpassbar). false = sofortige
# Verarbeitung. Für Neuinstallationen ist batch_mode hier standardmäßig
# aktiviert — bei Bedarf einfach auf false setzen.
ocr:
  batch_mode: true

# PROJ-56: IMAP-Sync-Jitter (optional).
# jitter_seconds verteilt den tatsächlichen Sync-Start jedes Accounts
# deterministisch (abgeleitet aus Account-ID) über dieses Fenster, damit nicht
# alle Postfächer auf derselben Minutengrenze pollen.
# Weglassen der Sektion = Default 240s (4 Min). jitter_seconds: 0 = deaktiviert.
# imap_scheduler:
#   jitter_seconds: 240

audit:
  log_path:       /var/archivmail/audit.log
  retention_days: 365

# PROJ-52: Vollständigkeits-Reconciliation (Zähl-Report Mailserver vs. Archiv).
# Täglich per Cron ausführen: `archivmail reconcile` (rechnet den Vortag ab).
# alert_threshold_pct = relativer Rückgang (%) unter den 7-Tage-Durchschnitt,
# ab dem ein reconciliation_anomaly Audit-Eintrag entsteht (Default 50).
# reconciliation:
#   alert_threshold_pct: 50

logging:
  level: info
