Docker Compose with 24+ services: - PostgreSQL (PostGIS), Valkey, MinIO, Qdrant - Vault (PKI/TLS), Nginx (Reverse Proxy) - Backend Core API, Consent Service, Billing Service - RAG Service, Embedding Service - Gitea, Woodpecker CI/CD - Night Scheduler, Health Aggregator - Jitsi (Web/XMPP/JVB/Jicofo), Mailpit Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
216 lines
9.1 KiB
Markdown
216 lines
9.1 KiB
Markdown
# Mail-RBAC Architektur mit Mitarbeiter-Anonymisierung
|
|
|
|
**Version:** 1.0.0
|
|
**Status:** Architekturplanung
|
|
|
|
---
|
|
|
|
## Executive Summary
|
|
|
|
Dieses Dokument beschreibt eine neuartige Architektur, die E-Mail, Kalender und Videokonferenzen mit rollenbasierter Zugriffskontrolle (RBAC) verbindet. Das Kernkonzept ermöglicht die **vollständige Anonymisierung von Mitarbeiterdaten** bei Verlassen des Unternehmens, während geschäftliche Kommunikationshistorie erhalten bleibt.
|
|
|
|
---
|
|
|
|
## 1. Das Problem
|
|
|
|
### Traditionelle E-Mail-Systeme
|
|
```
|
|
max.mustermann@firma.de → Person gebunden
|
|
→ DSGVO: Daten müssen gelöscht werden
|
|
→ Geschäftshistorie geht verloren
|
|
```
|
|
|
|
### BreakPilot-Lösung: Rollenbasierte E-Mail
|
|
```
|
|
klassenlehrer.5a@schule.breakpilot.app → Rolle gebunden
|
|
→ Person kann anonymisiert werden
|
|
→ Kommunikationshistorie bleibt erhalten
|
|
```
|
|
|
|
---
|
|
|
|
## 2. Architektur-Übersicht
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────────────┐
|
|
│ BreakPilot Groupware │
|
|
├─────────────────────────────────────────────────────────────────┤
|
|
│ │
|
|
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
|
|
│ │ Webmail │ │ Kalender │ │ Jitsi │ │
|
|
│ │ (SOGo) │ │ (SOGo) │ │ Meeting │ │
|
|
│ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │
|
|
│ │ │ │ │
|
|
│ └────────────────┼────────────────┘ │
|
|
│ │ │
|
|
│ ┌───────────┴───────────┐ │
|
|
│ │ RBAC-Mail-Bridge │ ◄─── Neue Komponente │
|
|
│ │ (Python/Go) │ │
|
|
│ └───────────┬───────────┘ │
|
|
│ │ │
|
|
│ ┌─────────────────────┼─────────────────────┐ │
|
|
│ │ │ │ │
|
|
│ ▼ ▼ ▼ │
|
|
│ ┌──────────┐ ┌──────────────┐ ┌────────────┐ │
|
|
│ │PostgreSQL│ │ Mail Server │ │ MinIO │ │
|
|
│ │(RBAC DB) │ │ (Stalwart) │ │ (Backups) │ │
|
|
│ └──────────┘ └──────────────┘ └────────────┘ │
|
|
│ │
|
|
└─────────────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
---
|
|
|
|
## 3. Komponenten-Auswahl
|
|
|
|
### 3.1 E-Mail Server: Stalwart Mail Server
|
|
|
|
**Empfehlung:** [Stalwart Mail Server](https://stalw.art/)
|
|
|
|
| Kriterium | Bewertung |
|
|
|-----------|-----------|
|
|
| Lizenz | AGPL-3.0 (Open Source) |
|
|
| Sprache | Rust (performant, sicher) |
|
|
| Features | IMAP, SMTP, JMAP, WebSocket |
|
|
| Kalender | CalDAV integriert |
|
|
| Kontakte | CardDAV integriert |
|
|
| Spam/Virus | Integriert |
|
|
| API | REST API für Administration |
|
|
|
|
### 3.2 Webmail-Client: SOGo oder Roundcube
|
|
|
|
**Option A: SOGo** (empfohlen)
|
|
- Lizenz: GPL-2.0 / LGPL-2.1
|
|
- Kalender, Kontakte, Mail in einem
|
|
- ActiveSync Support
|
|
- Outlook-ähnliche Oberfläche
|
|
|
|
**Option B: Roundcube**
|
|
- Lizenz: GPL-3.0
|
|
- Nur Webmail
|
|
- Benötigt separaten Kalender
|
|
|
|
---
|
|
|
|
## 4. Anonymisierungs-Workflow
|
|
|
|
```
|
|
Mitarbeiter kündigt
|
|
│
|
|
▼
|
|
┌───────────────────────────┐
|
|
│ 1. Functional Mailboxes │
|
|
│ → Neu zuweisen oder │
|
|
│ → Deaktivieren │
|
|
└───────────┬───────────────┘
|
|
│
|
|
▼
|
|
┌───────────────────────────┐
|
|
│ 2. Personal Email Account │
|
|
│ → Anonymisieren: │
|
|
│ max.mustermann@... │
|
|
│ → mitarbeiter_a7x2@... │
|
|
└───────────────────────────┘
|
|
│
|
|
▼
|
|
┌───────────────────────────┐
|
|
│ 3. Users-Tabelle │
|
|
│ → Pseudonymisieren: │
|
|
│ name: "Max Mustermann" │
|
|
│ → "Ehem. Mitarbeiter" │
|
|
└───────────────────────────┘
|
|
│
|
|
▼
|
|
┌───────────────────────────┐
|
|
│ 4. Mailbox Assignments │
|
|
│ → Bleiben für Audit │
|
|
│ → User-Referenz zeigt │
|
|
│ auf anonymisierte │
|
|
│ Daten │
|
|
└───────────────────────────┘
|
|
│
|
|
▼
|
|
┌───────────────────────────┐
|
|
│ 5. E-Mail-Archiv │
|
|
│ → Header anonymisieren │
|
|
│ → Inhalte optional │
|
|
│ löschen │
|
|
└───────────────────────────┘
|
|
```
|
|
|
|
---
|
|
|
|
## 5. Unified Inbox Implementation
|
|
|
|
### Implementierte Komponenten
|
|
|
|
Die Unified Inbox wurde als Teil des klausur-service implementiert:
|
|
|
|
| Komponente | Pfad | Beschreibung |
|
|
|------------|------|--------------|
|
|
| **Models** | `klausur-service/backend/mail/models.py` | Pydantic Models für Accounts, E-Mails, Tasks |
|
|
| **Database** | `klausur-service/backend/mail/mail_db.py` | PostgreSQL-Operationen mit asyncpg |
|
|
| **Credentials** | `klausur-service/backend/mail/credentials.py` | Vault-Integration für IMAP/SMTP-Passwörter |
|
|
| **Aggregator** | `klausur-service/backend/mail/aggregator.py` | Multi-Account IMAP Sync |
|
|
| **AI Service** | `klausur-service/backend/mail/ai_service.py` | KI-Analyse (Absender, Fristen, Kategorien) |
|
|
| **Task Service** | `klausur-service/backend/mail/task_service.py` | Arbeitsvorrat-Management |
|
|
| **API** | `klausur-service/backend/mail/api.py` | FastAPI Router mit 30+ Endpoints |
|
|
|
|
### API-Endpoints (Port 8086)
|
|
|
|
```
|
|
# Account Management
|
|
POST /api/v1/mail/accounts - Neues Konto hinzufügen
|
|
GET /api/v1/mail/accounts - Alle Konten auflisten
|
|
DELETE /api/v1/mail/accounts/{id} - Konto entfernen
|
|
POST /api/v1/mail/accounts/{id}/test - Verbindung testen
|
|
|
|
# Unified Inbox
|
|
GET /api/v1/mail/inbox - Aggregierte Inbox
|
|
GET /api/v1/mail/inbox/{id} - Einzelne E-Mail
|
|
POST /api/v1/mail/send - E-Mail senden
|
|
|
|
# KI-Features
|
|
POST /api/v1/mail/analyze/{id} - E-Mail analysieren
|
|
GET /api/v1/mail/suggestions/{id} - Antwortvorschläge
|
|
|
|
# Arbeitsvorrat
|
|
GET /api/v1/mail/tasks - Alle Tasks
|
|
POST /api/v1/mail/tasks - Manuelle Task erstellen
|
|
PATCH /api/v1/mail/tasks/{id} - Task aktualisieren
|
|
GET /api/v1/mail/tasks/dashboard - Dashboard-Statistiken
|
|
```
|
|
|
|
### Niedersachsen-spezifische Absendererkennung
|
|
|
|
```python
|
|
KNOWN_AUTHORITIES_NI = {
|
|
"@mk.niedersachsen.de": "Kultusministerium Niedersachsen",
|
|
"@rlsb.de": "Regionales Landesamt für Schule und Bildung",
|
|
"@landesschulbehoerde-nds.de": "Landesschulbehörde",
|
|
"@nibis.de": "NiBiS",
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 6. Lizenz-Übersicht
|
|
|
|
| Komponente | Lizenz | Kommerzielle Nutzung | Veröffentlichungspflicht |
|
|
|------------|--------|---------------------|-------------------------|
|
|
| Stalwart Mail | AGPL-3.0 | Ja | Nur bei Code-Änderungen |
|
|
| SOGo | GPL-2.0/LGPL | Ja | Nur bei Code-Änderungen |
|
|
| Roundcube | GPL-3.0 | Ja | Nur bei Code-Änderungen |
|
|
| RBAC-Mail-Bridge | Eigene | N/A | Kann proprietär bleiben |
|
|
| BreakPilot Backend | Eigene | N/A | Proprietär |
|
|
|
|
---
|
|
|
|
## 7. Referenzen
|
|
|
|
- [Stalwart Mail Server](https://stalw.art/)
|
|
- [SOGo Groupware](https://www.sogo.nu/)
|
|
- [Roundcube Webmail](https://roundcube.net/)
|
|
- [CalDAV Standard](https://tools.ietf.org/html/rfc4791)
|
|
- [DSGVO Art. 17 - Recht auf Löschung](https://dsgvo-gesetz.de/art-17-dsgvo/)
|