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:
@@ -79,8 +79,8 @@ Ein selbst gehostetes, unternehmenstaugliches Mail-Archiv-System. Empfängt E-Ma
|
||||
| Self-Service Onboarding (Sign-up, Passwort-Reset) | ✅ Deployed |
|
||||
| REST API für externe CRM-Anbindung | ✅ Deployed |
|
||||
| CLI: `archivmail import` / `export` / `reindex` | ✅ Deployed |
|
||||
| Automatische Archivierungsregeln (SMTP/IMAP-Routing) | 🔄 Planned |
|
||||
| Vollständigkeits-Reconciliation (Zähl-Report) | 🔄 Planned |
|
||||
| Automatische Archivierungsregeln (SMTP/IMAP-Routing nach Domain/Absender) | ✅ Deployed |
|
||||
| Vollständigkeits-Reconciliation (Zähl-Report Mailserver vs. Archiv) | ✅ Deployed |
|
||||
|
||||
---
|
||||
|
||||
@@ -256,6 +256,7 @@ Das Update-Skript:
|
||||
|
||||
```yaml
|
||||
server:
|
||||
fqdn: "archivmail.firma.de" # verwendet in SMTP-EHLO, IMAP-Greeting, generierten Links
|
||||
api_port: 8080 # HTTP-API Port
|
||||
smtp_port: 2525 # SMTP-Eingang Port
|
||||
|
||||
@@ -271,6 +272,9 @@ storage:
|
||||
store_path: /var/archivmail/store # Haupt-Mailspeicher (AES-256-GCM)
|
||||
astore_path: /var/archivmail/astore # Anhang-Speicher
|
||||
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:
|
||||
enabled: true
|
||||
@@ -281,19 +285,49 @@ smtp:
|
||||
max_size_mb: 50
|
||||
allowed_ips:
|
||||
- 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:
|
||||
bind: ":8080"
|
||||
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:
|
||||
backend: manticore
|
||||
manticore_dsn: "manticore@tcp(127.0.0.1:9306)/"
|
||||
batch_size: 100
|
||||
async_queue_size: 0 # 0 = Default
|
||||
batch_mode: true # Indexierung als Cron-Batch statt Dauerbetrieb
|
||||
|
||||
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 08–18 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:
|
||||
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
|
||||
|
||||
Erreichbar unter `/admin`.
|
||||
@@ -872,6 +935,4 @@ Alle Endpunkte erfordern eine gültige Session (Cookie `archivmail_session` oder
|
||||
|
||||
| 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 |
|
||||
|
||||
Reference in New Issue
Block a user