Benennt einen Benutzer vollstaendig um: Login-Name und voller Name ueber die Administration API, dazu das Mailbox-Verzeichnis im Store auf der Platte. Kerio zieht das Verzeichnis beim Aendern des Login-Namens nicht mit, sodass der Benutzer sonst eine leere Mailbox vorfindet. Ablauf: Vorpruefungen (Benutzer vorhanden, neuer Name frei, kein LDAP-Benutzer, Verzeichnis vorhanden und Ziel frei, gleiches Dateisystem, Dienst steuerbar), dann Users.set, Dienst stoppen, Verzeichnisse verschieben, Dienst starten. Verschoben werden mail/ und archive/. Scheitert das Verschieben, werden bereits verschobene Verzeichnisse zurueckgenommen und der Login-Name zurueckgesetzt, damit Konfiguration und Platte konsistent bleiben. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
kerio-connect-rename-user
Benennt einen Benutzer in Kerio Connect vollständig um — Login-Name in der Serverkonfiguration und das zugehörige Mailbox-Verzeichnis im Store.
Warum
Kerio Connect legt die Mailbox eines Benutzers unter
<store>/mail/<domain>/<loginname>/
ab. Ändert man den Login-Namen über die Administration API oder die Admin-Konsole, zieht dieses Verzeichnis nicht mit — der Benutzer findet danach eine leere Mailbox vor, während die alten Daten unter dem alten Verzeichnisnamen liegenbleiben. Typischer Anlass: Heirat oder ein anderer Namenswechsel.
Dieses Script erledigt beide Hälften in der richtigen Reihenfolge.
Voraussetzungen
- Python 3.9 oder neuer, nur Standardbibliothek — keine Pakete zu installieren
- Läuft lokal auf dem Kerio-Server als root (Dateisystemzugriff + Dienstkontrolle)
- Administration API erreichbar (Standard:
https://localhost:4040/admin/api/jsonrpc/)
Ablauf
- Vorprüfungen, bevor irgendetwas geschrieben wird:
- Domain und Benutzer über die API auflösen
- Benutzer aus einem Verzeichnisdienst (LDAP/AD)? → Abbruch, denn der Name gehört dann dem Verzeichnisdienst
- neuer Login-Name noch frei?
- Mailbox-Verzeichnis vorhanden, Zielname noch nicht belegt, Quelle und Ziel auf demselben Dateisystem?
- ist der Dienst überhaupt steuerbar?
- Plan ausgeben.
--dry-runendet hier, sonst Rückfrage (--yesüberspringt). Users.setsetztloginNameund optionalfullName.- Kerio-Dienst stoppen und warten, bis er wirklich unten ist.
- Verzeichnisse per
os.renameverschieben (mail/, undarchive/falls vorhanden). - Dienst wieder starten.
Schlägt Schritt 5 fehl, werden bereits verschobene Verzeichnisse zurückgenommen und der Login-Name in Kerio auf den alten Wert zurückgesetzt — Konfiguration und Platte bleiben konsistent.
Benutzung
# Erst ansehen, was passieren würde (braucht kein root):
./kerio_rename_user.py \
--admin admin \
--domain firma.de \
--old-login anna.mueller \
--new-login anna.schmidt \
--full-name "Anna Schmidt" \
--dry-run
# Dann wirklich:
sudo -E ./kerio_rename_user.py \
--admin admin \
--domain firma.de \
--old-login anna.mueller \
--new-login anna.schmidt \
--full-name "Anna Schmidt"
Das Passwort kommt aus der Umgebungsvariablen KERIO_ADMIN_PASSWORD oder wird
interaktiv abgefragt — nicht über die Kommandozeile, sonst landet es in der
Shell-History. (sudo -E reicht die Variable durch.)
Nur den angezeigten Namen ändern, ohne Login und Verzeichnis anzufassen:
./kerio_rename_user.py --admin admin --domain firma.de \
--old-login anna.mueller --full-name "Anna Schmidt"
Optionen
| Option | Bedeutung |
|---|---|
--server, --port |
Admin-API, Standard localhost:4040 |
--admin, --password |
Admin-Zugang; besser KERIO_ADMIN_PASSWORD |
--domain |
Mail-Domain, z. B. firma.de |
--old-login, --new-login |
Login-Namen ohne @domain |
--full-name |
Neuer angezeigter Name |
--store-dir |
Store-Pfad, Standard /opt/kerio/mailserver/store |
--service-name |
Dienstname, Standard kerio-connect |
--service-manager |
auto, systemd, initd oder none |
--service-wait |
Sekunden Wartezeit aufs Stoppen, Standard 90 |
--dry-run |
Nur anzeigen |
--yes |
Rückfrage überspringen |
--force |
Auch bei LDAP-/AD-Benutzern versuchen |
--insecure |
TLS-Zertifikat nicht prüfen (selbstsigniert) |
--service-manager none fasst den Dienst nicht an — dafür muss Kerio dann
selbst gestoppt sein, bevor das Script läuft.
Hinweise
- Vorher ein Backup des Stores anlegen. Das Script verschiebt Verzeichnisse.
- Erst an einem Testbenutzer ausprobieren.
- Der Benutzer sollte während des Laufs nicht angemeldet sein.
- Nach der Umbenennung müssen sich alle Mail-Clients des Benutzers mit dem neuen Login neu anmelden.
- Die alte Adresse wird bewusst nicht als Alias angelegt. Wer möchte, dass Mail an die alte Adresse weiterhin ankommt, legt den Alias anschließend in der Admin-Konsole an.
- Weitere Adressen am Benutzer (
emailAddresses) bleiben unverändert und werden im Plan zur Kontrolle mit angezeigt.