# Room Policies: Retention, Publication, Auto-Join

**Status**: ✅ Vollständig deployed  
**Konfiguration**: `apps/production/custom-configs/synapse-values.yaml`

## 1. Message Retention

Alte Nachrichten automatisch löschen (Speicher sparen, DSGVO).

```yaml
retention:
  enabled: true
  default_policy:
    min_lifetime: 1d      # Messages bleiben ≥1d
    max_lifetime: 1y      # Messages gelöscht nach 1 Jahr

media_retention:
  local_media_lifetime: 365d      # 1 Jahr
  remote_media_lifetime: 90d      # 90 Tage

redaction_retention_period: 7d    # Gelöschte Messages noch 7d sichtbar
```

## 2. Room Publication Rules

Kontrollieren welche Rooms im öffentlichen Directory sichtbar sind.

```yaml
room_list_publication_rules:
  - user_id: "*"           # Alle User
    action: allow          # dürfen ihre Rooms publishen
```

**Alternativ (restrictiv)**: Nur Admins publishen
```yaml
room_list_publication_rules:
  - user_id: "@admin:axion1337.chat"
    action: allow
  - user_id: "*"
    action: deny
```

## 3. Auto-Join Rooms

Neue User automatisch in bestimmte Rooms hinzufügen (Onboarding).

```yaml
auto_join_rooms:
  - "!announcements:axion1337.chat"
  - "!rules:axion1337.chat"
auto_join_rooms_for_guests: false    # Nur registered users
```

**Room ID finden**: Element Settings → Advanced → Room ID

## Deployment

```bash
# Edit ConfigMap
kubectl apply -f apps/production/custom-configs/synapse-values.yaml

# Synapse neustarten
kubectl rollout restart deployment -n matrix matrix-stack-synapse

# Verify
kubectl logs -n matrix -l app.kubernetes.io/name=synapse | grep -i "retention\|publication"
```

## Best Practices

**Privater Server**:
- max_lifetime: 1y (großzügig)
- action: allow (alle publishen)
- auto_join_rooms: announcements + rules

**Öffentlicher Server (DSGWR)**:
- max_lifetime: 90d (kurz)
- action: deny (nur Admins)
- auto_join_rooms: [] (keine Zwangs-Rooms)

---
**Weitere Details**: Siehe Kapitel 5.
