docs: README auf aktuellen Stand bringen (PROJ-43/52 Deployed, Config-Referenz vervollständigt)

"In Entwicklung" und Funktionsübersicht listeten PROJ-43/PROJ-52 noch als
Planned, obwohl seit 2026-07-04 deployt. Config-Referenz fehlten mehrere
produktiv genutzte Sektionen (server.fqdn, api.trusted_proxies/secure_cookies,
smtp_out, smtp.tenant_routing, storage.retention_days/min_retention_days/
compress, ocr.paused_hours, imap_scheduler, reconciliation, imap_server,
metrics) — jetzt vollständig dokumentiert.
This commit is contained in:
sysops
2026-07-04 12:25:26 +02:00
parent bd727616b6
commit 81744562c3
+70 -9
View File
@@ -79,8 +79,8 @@ Ein selbst gehostetes, unternehmenstaugliches Mail-Archiv-System. Empfängt E-Ma
| Self-Service Onboarding (Sign-up, Passwort-Reset) | ✅ Deployed | | Self-Service Onboarding (Sign-up, Passwort-Reset) | ✅ Deployed |
| REST API für externe CRM-Anbindung | ✅ Deployed | | REST API für externe CRM-Anbindung | ✅ Deployed |
| CLI: `archivmail import` / `export` / `reindex` | ✅ Deployed | | CLI: `archivmail import` / `export` / `reindex` | ✅ Deployed |
| Automatische Archivierungsregeln (SMTP/IMAP-Routing) | 🔄 Planned | | Automatische Archivierungsregeln (SMTP/IMAP-Routing nach Domain/Absender) | ✅ Deployed |
| Vollständigkeits-Reconciliation (Zähl-Report) | 🔄 Planned | | Vollständigkeits-Reconciliation (Zähl-Report Mailserver vs. Archiv) | ✅ Deployed |
--- ---
@@ -256,8 +256,9 @@ Das Update-Skript:
```yaml ```yaml
server: server:
api_port: 8080 # HTTP-API Port fqdn: "archivmail.firma.de" # verwendet in SMTP-EHLO, IMAP-Greeting, generierten Links
smtp_port: 2525 # SMTP-Eingang Port api_port: 8080 # HTTP-API Port
smtp_port: 2525 # SMTP-Eingang Port
database: database:
host: 127.0.0.1 host: 127.0.0.1
@@ -271,6 +272,9 @@ storage:
store_path: /var/archivmail/store # Haupt-Mailspeicher (AES-256-GCM) store_path: /var/archivmail/store # Haupt-Mailspeicher (AES-256-GCM)
astore_path: /var/archivmail/astore # Anhang-Speicher astore_path: /var/archivmail/astore # Anhang-Speicher
keyfile: /etc/archivmail/keyfile # 32-Byte AES-Schlüsseldatei keyfile: /etc/archivmail/keyfile # 32-Byte AES-Schlüsseldatei
retention_days: 0 # globale Löschsperre, 0 = kein Lock (GoBD: z.B. 3650 für 10 Jahre)
min_retention_days: 0 # PROJ-51: erzwungenes Minimum — Regeln/Tenants dürfen nur verlängern
compress: true # gzip vor AES-256-GCM (spart ~40-60% Disk)
smtp: smtp:
enabled: true enabled: true
@@ -281,19 +285,49 @@ smtp:
max_size_mb: 50 max_size_mb: 50
allowed_ips: allowed_ips:
- 127.0.0.1 - 127.0.0.1
tenant_routing: "domain" # "domain" (tenant_domains/PROJ-43-Regeln) oder "default"
default_tenant_id: 0 # genutzt bei routing "default" oder wenn Domain-Lookup fehlschlägt
smtp_out:
host: "" # nur nötig für Self-Service-Mails (Passwort-Reset, Sign-up)
port: 587
user: ""
password: ""
tls: true
from: "archivmail <noreply@firma.de>"
api: api:
bind: ":8080" bind: ":8080"
secret: "" # JWT-Signaturschlüssel (mind. 32 Zeichen) secret: "" # JWT-Signaturschlüssel (mind. 32 Zeichen)
secure_cookies: false # true wenn TLS an diesem Server oder vertrauenswürdigem Proxy terminiert
trusted_proxies: [] # IPs/CIDRs deren X-Forwarded-For vertraut wird (leer = r.RemoteAddr)
index: index:
backend: manticore backend: manticore
manticore_dsn: "manticore@tcp(127.0.0.1:9306)/" manticore_dsn: "manticore@tcp(127.0.0.1:9306)/"
batch_size: 100 batch_size: 100
batch_mode: true # Indexierung als Cron-Batch statt Dauerbetrieb async_queue_size: 0 # 0 = Default
batch_mode: true # Indexierung als Cron-Batch statt Dauerbetrieb
ocr: ocr:
batch_mode: true # OCR als Cron-Batch statt Dauerbetrieb batch_mode: true # OCR als Cron-Batch statt Dauerbetrieb (PROJ-58)
paused_hours: [8, 18] # optional (PROJ-56): pausiert Verarbeitung im Zeitfenster (hier 0818 Uhr)
imap_scheduler:
jitter_seconds: 240 # PROJ-56: Jitter-Fenster für automatischen Sync-Start, 0 = deaktiviert
reconciliation:
alert_threshold_pct: 50 # PROJ-52: Warn-Schwelle (% unter 7-Tage-Schnitt), 0 = jede Abweichung
imap_server:
enabled: false # Read-Only IMAP-Zugriff aufs Archiv (PROJ-26)
bind: ":1143" # plain; für TLS ":993" + tls_cert/tls_key setzen
tls_cert: ""
tls_key: ""
metrics:
enabled: false # Prometheus /metrics-Endpoint (PROJ-40)
token: "" # optionaler Bearer-Token zum Schutz von /metrics
audit: audit:
log_path: /var/log/archivmail/audit.log log_path: /var/log/archivmail/audit.log
@@ -679,6 +713,35 @@ Mails können Dokumentenarten zugeordnet werden mit unterschiedlichen gesetzlich
--- ---
### Automatische Archivierungsregeln (PROJ-43)
Erweitert das Domain-basierte SMTP-Routing (`tenant_domains`) um flexiblere Muster-Regeln:
- Regeln nach `from_domain`, `to_domain`, `from_addr` oder `to_addr` (inkl. Wildcard `*.domain.de`)
- Höhere Priorität gewinnt bei mehreren Treffern
- SMTP-Daemon und IMAP-Import prüfen Regeln vor der Domain-Zuordnung
- Dry-Run: zeigt, welche bereits archivierten Mails eine Regel treffen würde, bevor sie aktiv geschaltet wird
- Verwaltung im Admin-Bereich (Tab „Routing-Regeln“) — CRUD unter `/api/admin/routing-rules`
- Bereits archivierte Mails werden nicht rückwirkend umgeroutet, nur neue Ingests
---
### Vollständigkeits-Reconciliation (PROJ-52)
Täglicher Zähl-Report als Nachweis, dass keine Mail auf dem Weg ins Archiv verloren geht
(VOI-Grundsatz 2):
- Cron (`archivmail reconcile`, nachts) zählt pro Quelle (SMTP-Journal, IMAP-Konto, POP3-Konto,
Datei-Import) die täglich archivierten Mails
- Warn-Badge + Audit-Eintrag (`reconciliation_anomaly`) bei >50 % Abweichung vom 7-Tage-Schnitt
(Schwellenwert konfigurierbar über `reconciliation.alert_threshold_pct`)
- Dashboard-Kachel „Vollständigkeits-Check“ mit den letzten 7 Tagen pro Quelle
- CSV-Export für Auditoren (`/api/admin/reconciliation/export.csv`)
- Tage ohne Aktivität werden explizit als `0` ausgewiesen, nicht als fehlender Datensatz —
damit ein ausgefallener Cron-Lauf selbst erkennbar bleibt
---
### Admin-Dashboard ### Admin-Dashboard
Erreichbar unter `/admin`. Erreichbar unter `/admin`.
@@ -872,6 +935,4 @@ Alle Endpunkte erfordern eine gültige Session (Cookie `archivmail_session` oder
| Funktion | Beschreibung | | Funktion | Beschreibung |
|----------|--------------| |----------|--------------|
| **Automatische Archivierungsregeln** | E-Mails nach Absender/Empfänger/Betreff automatisch Mandanten zuordnen |
| **Vollständigkeits-Reconciliation** | Abgleich zwischen IMAP-Server und Archiv — Zähl-Report mit Lückenanalyse |
| **E-Mail als primärer Login** | Tenant-User loggen sich mit E-Mail-Adresse statt Benutzername ein | | **E-Mail als primärer Login** | Tenant-User loggen sich mit E-Mail-Adresse statt Benutzername ein |