# 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 ``` /mail/// ``` 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 ```bash # 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: ```bash ./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 - [Administration API for Kerio Connect — Users](https://manuals.gfi.com/en/kerio/api/connect/admin/reference/interfacekerio_1_1jsonapi_1_1admin_1_1_users.html) - [Sample communication (Session.login, X-Token)](https://manuals.gfi.com/en/kerio/api/connect/admin/reference/sample_communication.html) - [User struct](https://manuals.gfi.com/en/kerio/api/connect/admin/reference/structkerio_1_1jsonapi_1_1admin_1_1_user.html)