--adopt: verwaistes Mailbox-Verzeichnis einem Benutzer zuordnen
Fuer den Fall, dass der alte Benutzer schon geloescht und der neue von Hand angelegt wurde - dann liegt nur noch das Verzeichnis herum. users.cfg bleibt unangetastet, es wandert allein das Verzeichnis. Geprueft wird vorher, dass der Zielbenutzer existiert und der alte nicht mehr; gibt es ihn noch, verweist das Script auf die normale Umbenennung. Hat das Ziel schon ein Verzeichnis mit Mails, bricht es ab - mit --force wird das bestehende als <name>.abgeloest-<zeitstempel> beiseitegeschoben statt geloescht. Die Zielpruefung arbeitet jetzt als Folge statt paarweise: bei der Uebernahme raeumt der erste Schritt das Ziel, das der zweite belegt. Eine isolierte Pruefung haette das als Konflikt gemeldet. Dazu die Kontaktkarte: .personal traegt Namen und Adresse des vorherigen Eigentuemers. Sie wird jetzt umgeschrieben statt entfernt - Kerio legt sie naemlich nicht neu an, wenn sie fehlt, weder beim Neustart noch bei einer Aenderung ueber die Admin-API. Das gilt auch fuer die normale Umbenennung, wo bisher die alte Adresse stehenblieb. Beides gegen den Testserver verifiziert: nach der Uebernahme sieht der Zielbenutzer alle Mails samt Unterordnern und Flags, die Kontaktkarte stimmt, users.cfg ist unveraendert und neue Mail wird zugestellt. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
c4883d42bb
commit
da64a15486
@@ -29,6 +29,16 @@ danach geprüft:
|
||||
| Verwaistes Verzeichnis unter dem alten Namen | keines |
|
||||
| GUID und Passwort-Hash des Benutzers | unverändert |
|
||||
|
||||
Und für `--adopt`, mit gelöschtem Altbenutzer und neu angelegtem Zielbenutzer:
|
||||
|
||||
| Prüfung | Ergebnis |
|
||||
| --- | --- |
|
||||
| Alle 7 Mails beim neuen Benutzer sichtbar | ja, inklusive Unterordner und Flags |
|
||||
| Kontaktkarte `.personal` | auf neuen Namen und Adresse umgeschrieben |
|
||||
| `users.cfg` | unverändert |
|
||||
| Neue Mail an den Zielbenutzer | zugestellt |
|
||||
| Verwaistes Verzeichnis | keines übrig |
|
||||
|
||||
Geändert haben sich nur Kerios eigene Index- und Statusdateien (`.journal.db`,
|
||||
`status.fld`, `index.fld`) — die schreibt der Server bei jedem Zugriff neu.
|
||||
|
||||
@@ -37,6 +47,7 @@ Dazu Unit-Tests unter [tests/](tests/):
|
||||
```bash
|
||||
python3 tests/test_store.py
|
||||
python3 tests/test_users_config.py
|
||||
python3 tests/test_adopt.py
|
||||
```
|
||||
|
||||
---
|
||||
@@ -121,11 +132,47 @@ sudo ./kerio_rename_user.py --domain firma.de \
|
||||
--old-login anna.mueller --full-name "Anna Schmidt"
|
||||
```
|
||||
|
||||
## Verwaistes Verzeichnis übernehmen (`--adopt`)
|
||||
|
||||
Für den Fall, dass der alte Benutzer **schon gelöscht** und der neue **schon
|
||||
angelegt** ist — dann liegt nur noch das Mailbox-Verzeichnis herum und soll dem
|
||||
neuen Benutzer zugeordnet werden:
|
||||
|
||||
```bash
|
||||
sudo ./kerio_rename_user.py --adopt \
|
||||
--domain firma.de \
|
||||
--old-login anna.mueller \
|
||||
--new-login anna.schmidt
|
||||
```
|
||||
|
||||
`--old-login` ist hier der Name des **verwaisten Verzeichnisses**, `--new-login`
|
||||
der **bereits existierende** Zielbenutzer. `users.cfg` wird dabei nicht
|
||||
angefasst — es wandert nur das Verzeichnis.
|
||||
|
||||
Geprüft wird vorher:
|
||||
|
||||
- Der Zielbenutzer existiert in `users.cfg` (sonst liefe die Mailbox ins Leere).
|
||||
- Der alte Benutzer existiert **nicht** mehr. Gibt es ihn noch, bricht das
|
||||
Script ab und verweist auf die normale Umbenennung, die auch `users.cfg`
|
||||
mitzieht.
|
||||
- Hat der Zielbenutzer schon ein Verzeichnis mit Mails darin, bricht das Script
|
||||
ab. Mit `--force` wird das bestehende Verzeichnis als
|
||||
`<name>.abgeloest-<zeitstempel>` beiseitegeschoben statt gelöscht — die Mails
|
||||
bleiben also erhalten, werden aber **nicht** zusammengeführt.
|
||||
|
||||
Nach der Übernahme wird die Kontaktkarte des Benutzers (`.personal`) auf den
|
||||
neuen Namen und die neue Adresse umgeschrieben, `stats.usr` beiseitegelegt —
|
||||
die legt Kerio selbst neu an.
|
||||
|
||||
**Das Kennwort kommt nicht mit.** Der Zielbenutzer meldet sich weiterhin mit
|
||||
seinem eigenen an; übernommen wird ausschließlich der Mailbestand.
|
||||
|
||||
## Optionen
|
||||
|
||||
| Option | Bedeutung |
|
||||
| --- | --- |
|
||||
| `--list` | Benutzer aus `users.cfg` auflisten |
|
||||
| `--adopt` | Verwaistes Verzeichnis einem bestehenden Benutzer zuordnen |
|
||||
| `--domain` | Mail-Domain, z. B. `firma.de` |
|
||||
| `--old-login`, `--new-login` | Login-Namen ohne `@domain` |
|
||||
| `--full-name` | Neuer angezeigter Name |
|
||||
@@ -136,22 +183,32 @@ sudo ./kerio_rename_user.py --domain firma.de \
|
||||
| `--service-wait` | Sekunden Wartezeit aufs Stoppen, Standard 90 |
|
||||
| `--dry-run` | Nur anzeigen |
|
||||
| `--yes` | Rückfrage überspringen |
|
||||
| `--force` | Auch bei Benutzern aus einem Verzeichnisdienst |
|
||||
| `--force` | Bei Verzeichnisdienst-Benutzern; mit `--adopt`: belegtes Ziel beiseiteschieben |
|
||||
|
||||
`--service-manager none` fasst den Dienst nicht an — dafür muss Kerio dann
|
||||
selbst gestoppt sein, bevor das Script läuft.
|
||||
|
||||
## Die Kontaktkarte
|
||||
|
||||
`<mailbox>/.personal` ist die persönliche vCard des Benutzers und trägt seinen
|
||||
Namen und seine Adresse. Das Script schreibt sie in beiden Modi auf den neuen
|
||||
Stand um — Adresse, `FN:` und die Betreffzeile.
|
||||
|
||||
Löschen wäre keine Alternative: **Kerio legt die Datei nicht neu an**, wenn sie
|
||||
fehlt. Weder beim Dienstneustart noch bei einer Änderung am Benutzer über die
|
||||
Admin-API (geprüft gegen 10.0.9). Der Benutzer stünde dauerhaft ohne eigene
|
||||
Kontaktkarte da.
|
||||
|
||||
## Was das Script bewusst nicht anfasst
|
||||
|
||||
Nach der Umbenennung steht der alte Name noch an ein paar Stellen, die reine
|
||||
Anzeige betreffen und den Mailbetrieb nicht stören:
|
||||
Der alte Name bleibt an zwei Stellen stehen, die reine Anzeige betreffen und den
|
||||
Mailbetrieb nicht stören:
|
||||
|
||||
- `.personal` — die vCard des Benutzers, enthält noch die alte Adresse
|
||||
- `#public/Contacts/` — der Eintrag in der globalen Adressliste
|
||||
- `.caldav.db` / `.carddav.db` — die DAV-Datenbanken
|
||||
|
||||
Kerio schreibt `.personal` beim Start teilweise selbst neu. Wer die Adresse dort
|
||||
sofort korrekt haben will, korrigiert den Kontakt in der Administrationskonsole.
|
||||
Wer die sofort korrekt haben will, korrigiert den Kontakt in der
|
||||
Administrationskonsole.
|
||||
|
||||
Kommt der alte Name in `users.cfg` außerhalb der Benutzerlisten vor (etwa in
|
||||
einem Alias), meldet das Script das im Plan und ändert es **nicht** automatisch —
|
||||
|
||||
Reference in New Issue
Block a user