Files
kerio-connect-rename-user/README.md
T
duffyduckandClaude Opus 5 485a681a0a Benutzer-Umbenennung fuer Kerio Connect
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>
2026-08-07 12:54:12 +02:00

4.6 KiB

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

  1. 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?
  2. Plan ausgeben. --dry-run endet hier, sonst Rückfrage (--yes überspringt).
  3. Users.set setzt loginName und optional fullName.
  4. Kerio-Dienst stoppen und warten, bis er wirklich unten ist.
  5. Verzeichnisse per os.rename verschieben (mail/, und archive/ falls vorhanden).
  6. 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.

API-Referenz