]> Frank Brehm's Git Trees - pixelpark/pp-admin-tools.git/commitdiff
Translations
authorFrank Brehm <frank.brehm@pixelpark.com>
Thu, 15 Jun 2023 14:46:56 +0000 (16:46 +0200)
committerFrank Brehm <frank.brehm@pixelpark.com>
Thu, 15 Jun 2023 14:46:56 +0000 (16:46 +0200)
locale/de_DE/LC_MESSAGES/pp_admintools.po
locale/en_US/LC_MESSAGES/pp_admintools.po
locale/pp_admintools.pot

index d6a1605700d74b53bfc7eb1969c8704334389078..f585670e8e9b30ad4d6079f6c74db39b34dce380 100644 (file)
@@ -7,8 +7,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: pp_admintools 0.9.0\n"
 "Report-Msgid-Bugs-To: frank.brehm@pixelpark.com\n"
-"POT-Creation-Date: 2023-06-13 13:45+0200\n"
-"PO-Revision-Date: 2023-06-13 13:50+0200\n"
+"POT-Creation-Date: 2023-06-15 16:42+0200\n"
+"PO-Revision-Date: 2023-06-15 16:25+0200\n"
 "Last-Translator: Frank Brehm <frank.brehm@pixelpark.com>\n"
 "Language: de_DE\n"
 "Language-Team: de_DE <solution@pixelpark.com>\n"
@@ -18,11 +18,11 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Babel 2.12.1\n"
 
-#: lib/pp_admintools/app/__init__.py:113
+#: lib/pp_admintools/app/__init__.py:143
 msgid "Using logfile {!r}."
 msgstr "Verwende Logdatei {!r}."
 
-#: lib/pp_admintools/app/__init__.py:115
+#: lib/pp_admintools/app/__init__.py:145
 msgid "Don't using a logfile."
 msgstr "Verwende keine Logdatei."
 
@@ -44,7 +44,7 @@ msgstr ""
 "Die DN des LDAP-Containers (meistens eine OU), in dem alle virtuellen Aliaseinträge geplegt "
 "werden sollen. Vorgabe: {!r}"
 
-#: lib/pp_admintools/app/barracuda_sync.py:149 lib/pp_admintools/app/ldap.py:438
+#: lib/pp_admintools/app/barracuda_sync.py:149 lib/pp_admintools/app/ldap.py:439
 #: lib/pp_admintools/app/mirror_ldap.py:118 lib/pp_admintools/app/pdns.py:284
 msgid "SECONDS"
 msgstr "SEKUNDEN"
@@ -85,10 +85,10 @@ msgstr "Fehler {} beim Ermitteln der Lookup-Tabellentypen"
 
 #: lib/pp_admintools/app/barracuda_sync.py:231 lib/pp_admintools/app/barracuda_sync.py:427
 #: lib/pp_admintools/app/dns_deploy_zones.py:434 lib/pp_admintools/app/dns_deploy_zones.py:788
-#: lib/pp_admintools/app/ldap.py:889 lib/pp_admintools/app/ldap.py:1022
-#: lib/pp_admintools/app/ldap.py:1075 lib/pp_admintools/app/ldap.py:1128
-#: lib/pp_admintools/app/ldap.py:1416 lib/pp_admintools/app/ldap.py:1450
-#: lib/pp_admintools/app/ldap.py:1484 lib/pp_admintools/app/ldap.py:1518
+#: lib/pp_admintools/app/ldap.py:896 lib/pp_admintools/app/ldap.py:1029
+#: lib/pp_admintools/app/ldap.py:1082 lib/pp_admintools/app/ldap.py:1135
+#: lib/pp_admintools/app/ldap.py:1423 lib/pp_admintools/app/ldap.py:1457
+#: lib/pp_admintools/app/ldap.py:1491 lib/pp_admintools/app/ldap.py:1525
 msgid "Result:"
 msgstr "Ergebnis:"
 
@@ -294,7 +294,7 @@ msgstr "Es sollen keine LDAP-Einträge geändert werden."
 msgid "LDAP Entries to modified:"
 msgstr "Zu ändernde LDAP-Einträge:"
 
-#: lib/pp_admintools/app/barracuda_sync.py:756 lib/pp_admintools/app/ldap.py:1631
+#: lib/pp_admintools/app/barracuda_sync.py:756 lib/pp_admintools/app/ldap.py:1638
 msgid "Values to add to attribute {!r}:"
 msgstr "Werte, die zu Attribut {!r} hinzugefügt werden:"
 
@@ -302,11 +302,11 @@ msgstr "Werte, die zu Attribut {!r} hinzugefügt werden:"
 msgid "Values to be removed from attribute {!r}:"
 msgstr "Werte, die von Attribut {!r} gelöscht werden sollen:"
 
-#: lib/pp_admintools/app/barracuda_sync.py:777 lib/pp_admintools/app/ldap.py:1652
+#: lib/pp_admintools/app/barracuda_sync.py:777 lib/pp_admintools/app/ldap.py:1659
 msgid "Changes for attribute {!r}:"
 msgstr "Änedrungen für Attribut {!r}:"
 
-#: lib/pp_admintools/app/barracuda_sync.py:780 lib/pp_admintools/app/ldap.py:1655
+#: lib/pp_admintools/app/barracuda_sync.py:780 lib/pp_admintools/app/ldap.py:1662
 msgid "No changes to attribute {!r}."
 msgstr "Keine Änderungen an Attribut {!r}."
 
@@ -433,9 +433,93 @@ msgid "Checking DN-like attributes of entry {!r} ..."
 msgstr "Überprüfe Attribute mit DN-Syntax von Eintrag {!r} …"
 
 #: lib/pp_admintools/app/check_ldap_dn_attributes.py:219
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:234
 msgid "Got attributes:"
 msgstr "Gefundene Attribute:"
 
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:76
+msgid ""
+"Removes all LDAP groups, which does not have any members, that means, they are one of the "
+"following objectClasses: {ocl}, and they have none of the following attributes: {atl}."
+msgstr ""
+"Löscht alle LDAP-Gruppen, die keine Mitglieder haben. Das heißt, sie haben eine der folgenden "
+"Objektklassen: {ocl}, und sie besitzen keines der folgenden Attribute: {atl}."
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:125 lib/pp_admintools/app/remove_ldap_user.py:134
+msgid "Removing options"
+msgstr "Lösch-Optionen"
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:129
+msgid "The base DN used as the root for the LDAP search."
+msgstr "Die Basis-DN, die als Ausgangspunkt bei der LDAP-Suche verwendet werden soll."
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:155 lib/pp_admintools/app/remove_ldap_user.py:202
+msgid "Checking given instances for admin and read/write access."
+msgstr "Überprüfe die gegebenen Instanzen nach Admin- und Schreib-/Lesezugriffsrechten."
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:162 lib/pp_admintools/app/remove_ldap_user.py:209
+msgid "LDAP instance {!r} not found in configuration."
+msgstr "Die LDAP-Instanz {!r} wurde nicht in der Konfiguration gefunden."
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:170 lib/pp_admintools/app/remove_ldap_user.py:217
+msgid "LDAP instance {!r} has only readonly access."
+msgstr "Die LDAP-Instanz {!r} besitzt nur Lesezugriffsrechte."
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:175 lib/pp_admintools/app/remove_ldap_user.py:222
+msgid "No admin access to LDAP instance {!r}."
+msgstr "Keine Admin-Zugriffsrechte bei LDAP-Instanz {!r}."
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:185
+msgid "Searching for empty groups ..."
+msgstr "Suche nach leeren Gruppen …"
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:192
+msgid "No more empty groups left for removing."
+msgstr "Keine weitern Gruppen zu Löschen."
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:195
+msgid "Lap {} on searching for empty groups to remove."
+msgstr "Runde {} bei der Suche nach zu löschenden leeren Gruppen."
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:230
+msgid "Searching for member attributes of {!r} ..."
+msgstr "Suche nach Mitglieds-Attributen von {!r} …"
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:240
+msgid "Found attribute {at!r} in group {g!r}."
+msgstr "Fand Attribut {at!r} in Gruppe {g!r}."
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:243
+msgid "Group {!r} is not empty!"
+msgstr "Die Gruppe {!r} ist nicht leer!"
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:248
+msgid "Removing group {!r} ..."
+msgstr "Lösche Gruppe {!r} …"
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:252
+msgid "Dont't removing group {!r}."
+msgstr "Kein Löschen der Gruppe {!r}."
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:259
+msgid "Do you really want to remove the group '{}'"
+msgstr "Möchten Sie die Gruppe '{}' wirklich löschen"
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:261
+msgid "[{yes}/{no}]?"
+msgstr "[{yes}/{no}]?"
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:262 lib/pp_admintools/app/ldap.py:336
+#: lib/pp_admintools/app/mirror_ldap.py:238 lib/pp_admintools/app/remove_ldap_user.py:308
+#: lib/pp_admintools/app/set_ldap_password.py:489
+msgid "No"
+msgstr "Nein"
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:262 lib/pp_admintools/app/mirror_ldap.py:238
+#: lib/pp_admintools/app/remove_ldap_user.py:308 lib/pp_admintools/app/set_ldap_password.py:489
+msgid "yes"
+msgstr "ja"
+
 #: lib/pp_admintools/app/dns_deploy_zones.py:122
 msgid "Generation of the BIND9 configuration file for slave zones."
 msgstr "Generierung der BIND9-Konfigurationsdatei für Slave-Zonen."
@@ -749,7 +833,7 @@ msgstr "' …"
 msgid "Checking for dependend unique attribute '"
 msgstr "Überprüfe abhängig eindeutiges Attribut '"
 
-#: lib/pp_admintools/app/duplicate_attribs.py:172 lib/pp_admintools/app/ldap.py:557
+#: lib/pp_admintools/app/duplicate_attribs.py:172 lib/pp_admintools/app/ldap.py:564
 msgid "Used filter:"
 msgstr "Verwendeter Filter:"
 
@@ -762,17 +846,17 @@ msgid "The path {!r} must be an absolute path."
 msgstr "Der Pfad {!r} muss ein absoluter Pfad sein."
 
 #: lib/pp_admintools/app/ldap.py:121 lib/pp_admintools/app/ldap.py:287
-#: lib/pp_admintools/app/ldap.py:1534
+#: lib/pp_admintools/app/ldap.py:1541
 msgid "The file {!r} does not exists."
 msgstr "Die Datei {!r} existiert nicht."
 
 #: lib/pp_admintools/app/ldap.py:125 lib/pp_admintools/app/ldap.py:291
-#: lib/pp_admintools/app/ldap.py:1539
+#: lib/pp_admintools/app/ldap.py:1546
 msgid "The given path {!r} exists, but is not a regular file."
 msgstr "Der angegebene Pfad {!r} existiert, ist aber keine reguläre Datei."
 
 #: lib/pp_admintools/app/ldap.py:129 lib/pp_admintools/app/ldap.py:295
-#: lib/pp_admintools/app/ldap.py:1544
+#: lib/pp_admintools/app/ldap.py:1551
 msgid "The given file {!r} is not readable."
 msgstr "Die angegebene Datei {} ist nicht lesbar."
 
@@ -784,67 +868,62 @@ msgstr "ein Port muss größer als Null und kleiner oder gleich {} sein."
 msgid "Wrong port number {!r}:"
 msgstr "Ungültige Portnummer {!r}."
 
-#: lib/pp_admintools/app/ldap.py:324
+#: lib/pp_admintools/app/ldap.py:325
 msgid "LDAP options"
 msgstr "LDAP-Optionen"
 
-#: lib/pp_admintools/app/ldap.py:326
+#: lib/pp_admintools/app/ldap.py:327
 msgid "Options for the default LDAP connection"
 msgstr "Optionen für die Vorgabe-LDAP-Verbindung"
 
-#: lib/pp_admintools/app/ldap.py:328
+#: lib/pp_admintools/app/ldap.py:329
 msgid "Options fo LDAP connections"
 msgstr "Optionen für die LDAP-Verbindungen"
 
-#: lib/pp_admintools/app/ldap.py:335 lib/pp_admintools/app/mirror_ldap.py:238
-#: lib/pp_admintools/app/remove_ldap_user.py:308 lib/pp_admintools/app/set_ldap_password.py:489
-msgid "No"
-msgstr "Nein"
-
-#: lib/pp_admintools/app/ldap.py:337
+#: lib/pp_admintools/app/ldap.py:338
 msgid "Yes"
 msgstr "Ja"
 
-#: lib/pp_admintools/app/ldap.py:343
+#: lib/pp_admintools/app/ldap.py:344
 msgid "HOST"
 msgstr "HOST"
 
-#: lib/pp_admintools/app/ldap.py:344
+#: lib/pp_admintools/app/ldap.py:345
 msgid "Hostname or address of the LDAP server to use. Default: {!r}"
 msgstr "Der Hostname oder die Adresse des zu verwendenden LDAP-Servers. Vorgabe: {!r}"
 
-#: lib/pp_admintools/app/ldap.py:351
+#: lib/pp_admintools/app/ldap.py:352
 msgid "Use ldaps to connect to the LDAP server. Default: {}"
 msgstr "Soll ldaps zum Verbinden mit dem LDAP-Server verwendet werden? Vorgabe: {}."
 
-#: lib/pp_admintools/app/ldap.py:356 lib/pp_admintools/app/mail.py:250
+#: lib/pp_admintools/app/ldap.py:357 lib/pp_admintools/app/mail.py:250
 #: lib/pp_admintools/app/pdns.py:273
 msgid "PORT"
 msgstr "PORT"
 
-#: lib/pp_admintools/app/ldap.py:358
+#: lib/pp_admintools/app/ldap.py:359
 msgid "The port number to connect to the LDAP server. Default: {}"
 msgstr "Welcher Port soll verwendet werden, um sich mit dem LDAP-Server zu verbinden? Vorgabe: {}."
 
-#: lib/pp_admintools/app/ldap.py:364
+#: lib/pp_admintools/app/ldap.py:365
 msgid "The base DN used as the root for the LDAP searches. Default: {!r}"
-msgstr "Die Basis-DN, die als Ausgangspunt bei LDAP-Suchen verwendet werden soll. Vorgabe: {!r}"
+msgstr "Die Basis-DN, die als Ausgangspunkt bei LDAP-Suchen verwendet werden soll. Vorgabe: {!r}"
 
-#: lib/pp_admintools/app/ldap.py:371
+#: lib/pp_admintools/app/ldap.py:372
 msgid "The Bind DN to use to connect to the LDAP server. Default: {!r}"
 msgstr "Die Bind-DN, die zur Verbindung mit dem LDAP-Server verwendet werden soll. Vorgabe: {!r}"
 
-#: lib/pp_admintools/app/ldap.py:379 lib/pp_admintools/app/mk_ldap_passwd.py:131
+#: lib/pp_admintools/app/ldap.py:380 lib/pp_admintools/app/mk_ldap_passwd.py:131
 #: lib/pp_admintools/app/set_ldap_password.py:131 lib/pp_admintools/app/set_ldap_password.py:132
 #: lib/pp_admintools/app/set_ldap_password.py:149 lib/pp_admintools/app/set_ldap_password.py:152
 msgid "PASSWORD"
 msgstr "PASSWORT"
 
-#: lib/pp_admintools/app/ldap.py:380
+#: lib/pp_admintools/app/ldap.py:381
 msgid "Use PASSWORD as the password for simple LDAP authentication."
 msgstr "Verwende PASSWORT als Passwort für die einfache Authentifizierung."
 
-#: lib/pp_admintools/app/ldap.py:385
+#: lib/pp_admintools/app/ldap.py:386
 msgid ""
 "Prompt for simple LDAP authentication. This is used instead of specifying the password on the "
 "command line."
@@ -852,30 +931,30 @@ msgstr ""
 "Nachfrage nach dem Passwort für eine einfache LDAP-Authentifizierung. Dies wird anstelle der "
 "Angabe des Passwortes an der Kommandozeile verwendet."
 
-#: lib/pp_admintools/app/ldap.py:391 lib/pp_admintools/app/set_ldap_password.py:143
+#: lib/pp_admintools/app/ldap.py:392 lib/pp_admintools/app/set_ldap_password.py:143
 #: lib/pp_admintools/app/set_ldap_password.py:145
 msgid "PASSWORD_FILE"
 msgstr "PASSWORT_DATEI"
 
-#: lib/pp_admintools/app/ldap.py:393
+#: lib/pp_admintools/app/ldap.py:394
 msgid "Use contents of PASSWORD_FILE as the password for simple authentication."
 msgstr "Verwende den Inhalt der PASSWORT_DATEI als das Passort für eine einfache LDAP-Authentifizierung."
 
-#: lib/pp_admintools/app/ldap.py:401 lib/pp_admintools/app/pdns.py:247
+#: lib/pp_admintools/app/ldap.py:402 lib/pp_admintools/app/pdns.py:247
 msgid "INSTANCE"
 msgstr "INSTANZ"
 
-#: lib/pp_admintools/app/ldap.py:404
+#: lib/pp_admintools/app/ldap.py:405
 msgid "If not given, then the instance {!r} will be used."
 msgstr "Wenn nicht angegeben, dann wird die Instanz {!r} verwendet."
 
-#: lib/pp_admintools/app/ldap.py:408
+#: lib/pp_admintools/app/ldap.py:409
 msgid "The LDAP instance (LDAP cluster) from configuration, where to execute this script."
 msgstr ""
 "Die LDAP-Instanz (das LDAP-Cluster) aus der Konfiguration, in welcher das Skript ausgeführt "
 "werden soll."
 
-#: lib/pp_admintools/app/ldap.py:412
+#: lib/pp_admintools/app/ldap.py:413
 msgid ""
 "The LDAP instance (LDAP cluster) from configuration, where to execute this script. It is "
 "possible to give here the value {val_all!r}, then all found LDAP instances except {default!r} "
@@ -887,252 +966,258 @@ msgstr ""
 " außer {default!r} verwendet. Es ist ebenfalls möglich, den Wert {val_list!r} anzugeben, in "
 "diesem Fall werden alle LDAP-Instanzen ausgegeben, und das Skript beendet sich."
 
-#: lib/pp_admintools/app/ldap.py:440
+#: lib/pp_admintools/app/ldap.py:441
 msgid "Using the given timeout in seconds for all LDAP operations. Default: {}"
 msgstr "Der Timeout in Sekunden für alle LDAP-Operationen. Vorgabe: {}."
 
-#: lib/pp_admintools/app/ldap.py:472
+#: lib/pp_admintools/app/ldap.py:468
+msgid "Limiting console timeout to {} seconds due to LDAP timeout."
+msgstr ""
+"Begrenze wegen des LDAP-Zeitüberschreitungslimits das Zeitüberschreitungslimit der Konsole auf "
+"{} Sekunden."
+
+#: lib/pp_admintools/app/ldap.py:479
 msgid "Checking given instances."
 msgstr "Überprüfe die übergebenen Instanzen."
 
-#: lib/pp_admintools/app/ldap.py:476
+#: lib/pp_admintools/app/ldap.py:483
 msgid "Given insts:"
 msgstr "Übergebene Instanzen:"
 
-#: lib/pp_admintools/app/ldap.py:527
+#: lib/pp_admintools/app/ldap.py:534
 msgid "Configured LDAP instances:"
 msgstr "Konfigurierte LDAP-Instanzen:"
 
-#: lib/pp_admintools/app/ldap.py:544
+#: lib/pp_admintools/app/ldap.py:551
 msgid "Verifying given instances ..."
 msgstr "Überprüfe Instanzen …"
 
-#: lib/pp_admintools/app/ldap.py:580
+#: lib/pp_admintools/app/ldap.py:587
 msgid "Filtered instances:"
 msgstr "Gefilterte Instanzen:"
 
-#: lib/pp_admintools/app/ldap.py:585
+#: lib/pp_admintools/app/ldap.py:592
 msgid "LDAP instances to use:"
 msgstr "Verwendete LDAP-Instanzen:"
 
-#: lib/pp_admintools/app/ldap.py:601
+#: lib/pp_admintools/app/ldap.py:608
 msgid "LDAP instance {!r} not found in configuration or is not usable."
 msgstr "Die LDAP-Instanz {!r} wurde nicht in der Konfiguration gefunden oder ist nicht verwendbar."
 
-#: lib/pp_admintools/app/ldap.py:656
+#: lib/pp_admintools/app/ldap.py:663
 msgid "Preparations ..."
 msgstr "Vorbereitungen …"
 
-#: lib/pp_admintools/app/ldap.py:659
+#: lib/pp_admintools/app/ldap.py:666
 msgid "Open all necessary LDAP connections ..."
 msgstr "Öffne alle notwendigen LDAP-Verbindungen …"
 
-#: lib/pp_admintools/app/ldap.py:673
+#: lib/pp_admintools/app/ldap.py:680
 msgid "Password of user {usr} on LDAP instance {inst}:"
 msgstr "Passwort des Nutzers {usr} der LDAP-Instanz {inst}:"
 
-#: lib/pp_admintools/app/ldap.py:682
+#: lib/pp_admintools/app/ldap.py:689
 msgid "Info about LDAP server {}:"
 msgstr "Informationen zu LDAP-Server {}:"
 
-#: lib/pp_admintools/app/ldap.py:692
+#: lib/pp_admintools/app/ldap.py:699
 msgid "Trying to get LDAP server object for {} ..."
 msgstr "Versuche ein LDAP-Server-Objekt für {} zu bekommen …"
 
-#: lib/pp_admintools/app/ldap.py:708
+#: lib/pp_admintools/app/ldap.py:715
 msgid "Connect options to server {!r}:"
 msgstr "Verbindungs-Optionen zu Server {!r}:"
 
-#: lib/pp_admintools/app/ldap.py:715
+#: lib/pp_admintools/app/ldap.py:722
 msgid "LDAP server {s}: {re}"
 msgstr "LDAP-Server {s}: {re}"
 
-#: lib/pp_admintools/app/ldap.py:729
+#: lib/pp_admintools/app/ldap.py:736
 msgid "Connecting to LDAP server {url} as {dn!r} ..."
 msgstr "Verbinde mit LDAP-Server {url} als {dn!r} …"
 
-#: lib/pp_admintools/app/ldap.py:741
+#: lib/pp_admintools/app/ldap.py:748
 msgid "Finishing ..."
 msgstr "Beende …"
 
-#: lib/pp_admintools/app/ldap.py:751
+#: lib/pp_admintools/app/ldap.py:758
 msgid "Disconnecting from all remaining LDAP instances ..."
 msgstr "Trenne Verbindung zu allen verbleibenden LDAP-Instanzen …"
 
-#: lib/pp_admintools/app/ldap.py:764
+#: lib/pp_admintools/app/ldap.py:771
 msgid "Unbinding from LDAP server {!r} ..."
 msgstr "Trenne Bindung zu LDAP-Server {!r} …"
 
-#: lib/pp_admintools/app/ldap.py:771
+#: lib/pp_admintools/app/ldap.py:778
 msgid "Disconnecting from LDAP server {!r} ..."
 msgstr "Trenne Verbindung zu LDAP-Server {!r} …"
 
-#: lib/pp_admintools/app/ldap.py:798
+#: lib/pp_admintools/app/ldap.py:805
 msgid "Searching in {uri}/{bdn} for all entries with filter {fltr!r}, giving attributes:"
 msgstr "Suche in {uri}/{bdn} nach allen Einträgen mit dem Filter {fltr!r} und den angegebenen Attributen:"
 
-#: lib/pp_admintools/app/ldap.py:810
+#: lib/pp_admintools/app/ldap.py:817
 msgid "Result of searching:"
 msgstr "Ergebnis der Suche:"
 
-#: lib/pp_admintools/app/ldap.py:815
+#: lib/pp_admintools/app/ldap.py:822
 msgid "Found entry {!r}."
 msgstr "Gefundener Eintrag:"
 
-#: lib/pp_admintools/app/ldap.py:822 lib/pp_admintools/app/ldap.py:866
+#: lib/pp_admintools/app/ldap.py:829 lib/pp_admintools/app/ldap.py:873
 msgid "Found one entry with filter {fltr!r} in {uri}/{bdn}."
 msgid_plural "Found {nr} enries with filter {fltr!r} in {uri}/{bdn}."
 msgstr[0] "Fand einen Eintrag mit dem Filter {fltr!r} in {uri}/{bdn}."
 msgstr[1] "Fand {nr} Einträge mit dem Filter {fltr!r} in {uri}/{bdn}."
 
-#: lib/pp_admintools/app/ldap.py:826
+#: lib/pp_admintools/app/ldap.py:833
 msgid "Got response entries:"
 msgstr "Erhaltene Antworteinträge:"
 
-#: lib/pp_admintools/app/ldap.py:830 lib/pp_admintools/app/ldap.py:878
+#: lib/pp_admintools/app/ldap.py:837 lib/pp_admintools/app/ldap.py:885
 msgid "No entry found with filter {fltr!r} in {uri}/{bdn}."
 msgstr "Keinen Eintrag mit dem Filter {fltr!r} in {uri}/{bdn} gefunden."
 
-#: lib/pp_admintools/app/ldap.py:854 lib/pp_admintools/app/ldap.py:908
+#: lib/pp_admintools/app/ldap.py:861 lib/pp_admintools/app/ldap.py:915
 msgid "Using LDAP filter: {!r}"
 msgstr "Verwende LDAP-Filter: {!r}."
 
-#: lib/pp_admintools/app/ldap.py:870 lib/pp_admintools/app/ldap.py:917
+#: lib/pp_admintools/app/ldap.py:877 lib/pp_admintools/app/ldap.py:924
 msgid "Result of searching for DNs of all entries:"
 msgstr "Ergebnis der Suche nach den DNs aller Einträge:"
 
-#: lib/pp_admintools/app/ldap.py:874 lib/pp_admintools/app/ldap.py:921
-#: lib/pp_admintools/app/ldap.py:1019 lib/pp_admintools/app/ldap.py:1072
-#: lib/pp_admintools/app/ldap.py:1125 lib/pp_admintools/app/ldap.py:1213
-#: lib/pp_admintools/app/ldap.py:1413 lib/pp_admintools/app/ldap.py:1447
-#: lib/pp_admintools/app/ldap.py:1481 lib/pp_admintools/app/ldap.py:1515
+#: lib/pp_admintools/app/ldap.py:881 lib/pp_admintools/app/ldap.py:928
+#: lib/pp_admintools/app/ldap.py:1026 lib/pp_admintools/app/ldap.py:1079
+#: lib/pp_admintools/app/ldap.py:1132 lib/pp_admintools/app/ldap.py:1220
+#: lib/pp_admintools/app/ldap.py:1420 lib/pp_admintools/app/ldap.py:1454
+#: lib/pp_admintools/app/ldap.py:1488 lib/pp_admintools/app/ldap.py:1522
 msgid "Got a response entry:"
 msgstr "Erhaltener Antwort-Eintrag:"
 
-#: lib/pp_admintools/app/ldap.py:904
+#: lib/pp_admintools/app/ldap.py:911
 msgid "Getting all Entry DNs of LDAP instance {i!r} below {b!r}."
 msgstr "Hole DNs aller Einträge der LDAP-Instanz {i!r} unterhalb von {b!r}."
 
-#: lib/pp_admintools/app/ldap.py:943
+#: lib/pp_admintools/app/ldap.py:950
 msgid "Trying to evaluate DN of user {user!r} in LDAP instance {inst} ..."
 msgstr "Versuche den DN des Nutzer {user!r} auf der LDAP-Instanz {inst} zu ermitteln …"
 
-#: lib/pp_admintools/app/ldap.py:948
+#: lib/pp_admintools/app/ldap.py:955
 msgid "Trying to evaluate DN of user {u!r} as a mail address ..."
 msgstr "Versuche den DN des Nutzer {u!r} als Mailadresse zu ermitteln …"
 
-#: lib/pp_admintools/app/ldap.py:955
+#: lib/pp_admintools/app/ldap.py:962
 msgid "Trying to evaluate DN of user {u!r} as a LDAP DN ..."
 msgstr "Versuche den DN des Nutzer {u!r} als LDAP DN zu ermitteln …"
 
-#: lib/pp_admintools/app/ldap.py:962
+#: lib/pp_admintools/app/ldap.py:969
 msgid "Trying to evaluate DN of user {u!r} as a UID (Posix user name) ..."
 msgstr "Versuche den DN des Nutzer {u!r} als UID (POSIX Benutzername) zu ermitteln …"
 
-#: lib/pp_admintools/app/ldap.py:971 lib/pp_admintools/app/remove_ldap_user.py:318
+#: lib/pp_admintools/app/ldap.py:978 lib/pp_admintools/app/remove_ldap_user.py:318
 msgid "Empty user given."
 msgstr "Leere Nutzername übergeben."
 
-#: lib/pp_admintools/app/ldap.py:974
+#: lib/pp_admintools/app/ldap.py:981
 msgid "Trying to evaluate DN of user {u!r} as a CN ({c}) ..."
 msgstr "Versuche den DN des Nutzer {u!r} als CN ({c}) zu ermitteln …"
 
-#: lib/pp_admintools/app/ldap.py:1004 lib/pp_admintools/app/ldap.py:1057
-#: lib/pp_admintools/app/ldap.py:1110 lib/pp_admintools/app/ldap.py:1401
-#: lib/pp_admintools/app/ldap.py:1435 lib/pp_admintools/app/ldap.py:1469
-#: lib/pp_admintools/app/ldap.py:1503
+#: lib/pp_admintools/app/ldap.py:1011 lib/pp_admintools/app/ldap.py:1064
+#: lib/pp_admintools/app/ldap.py:1117 lib/pp_admintools/app/ldap.py:1408
+#: lib/pp_admintools/app/ldap.py:1442 lib/pp_admintools/app/ldap.py:1476
+#: lib/pp_admintools/app/ldap.py:1510
 msgid "Searching in {uri}/{bdn} with filter: {fltr}"
 msgstr "Suche in {uri}/{bdn} mit dem Filter: {fltr}"
 
-#: lib/pp_admintools/app/ldap.py:1015
+#: lib/pp_admintools/app/ldap.py:1022
 msgid "Result of searching for mail address {m!r}:"
 msgstr "Ergebnis der Suche nach der Mailadresse {m!r}:"
 
-#: lib/pp_admintools/app/ldap.py:1026
+#: lib/pp_admintools/app/ldap.py:1033
 msgid "User with mail address {m!r} not found in {uri}/{bdn}."
 msgstr "Ein Nutzer mit der Mailadresse {m!r} wurde nicht in {uri}/{bdn} gefunden."
 
-#: lib/pp_admintools/app/ldap.py:1068
+#: lib/pp_admintools/app/ldap.py:1075
 msgid "Result of searching for uid {u!r}:"
 msgstr "Ergebnis der Suche nach UID {u!r}:"
 
-#: lib/pp_admintools/app/ldap.py:1079
+#: lib/pp_admintools/app/ldap.py:1086
 msgid "User with uid {u!r} not found in {uri}/{bdn}."
 msgstr "Ein Nutzer mit der UID {u!r} wurde nicht in {uri}/{bdn} gefunden."
 
-#: lib/pp_admintools/app/ldap.py:1121
+#: lib/pp_admintools/app/ldap.py:1128
 msgid "Result of searching for CN {cn!r}:"
 msgstr "Ergebnis der Suche nach CN {cn!r}:"
 
-#: lib/pp_admintools/app/ldap.py:1132
+#: lib/pp_admintools/app/ldap.py:1139
 msgid "User with cn {cn!r} not found in {uri}/{bdn}."
 msgstr "Ein Nutzer mit dem CN {cn!r} wurde nicht in {uri}/{bdn} gefunden."
 
-#: lib/pp_admintools/app/ldap.py:1149 lib/pp_admintools/app/set_ldap_password.py:409
+#: lib/pp_admintools/app/ldap.py:1156 lib/pp_admintools/app/set_ldap_password.py:409
 msgid "User with DN {dn!r} not found in {uri}."
 msgstr "Ein Nutzer mit dem DN {dn!r} wurde nicht in {uri} gefunden."
 
-#: lib/pp_admintools/app/ldap.py:1167
+#: lib/pp_admintools/app/ldap.py:1174
 msgid "ObjectClasses of {dn!r}:"
 msgstr "ObjectClasses von {dn!r}:"
 
-#: lib/pp_admintools/app/ldap.py:1177
+#: lib/pp_admintools/app/ldap.py:1184
 msgid "Entry {dn!r} in {uri} seems not to be an account."
 msgstr "Der Eintrag {dn!r} in {uri} scheint kein Nutzerkonto zu sein."
 
-#: lib/pp_admintools/app/ldap.py:1199
+#: lib/pp_admintools/app/ldap.py:1206
 msgid "Searching DN {dn!r} in {uri}."
 msgstr "Suche DN {dn!r} in {uri}."
 
-#: lib/pp_admintools/app/ldap.py:1209
+#: lib/pp_admintools/app/ldap.py:1216
 msgid "Result of searching for DN {dn!r}:"
 msgstr "Ergebnis der Suche nach dem DN {dn!r}:"
 
-#: lib/pp_admintools/app/ldap.py:1217
+#: lib/pp_admintools/app/ldap.py:1224
 msgid "Entry with DN {dn!r} not found in {uri}."
 msgstr "Ein Eintrag bit dem DN {dn!r} wurde nicht in {uri} gefunden."
 
-#: lib/pp_admintools/app/ldap.py:1262
+#: lib/pp_admintools/app/ldap.py:1269
 msgid "Creating entry {dn!r} on {uri}:"
 msgstr "Erstelle Eintrag {dn!r} in {uri} …"
 
-#: lib/pp_admintools/app/ldap.py:1268
+#: lib/pp_admintools/app/ldap.py:1275
 msgid "Simulation mode - entry will not be created."
 msgstr "Simulationsmodus - der Eintrag wird nicht erstellt."
 
-#: lib/pp_admintools/app/ldap.py:1275
+#: lib/pp_admintools/app/ldap.py:1282
 msgid "Creation of entry {dn!r} was NOT successfull - {c}: {e}"
 msgstr "Die Erstellung des Eintrags {dn!r} war NICHT erfolgreich - {c}: {e}"
 
-#: lib/pp_admintools/app/ldap.py:1290
+#: lib/pp_admintools/app/ldap.py:1297
 msgid "Creation status: {!r}."
 msgstr "Erstellungsstatus: {!r}"
 
-#: lib/pp_admintools/app/ldap.py:1292
+#: lib/pp_admintools/app/ldap.py:1299
 msgid "Result of creating:"
 msgstr "Ergebnis der Erstellung:"
 
-#: lib/pp_admintools/app/ldap.py:1295
+#: lib/pp_admintools/app/ldap.py:1302
 msgid "Creation of entry {dn!r} was NOT successful: {desc} - {msg}"
 msgstr "Die Erstellung des Eintrags {dn!r} war NICHT erfolgreich - {desc}: {msg}"
 
-#: lib/pp_admintools/app/ldap.py:1301
+#: lib/pp_admintools/app/ldap.py:1308
 msgid "Creation successful."
 msgstr "Die Erstellung war erfolgreich."
 
-#: lib/pp_admintools/app/ldap.py:1312
+#: lib/pp_admintools/app/ldap.py:1319
 msgid "Applying changes on {uri} to DN {dn!r}:"
 msgstr "Wende Änderungen in {uri} an DN {dn!r} an:"
 
-#: lib/pp_admintools/app/ldap.py:1317
+#: lib/pp_admintools/app/ldap.py:1324
 msgid "Simulation mode - changes are not applied."
 msgstr "Simulationsmodus - hier wird jetzt nichts geändert."
 
-#: lib/pp_admintools/app/ldap.py:1323
+#: lib/pp_admintools/app/ldap.py:1330
 msgid "Modification of {dn!r} was NOT successfull - {c}: {e}"
 msgstr "Die Änderung von {dn!r} war NICHT erfolgreich - {c}: {e}"
 
-#: lib/pp_admintools/app/ldap.py:1325 lib/pp_admintools/app/ldap.py:1344
+#: lib/pp_admintools/app/ldap.py:1332 lib/pp_admintools/app/ldap.py:1351
 #: lib/pp_admintools/app/remove_ldap_user.py:449 lib/pp_admintools/app/remove_ldap_user.py:476
 #: lib/pp_admintools/app/remove_ldap_user.py:503 lib/pp_admintools/app/remove_ldap_user.py:534
 #: lib/pp_admintools/app/remove_ldap_user.py:565 lib/pp_admintools/app/remove_ldap_user.py:681
@@ -1140,72 +1225,72 @@ msgstr "Die Änderung von {dn!r} war NICHT erfolgreich - {c}: {e}"
 msgid "Changes:"
 msgstr "Änderungen:"
 
-#: lib/pp_admintools/app/ldap.py:1337
+#: lib/pp_admintools/app/ldap.py:1344
 msgid "Modification status: {!r}."
 msgstr "Änderungsstatus: {!r}."
 
-#: lib/pp_admintools/app/ldap.py:1339
+#: lib/pp_admintools/app/ldap.py:1346
 msgid "Result of modifying:"
 msgstr "Ergebnis der Änderung:"
 
-#: lib/pp_admintools/app/ldap.py:1342
+#: lib/pp_admintools/app/ldap.py:1349
 msgid "Modification of {dn!r} was NOT successful: {desc} - {msg}"
 msgstr "Die Änderung von {dn!r} war NICHT erfolgreich - {desc}: {msg}"
 
-#: lib/pp_admintools/app/ldap.py:1347
+#: lib/pp_admintools/app/ldap.py:1354
 msgid "Modification successful."
 msgstr "Die Änderung war erfolgreich."
 
-#: lib/pp_admintools/app/ldap.py:1357
+#: lib/pp_admintools/app/ldap.py:1364
 msgid "Deleting LDAP entry {dn!r} on {uri} ..."
 msgstr "Lösche LDAP-Eintrag {dn!r} in {uri} …"
 
-#: lib/pp_admintools/app/ldap.py:1362
+#: lib/pp_admintools/app/ldap.py:1369
 msgid "Simulation mode - deletion will not be executed."
 msgstr "Simulationsmodus - hier wird jetzt nichts gelöscht."
 
-#: lib/pp_admintools/app/ldap.py:1368
+#: lib/pp_admintools/app/ldap.py:1375
 msgid "Deletion of {dn!r} was NOT successfull - {c}: {e}"
 msgstr "Das Löschen von {dn!r} war NICHT erfolgreich - {c}: {e}"
 
-#: lib/pp_admintools/app/ldap.py:1373
+#: lib/pp_admintools/app/ldap.py:1380
 msgid "Deletion status: {!r}."
 msgstr "Löschstatus: {!r}"
 
-#: lib/pp_admintools/app/ldap.py:1375
+#: lib/pp_admintools/app/ldap.py:1382
 msgid "Result of deletion:"
 msgstr "Ergebnis der Löschung:"
 
-#: lib/pp_admintools/app/ldap.py:1378
+#: lib/pp_admintools/app/ldap.py:1385
 msgid "Deletion of {dn!r} was NOT successful: {desc} - {msg}"
 msgstr "Das Löschen von {dn!r} war NICHT erfolgreich - {desc}: {msg}"
 
-#: lib/pp_admintools/app/ldap.py:1382
+#: lib/pp_admintools/app/ldap.py:1389
 msgid "Deletion successful."
 msgstr "Die Löschung war erfolgreich."
 
-#: lib/pp_admintools/app/ldap.py:1531
+#: lib/pp_admintools/app/ldap.py:1538
 msgid "Reading password file {!r} ..."
 msgstr "Lese Passwortdatei {!r} …"
 
-#: lib/pp_admintools/app/ldap.py:1562
+#: lib/pp_admintools/app/ldap.py:1569
 msgid "Could not detect RDN from DN {!r}."
 msgstr "Konnte RDN nich aus {!r} ermitteln."
 
-#: lib/pp_admintools/app/ldap.py:1566
+#: lib/pp_admintools/app/ldap.py:1573
 msgid "Found RDN attribute {!r}."
 msgstr "Fand RDN-Attribut {!r}."
 
-#: lib/pp_admintools/app/ldap.py:1572
+#: lib/pp_admintools/app/ldap.py:1579
 msgid "RDN attribute {!r} will not be touched."
 msgstr "Das RDN-Attribut {!r} wird nicht angefasst."
 
-#: lib/pp_admintools/app/ldap.py:1578 lib/pp_admintools/app/ldap.py:1597
-#: lib/pp_admintools/app/ldap.py:1675
+#: lib/pp_admintools/app/ldap.py:1585 lib/pp_admintools/app/ldap.py:1604
+#: lib/pp_admintools/app/ldap.py:1682
 msgid "Attribute {!r} will not be touched."
 msgstr "Das Attribut {!r} wird nicht angefasst."
 
-#: lib/pp_admintools/app/ldap.py:1635
+#: lib/pp_admintools/app/ldap.py:1642
 msgid "Values to removed from attribute {!r}:"
 msgstr "Werte, die von Attribut {!r} gelöscht werden."
 
@@ -1388,11 +1473,6 @@ msgstr ""
 "Starte Spiegelung der LDAP-Instanz {src!r} ({src_url}) zur Instanz {tgt!r} ({tgt_url}) "
 "[{yes}/{no}]?"
 
-#: lib/pp_admintools/app/mirror_ldap.py:238 lib/pp_admintools/app/remove_ldap_user.py:308
-#: lib/pp_admintools/app/set_ldap_password.py:489
-msgid "yes"
-msgstr "ja"
-
 #: lib/pp_admintools/app/mirror_ldap.py:244 lib/pp_admintools/app/mirror_ldap.py:306
 msgid "Interrupted on demand."
 msgstr "Abbruch auf Verlangen."
@@ -1800,10 +1880,6 @@ msgstr ""
 "auf {inact!r}, Zuweisen von {shell!r} als Login-Shell und Löschen des Nutzers aus allen Gruppen "
 "deaktiviert. Beim Löschen wird der Nutzer tatsächlich im LDAP gelöscht."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:134
-msgid "Removing options"
-msgstr "Lösch-Optionen"
-
 #: lib/pp_admintools/app/remove_ldap_user.py:137
 msgid "This is the default."
 msgstr "Dieses ist die Vorgabe."
@@ -1844,22 +1920,6 @@ msgstr ""
 msgid "No users to remove given."
 msgstr "Kein Nutzername zum Löschen angegeben."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:202
-msgid "Checking given instances for admin and read/write access."
-msgstr "Überprüfe die gegebenen Instanzen nach Admin- und Schreib-/Lesezugriffsrechten."
-
-#: lib/pp_admintools/app/remove_ldap_user.py:209
-msgid "LDAP instance {!r} not found in configuration."
-msgstr "Die LDAP-Instanz {!r} wurde nicht in der Konfiguration gefunden."
-
-#: lib/pp_admintools/app/remove_ldap_user.py:217
-msgid "LDAP instance {!r} has only readonly access."
-msgstr "Die LDAP-Instanz {!r} besitzt nur Lesezugriffsrechte."
-
-#: lib/pp_admintools/app/remove_ldap_user.py:222
-msgid "No admin access to LDAP instance {!r}."
-msgstr "Keine Admin-Zugriffsrechte bei LDAP-Instanz {!r}."
-
 #: lib/pp_admintools/app/remove_ldap_user.py:239
 msgid "All given users were not found in any LDAP instance."
 msgstr "Alle übergebenen Nutzer wurden in keiner der LDAP-Instanzen gefunden."
@@ -2186,364 +2246,364 @@ msgstr "Setze Passwort …"
 msgid "{c} on setting password of user {dn!r}: {e}"
 msgstr "{c} beim Setzen des Passwortes des Nutzers {dn!r}: {e}"
 
-#: lib/pp_admintools/argparse_actions.py:45
+#: lib/pp_admintools/argparse_actions.py:51
 msgid "Value {v!r} for a {what} port is invalid:"
 msgstr "Der Wert {v!r} für ein {what}-Port ist ungültig."
 
-#: lib/pp_admintools/argparse_actions.py:50
+#: lib/pp_admintools/argparse_actions.py:56
 msgid "Value {v!r} for a {what} port must be greater than 0 and less than {max}."
 msgstr "Der Wert {v!r} für ein {what}-Port muss größer als 0 und kleiner als {max} sein."
 
-#: lib/pp_admintools/argparse_actions.py:65 lib/pp_admintools/argparse_actions.py:95
+#: lib/pp_admintools/argparse_actions.py:76 lib/pp_admintools/argparse_actions.py:107
 msgid "Got a {c} for converting {v!r} into an integer value: {e}"
 msgstr "Habe ein {c} bei der Konvertierung von {v!r} in einen Integer-Wert erhalten: {e}"
 
-#: lib/pp_admintools/argparse_actions.py:70
+#: lib/pp_admintools/argparse_actions.py:81
 msgid "The option must not be negative (given: {})."
 msgstr "Die Option darf nich negativ sein (gegeben: {})."
 
-#: lib/pp_admintools/argparse_actions.py:101 lib/pp_admintools/argparse_actions.py:138
+#: lib/pp_admintools/argparse_actions.py:113 lib/pp_admintools/argparse_actions.py:151
 msgid "The option must be greater or equal to {m} (given: {v})."
 msgstr "Die Option muss größer oder gleich {m} sein (gegeben: {v})."
 
-#: lib/pp_admintools/argparse_actions.py:107 lib/pp_admintools/argparse_actions.py:143
+#: lib/pp_admintools/argparse_actions.py:119 lib/pp_admintools/argparse_actions.py:156
 msgid "The option must be less or equal to {m} (given: {v})."
 msgstr "Die Option muss kleiner oder gleich {m} sein (gegeben: {v})."
 
-#: lib/pp_admintools/argparse_actions.py:133
+#: lib/pp_admintools/argparse_actions.py:146
 msgid "Got a {c} for converting {v!r} into a float value: {e}"
 msgstr "Habe ein {c} bei der Konvertierung von {v!r} in einen Float-Wert erhalten: {e}"
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:204 lib/pp_admintools/config/dns_deploy_zones.py:517
-#: lib/pp_admintools/config/mail.py:147 lib/pp_admintools/config/pdns.py:188
+#: lib/pp_admintools/config/dns_deploy_zones.py:202 lib/pp_admintools/config/dns_deploy_zones.py:515
+#: lib/pp_admintools/config/mail.py:138 lib/pp_admintools/config/pdns.py:182
 msgid "Evaluating config section {!r}:"
 msgstr "Evaluiere Konfigurations-Abschnitt {!r}:"
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:292
+#: lib/pp_admintools/config/dns_deploy_zones.py:290
 msgid "Checking given master address {!r} ..."
 msgstr "Überprüfe die übergebene Master-Adresse {!r} …"
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:304
+#: lib/pp_admintools/config/dns_deploy_zones.py:302
 msgid "Trying to evaluate address of host {!r} ..."
 msgstr "Versuche die Adresse von Host {!r} zu ermitteln …"
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:313
+#: lib/pp_admintools/config/dns_deploy_zones.py:311
 msgid "Invalid hostname or address {a!r} found in masters: {e}"
 msgstr "Ungültiger Hostname oder Adresse {a!r} in masters gefunden: {e}"
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:321
+#: lib/pp_admintools/config/dns_deploy_zones.py:319
 msgid "Got addresses {a!r} for host {h!r}."
 msgstr "Habe Adresse {a!r} für Host {h!r} gefunden."
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:335 lib/pp_admintools/config/dns_deploy_zones.py:358
-#: lib/pp_admintools/config/dns_deploy_zones.py:383 lib/pp_admintools/config/dns_deploy_zones.py:432
-#: lib/pp_admintools/config/dns_deploy_zones.py:481 lib/pp_admintools/config/dns_deploy_zones.py:543
+#: lib/pp_admintools/config/dns_deploy_zones.py:333 lib/pp_admintools/config/dns_deploy_zones.py:356
+#: lib/pp_admintools/config/dns_deploy_zones.py:381 lib/pp_admintools/config/dns_deploy_zones.py:430
+#: lib/pp_admintools/config/dns_deploy_zones.py:479 lib/pp_admintools/config/dns_deploy_zones.py:541
 msgid "The path to {what} must be an absolute path, found {path!r}."
 msgstr "Der Pfad zu {what} muss absolut sein, fand aber {path!r}."
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:344 lib/pp_admintools/config/dns_deploy_zones.py:367
-#: lib/pp_admintools/config/dns_deploy_zones.py:392 lib/pp_admintools/config/dns_deploy_zones.py:417
-#: lib/pp_admintools/config/dns_deploy_zones.py:441 lib/pp_admintools/config/dns_deploy_zones.py:466
-#: lib/pp_admintools/config/dns_deploy_zones.py:490 lib/pp_admintools/config/dns_deploy_zones.py:552
+#: lib/pp_admintools/config/dns_deploy_zones.py:342 lib/pp_admintools/config/dns_deploy_zones.py:365
+#: lib/pp_admintools/config/dns_deploy_zones.py:390 lib/pp_admintools/config/dns_deploy_zones.py:415
+#: lib/pp_admintools/config/dns_deploy_zones.py:439 lib/pp_admintools/config/dns_deploy_zones.py:464
+#: lib/pp_admintools/config/dns_deploy_zones.py:488 lib/pp_admintools/config/dns_deploy_zones.py:550
 msgid "Found path to {what}: {path!r}."
 msgstr "Fand Pfad zu {what}: {path!r}."
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:379
+#: lib/pp_admintools/config/dns_deploy_zones.py:377
 msgid "the named config directory"
 msgstr "das Konfigurationsverzeichnis vin named"
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:404
+#: lib/pp_admintools/config/dns_deploy_zones.py:402
 msgid "the named config file for zones"
 msgstr "die named-Konfigurationsdatei für Zonen"
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:408 lib/pp_admintools/config/dns_deploy_zones.py:457
+#: lib/pp_admintools/config/dns_deploy_zones.py:406 lib/pp_admintools/config/dns_deploy_zones.py:455
 msgid "The path to {what} must not be an absolute path, found {path!r}."
 msgstr "Der Pfad zu {what} farf nicht absolut sein, fand aber {path!r}."
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:429
+#: lib/pp_admintools/config/dns_deploy_zones.py:427
 msgid "the named base directory"
 msgstr "das Basis-Verzeichnis von named"
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:453
+#: lib/pp_admintools/config/dns_deploy_zones.py:451
 msgid "the directory for slave zones of named"
 msgstr "das Vezeichnis für Slave-Zonen für named"
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:540
+#: lib/pp_admintools/config/dns_deploy_zones.py:538
 msgid "the PID file"
 msgstr "die PID-Datei"
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:592
+#: lib/pp_admintools/config/dns_deploy_zones.py:589
 msgid "Using configured masters:"
 msgstr "Verwende konfigurierte Master:"
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:594
+#: lib/pp_admintools/config/dns_deploy_zones.py:591
 msgid "No valid masters found in configuration."
 msgstr "Keine gültigen Master in der Konfiguration gefunden."
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:597
+#: lib/pp_admintools/config/dns_deploy_zones.py:594
 msgid "Evaluated configuration:"
 msgstr "Evaluierte Konfiguration:"
 
-#: lib/pp_admintools/config/ldap.py:180
+#: lib/pp_admintools/config/ldap.py:177
 msgid "Invalid port {!r} for LDAP server given."
 msgstr "Ungültiger Port {!r} für den LDAP-Server angegeben."
 
-#: lib/pp_admintools/config/ldap.py:193
+#: lib/pp_admintools/config/ldap.py:189
 msgid "An empty Base DN for LDAP searches is not allowed."
 msgstr "Eine leere Basis-DN für LDAP-Suchen ist nicht erlaubt."
 
-#: lib/pp_admintools/config/ldap.py:283
+#: lib/pp_admintools/config/ldap.py:282
 msgid "Invalid production tier {!r} given."
 msgstr "Ungültige Produktionsstufe {!r} angegeben."
 
-#: lib/pp_admintools/config/ldap.py:351
+#: lib/pp_admintools/config/ldap.py:349
 msgid "Invalid value {val!r} in section {sec!r} for a LDAP {what}."
 msgstr "Ungültiger Wert {val!r} in Abschnitt {sec!r} für ein LDAP-{what}."
 
-#: lib/pp_admintools/config/ldap.py:424
+#: lib/pp_admintools/config/ldap.py:422
 msgid "Unknown LDAP configuration key {key} found in section {sec!r}."
 msgstr "Unbekannten Konfigurationsschlüssel {key} in Abschnitt {sec!r} gefunden."
 
-#: lib/pp_admintools/config/ldap.py:528
+#: lib/pp_admintools/config/ldap.py:526
 msgid "Evaluating LDAP config ..."
 msgstr "Ermittle LDAP-Konfiguration …"
 
-#: lib/pp_admintools/config/ldap.py:532
+#: lib/pp_admintools/config/ldap.py:530
 msgid "Evaluating LDAP section {!r} ..."
 msgstr "Evaluiere LDAP-Abschnitt {!r} …"
 
-#: lib/pp_admintools/config/ldap.py:549
+#: lib/pp_admintools/config/ldap.py:547
 msgid "Value {!r} for a timeout is invalid."
 msgstr "Der Wert {!r} für einen Timeout ist ungültig."
 
-#: lib/pp_admintools/config/ldap.py:569
+#: lib/pp_admintools/config/ldap.py:567
 msgid "Reading configuration of LDAP instance {!r} ..."
 msgstr "Lese Konfiguration der LDAP-Instanz {!r} …"
 
-#: lib/pp_admintools/config/mail.py:168 lib/pp_admintools/config/mail.py:192
-#: lib/pp_admintools/config/mail.py:264
+#: lib/pp_admintools/config/mail.py:159 lib/pp_admintools/config/mail.py:183
+#: lib/pp_admintools/config/mail.py:255
 msgid "Found invalid {what} {addr!r} in configuration."
 msgstr "Ungültige {what} {addr!r} in der Konfiguration gefunden."
 
-#: lib/pp_admintools/config/mail.py:193
+#: lib/pp_admintools/config/mail.py:184
 msgid "from address"
 msgstr "Absender-Adresse"
 
-#: lib/pp_admintools/config/mail.py:211 lib/pp_admintools/config/mail.py:215
+#: lib/pp_admintools/config/mail.py:202 lib/pp_admintools/config/mail.py:206
 msgid "recipient mail address"
 msgstr "Empfänger-Adresse"
 
-#: lib/pp_admintools/config/mail.py:237 lib/pp_admintools/config/mail.py:241
+#: lib/pp_admintools/config/mail.py:228 lib/pp_admintools/config/mail.py:232
 msgid "cc mail address"
 msgstr "CC-Mail-Adresse."
 
-#: lib/pp_admintools/config/mail.py:265
+#: lib/pp_admintools/config/mail.py:256
 msgid "reply to address"
 msgstr "Reply-To-Adresse"
 
-#: lib/pp_admintools/config/mail.py:281
+#: lib/pp_admintools/config/mail.py:272
 msgid "Found invalid mail method {!r} in configuration."
 msgstr "Ungültige Mail-Methode {!r} in der Konfiguration gefunden."
 
-#: lib/pp_admintools/config/mail.py:315
+#: lib/pp_admintools/config/mail.py:306
 msgid "Value {!r} for SMTP port is invalid:"
 msgstr "Der Wert {!r} für einen SMTP-Port ist ungültig:"
 
-#: lib/pp_admintools/config/mail.py:320
+#: lib/pp_admintools/config/mail.py:311
 msgid "Found invalid SMTP port number {} in configuration."
 msgstr "Ungültige SMTP-Port-Nummer {!r} in der Konfiguration gefunden."
 
-#: lib/pp_admintools/config/mirror_ldap.py:91 lib/pp_admintools/config/mirror_ldap.py:127
+#: lib/pp_admintools/config/mirror_ldap.py:88 lib/pp_admintools/config/mirror_ldap.py:124
 msgid "Evaluating configuration section {sn!r} ..."
 msgstr "Evaluiere Konfigurations-Abschnitt {sn!r} …"
 
-#: lib/pp_admintools/config/mirror_ldap.py:107 lib/pp_admintools/config/mirror_ldap.py:133
+#: lib/pp_admintools/config/mirror_ldap.py:104 lib/pp_admintools/config/mirror_ldap.py:130
 msgid "Section {sn!r} is not a {what}."
 msgstr "Abschnitt {sn!r} ist kein {what}."
 
-#: lib/pp_admintools/config/pdns.py:248
+#: lib/pp_admintools/config/pdns.py:242
 msgid "A timeout has to be between 1 and {} seconds."
 msgstr "Ein Timeout muss zwischen 1 und {} Sekunden betragen."
 
-#: lib/pp_admintools/config/pdns.py:252
+#: lib/pp_admintools/config/pdns.py:246
 msgid "Value {!r} for PowerDNS API timeout is invalid:"
 msgstr "Der Wert für den PoerDNS-API-Timeout ist ungültig:"
 
-#: lib/pp_admintools/config/pdns.py:270
+#: lib/pp_admintools/config/pdns.py:264
 msgid "Found invalid PDNS environment/instance {!r} in configuration."
 msgstr "Ungültige PowerDNS-Instanz {!r} in der Konfiguration gefunden."
 
-#: lib/pp_admintools/config/pdns.py:285
+#: lib/pp_admintools/config/pdns.py:279
 msgid "Found PDNS host: {!r}."
 msgstr "Fand PowerDNS-Host: {!r}."
 
-#: lib/pp_admintools/config/pdns.py:301 lib/pp_admintools/config/pdns.py:393
+#: lib/pp_admintools/config/pdns.py:295 lib/pp_admintools/config/pdns.py:387
 msgid "A port must be greater than 0 and less than {}."
 msgstr "Ein Port muss größer als 0 und kleiner als {} sein."
 
-#: lib/pp_admintools/config/pdns.py:304
+#: lib/pp_admintools/config/pdns.py:298
 msgid "Wrong PDNS port number {p!r} found: {e}"
 msgstr "Falsche PowerDNS-Portnummer {p!r} gefunden: {e}"
 
-#: lib/pp_admintools/config/pdns.py:313
+#: lib/pp_admintools/config/pdns.py:307
 msgid "Found port number for PDNS: {}."
 msgstr "Fand PowerDNS-Portnummer: {}."
 
-#: lib/pp_admintools/config/pdns.py:327
+#: lib/pp_admintools/config/pdns.py:321
 msgid "Found API key for PDNS: {!r}."
 msgstr "Fand PowerDNS-API-Schlüssel: {!r}."
 
-#: lib/pp_admintools/config/pdns.py:338
+#: lib/pp_admintools/config/pdns.py:332
 msgid "Found PDNS API servername: {!r}."
 msgstr "Fand PowerDNS-API-Servernamen: {!r}."
 
-#: lib/pp_admintools/config/pdns.py:355
+#: lib/pp_admintools/config/pdns.py:349
 msgid "Evaluating PowerDNS instance {!r}:"
 msgstr "Werte PowerDNS-Instanz {!r} aus:"
 
-#: lib/pp_admintools/config/pdns.py:367
+#: lib/pp_admintools/config/pdns.py:361
 msgid "Searching for host for PDNS instance {!r} .."
 msgstr "Suche nach Host für PowerDNS-Instanz {!r} …"
 
-#: lib/pp_admintools/config/pdns.py:375
+#: lib/pp_admintools/config/pdns.py:369
 msgid "Found host for PDNS instance {inst!r}: {host!r}."
 msgstr "Fand Host für PowerDNS-Instanz {inst!r}: {host!r}."
 
-#: lib/pp_admintools/config/pdns.py:383
+#: lib/pp_admintools/config/pdns.py:377
 msgid "Searching for post number for PDNS instance {!r} .."
 msgstr "Suche nach Portnummer für PowerDNS-Instanz {!r} …"
 
-#: lib/pp_admintools/config/pdns.py:396
+#: lib/pp_admintools/config/pdns.py:390
 msgid "Wrong port number {p!r} for PDNS instance {inst!r} found: {e}"
 msgstr "Falsche Portnummer {p!r} für PowerDNS-Instanz {inst!r} gefunden: {e}"
 
-#: lib/pp_admintools/config/pdns.py:405
+#: lib/pp_admintools/config/pdns.py:399
 msgid "Found port number for PDNS instance {inst!r}: {p}."
 msgstr "Fand Portnummer für PowerDNS-Instanz {inst!r}: {p}."
 
-#: lib/pp_admintools/config/pdns.py:413
+#: lib/pp_admintools/config/pdns.py:407
 msgid "Searching for internal server name of PDNS instance {!r} .."
 msgstr "Suche nach internem Servernamen für PowerDNS-Instanz {!r} …"
 
-#: lib/pp_admintools/config/pdns.py:423
+#: lib/pp_admintools/config/pdns.py:417
 msgid "Found internal server name PDNS instance {inst!r}: {sn!r}."
 msgstr "Fand internen Servernamen für PowerDNS-Instanz {inst!r}: {sn!r}."
 
-#: lib/pp_admintools/config/pdns.py:431
+#: lib/pp_admintools/config/pdns.py:425
 msgid "Searching for API key of PDNS instance {!r} .."
 msgstr "Suche nach API-Schlüssel für PowerDNS-Instanz {!r} …"
 
-#: lib/pp_admintools/config/pdns.py:444
+#: lib/pp_admintools/config/pdns.py:438
 msgid "Found API key of PDNS instance {inst!r}: {key!r}."
 msgstr "Fand API-Schlüssel für PowerDNS-Instanz {inst!r}: {key!r}."
 
-#: lib/pp_admintools/handler/ldap_password.py:56
+#: lib/pp_admintools/handler/ldap_password.py:60
 msgid "Encryption schema {!r} not found."
 msgstr "Das Verschlüsselungs-Schema {!r} wurde nicht gefunden."
 
-#: lib/pp_admintools/handler/ldap_password.py:108
+#: lib/pp_admintools/handler/ldap_password.py:114
 msgid "The ancient and notorious 3 DES crypt method."
 msgstr "Die antike und berüchtigte 3 DES Verschlüsselungsmethode."
 
-#: lib/pp_admintools/handler/ldap_password.py:109 lib/pp_admintools/handler/ldap_password.py:112
+#: lib/pp_admintools/handler/ldap_password.py:115 lib/pp_admintools/handler/ldap_password.py:118
 msgid "Pure {} hashing method."
 msgstr "Reine {}-hashing Methode."
 
-#: lib/pp_admintools/handler/ldap_password.py:110 lib/pp_admintools/handler/ldap_password.py:113
-#: lib/pp_admintools/handler/ldap_password.py:115 lib/pp_admintools/handler/ldap_password.py:117
+#: lib/pp_admintools/handler/ldap_password.py:116 lib/pp_admintools/handler/ldap_password.py:119
+#: lib/pp_admintools/handler/ldap_password.py:121 lib/pp_admintools/handler/ldap_password.py:123
 msgid "A {} based hashing algorithm."
 msgstr "Ein {}-basierter Hashing-Algorithmus"
 
-#: lib/pp_admintools/handler/ldap_password.py:111 lib/pp_admintools/handler/ldap_password.py:114
-#: lib/pp_admintools/handler/ldap_password.py:116 lib/pp_admintools/handler/ldap_password.py:118
+#: lib/pp_admintools/handler/ldap_password.py:117 lib/pp_admintools/handler/ldap_password.py:120
+#: lib/pp_admintools/handler/ldap_password.py:122 lib/pp_admintools/handler/ldap_password.py:124
 msgid "Salted {} hashing method."
 msgstr "Gesalzene {}-hashing Methode."
 
-#: lib/pp_admintools/handler/ldap_password.py:119
+#: lib/pp_admintools/handler/ldap_password.py:125
 msgid "A hashing method derived from {} with additional computing rounds."
 msgstr "Eine von {} abgeleitete Hashing-Methode mit zusätzlichen Berechnungsrunden."
 
-#: lib/pp_admintools/handler/ldap_password.py:240
+#: lib/pp_admintools/handler/ldap_password.py:245
 msgid "Invalid schema {!r} given for update."
 msgstr "Ungültiges Schema {!r} für Update angegeben."
 
-#: lib/pp_admintools/handler/ldap_password.py:277
+#: lib/pp_admintools/handler/ldap_password.py:282
 msgid "Usable Hashing schemes:"
 msgstr "Verfügbare Hashing-Schemen:"
 
-#: lib/pp_admintools/handler/ldap_password.py:286
+#: lib/pp_admintools/handler/ldap_password.py:291
 msgid "This schema cannot be used for authentication on a current freeradius server."
 msgstr ""
 "Dieses Schema kann nicht zur Authentifizierung an einem aktuellen Freeradius-Server verwendet "
 "werden."
 
-#: lib/pp_admintools/handler/ldap_password.py:290
+#: lib/pp_admintools/handler/ldap_password.py:295
 msgid "This is the default schema."
 msgstr "Das ist das Vorgabe-Schema."
 
-#: lib/pp_admintools/handler/ldap_password.py:334
+#: lib/pp_admintools/handler/ldap_password.py:339
 msgid "The password schema {!r} does not support a password salt."
 msgstr "Das Passwort-Schema {!r} unterstützt keine Passwort-Salt."
 
-#: lib/pp_admintools/handler/ldap_password.py:338
+#: lib/pp_admintools/handler/ldap_password.py:343
 msgid "The password salt must be at least by {} characters."
 msgstr "Der Passwort-Salt muss mindestens {} Zeichen lang sein."
 
-#: lib/pp_admintools/handler/ldap_password.py:342
+#: lib/pp_admintools/handler/ldap_password.py:347
 msgid "The password salt may have a length of maximum {} characters."
 msgstr "Der Passwort-Salt darf höchstens {} Zeichen lang sein."
 
-#: lib/pp_admintools/handler/ldap_password.py:352
+#: lib/pp_admintools/handler/ldap_password.py:357
 msgid "Found invalid character {!r} in password salt."
 msgstr "Ungültige Zeichen {!r} im Passwort-Salt gefunden."
 
-#: lib/pp_admintools/handler/ldap_password.py:365
+#: lib/pp_admintools/handler/ldap_password.py:370
 msgid "The password schema {!r} does not support calculation rounds."
 msgstr "Das Passwort-Schema {!r} unterstützt keine Berechnungsrunden."
 
-#: lib/pp_admintools/handler/ldap_password.py:371
+#: lib/pp_admintools/handler/ldap_password.py:376
 msgid "Wrong value {v!r} for calculation rounds: {e}"
 msgstr "Ungültiger Wert {v!r} für Berechnungsrunden: {e}"
 
-#: lib/pp_admintools/handler/ldap_password.py:375
+#: lib/pp_admintools/handler/ldap_password.py:380
 msgid "The value for the calculation rounds has to be at least {}."
 msgstr "Der Wert für Berechnungsrunden muss mindestens {} betragen."
 
-#: lib/pp_admintools/handler/ldap_password.py:380
+#: lib/pp_admintools/handler/ldap_password.py:385
 msgid "The value for the calculation rounds has to at most {}."
 msgstr "Der Wert für Berechnungsrunden darf höchstens {} betragen."
 
-#: lib/pp_admintools/handler/ldap_password.py:413
+#: lib/pp_admintools/handler/ldap_password.py:418
 msgid "Cannot testing the quality of the new password, because the Python module {!r} is not installed."
 msgstr ""
 "Kann die Qualität des neuen Passwortes nicht überprüfen, da das Pythod-Modul {!r} nicht "
 "installiert ist."
 
-#: lib/pp_admintools/handler/ldap_password.py:419
+#: lib/pp_admintools/handler/ldap_password.py:424
 msgid "Testing quality of new password ..."
 msgstr "Teste Qualität des neuen Passwortes …"
 
-#: lib/pp_admintools/handler/ldap_password.py:423
+#: lib/pp_admintools/handler/ldap_password.py:428
 msgid "Quality of the new password is not sufficient:"
 msgstr "Die Qualität des neuen Passwortes ist nicht ausreichend:"
 
-#: lib/pp_admintools/xlate.py:97
+#: lib/pp_admintools/xlate.py:113
 msgid "Module directory: {!r}"
 msgstr "Modul-Verzeichnis: {!r}"
 
-#: lib/pp_admintools/xlate.py:98
+#: lib/pp_admintools/xlate.py:114
 msgid "Base directory: {!r}"
 msgstr "Basis-Verzeichnis: {!r}"
 
-#: lib/pp_admintools/xlate.py:99
+#: lib/pp_admintools/xlate.py:115
 msgid "Locale directory: {!r}"
 msgstr "Verzeichnis für Locales: {!r}"
 
-#: lib/pp_admintools/xlate.py:100
+#: lib/pp_admintools/xlate.py:116
 msgid "Locale domain: {!r}"
 msgstr "Locale-Domäne: {!r}"
 
-#: lib/pp_admintools/xlate.py:101
+#: lib/pp_admintools/xlate.py:117
 msgid "Found .mo-file: {!r}"
 msgstr "Gefundene .mo-Datei: {!r}"
 
index 3a1141d3119e04f677da03c0dc622d3d57c7da21..ad3e12ba8e853659c7007766c1829aa4efd4850b 100644 (file)
@@ -7,8 +7,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: pp_admintools 0.9.0\n"
 "Report-Msgid-Bugs-To: frank.brehm@pixelpark.com\n"
-"POT-Creation-Date: 2023-06-13 13:45+0200\n"
-"PO-Revision-Date: 2023-06-13 13:50+0200\n"
+"POT-Creation-Date: 2023-06-15 16:42+0200\n"
+"PO-Revision-Date: 2023-06-15 16:20+0200\n"
 "Last-Translator: Frank Brehm <frank.brehm@pixelpark.com>\n"
 "Language: en_US\n"
 "Language-Team: Frank Brehm <frank.brehm@pixelpark.com>\n"
@@ -18,11 +18,11 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Babel 2.12.1\n"
 
-#: lib/pp_admintools/app/__init__.py:113
+#: lib/pp_admintools/app/__init__.py:143
 msgid "Using logfile {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/__init__.py:115
+#: lib/pp_admintools/app/__init__.py:145
 msgid "Don't using a logfile."
 msgstr ""
 
@@ -40,7 +40,7 @@ msgid ""
 "Default: {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/barracuda_sync.py:149 lib/pp_admintools/app/ldap.py:438
+#: lib/pp_admintools/app/barracuda_sync.py:149 lib/pp_admintools/app/ldap.py:439
 #: lib/pp_admintools/app/mirror_ldap.py:118 lib/pp_admintools/app/pdns.py:284
 msgid "SECONDS"
 msgstr ""
@@ -77,10 +77,10 @@ msgstr ""
 
 #: lib/pp_admintools/app/barracuda_sync.py:231 lib/pp_admintools/app/barracuda_sync.py:427
 #: lib/pp_admintools/app/dns_deploy_zones.py:434 lib/pp_admintools/app/dns_deploy_zones.py:788
-#: lib/pp_admintools/app/ldap.py:889 lib/pp_admintools/app/ldap.py:1022
-#: lib/pp_admintools/app/ldap.py:1075 lib/pp_admintools/app/ldap.py:1128
-#: lib/pp_admintools/app/ldap.py:1416 lib/pp_admintools/app/ldap.py:1450
-#: lib/pp_admintools/app/ldap.py:1484 lib/pp_admintools/app/ldap.py:1518
+#: lib/pp_admintools/app/ldap.py:896 lib/pp_admintools/app/ldap.py:1029
+#: lib/pp_admintools/app/ldap.py:1082 lib/pp_admintools/app/ldap.py:1135
+#: lib/pp_admintools/app/ldap.py:1423 lib/pp_admintools/app/ldap.py:1457
+#: lib/pp_admintools/app/ldap.py:1491 lib/pp_admintools/app/ldap.py:1525
 msgid "Result:"
 msgstr ""
 
@@ -284,7 +284,7 @@ msgstr ""
 msgid "LDAP Entries to modified:"
 msgstr ""
 
-#: lib/pp_admintools/app/barracuda_sync.py:756 lib/pp_admintools/app/ldap.py:1631
+#: lib/pp_admintools/app/barracuda_sync.py:756 lib/pp_admintools/app/ldap.py:1638
 msgid "Values to add to attribute {!r}:"
 msgstr ""
 
@@ -292,11 +292,11 @@ msgstr ""
 msgid "Values to be removed from attribute {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/barracuda_sync.py:777 lib/pp_admintools/app/ldap.py:1652
+#: lib/pp_admintools/app/barracuda_sync.py:777 lib/pp_admintools/app/ldap.py:1659
 msgid "Changes for attribute {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/barracuda_sync.py:780 lib/pp_admintools/app/ldap.py:1655
+#: lib/pp_admintools/app/barracuda_sync.py:780 lib/pp_admintools/app/ldap.py:1662
 msgid "No changes to attribute {!r}."
 msgstr ""
 
@@ -419,9 +419,91 @@ msgid "Checking DN-like attributes of entry {!r} ..."
 msgstr "Checking DN-like attributes of entry {!r} …"
 
 #: lib/pp_admintools/app/check_ldap_dn_attributes.py:219
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:234
 msgid "Got attributes:"
 msgstr ""
 
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:76
+msgid ""
+"Removes all LDAP groups, which does not have any members, that means, they are one of the "
+"following objectClasses: {ocl}, and they have none of the following attributes: {atl}."
+msgstr ""
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:125 lib/pp_admintools/app/remove_ldap_user.py:134
+msgid "Removing options"
+msgstr ""
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:129
+msgid "The base DN used as the root for the LDAP search."
+msgstr ""
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:155 lib/pp_admintools/app/remove_ldap_user.py:202
+msgid "Checking given instances for admin and read/write access."
+msgstr ""
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:162 lib/pp_admintools/app/remove_ldap_user.py:209
+msgid "LDAP instance {!r} not found in configuration."
+msgstr ""
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:170 lib/pp_admintools/app/remove_ldap_user.py:217
+msgid "LDAP instance {!r} has only readonly access."
+msgstr ""
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:175 lib/pp_admintools/app/remove_ldap_user.py:222
+msgid "No admin access to LDAP instance {!r}."
+msgstr ""
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:185
+msgid "Searching for empty groups ..."
+msgstr "Searching for empty groups …"
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:192
+msgid "No more empty groups left for removing."
+msgstr ""
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:195
+msgid "Lap {} on searching for empty groups to remove."
+msgstr ""
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:230
+msgid "Searching for member attributes of {!r} ..."
+msgstr "Searching for member attributes of {!r} …"
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:240
+msgid "Found attribute {at!r} in group {g!r}."
+msgstr ""
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:243
+msgid "Group {!r} is not empty!"
+msgstr ""
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:248
+msgid "Removing group {!r} ..."
+msgstr "Removing group {!r} …"
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:252
+msgid "Dont't removing group {!r}."
+msgstr ""
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:259
+msgid "Do you really want to remove the group '{}'"
+msgstr ""
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:261
+msgid "[{yes}/{no}]?"
+msgstr ""
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:262 lib/pp_admintools/app/ldap.py:336
+#: lib/pp_admintools/app/mirror_ldap.py:238 lib/pp_admintools/app/remove_ldap_user.py:308
+#: lib/pp_admintools/app/set_ldap_password.py:489
+msgid "No"
+msgstr ""
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:262 lib/pp_admintools/app/mirror_ldap.py:238
+#: lib/pp_admintools/app/remove_ldap_user.py:308 lib/pp_admintools/app/set_ldap_password.py:489
+msgid "yes"
+msgstr ""
+
 #: lib/pp_admintools/app/dns_deploy_zones.py:122
 msgid "Generation of the BIND9 configuration file for slave zones."
 msgstr ""
@@ -723,7 +805,7 @@ msgstr "' …"
 msgid "Checking for dependend unique attribute '"
 msgstr ""
 
-#: lib/pp_admintools/app/duplicate_attribs.py:172 lib/pp_admintools/app/ldap.py:557
+#: lib/pp_admintools/app/duplicate_attribs.py:172 lib/pp_admintools/app/ldap.py:564
 msgid "Used filter:"
 msgstr ""
 
@@ -736,17 +818,17 @@ msgid "The path {!r} must be an absolute path."
 msgstr ""
 
 #: lib/pp_admintools/app/ldap.py:121 lib/pp_admintools/app/ldap.py:287
-#: lib/pp_admintools/app/ldap.py:1534
+#: lib/pp_admintools/app/ldap.py:1541
 msgid "The file {!r} does not exists."
 msgstr ""
 
 #: lib/pp_admintools/app/ldap.py:125 lib/pp_admintools/app/ldap.py:291
-#: lib/pp_admintools/app/ldap.py:1539
+#: lib/pp_admintools/app/ldap.py:1546
 msgid "The given path {!r} exists, but is not a regular file."
 msgstr ""
 
 #: lib/pp_admintools/app/ldap.py:129 lib/pp_admintools/app/ldap.py:295
-#: lib/pp_admintools/app/ldap.py:1544
+#: lib/pp_admintools/app/ldap.py:1551
 msgid "The given file {!r} is not readable."
 msgstr ""
 
@@ -758,94 +840,89 @@ msgstr ""
 msgid "Wrong port number {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:324
+#: lib/pp_admintools/app/ldap.py:325
 msgid "LDAP options"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:326
+#: lib/pp_admintools/app/ldap.py:327
 msgid "Options for the default LDAP connection"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:328
+#: lib/pp_admintools/app/ldap.py:329
 msgid "Options fo LDAP connections"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:335 lib/pp_admintools/app/mirror_ldap.py:238
-#: lib/pp_admintools/app/remove_ldap_user.py:308 lib/pp_admintools/app/set_ldap_password.py:489
-msgid "No"
-msgstr ""
-
-#: lib/pp_admintools/app/ldap.py:337
+#: lib/pp_admintools/app/ldap.py:338
 msgid "Yes"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:343
+#: lib/pp_admintools/app/ldap.py:344
 msgid "HOST"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:344
+#: lib/pp_admintools/app/ldap.py:345
 msgid "Hostname or address of the LDAP server to use. Default: {!r}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:351
+#: lib/pp_admintools/app/ldap.py:352
 msgid "Use ldaps to connect to the LDAP server. Default: {}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:356 lib/pp_admintools/app/mail.py:250
+#: lib/pp_admintools/app/ldap.py:357 lib/pp_admintools/app/mail.py:250
 #: lib/pp_admintools/app/pdns.py:273
 msgid "PORT"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:358
+#: lib/pp_admintools/app/ldap.py:359
 msgid "The port number to connect to the LDAP server. Default: {}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:364
+#: lib/pp_admintools/app/ldap.py:365
 msgid "The base DN used as the root for the LDAP searches. Default: {!r}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:371
+#: lib/pp_admintools/app/ldap.py:372
 msgid "The Bind DN to use to connect to the LDAP server. Default: {!r}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:379 lib/pp_admintools/app/mk_ldap_passwd.py:131
+#: lib/pp_admintools/app/ldap.py:380 lib/pp_admintools/app/mk_ldap_passwd.py:131
 #: lib/pp_admintools/app/set_ldap_password.py:131 lib/pp_admintools/app/set_ldap_password.py:132
 #: lib/pp_admintools/app/set_ldap_password.py:149 lib/pp_admintools/app/set_ldap_password.py:152
 msgid "PASSWORD"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:380
+#: lib/pp_admintools/app/ldap.py:381
 msgid "Use PASSWORD as the password for simple LDAP authentication."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:385
+#: lib/pp_admintools/app/ldap.py:386
 msgid ""
 "Prompt for simple LDAP authentication. This is used instead of specifying the password on the "
 "command line."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:391 lib/pp_admintools/app/set_ldap_password.py:143
+#: lib/pp_admintools/app/ldap.py:392 lib/pp_admintools/app/set_ldap_password.py:143
 #: lib/pp_admintools/app/set_ldap_password.py:145
 msgid "PASSWORD_FILE"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:393
+#: lib/pp_admintools/app/ldap.py:394
 msgid "Use contents of PASSWORD_FILE as the password for simple authentication."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:401 lib/pp_admintools/app/pdns.py:247
+#: lib/pp_admintools/app/ldap.py:402 lib/pp_admintools/app/pdns.py:247
 msgid "INSTANCE"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:404
+#: lib/pp_admintools/app/ldap.py:405
 msgid "If not given, then the instance {!r} will be used."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:408
+#: lib/pp_admintools/app/ldap.py:409
 msgid "The LDAP instance (LDAP cluster) from configuration, where to execute this script."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:412
+#: lib/pp_admintools/app/ldap.py:413
 msgid ""
 "The LDAP instance (LDAP cluster) from configuration, where to execute this script. It is "
 "possible to give here the value {val_all!r}, then all found LDAP instances except {default!r} "
@@ -853,252 +930,256 @@ msgid ""
 "are shown, and the application is exiting."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:440
+#: lib/pp_admintools/app/ldap.py:441
 msgid "Using the given timeout in seconds for all LDAP operations. Default: {}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:472
+#: lib/pp_admintools/app/ldap.py:468
+msgid "Limiting console timeout to {} seconds due to LDAP timeout."
+msgstr ""
+
+#: lib/pp_admintools/app/ldap.py:479
 msgid "Checking given instances."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:476
+#: lib/pp_admintools/app/ldap.py:483
 msgid "Given insts:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:527
+#: lib/pp_admintools/app/ldap.py:534
 msgid "Configured LDAP instances:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:544
+#: lib/pp_admintools/app/ldap.py:551
 msgid "Verifying given instances ..."
 msgstr "Verifying given instances …"
 
-#: lib/pp_admintools/app/ldap.py:580
+#: lib/pp_admintools/app/ldap.py:587
 msgid "Filtered instances:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:585
+#: lib/pp_admintools/app/ldap.py:592
 msgid "LDAP instances to use:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:601
+#: lib/pp_admintools/app/ldap.py:608
 msgid "LDAP instance {!r} not found in configuration or is not usable."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:656
+#: lib/pp_admintools/app/ldap.py:663
 msgid "Preparations ..."
 msgstr "Preparations …"
 
-#: lib/pp_admintools/app/ldap.py:659
+#: lib/pp_admintools/app/ldap.py:666
 msgid "Open all necessary LDAP connections ..."
 msgstr "Open all necessary LDAP connections …"
 
-#: lib/pp_admintools/app/ldap.py:673
+#: lib/pp_admintools/app/ldap.py:680
 msgid "Password of user {usr} on LDAP instance {inst}:"
 msgstr "Password of user {usr} on LDAP instance {inst}:"
 
-#: lib/pp_admintools/app/ldap.py:682
+#: lib/pp_admintools/app/ldap.py:689
 msgid "Info about LDAP server {}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:692
+#: lib/pp_admintools/app/ldap.py:699
 msgid "Trying to get LDAP server object for {} ..."
 msgstr "Trying to get LDAP server object for {} …"
 
-#: lib/pp_admintools/app/ldap.py:708
+#: lib/pp_admintools/app/ldap.py:715
 msgid "Connect options to server {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:715
+#: lib/pp_admintools/app/ldap.py:722
 msgid "LDAP server {s}: {re}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:729
+#: lib/pp_admintools/app/ldap.py:736
 msgid "Connecting to LDAP server {url} as {dn!r} ..."
 msgstr "Connecting to LDAP server {url} as {dn!r} …"
 
-#: lib/pp_admintools/app/ldap.py:741
+#: lib/pp_admintools/app/ldap.py:748
 msgid "Finishing ..."
 msgstr "Finishing …"
 
-#: lib/pp_admintools/app/ldap.py:751
+#: lib/pp_admintools/app/ldap.py:758
 msgid "Disconnecting from all remaining LDAP instances ..."
 msgstr "Disconnecting from all remaining LDAP instances …"
 
-#: lib/pp_admintools/app/ldap.py:764
+#: lib/pp_admintools/app/ldap.py:771
 msgid "Unbinding from LDAP server {!r} ..."
 msgstr "Unbinding from LDAP server {!r} …"
 
-#: lib/pp_admintools/app/ldap.py:771
+#: lib/pp_admintools/app/ldap.py:778
 msgid "Disconnecting from LDAP server {!r} ..."
 msgstr "Disconnecting from LDAP server {!r} …"
 
-#: lib/pp_admintools/app/ldap.py:798
+#: lib/pp_admintools/app/ldap.py:805
 msgid "Searching in {uri}/{bdn} for all entries with filter {fltr!r}, giving attributes:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:810
+#: lib/pp_admintools/app/ldap.py:817
 msgid "Result of searching:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:815
+#: lib/pp_admintools/app/ldap.py:822
 msgid "Found entry {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:822 lib/pp_admintools/app/ldap.py:866
+#: lib/pp_admintools/app/ldap.py:829 lib/pp_admintools/app/ldap.py:873
 msgid "Found one entry with filter {fltr!r} in {uri}/{bdn}."
 msgid_plural "Found {nr} enries with filter {fltr!r} in {uri}/{bdn}."
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/pp_admintools/app/ldap.py:826
+#: lib/pp_admintools/app/ldap.py:833
 msgid "Got response entries:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:830 lib/pp_admintools/app/ldap.py:878
+#: lib/pp_admintools/app/ldap.py:837 lib/pp_admintools/app/ldap.py:885
 msgid "No entry found with filter {fltr!r} in {uri}/{bdn}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:854 lib/pp_admintools/app/ldap.py:908
+#: lib/pp_admintools/app/ldap.py:861 lib/pp_admintools/app/ldap.py:915
 msgid "Using LDAP filter: {!r}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:870 lib/pp_admintools/app/ldap.py:917
+#: lib/pp_admintools/app/ldap.py:877 lib/pp_admintools/app/ldap.py:924
 msgid "Result of searching for DNs of all entries:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:874 lib/pp_admintools/app/ldap.py:921
-#: lib/pp_admintools/app/ldap.py:1019 lib/pp_admintools/app/ldap.py:1072
-#: lib/pp_admintools/app/ldap.py:1125 lib/pp_admintools/app/ldap.py:1213
-#: lib/pp_admintools/app/ldap.py:1413 lib/pp_admintools/app/ldap.py:1447
-#: lib/pp_admintools/app/ldap.py:1481 lib/pp_admintools/app/ldap.py:1515
+#: lib/pp_admintools/app/ldap.py:881 lib/pp_admintools/app/ldap.py:928
+#: lib/pp_admintools/app/ldap.py:1026 lib/pp_admintools/app/ldap.py:1079
+#: lib/pp_admintools/app/ldap.py:1132 lib/pp_admintools/app/ldap.py:1220
+#: lib/pp_admintools/app/ldap.py:1420 lib/pp_admintools/app/ldap.py:1454
+#: lib/pp_admintools/app/ldap.py:1488 lib/pp_admintools/app/ldap.py:1522
 msgid "Got a response entry:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:904
+#: lib/pp_admintools/app/ldap.py:911
 msgid "Getting all Entry DNs of LDAP instance {i!r} below {b!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:943
+#: lib/pp_admintools/app/ldap.py:950
 msgid "Trying to evaluate DN of user {user!r} in LDAP instance {inst} ..."
 msgstr "Trying to evaluate DN of user {user!r} in LDAP instance {inst} …"
 
-#: lib/pp_admintools/app/ldap.py:948
+#: lib/pp_admintools/app/ldap.py:955
 msgid "Trying to evaluate DN of user {u!r} as a mail address ..."
 msgstr "Trying to evaluate DN of user {u!r} as a mail address …"
 
-#: lib/pp_admintools/app/ldap.py:955
+#: lib/pp_admintools/app/ldap.py:962
 msgid "Trying to evaluate DN of user {u!r} as a LDAP DN ..."
 msgstr "Trying to evaluate DN of user {u!r} as a LDAP DN …"
 
-#: lib/pp_admintools/app/ldap.py:962
+#: lib/pp_admintools/app/ldap.py:969
 msgid "Trying to evaluate DN of user {u!r} as a UID (Posix user name) ..."
 msgstr "Trying to evaluate DN of user {u!r} as a UID (Posix user name) …"
 
-#: lib/pp_admintools/app/ldap.py:971 lib/pp_admintools/app/remove_ldap_user.py:318
+#: lib/pp_admintools/app/ldap.py:978 lib/pp_admintools/app/remove_ldap_user.py:318
 msgid "Empty user given."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:974
+#: lib/pp_admintools/app/ldap.py:981
 msgid "Trying to evaluate DN of user {u!r} as a CN ({c}) ..."
 msgstr "Trying to evaluate DN of user {u!r} as a CN ({c}) …"
 
-#: lib/pp_admintools/app/ldap.py:1004 lib/pp_admintools/app/ldap.py:1057
-#: lib/pp_admintools/app/ldap.py:1110 lib/pp_admintools/app/ldap.py:1401
-#: lib/pp_admintools/app/ldap.py:1435 lib/pp_admintools/app/ldap.py:1469
-#: lib/pp_admintools/app/ldap.py:1503
+#: lib/pp_admintools/app/ldap.py:1011 lib/pp_admintools/app/ldap.py:1064
+#: lib/pp_admintools/app/ldap.py:1117 lib/pp_admintools/app/ldap.py:1408
+#: lib/pp_admintools/app/ldap.py:1442 lib/pp_admintools/app/ldap.py:1476
+#: lib/pp_admintools/app/ldap.py:1510
 msgid "Searching in {uri}/{bdn} with filter: {fltr}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1015
+#: lib/pp_admintools/app/ldap.py:1022
 msgid "Result of searching for mail address {m!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1026
+#: lib/pp_admintools/app/ldap.py:1033
 msgid "User with mail address {m!r} not found in {uri}/{bdn}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1068
+#: lib/pp_admintools/app/ldap.py:1075
 msgid "Result of searching for uid {u!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1079
+#: lib/pp_admintools/app/ldap.py:1086
 msgid "User with uid {u!r} not found in {uri}/{bdn}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1121
+#: lib/pp_admintools/app/ldap.py:1128
 msgid "Result of searching for CN {cn!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1132
+#: lib/pp_admintools/app/ldap.py:1139
 msgid "User with cn {cn!r} not found in {uri}/{bdn}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1149 lib/pp_admintools/app/set_ldap_password.py:409
+#: lib/pp_admintools/app/ldap.py:1156 lib/pp_admintools/app/set_ldap_password.py:409
 msgid "User with DN {dn!r} not found in {uri}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1167
+#: lib/pp_admintools/app/ldap.py:1174
 msgid "ObjectClasses of {dn!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1177
+#: lib/pp_admintools/app/ldap.py:1184
 msgid "Entry {dn!r} in {uri} seems not to be an account."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1199
+#: lib/pp_admintools/app/ldap.py:1206
 msgid "Searching DN {dn!r} in {uri}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1209
+#: lib/pp_admintools/app/ldap.py:1216
 msgid "Result of searching for DN {dn!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1217
+#: lib/pp_admintools/app/ldap.py:1224
 msgid "Entry with DN {dn!r} not found in {uri}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1262
+#: lib/pp_admintools/app/ldap.py:1269
 msgid "Creating entry {dn!r} on {uri}:"
 msgstr "Creating entry {dn!r} on {uri}:"
 
-#: lib/pp_admintools/app/ldap.py:1268
+#: lib/pp_admintools/app/ldap.py:1275
 msgid "Simulation mode - entry will not be created."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1275
+#: lib/pp_admintools/app/ldap.py:1282
 msgid "Creation of entry {dn!r} was NOT successfull - {c}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1290
+#: lib/pp_admintools/app/ldap.py:1297
 msgid "Creation status: {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1292
+#: lib/pp_admintools/app/ldap.py:1299
 msgid "Result of creating:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1295
+#: lib/pp_admintools/app/ldap.py:1302
 msgid "Creation of entry {dn!r} was NOT successful: {desc} - {msg}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1301
+#: lib/pp_admintools/app/ldap.py:1308
 msgid "Creation successful."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1312
+#: lib/pp_admintools/app/ldap.py:1319
 msgid "Applying changes on {uri} to DN {dn!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1317
+#: lib/pp_admintools/app/ldap.py:1324
 msgid "Simulation mode - changes are not applied."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1323
+#: lib/pp_admintools/app/ldap.py:1330
 msgid "Modification of {dn!r} was NOT successfull - {c}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1325 lib/pp_admintools/app/ldap.py:1344
+#: lib/pp_admintools/app/ldap.py:1332 lib/pp_admintools/app/ldap.py:1351
 #: lib/pp_admintools/app/remove_ldap_user.py:449 lib/pp_admintools/app/remove_ldap_user.py:476
 #: lib/pp_admintools/app/remove_ldap_user.py:503 lib/pp_admintools/app/remove_ldap_user.py:534
 #: lib/pp_admintools/app/remove_ldap_user.py:565 lib/pp_admintools/app/remove_ldap_user.py:681
@@ -1106,72 +1187,72 @@ msgstr ""
 msgid "Changes:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1337
+#: lib/pp_admintools/app/ldap.py:1344
 msgid "Modification status: {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1339
+#: lib/pp_admintools/app/ldap.py:1346
 msgid "Result of modifying:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1342
+#: lib/pp_admintools/app/ldap.py:1349
 msgid "Modification of {dn!r} was NOT successful: {desc} - {msg}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1347
+#: lib/pp_admintools/app/ldap.py:1354
 msgid "Modification successful."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1357
+#: lib/pp_admintools/app/ldap.py:1364
 msgid "Deleting LDAP entry {dn!r} on {uri} ..."
 msgstr "Deleting LDAP entry {dn!r} on {uri} …"
 
-#: lib/pp_admintools/app/ldap.py:1362
+#: lib/pp_admintools/app/ldap.py:1369
 msgid "Simulation mode - deletion will not be executed."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1368
+#: lib/pp_admintools/app/ldap.py:1375
 msgid "Deletion of {dn!r} was NOT successfull - {c}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1373
+#: lib/pp_admintools/app/ldap.py:1380
 msgid "Deletion status: {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1375
+#: lib/pp_admintools/app/ldap.py:1382
 msgid "Result of deletion:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1378
+#: lib/pp_admintools/app/ldap.py:1385
 msgid "Deletion of {dn!r} was NOT successful: {desc} - {msg}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1382
+#: lib/pp_admintools/app/ldap.py:1389
 msgid "Deletion successful."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1531
+#: lib/pp_admintools/app/ldap.py:1538
 msgid "Reading password file {!r} ..."
 msgstr "Reading password file {!r} …"
 
-#: lib/pp_admintools/app/ldap.py:1562
+#: lib/pp_admintools/app/ldap.py:1569
 msgid "Could not detect RDN from DN {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1566
+#: lib/pp_admintools/app/ldap.py:1573
 msgid "Found RDN attribute {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1572
+#: lib/pp_admintools/app/ldap.py:1579
 msgid "RDN attribute {!r} will not be touched."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1578 lib/pp_admintools/app/ldap.py:1597
-#: lib/pp_admintools/app/ldap.py:1675
+#: lib/pp_admintools/app/ldap.py:1585 lib/pp_admintools/app/ldap.py:1604
+#: lib/pp_admintools/app/ldap.py:1682
 msgid "Attribute {!r} will not be touched."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1635
+#: lib/pp_admintools/app/ldap.py:1642
 msgid "Values to removed from attribute {!r}:"
 msgstr ""
 
@@ -1334,11 +1415,6 @@ msgstr ""
 msgid "Start mirroring LDAP instance {src!r} ({src_url}) to instance {tgt!r} ({tgt_url}) [{yes}/{no}]?"
 msgstr "Start mirroring LDAP instance {src!r} ({src_url}) to instance {tgt!r} ({tgt_url}) [{yes}/{no}]?"
 
-#: lib/pp_admintools/app/mirror_ldap.py:238 lib/pp_admintools/app/remove_ldap_user.py:308
-#: lib/pp_admintools/app/set_ldap_password.py:489
-msgid "yes"
-msgstr ""
-
 #: lib/pp_admintools/app/mirror_ldap.py:244 lib/pp_admintools/app/mirror_ldap.py:306
 msgid "Interrupted on demand."
 msgstr ""
@@ -1732,10 +1808,6 @@ msgid ""
 "user will be really removed from LDAP."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:134
-msgid "Removing options"
-msgstr ""
-
 #: lib/pp_admintools/app/remove_ldap_user.py:137
 msgid "This is the default."
 msgstr ""
@@ -1772,22 +1844,6 @@ msgstr ""
 msgid "No users to remove given."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:202
-msgid "Checking given instances for admin and read/write access."
-msgstr ""
-
-#: lib/pp_admintools/app/remove_ldap_user.py:209
-msgid "LDAP instance {!r} not found in configuration."
-msgstr ""
-
-#: lib/pp_admintools/app/remove_ldap_user.py:217
-msgid "LDAP instance {!r} has only readonly access."
-msgstr ""
-
-#: lib/pp_admintools/app/remove_ldap_user.py:222
-msgid "No admin access to LDAP instance {!r}."
-msgstr ""
-
 #: lib/pp_admintools/app/remove_ldap_user.py:239
 msgid "All given users were not found in any LDAP instance."
 msgstr ""
@@ -2098,360 +2154,360 @@ msgstr "Setting password …"
 msgid "{c} on setting password of user {dn!r}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/argparse_actions.py:45
+#: lib/pp_admintools/argparse_actions.py:51
 msgid "Value {v!r} for a {what} port is invalid:"
 msgstr ""
 
-#: lib/pp_admintools/argparse_actions.py:50
+#: lib/pp_admintools/argparse_actions.py:56
 msgid "Value {v!r} for a {what} port must be greater than 0 and less than {max}."
 msgstr ""
 
-#: lib/pp_admintools/argparse_actions.py:65 lib/pp_admintools/argparse_actions.py:95
+#: lib/pp_admintools/argparse_actions.py:76 lib/pp_admintools/argparse_actions.py:107
 msgid "Got a {c} for converting {v!r} into an integer value: {e}"
 msgstr ""
 
-#: lib/pp_admintools/argparse_actions.py:70
+#: lib/pp_admintools/argparse_actions.py:81
 msgid "The option must not be negative (given: {})."
 msgstr ""
 
-#: lib/pp_admintools/argparse_actions.py:101 lib/pp_admintools/argparse_actions.py:138
+#: lib/pp_admintools/argparse_actions.py:113 lib/pp_admintools/argparse_actions.py:151
 msgid "The option must be greater or equal to {m} (given: {v})."
 msgstr ""
 
-#: lib/pp_admintools/argparse_actions.py:107 lib/pp_admintools/argparse_actions.py:143
+#: lib/pp_admintools/argparse_actions.py:119 lib/pp_admintools/argparse_actions.py:156
 msgid "The option must be less or equal to {m} (given: {v})."
 msgstr ""
 
-#: lib/pp_admintools/argparse_actions.py:133
+#: lib/pp_admintools/argparse_actions.py:146
 msgid "Got a {c} for converting {v!r} into a float value: {e}"
 msgstr ""
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:204 lib/pp_admintools/config/dns_deploy_zones.py:517
-#: lib/pp_admintools/config/mail.py:147 lib/pp_admintools/config/pdns.py:188
+#: lib/pp_admintools/config/dns_deploy_zones.py:202 lib/pp_admintools/config/dns_deploy_zones.py:515
+#: lib/pp_admintools/config/mail.py:138 lib/pp_admintools/config/pdns.py:182
 msgid "Evaluating config section {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:292
+#: lib/pp_admintools/config/dns_deploy_zones.py:290
 msgid "Checking given master address {!r} ..."
 msgstr "Checking given master address {!r} …"
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:304
+#: lib/pp_admintools/config/dns_deploy_zones.py:302
 msgid "Trying to evaluate address of host {!r} ..."
 msgstr "Trying to evaluate address of host {!r} …"
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:313
+#: lib/pp_admintools/config/dns_deploy_zones.py:311
 msgid "Invalid hostname or address {a!r} found in masters: {e}"
 msgstr ""
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:321
+#: lib/pp_admintools/config/dns_deploy_zones.py:319
 msgid "Got addresses {a!r} for host {h!r}."
 msgstr ""
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:335 lib/pp_admintools/config/dns_deploy_zones.py:358
-#: lib/pp_admintools/config/dns_deploy_zones.py:383 lib/pp_admintools/config/dns_deploy_zones.py:432
-#: lib/pp_admintools/config/dns_deploy_zones.py:481 lib/pp_admintools/config/dns_deploy_zones.py:543
+#: lib/pp_admintools/config/dns_deploy_zones.py:333 lib/pp_admintools/config/dns_deploy_zones.py:356
+#: lib/pp_admintools/config/dns_deploy_zones.py:381 lib/pp_admintools/config/dns_deploy_zones.py:430
+#: lib/pp_admintools/config/dns_deploy_zones.py:479 lib/pp_admintools/config/dns_deploy_zones.py:541
 msgid "The path to {what} must be an absolute path, found {path!r}."
 msgstr ""
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:344 lib/pp_admintools/config/dns_deploy_zones.py:367
-#: lib/pp_admintools/config/dns_deploy_zones.py:392 lib/pp_admintools/config/dns_deploy_zones.py:417
-#: lib/pp_admintools/config/dns_deploy_zones.py:441 lib/pp_admintools/config/dns_deploy_zones.py:466
-#: lib/pp_admintools/config/dns_deploy_zones.py:490 lib/pp_admintools/config/dns_deploy_zones.py:552
+#: lib/pp_admintools/config/dns_deploy_zones.py:342 lib/pp_admintools/config/dns_deploy_zones.py:365
+#: lib/pp_admintools/config/dns_deploy_zones.py:390 lib/pp_admintools/config/dns_deploy_zones.py:415
+#: lib/pp_admintools/config/dns_deploy_zones.py:439 lib/pp_admintools/config/dns_deploy_zones.py:464
+#: lib/pp_admintools/config/dns_deploy_zones.py:488 lib/pp_admintools/config/dns_deploy_zones.py:550
 msgid "Found path to {what}: {path!r}."
 msgstr ""
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:379
+#: lib/pp_admintools/config/dns_deploy_zones.py:377
 msgid "the named config directory"
 msgstr ""
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:404
+#: lib/pp_admintools/config/dns_deploy_zones.py:402
 msgid "the named config file for zones"
 msgstr ""
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:408 lib/pp_admintools/config/dns_deploy_zones.py:457
+#: lib/pp_admintools/config/dns_deploy_zones.py:406 lib/pp_admintools/config/dns_deploy_zones.py:455
 msgid "The path to {what} must not be an absolute path, found {path!r}."
 msgstr ""
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:429
+#: lib/pp_admintools/config/dns_deploy_zones.py:427
 msgid "the named base directory"
 msgstr ""
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:453
+#: lib/pp_admintools/config/dns_deploy_zones.py:451
 msgid "the directory for slave zones of named"
 msgstr ""
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:540
+#: lib/pp_admintools/config/dns_deploy_zones.py:538
 msgid "the PID file"
 msgstr ""
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:592
+#: lib/pp_admintools/config/dns_deploy_zones.py:589
 msgid "Using configured masters:"
 msgstr ""
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:594
+#: lib/pp_admintools/config/dns_deploy_zones.py:591
 msgid "No valid masters found in configuration."
 msgstr ""
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:597
+#: lib/pp_admintools/config/dns_deploy_zones.py:594
 msgid "Evaluated configuration:"
 msgstr ""
 
-#: lib/pp_admintools/config/ldap.py:180
+#: lib/pp_admintools/config/ldap.py:177
 msgid "Invalid port {!r} for LDAP server given."
 msgstr ""
 
-#: lib/pp_admintools/config/ldap.py:193
+#: lib/pp_admintools/config/ldap.py:189
 msgid "An empty Base DN for LDAP searches is not allowed."
 msgstr ""
 
-#: lib/pp_admintools/config/ldap.py:283
+#: lib/pp_admintools/config/ldap.py:282
 msgid "Invalid production tier {!r} given."
 msgstr ""
 
-#: lib/pp_admintools/config/ldap.py:351
+#: lib/pp_admintools/config/ldap.py:349
 msgid "Invalid value {val!r} in section {sec!r} for a LDAP {what}."
 msgstr ""
 
-#: lib/pp_admintools/config/ldap.py:424
+#: lib/pp_admintools/config/ldap.py:422
 msgid "Unknown LDAP configuration key {key} found in section {sec!r}."
 msgstr ""
 
-#: lib/pp_admintools/config/ldap.py:528
+#: lib/pp_admintools/config/ldap.py:526
 msgid "Evaluating LDAP config ..."
 msgstr "Evaluating LDAP config …"
 
-#: lib/pp_admintools/config/ldap.py:532
+#: lib/pp_admintools/config/ldap.py:530
 msgid "Evaluating LDAP section {!r} ..."
 msgstr "Evaluating LDAP section {!r} …"
 
-#: lib/pp_admintools/config/ldap.py:549
+#: lib/pp_admintools/config/ldap.py:547
 msgid "Value {!r} for a timeout is invalid."
 msgstr ""
 
-#: lib/pp_admintools/config/ldap.py:569
+#: lib/pp_admintools/config/ldap.py:567
 msgid "Reading configuration of LDAP instance {!r} ..."
 msgstr "Reading configuration of LDAP instance {!r} …"
 
-#: lib/pp_admintools/config/mail.py:168 lib/pp_admintools/config/mail.py:192
-#: lib/pp_admintools/config/mail.py:264
+#: lib/pp_admintools/config/mail.py:159 lib/pp_admintools/config/mail.py:183
+#: lib/pp_admintools/config/mail.py:255
 msgid "Found invalid {what} {addr!r} in configuration."
 msgstr ""
 
-#: lib/pp_admintools/config/mail.py:193
+#: lib/pp_admintools/config/mail.py:184
 msgid "from address"
 msgstr ""
 
-#: lib/pp_admintools/config/mail.py:211 lib/pp_admintools/config/mail.py:215
+#: lib/pp_admintools/config/mail.py:202 lib/pp_admintools/config/mail.py:206
 msgid "recipient mail address"
 msgstr ""
 
-#: lib/pp_admintools/config/mail.py:237 lib/pp_admintools/config/mail.py:241
+#: lib/pp_admintools/config/mail.py:228 lib/pp_admintools/config/mail.py:232
 msgid "cc mail address"
 msgstr ""
 
-#: lib/pp_admintools/config/mail.py:265
+#: lib/pp_admintools/config/mail.py:256
 msgid "reply to address"
 msgstr ""
 
-#: lib/pp_admintools/config/mail.py:281
+#: lib/pp_admintools/config/mail.py:272
 msgid "Found invalid mail method {!r} in configuration."
 msgstr ""
 
-#: lib/pp_admintools/config/mail.py:315
+#: lib/pp_admintools/config/mail.py:306
 msgid "Value {!r} for SMTP port is invalid:"
 msgstr ""
 
-#: lib/pp_admintools/config/mail.py:320
+#: lib/pp_admintools/config/mail.py:311
 msgid "Found invalid SMTP port number {} in configuration."
 msgstr ""
 
-#: lib/pp_admintools/config/mirror_ldap.py:91 lib/pp_admintools/config/mirror_ldap.py:127
+#: lib/pp_admintools/config/mirror_ldap.py:88 lib/pp_admintools/config/mirror_ldap.py:124
 msgid "Evaluating configuration section {sn!r} ..."
 msgstr "Evaluating configuration section {sn!r} …"
 
-#: lib/pp_admintools/config/mirror_ldap.py:107 lib/pp_admintools/config/mirror_ldap.py:133
+#: lib/pp_admintools/config/mirror_ldap.py:104 lib/pp_admintools/config/mirror_ldap.py:130
 msgid "Section {sn!r} is not a {what}."
 msgstr ""
 
-#: lib/pp_admintools/config/pdns.py:248
+#: lib/pp_admintools/config/pdns.py:242
 msgid "A timeout has to be between 1 and {} seconds."
 msgstr ""
 
-#: lib/pp_admintools/config/pdns.py:252
+#: lib/pp_admintools/config/pdns.py:246
 msgid "Value {!r} for PowerDNS API timeout is invalid:"
 msgstr ""
 
-#: lib/pp_admintools/config/pdns.py:270
+#: lib/pp_admintools/config/pdns.py:264
 msgid "Found invalid PDNS environment/instance {!r} in configuration."
 msgstr ""
 
-#: lib/pp_admintools/config/pdns.py:285
+#: lib/pp_admintools/config/pdns.py:279
 msgid "Found PDNS host: {!r}."
 msgstr ""
 
-#: lib/pp_admintools/config/pdns.py:301 lib/pp_admintools/config/pdns.py:393
+#: lib/pp_admintools/config/pdns.py:295 lib/pp_admintools/config/pdns.py:387
 msgid "A port must be greater than 0 and less than {}."
 msgstr ""
 
-#: lib/pp_admintools/config/pdns.py:304
+#: lib/pp_admintools/config/pdns.py:298
 msgid "Wrong PDNS port number {p!r} found: {e}"
 msgstr ""
 
-#: lib/pp_admintools/config/pdns.py:313
+#: lib/pp_admintools/config/pdns.py:307
 msgid "Found port number for PDNS: {}."
 msgstr ""
 
-#: lib/pp_admintools/config/pdns.py:327
+#: lib/pp_admintools/config/pdns.py:321
 msgid "Found API key for PDNS: {!r}."
 msgstr ""
 
-#: lib/pp_admintools/config/pdns.py:338
+#: lib/pp_admintools/config/pdns.py:332
 msgid "Found PDNS API servername: {!r}."
 msgstr ""
 
-#: lib/pp_admintools/config/pdns.py:355
+#: lib/pp_admintools/config/pdns.py:349
 msgid "Evaluating PowerDNS instance {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/config/pdns.py:367
+#: lib/pp_admintools/config/pdns.py:361
 msgid "Searching for host for PDNS instance {!r} .."
 msgstr "Searching for host for PDNS instance {!r} …"
 
-#: lib/pp_admintools/config/pdns.py:375
+#: lib/pp_admintools/config/pdns.py:369
 msgid "Found host for PDNS instance {inst!r}: {host!r}."
 msgstr ""
 
-#: lib/pp_admintools/config/pdns.py:383
+#: lib/pp_admintools/config/pdns.py:377
 msgid "Searching for post number for PDNS instance {!r} .."
 msgstr "Searching for post number for PDNS instance {!r} …"
 
-#: lib/pp_admintools/config/pdns.py:396
+#: lib/pp_admintools/config/pdns.py:390
 msgid "Wrong port number {p!r} for PDNS instance {inst!r} found: {e}"
 msgstr ""
 
-#: lib/pp_admintools/config/pdns.py:405
+#: lib/pp_admintools/config/pdns.py:399
 msgid "Found port number for PDNS instance {inst!r}: {p}."
 msgstr ""
 
-#: lib/pp_admintools/config/pdns.py:413
+#: lib/pp_admintools/config/pdns.py:407
 msgid "Searching for internal server name of PDNS instance {!r} .."
 msgstr "Searching for internal server name of PDNS instance {!r} …"
 
-#: lib/pp_admintools/config/pdns.py:423
+#: lib/pp_admintools/config/pdns.py:417
 msgid "Found internal server name PDNS instance {inst!r}: {sn!r}."
 msgstr ""
 
-#: lib/pp_admintools/config/pdns.py:431
+#: lib/pp_admintools/config/pdns.py:425
 msgid "Searching for API key of PDNS instance {!r} .."
 msgstr "Searching for API key of PDNS instance {!r} …"
 
-#: lib/pp_admintools/config/pdns.py:444
+#: lib/pp_admintools/config/pdns.py:438
 msgid "Found API key of PDNS instance {inst!r}: {key!r}."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:56
+#: lib/pp_admintools/handler/ldap_password.py:60
 msgid "Encryption schema {!r} not found."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:108
+#: lib/pp_admintools/handler/ldap_password.py:114
 msgid "The ancient and notorious 3 DES crypt method."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:109 lib/pp_admintools/handler/ldap_password.py:112
+#: lib/pp_admintools/handler/ldap_password.py:115 lib/pp_admintools/handler/ldap_password.py:118
 msgid "Pure {} hashing method."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:110 lib/pp_admintools/handler/ldap_password.py:113
-#: lib/pp_admintools/handler/ldap_password.py:115 lib/pp_admintools/handler/ldap_password.py:117
+#: lib/pp_admintools/handler/ldap_password.py:116 lib/pp_admintools/handler/ldap_password.py:119
+#: lib/pp_admintools/handler/ldap_password.py:121 lib/pp_admintools/handler/ldap_password.py:123
 msgid "A {} based hashing algorithm."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:111 lib/pp_admintools/handler/ldap_password.py:114
-#: lib/pp_admintools/handler/ldap_password.py:116 lib/pp_admintools/handler/ldap_password.py:118
+#: lib/pp_admintools/handler/ldap_password.py:117 lib/pp_admintools/handler/ldap_password.py:120
+#: lib/pp_admintools/handler/ldap_password.py:122 lib/pp_admintools/handler/ldap_password.py:124
 msgid "Salted {} hashing method."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:119
+#: lib/pp_admintools/handler/ldap_password.py:125
 msgid "A hashing method derived from {} with additional computing rounds."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:240
+#: lib/pp_admintools/handler/ldap_password.py:245
 msgid "Invalid schema {!r} given for update."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:277
+#: lib/pp_admintools/handler/ldap_password.py:282
 msgid "Usable Hashing schemes:"
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:286
+#: lib/pp_admintools/handler/ldap_password.py:291
 msgid "This schema cannot be used for authentication on a current freeradius server."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:290
+#: lib/pp_admintools/handler/ldap_password.py:295
 msgid "This is the default schema."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:334
+#: lib/pp_admintools/handler/ldap_password.py:339
 msgid "The password schema {!r} does not support a password salt."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:338
+#: lib/pp_admintools/handler/ldap_password.py:343
 msgid "The password salt must be at least by {} characters."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:342
+#: lib/pp_admintools/handler/ldap_password.py:347
 msgid "The password salt may have a length of maximum {} characters."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:352
+#: lib/pp_admintools/handler/ldap_password.py:357
 msgid "Found invalid character {!r} in password salt."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:365
+#: lib/pp_admintools/handler/ldap_password.py:370
 msgid "The password schema {!r} does not support calculation rounds."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:371
+#: lib/pp_admintools/handler/ldap_password.py:376
 msgid "Wrong value {v!r} for calculation rounds: {e}"
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:375
+#: lib/pp_admintools/handler/ldap_password.py:380
 msgid "The value for the calculation rounds has to be at least {}."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:380
+#: lib/pp_admintools/handler/ldap_password.py:385
 msgid "The value for the calculation rounds has to at most {}."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:413
+#: lib/pp_admintools/handler/ldap_password.py:418
 msgid "Cannot testing the quality of the new password, because the Python module {!r} is not installed."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:419
+#: lib/pp_admintools/handler/ldap_password.py:424
 msgid "Testing quality of new password ..."
 msgstr "Testing quality of new password …"
 
-#: lib/pp_admintools/handler/ldap_password.py:423
+#: lib/pp_admintools/handler/ldap_password.py:428
 msgid "Quality of the new password is not sufficient:"
 msgstr ""
 
-#: lib/pp_admintools/xlate.py:97
+#: lib/pp_admintools/xlate.py:113
 msgid "Module directory: {!r}"
 msgstr ""
 
-#: lib/pp_admintools/xlate.py:98
+#: lib/pp_admintools/xlate.py:114
 msgid "Base directory: {!r}"
 msgstr ""
 
-#: lib/pp_admintools/xlate.py:99
+#: lib/pp_admintools/xlate.py:115
 msgid "Locale directory: {!r}"
 msgstr ""
 
-#: lib/pp_admintools/xlate.py:100
+#: lib/pp_admintools/xlate.py:116
 msgid "Locale domain: {!r}"
 msgstr ""
 
-#: lib/pp_admintools/xlate.py:101
+#: lib/pp_admintools/xlate.py:117
 msgid "Found .mo-file: {!r}"
 msgstr ""
 
index 2b9a0ceb156419cb2d272913d102297a02cb1cf8..74e7f0d0452a23db6508efcc3bd9e9715eda0da8 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: pp_admintools 0.9.0\n"
 "Report-Msgid-Bugs-To: frank.brehm@pixelpark.com\n"
-"POT-Creation-Date: 2023-06-13 13:45+0200\n"
+"POT-Creation-Date: 2023-06-15 16:42+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <frank.brehm@pixelpark.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,11 +17,11 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Generated-By: Babel 2.12.1\n"
 
-#: lib/pp_admintools/app/__init__.py:113
+#: lib/pp_admintools/app/__init__.py:143
 msgid "Using logfile {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/__init__.py:115
+#: lib/pp_admintools/app/__init__.py:145
 msgid "Don't using a logfile."
 msgstr ""
 
@@ -39,7 +39,7 @@ msgid ""
 "Default: {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/barracuda_sync.py:149 lib/pp_admintools/app/ldap.py:438
+#: lib/pp_admintools/app/barracuda_sync.py:149 lib/pp_admintools/app/ldap.py:439
 #: lib/pp_admintools/app/mirror_ldap.py:118 lib/pp_admintools/app/pdns.py:284
 msgid "SECONDS"
 msgstr ""
@@ -76,10 +76,10 @@ msgstr ""
 
 #: lib/pp_admintools/app/barracuda_sync.py:231 lib/pp_admintools/app/barracuda_sync.py:427
 #: lib/pp_admintools/app/dns_deploy_zones.py:434 lib/pp_admintools/app/dns_deploy_zones.py:788
-#: lib/pp_admintools/app/ldap.py:889 lib/pp_admintools/app/ldap.py:1022
-#: lib/pp_admintools/app/ldap.py:1075 lib/pp_admintools/app/ldap.py:1128
-#: lib/pp_admintools/app/ldap.py:1416 lib/pp_admintools/app/ldap.py:1450
-#: lib/pp_admintools/app/ldap.py:1484 lib/pp_admintools/app/ldap.py:1518
+#: lib/pp_admintools/app/ldap.py:896 lib/pp_admintools/app/ldap.py:1029
+#: lib/pp_admintools/app/ldap.py:1082 lib/pp_admintools/app/ldap.py:1135
+#: lib/pp_admintools/app/ldap.py:1423 lib/pp_admintools/app/ldap.py:1457
+#: lib/pp_admintools/app/ldap.py:1491 lib/pp_admintools/app/ldap.py:1525
 msgid "Result:"
 msgstr ""
 
@@ -283,7 +283,7 @@ msgstr ""
 msgid "LDAP Entries to modified:"
 msgstr ""
 
-#: lib/pp_admintools/app/barracuda_sync.py:756 lib/pp_admintools/app/ldap.py:1631
+#: lib/pp_admintools/app/barracuda_sync.py:756 lib/pp_admintools/app/ldap.py:1638
 msgid "Values to add to attribute {!r}:"
 msgstr ""
 
@@ -291,11 +291,11 @@ msgstr ""
 msgid "Values to be removed from attribute {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/barracuda_sync.py:777 lib/pp_admintools/app/ldap.py:1652
+#: lib/pp_admintools/app/barracuda_sync.py:777 lib/pp_admintools/app/ldap.py:1659
 msgid "Changes for attribute {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/barracuda_sync.py:780 lib/pp_admintools/app/ldap.py:1655
+#: lib/pp_admintools/app/barracuda_sync.py:780 lib/pp_admintools/app/ldap.py:1662
 msgid "No changes to attribute {!r}."
 msgstr ""
 
@@ -418,9 +418,91 @@ msgid "Checking DN-like attributes of entry {!r} ..."
 msgstr ""
 
 #: lib/pp_admintools/app/check_ldap_dn_attributes.py:219
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:234
 msgid "Got attributes:"
 msgstr ""
 
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:76
+msgid ""
+"Removes all LDAP groups, which does not have any members, that means, they are one of the "
+"following objectClasses: {ocl}, and they have none of the following attributes: {atl}."
+msgstr ""
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:125 lib/pp_admintools/app/remove_ldap_user.py:134
+msgid "Removing options"
+msgstr ""
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:129
+msgid "The base DN used as the root for the LDAP search."
+msgstr ""
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:155 lib/pp_admintools/app/remove_ldap_user.py:202
+msgid "Checking given instances for admin and read/write access."
+msgstr ""
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:162 lib/pp_admintools/app/remove_ldap_user.py:209
+msgid "LDAP instance {!r} not found in configuration."
+msgstr ""
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:170 lib/pp_admintools/app/remove_ldap_user.py:217
+msgid "LDAP instance {!r} has only readonly access."
+msgstr ""
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:175 lib/pp_admintools/app/remove_ldap_user.py:222
+msgid "No admin access to LDAP instance {!r}."
+msgstr ""
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:185
+msgid "Searching for empty groups ..."
+msgstr ""
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:192
+msgid "No more empty groups left for removing."
+msgstr ""
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:195
+msgid "Lap {} on searching for empty groups to remove."
+msgstr ""
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:230
+msgid "Searching for member attributes of {!r} ..."
+msgstr ""
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:240
+msgid "Found attribute {at!r} in group {g!r}."
+msgstr ""
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:243
+msgid "Group {!r} is not empty!"
+msgstr ""
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:248
+msgid "Removing group {!r} ..."
+msgstr ""
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:252
+msgid "Dont't removing group {!r}."
+msgstr ""
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:259
+msgid "Do you really want to remove the group '{}'"
+msgstr ""
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:261
+msgid "[{yes}/{no}]?"
+msgstr ""
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:262 lib/pp_admintools/app/ldap.py:336
+#: lib/pp_admintools/app/mirror_ldap.py:238 lib/pp_admintools/app/remove_ldap_user.py:308
+#: lib/pp_admintools/app/set_ldap_password.py:489
+msgid "No"
+msgstr ""
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:262 lib/pp_admintools/app/mirror_ldap.py:238
+#: lib/pp_admintools/app/remove_ldap_user.py:308 lib/pp_admintools/app/set_ldap_password.py:489
+msgid "yes"
+msgstr ""
+
 #: lib/pp_admintools/app/dns_deploy_zones.py:122
 msgid "Generation of the BIND9 configuration file for slave zones."
 msgstr ""
@@ -722,7 +804,7 @@ msgstr ""
 msgid "Checking for dependend unique attribute '"
 msgstr ""
 
-#: lib/pp_admintools/app/duplicate_attribs.py:172 lib/pp_admintools/app/ldap.py:557
+#: lib/pp_admintools/app/duplicate_attribs.py:172 lib/pp_admintools/app/ldap.py:564
 msgid "Used filter:"
 msgstr ""
 
@@ -735,17 +817,17 @@ msgid "The path {!r} must be an absolute path."
 msgstr ""
 
 #: lib/pp_admintools/app/ldap.py:121 lib/pp_admintools/app/ldap.py:287
-#: lib/pp_admintools/app/ldap.py:1534
+#: lib/pp_admintools/app/ldap.py:1541
 msgid "The file {!r} does not exists."
 msgstr ""
 
 #: lib/pp_admintools/app/ldap.py:125 lib/pp_admintools/app/ldap.py:291
-#: lib/pp_admintools/app/ldap.py:1539
+#: lib/pp_admintools/app/ldap.py:1546
 msgid "The given path {!r} exists, but is not a regular file."
 msgstr ""
 
 #: lib/pp_admintools/app/ldap.py:129 lib/pp_admintools/app/ldap.py:295
-#: lib/pp_admintools/app/ldap.py:1544
+#: lib/pp_admintools/app/ldap.py:1551
 msgid "The given file {!r} is not readable."
 msgstr ""
 
@@ -757,94 +839,89 @@ msgstr ""
 msgid "Wrong port number {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:324
+#: lib/pp_admintools/app/ldap.py:325
 msgid "LDAP options"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:326
+#: lib/pp_admintools/app/ldap.py:327
 msgid "Options for the default LDAP connection"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:328
+#: lib/pp_admintools/app/ldap.py:329
 msgid "Options fo LDAP connections"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:335 lib/pp_admintools/app/mirror_ldap.py:238
-#: lib/pp_admintools/app/remove_ldap_user.py:308 lib/pp_admintools/app/set_ldap_password.py:489
-msgid "No"
-msgstr ""
-
-#: lib/pp_admintools/app/ldap.py:337
+#: lib/pp_admintools/app/ldap.py:338
 msgid "Yes"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:343
+#: lib/pp_admintools/app/ldap.py:344
 msgid "HOST"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:344
+#: lib/pp_admintools/app/ldap.py:345
 msgid "Hostname or address of the LDAP server to use. Default: {!r}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:351
+#: lib/pp_admintools/app/ldap.py:352
 msgid "Use ldaps to connect to the LDAP server. Default: {}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:356 lib/pp_admintools/app/mail.py:250
+#: lib/pp_admintools/app/ldap.py:357 lib/pp_admintools/app/mail.py:250
 #: lib/pp_admintools/app/pdns.py:273
 msgid "PORT"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:358
+#: lib/pp_admintools/app/ldap.py:359
 msgid "The port number to connect to the LDAP server. Default: {}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:364
+#: lib/pp_admintools/app/ldap.py:365
 msgid "The base DN used as the root for the LDAP searches. Default: {!r}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:371
+#: lib/pp_admintools/app/ldap.py:372
 msgid "The Bind DN to use to connect to the LDAP server. Default: {!r}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:379 lib/pp_admintools/app/mk_ldap_passwd.py:131
+#: lib/pp_admintools/app/ldap.py:380 lib/pp_admintools/app/mk_ldap_passwd.py:131
 #: lib/pp_admintools/app/set_ldap_password.py:131 lib/pp_admintools/app/set_ldap_password.py:132
 #: lib/pp_admintools/app/set_ldap_password.py:149 lib/pp_admintools/app/set_ldap_password.py:152
 msgid "PASSWORD"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:380
+#: lib/pp_admintools/app/ldap.py:381
 msgid "Use PASSWORD as the password for simple LDAP authentication."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:385
+#: lib/pp_admintools/app/ldap.py:386
 msgid ""
 "Prompt for simple LDAP authentication. This is used instead of specifying the password on the "
 "command line."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:391 lib/pp_admintools/app/set_ldap_password.py:143
+#: lib/pp_admintools/app/ldap.py:392 lib/pp_admintools/app/set_ldap_password.py:143
 #: lib/pp_admintools/app/set_ldap_password.py:145
 msgid "PASSWORD_FILE"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:393
+#: lib/pp_admintools/app/ldap.py:394
 msgid "Use contents of PASSWORD_FILE as the password for simple authentication."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:401 lib/pp_admintools/app/pdns.py:247
+#: lib/pp_admintools/app/ldap.py:402 lib/pp_admintools/app/pdns.py:247
 msgid "INSTANCE"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:404
+#: lib/pp_admintools/app/ldap.py:405
 msgid "If not given, then the instance {!r} will be used."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:408
+#: lib/pp_admintools/app/ldap.py:409
 msgid "The LDAP instance (LDAP cluster) from configuration, where to execute this script."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:412
+#: lib/pp_admintools/app/ldap.py:413
 msgid ""
 "The LDAP instance (LDAP cluster) from configuration, where to execute this script. It is "
 "possible to give here the value {val_all!r}, then all found LDAP instances except {default!r} "
@@ -852,252 +929,256 @@ msgid ""
 "are shown, and the application is exiting."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:440
+#: lib/pp_admintools/app/ldap.py:441
 msgid "Using the given timeout in seconds for all LDAP operations. Default: {}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:472
+#: lib/pp_admintools/app/ldap.py:468
+msgid "Limiting console timeout to {} seconds due to LDAP timeout."
+msgstr ""
+
+#: lib/pp_admintools/app/ldap.py:479
 msgid "Checking given instances."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:476
+#: lib/pp_admintools/app/ldap.py:483
 msgid "Given insts:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:527
+#: lib/pp_admintools/app/ldap.py:534
 msgid "Configured LDAP instances:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:544
+#: lib/pp_admintools/app/ldap.py:551
 msgid "Verifying given instances ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:580
+#: lib/pp_admintools/app/ldap.py:587
 msgid "Filtered instances:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:585
+#: lib/pp_admintools/app/ldap.py:592
 msgid "LDAP instances to use:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:601
+#: lib/pp_admintools/app/ldap.py:608
 msgid "LDAP instance {!r} not found in configuration or is not usable."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:656
+#: lib/pp_admintools/app/ldap.py:663
 msgid "Preparations ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:659
+#: lib/pp_admintools/app/ldap.py:666
 msgid "Open all necessary LDAP connections ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:673
+#: lib/pp_admintools/app/ldap.py:680
 msgid "Password of user {usr} on LDAP instance {inst}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:682
+#: lib/pp_admintools/app/ldap.py:689
 msgid "Info about LDAP server {}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:692
+#: lib/pp_admintools/app/ldap.py:699
 msgid "Trying to get LDAP server object for {} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:708
+#: lib/pp_admintools/app/ldap.py:715
 msgid "Connect options to server {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:715
+#: lib/pp_admintools/app/ldap.py:722
 msgid "LDAP server {s}: {re}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:729
+#: lib/pp_admintools/app/ldap.py:736
 msgid "Connecting to LDAP server {url} as {dn!r} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:741
+#: lib/pp_admintools/app/ldap.py:748
 msgid "Finishing ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:751
+#: lib/pp_admintools/app/ldap.py:758
 msgid "Disconnecting from all remaining LDAP instances ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:764
+#: lib/pp_admintools/app/ldap.py:771
 msgid "Unbinding from LDAP server {!r} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:771
+#: lib/pp_admintools/app/ldap.py:778
 msgid "Disconnecting from LDAP server {!r} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:798
+#: lib/pp_admintools/app/ldap.py:805
 msgid "Searching in {uri}/{bdn} for all entries with filter {fltr!r}, giving attributes:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:810
+#: lib/pp_admintools/app/ldap.py:817
 msgid "Result of searching:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:815
+#: lib/pp_admintools/app/ldap.py:822
 msgid "Found entry {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:822 lib/pp_admintools/app/ldap.py:866
+#: lib/pp_admintools/app/ldap.py:829 lib/pp_admintools/app/ldap.py:873
 msgid "Found one entry with filter {fltr!r} in {uri}/{bdn}."
 msgid_plural "Found {nr} enries with filter {fltr!r} in {uri}/{bdn}."
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/pp_admintools/app/ldap.py:826
+#: lib/pp_admintools/app/ldap.py:833
 msgid "Got response entries:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:830 lib/pp_admintools/app/ldap.py:878
+#: lib/pp_admintools/app/ldap.py:837 lib/pp_admintools/app/ldap.py:885
 msgid "No entry found with filter {fltr!r} in {uri}/{bdn}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:854 lib/pp_admintools/app/ldap.py:908
+#: lib/pp_admintools/app/ldap.py:861 lib/pp_admintools/app/ldap.py:915
 msgid "Using LDAP filter: {!r}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:870 lib/pp_admintools/app/ldap.py:917
+#: lib/pp_admintools/app/ldap.py:877 lib/pp_admintools/app/ldap.py:924
 msgid "Result of searching for DNs of all entries:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:874 lib/pp_admintools/app/ldap.py:921
-#: lib/pp_admintools/app/ldap.py:1019 lib/pp_admintools/app/ldap.py:1072
-#: lib/pp_admintools/app/ldap.py:1125 lib/pp_admintools/app/ldap.py:1213
-#: lib/pp_admintools/app/ldap.py:1413 lib/pp_admintools/app/ldap.py:1447
-#: lib/pp_admintools/app/ldap.py:1481 lib/pp_admintools/app/ldap.py:1515
+#: lib/pp_admintools/app/ldap.py:881 lib/pp_admintools/app/ldap.py:928
+#: lib/pp_admintools/app/ldap.py:1026 lib/pp_admintools/app/ldap.py:1079
+#: lib/pp_admintools/app/ldap.py:1132 lib/pp_admintools/app/ldap.py:1220
+#: lib/pp_admintools/app/ldap.py:1420 lib/pp_admintools/app/ldap.py:1454
+#: lib/pp_admintools/app/ldap.py:1488 lib/pp_admintools/app/ldap.py:1522
 msgid "Got a response entry:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:904
+#: lib/pp_admintools/app/ldap.py:911
 msgid "Getting all Entry DNs of LDAP instance {i!r} below {b!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:943
+#: lib/pp_admintools/app/ldap.py:950
 msgid "Trying to evaluate DN of user {user!r} in LDAP instance {inst} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:948
+#: lib/pp_admintools/app/ldap.py:955
 msgid "Trying to evaluate DN of user {u!r} as a mail address ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:955
+#: lib/pp_admintools/app/ldap.py:962
 msgid "Trying to evaluate DN of user {u!r} as a LDAP DN ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:962
+#: lib/pp_admintools/app/ldap.py:969
 msgid "Trying to evaluate DN of user {u!r} as a UID (Posix user name) ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:971 lib/pp_admintools/app/remove_ldap_user.py:318
+#: lib/pp_admintools/app/ldap.py:978 lib/pp_admintools/app/remove_ldap_user.py:318
 msgid "Empty user given."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:974
+#: lib/pp_admintools/app/ldap.py:981
 msgid "Trying to evaluate DN of user {u!r} as a CN ({c}) ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1004 lib/pp_admintools/app/ldap.py:1057
-#: lib/pp_admintools/app/ldap.py:1110 lib/pp_admintools/app/ldap.py:1401
-#: lib/pp_admintools/app/ldap.py:1435 lib/pp_admintools/app/ldap.py:1469
-#: lib/pp_admintools/app/ldap.py:1503
+#: lib/pp_admintools/app/ldap.py:1011 lib/pp_admintools/app/ldap.py:1064
+#: lib/pp_admintools/app/ldap.py:1117 lib/pp_admintools/app/ldap.py:1408
+#: lib/pp_admintools/app/ldap.py:1442 lib/pp_admintools/app/ldap.py:1476
+#: lib/pp_admintools/app/ldap.py:1510
 msgid "Searching in {uri}/{bdn} with filter: {fltr}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1015
+#: lib/pp_admintools/app/ldap.py:1022
 msgid "Result of searching for mail address {m!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1026
+#: lib/pp_admintools/app/ldap.py:1033
 msgid "User with mail address {m!r} not found in {uri}/{bdn}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1068
+#: lib/pp_admintools/app/ldap.py:1075
 msgid "Result of searching for uid {u!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1079
+#: lib/pp_admintools/app/ldap.py:1086
 msgid "User with uid {u!r} not found in {uri}/{bdn}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1121
+#: lib/pp_admintools/app/ldap.py:1128
 msgid "Result of searching for CN {cn!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1132
+#: lib/pp_admintools/app/ldap.py:1139
 msgid "User with cn {cn!r} not found in {uri}/{bdn}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1149 lib/pp_admintools/app/set_ldap_password.py:409
+#: lib/pp_admintools/app/ldap.py:1156 lib/pp_admintools/app/set_ldap_password.py:409
 msgid "User with DN {dn!r} not found in {uri}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1167
+#: lib/pp_admintools/app/ldap.py:1174
 msgid "ObjectClasses of {dn!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1177
+#: lib/pp_admintools/app/ldap.py:1184
 msgid "Entry {dn!r} in {uri} seems not to be an account."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1199
+#: lib/pp_admintools/app/ldap.py:1206
 msgid "Searching DN {dn!r} in {uri}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1209
+#: lib/pp_admintools/app/ldap.py:1216
 msgid "Result of searching for DN {dn!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1217
+#: lib/pp_admintools/app/ldap.py:1224
 msgid "Entry with DN {dn!r} not found in {uri}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1262
+#: lib/pp_admintools/app/ldap.py:1269
 msgid "Creating entry {dn!r} on {uri}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1268
+#: lib/pp_admintools/app/ldap.py:1275
 msgid "Simulation mode - entry will not be created."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1275
+#: lib/pp_admintools/app/ldap.py:1282
 msgid "Creation of entry {dn!r} was NOT successfull - {c}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1290
+#: lib/pp_admintools/app/ldap.py:1297
 msgid "Creation status: {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1292
+#: lib/pp_admintools/app/ldap.py:1299
 msgid "Result of creating:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1295
+#: lib/pp_admintools/app/ldap.py:1302
 msgid "Creation of entry {dn!r} was NOT successful: {desc} - {msg}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1301
+#: lib/pp_admintools/app/ldap.py:1308
 msgid "Creation successful."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1312
+#: lib/pp_admintools/app/ldap.py:1319
 msgid "Applying changes on {uri} to DN {dn!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1317
+#: lib/pp_admintools/app/ldap.py:1324
 msgid "Simulation mode - changes are not applied."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1323
+#: lib/pp_admintools/app/ldap.py:1330
 msgid "Modification of {dn!r} was NOT successfull - {c}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1325 lib/pp_admintools/app/ldap.py:1344
+#: lib/pp_admintools/app/ldap.py:1332 lib/pp_admintools/app/ldap.py:1351
 #: lib/pp_admintools/app/remove_ldap_user.py:449 lib/pp_admintools/app/remove_ldap_user.py:476
 #: lib/pp_admintools/app/remove_ldap_user.py:503 lib/pp_admintools/app/remove_ldap_user.py:534
 #: lib/pp_admintools/app/remove_ldap_user.py:565 lib/pp_admintools/app/remove_ldap_user.py:681
@@ -1105,72 +1186,72 @@ msgstr ""
 msgid "Changes:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1337
+#: lib/pp_admintools/app/ldap.py:1344
 msgid "Modification status: {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1339
+#: lib/pp_admintools/app/ldap.py:1346
 msgid "Result of modifying:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1342
+#: lib/pp_admintools/app/ldap.py:1349
 msgid "Modification of {dn!r} was NOT successful: {desc} - {msg}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1347
+#: lib/pp_admintools/app/ldap.py:1354
 msgid "Modification successful."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1357
+#: lib/pp_admintools/app/ldap.py:1364
 msgid "Deleting LDAP entry {dn!r} on {uri} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1362
+#: lib/pp_admintools/app/ldap.py:1369
 msgid "Simulation mode - deletion will not be executed."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1368
+#: lib/pp_admintools/app/ldap.py:1375
 msgid "Deletion of {dn!r} was NOT successfull - {c}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1373
+#: lib/pp_admintools/app/ldap.py:1380
 msgid "Deletion status: {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1375
+#: lib/pp_admintools/app/ldap.py:1382
 msgid "Result of deletion:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1378
+#: lib/pp_admintools/app/ldap.py:1385
 msgid "Deletion of {dn!r} was NOT successful: {desc} - {msg}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1382
+#: lib/pp_admintools/app/ldap.py:1389
 msgid "Deletion successful."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1531
+#: lib/pp_admintools/app/ldap.py:1538
 msgid "Reading password file {!r} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1562
+#: lib/pp_admintools/app/ldap.py:1569
 msgid "Could not detect RDN from DN {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1566
+#: lib/pp_admintools/app/ldap.py:1573
 msgid "Found RDN attribute {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1572
+#: lib/pp_admintools/app/ldap.py:1579
 msgid "RDN attribute {!r} will not be touched."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1578 lib/pp_admintools/app/ldap.py:1597
-#: lib/pp_admintools/app/ldap.py:1675
+#: lib/pp_admintools/app/ldap.py:1585 lib/pp_admintools/app/ldap.py:1604
+#: lib/pp_admintools/app/ldap.py:1682
 msgid "Attribute {!r} will not be touched."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1635
+#: lib/pp_admintools/app/ldap.py:1642
 msgid "Values to removed from attribute {!r}:"
 msgstr ""
 
@@ -1333,11 +1414,6 @@ msgstr ""
 msgid "Start mirroring LDAP instance {src!r} ({src_url}) to instance {tgt!r} ({tgt_url}) [{yes}/{no}]?"
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:238 lib/pp_admintools/app/remove_ldap_user.py:308
-#: lib/pp_admintools/app/set_ldap_password.py:489
-msgid "yes"
-msgstr ""
-
 #: lib/pp_admintools/app/mirror_ldap.py:244 lib/pp_admintools/app/mirror_ldap.py:306
 msgid "Interrupted on demand."
 msgstr ""
@@ -1731,10 +1807,6 @@ msgid ""
 "user will be really removed from LDAP."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:134
-msgid "Removing options"
-msgstr ""
-
 #: lib/pp_admintools/app/remove_ldap_user.py:137
 msgid "This is the default."
 msgstr ""
@@ -1771,22 +1843,6 @@ msgstr ""
 msgid "No users to remove given."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:202
-msgid "Checking given instances for admin and read/write access."
-msgstr ""
-
-#: lib/pp_admintools/app/remove_ldap_user.py:209
-msgid "LDAP instance {!r} not found in configuration."
-msgstr ""
-
-#: lib/pp_admintools/app/remove_ldap_user.py:217
-msgid "LDAP instance {!r} has only readonly access."
-msgstr ""
-
-#: lib/pp_admintools/app/remove_ldap_user.py:222
-msgid "No admin access to LDAP instance {!r}."
-msgstr ""
-
 #: lib/pp_admintools/app/remove_ldap_user.py:239
 msgid "All given users were not found in any LDAP instance."
 msgstr ""
@@ -2097,360 +2153,360 @@ msgstr ""
 msgid "{c} on setting password of user {dn!r}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/argparse_actions.py:45
+#: lib/pp_admintools/argparse_actions.py:51
 msgid "Value {v!r} for a {what} port is invalid:"
 msgstr ""
 
-#: lib/pp_admintools/argparse_actions.py:50
+#: lib/pp_admintools/argparse_actions.py:56
 msgid "Value {v!r} for a {what} port must be greater than 0 and less than {max}."
 msgstr ""
 
-#: lib/pp_admintools/argparse_actions.py:65 lib/pp_admintools/argparse_actions.py:95
+#: lib/pp_admintools/argparse_actions.py:76 lib/pp_admintools/argparse_actions.py:107
 msgid "Got a {c} for converting {v!r} into an integer value: {e}"
 msgstr ""
 
-#: lib/pp_admintools/argparse_actions.py:70
+#: lib/pp_admintools/argparse_actions.py:81
 msgid "The option must not be negative (given: {})."
 msgstr ""
 
-#: lib/pp_admintools/argparse_actions.py:101 lib/pp_admintools/argparse_actions.py:138
+#: lib/pp_admintools/argparse_actions.py:113 lib/pp_admintools/argparse_actions.py:151
 msgid "The option must be greater or equal to {m} (given: {v})."
 msgstr ""
 
-#: lib/pp_admintools/argparse_actions.py:107 lib/pp_admintools/argparse_actions.py:143
+#: lib/pp_admintools/argparse_actions.py:119 lib/pp_admintools/argparse_actions.py:156
 msgid "The option must be less or equal to {m} (given: {v})."
 msgstr ""
 
-#: lib/pp_admintools/argparse_actions.py:133
+#: lib/pp_admintools/argparse_actions.py:146
 msgid "Got a {c} for converting {v!r} into a float value: {e}"
 msgstr ""
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:204 lib/pp_admintools/config/dns_deploy_zones.py:517
-#: lib/pp_admintools/config/mail.py:147 lib/pp_admintools/config/pdns.py:188
+#: lib/pp_admintools/config/dns_deploy_zones.py:202 lib/pp_admintools/config/dns_deploy_zones.py:515
+#: lib/pp_admintools/config/mail.py:138 lib/pp_admintools/config/pdns.py:182
 msgid "Evaluating config section {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:292
+#: lib/pp_admintools/config/dns_deploy_zones.py:290
 msgid "Checking given master address {!r} ..."
 msgstr ""
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:304
+#: lib/pp_admintools/config/dns_deploy_zones.py:302
 msgid "Trying to evaluate address of host {!r} ..."
 msgstr ""
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:313
+#: lib/pp_admintools/config/dns_deploy_zones.py:311
 msgid "Invalid hostname or address {a!r} found in masters: {e}"
 msgstr ""
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:321
+#: lib/pp_admintools/config/dns_deploy_zones.py:319
 msgid "Got addresses {a!r} for host {h!r}."
 msgstr ""
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:335 lib/pp_admintools/config/dns_deploy_zones.py:358
-#: lib/pp_admintools/config/dns_deploy_zones.py:383 lib/pp_admintools/config/dns_deploy_zones.py:432
-#: lib/pp_admintools/config/dns_deploy_zones.py:481 lib/pp_admintools/config/dns_deploy_zones.py:543
+#: lib/pp_admintools/config/dns_deploy_zones.py:333 lib/pp_admintools/config/dns_deploy_zones.py:356
+#: lib/pp_admintools/config/dns_deploy_zones.py:381 lib/pp_admintools/config/dns_deploy_zones.py:430
+#: lib/pp_admintools/config/dns_deploy_zones.py:479 lib/pp_admintools/config/dns_deploy_zones.py:541
 msgid "The path to {what} must be an absolute path, found {path!r}."
 msgstr ""
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:344 lib/pp_admintools/config/dns_deploy_zones.py:367
-#: lib/pp_admintools/config/dns_deploy_zones.py:392 lib/pp_admintools/config/dns_deploy_zones.py:417
-#: lib/pp_admintools/config/dns_deploy_zones.py:441 lib/pp_admintools/config/dns_deploy_zones.py:466
-#: lib/pp_admintools/config/dns_deploy_zones.py:490 lib/pp_admintools/config/dns_deploy_zones.py:552
+#: lib/pp_admintools/config/dns_deploy_zones.py:342 lib/pp_admintools/config/dns_deploy_zones.py:365
+#: lib/pp_admintools/config/dns_deploy_zones.py:390 lib/pp_admintools/config/dns_deploy_zones.py:415
+#: lib/pp_admintools/config/dns_deploy_zones.py:439 lib/pp_admintools/config/dns_deploy_zones.py:464
+#: lib/pp_admintools/config/dns_deploy_zones.py:488 lib/pp_admintools/config/dns_deploy_zones.py:550
 msgid "Found path to {what}: {path!r}."
 msgstr ""
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:379
+#: lib/pp_admintools/config/dns_deploy_zones.py:377
 msgid "the named config directory"
 msgstr ""
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:404
+#: lib/pp_admintools/config/dns_deploy_zones.py:402
 msgid "the named config file for zones"
 msgstr ""
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:408 lib/pp_admintools/config/dns_deploy_zones.py:457
+#: lib/pp_admintools/config/dns_deploy_zones.py:406 lib/pp_admintools/config/dns_deploy_zones.py:455
 msgid "The path to {what} must not be an absolute path, found {path!r}."
 msgstr ""
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:429
+#: lib/pp_admintools/config/dns_deploy_zones.py:427
 msgid "the named base directory"
 msgstr ""
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:453
+#: lib/pp_admintools/config/dns_deploy_zones.py:451
 msgid "the directory for slave zones of named"
 msgstr ""
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:540
+#: lib/pp_admintools/config/dns_deploy_zones.py:538
 msgid "the PID file"
 msgstr ""
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:592
+#: lib/pp_admintools/config/dns_deploy_zones.py:589
 msgid "Using configured masters:"
 msgstr ""
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:594
+#: lib/pp_admintools/config/dns_deploy_zones.py:591
 msgid "No valid masters found in configuration."
 msgstr ""
 
-#: lib/pp_admintools/config/dns_deploy_zones.py:597
+#: lib/pp_admintools/config/dns_deploy_zones.py:594
 msgid "Evaluated configuration:"
 msgstr ""
 
-#: lib/pp_admintools/config/ldap.py:180
+#: lib/pp_admintools/config/ldap.py:177
 msgid "Invalid port {!r} for LDAP server given."
 msgstr ""
 
-#: lib/pp_admintools/config/ldap.py:193
+#: lib/pp_admintools/config/ldap.py:189
 msgid "An empty Base DN for LDAP searches is not allowed."
 msgstr ""
 
-#: lib/pp_admintools/config/ldap.py:283
+#: lib/pp_admintools/config/ldap.py:282
 msgid "Invalid production tier {!r} given."
 msgstr ""
 
-#: lib/pp_admintools/config/ldap.py:351
+#: lib/pp_admintools/config/ldap.py:349
 msgid "Invalid value {val!r} in section {sec!r} for a LDAP {what}."
 msgstr ""
 
-#: lib/pp_admintools/config/ldap.py:424
+#: lib/pp_admintools/config/ldap.py:422
 msgid "Unknown LDAP configuration key {key} found in section {sec!r}."
 msgstr ""
 
-#: lib/pp_admintools/config/ldap.py:528
+#: lib/pp_admintools/config/ldap.py:526
 msgid "Evaluating LDAP config ..."
 msgstr ""
 
-#: lib/pp_admintools/config/ldap.py:532
+#: lib/pp_admintools/config/ldap.py:530
 msgid "Evaluating LDAP section {!r} ..."
 msgstr ""
 
-#: lib/pp_admintools/config/ldap.py:549
+#: lib/pp_admintools/config/ldap.py:547
 msgid "Value {!r} for a timeout is invalid."
 msgstr ""
 
-#: lib/pp_admintools/config/ldap.py:569
+#: lib/pp_admintools/config/ldap.py:567
 msgid "Reading configuration of LDAP instance {!r} ..."
 msgstr ""
 
-#: lib/pp_admintools/config/mail.py:168 lib/pp_admintools/config/mail.py:192
-#: lib/pp_admintools/config/mail.py:264
+#: lib/pp_admintools/config/mail.py:159 lib/pp_admintools/config/mail.py:183
+#: lib/pp_admintools/config/mail.py:255
 msgid "Found invalid {what} {addr!r} in configuration."
 msgstr ""
 
-#: lib/pp_admintools/config/mail.py:193
+#: lib/pp_admintools/config/mail.py:184
 msgid "from address"
 msgstr ""
 
-#: lib/pp_admintools/config/mail.py:211 lib/pp_admintools/config/mail.py:215
+#: lib/pp_admintools/config/mail.py:202 lib/pp_admintools/config/mail.py:206
 msgid "recipient mail address"
 msgstr ""
 
-#: lib/pp_admintools/config/mail.py:237 lib/pp_admintools/config/mail.py:241
+#: lib/pp_admintools/config/mail.py:228 lib/pp_admintools/config/mail.py:232
 msgid "cc mail address"
 msgstr ""
 
-#: lib/pp_admintools/config/mail.py:265
+#: lib/pp_admintools/config/mail.py:256
 msgid "reply to address"
 msgstr ""
 
-#: lib/pp_admintools/config/mail.py:281
+#: lib/pp_admintools/config/mail.py:272
 msgid "Found invalid mail method {!r} in configuration."
 msgstr ""
 
-#: lib/pp_admintools/config/mail.py:315
+#: lib/pp_admintools/config/mail.py:306
 msgid "Value {!r} for SMTP port is invalid:"
 msgstr ""
 
-#: lib/pp_admintools/config/mail.py:320
+#: lib/pp_admintools/config/mail.py:311
 msgid "Found invalid SMTP port number {} in configuration."
 msgstr ""
 
-#: lib/pp_admintools/config/mirror_ldap.py:91 lib/pp_admintools/config/mirror_ldap.py:127
+#: lib/pp_admintools/config/mirror_ldap.py:88 lib/pp_admintools/config/mirror_ldap.py:124
 msgid "Evaluating configuration section {sn!r} ..."
 msgstr ""
 
-#: lib/pp_admintools/config/mirror_ldap.py:107 lib/pp_admintools/config/mirror_ldap.py:133
+#: lib/pp_admintools/config/mirror_ldap.py:104 lib/pp_admintools/config/mirror_ldap.py:130
 msgid "Section {sn!r} is not a {what}."
 msgstr ""
 
-#: lib/pp_admintools/config/pdns.py:248
+#: lib/pp_admintools/config/pdns.py:242
 msgid "A timeout has to be between 1 and {} seconds."
 msgstr ""
 
-#: lib/pp_admintools/config/pdns.py:252
+#: lib/pp_admintools/config/pdns.py:246
 msgid "Value {!r} for PowerDNS API timeout is invalid:"
 msgstr ""
 
-#: lib/pp_admintools/config/pdns.py:270
+#: lib/pp_admintools/config/pdns.py:264
 msgid "Found invalid PDNS environment/instance {!r} in configuration."
 msgstr ""
 
-#: lib/pp_admintools/config/pdns.py:285
+#: lib/pp_admintools/config/pdns.py:279
 msgid "Found PDNS host: {!r}."
 msgstr ""
 
-#: lib/pp_admintools/config/pdns.py:301 lib/pp_admintools/config/pdns.py:393
+#: lib/pp_admintools/config/pdns.py:295 lib/pp_admintools/config/pdns.py:387
 msgid "A port must be greater than 0 and less than {}."
 msgstr ""
 
-#: lib/pp_admintools/config/pdns.py:304
+#: lib/pp_admintools/config/pdns.py:298
 msgid "Wrong PDNS port number {p!r} found: {e}"
 msgstr ""
 
-#: lib/pp_admintools/config/pdns.py:313
+#: lib/pp_admintools/config/pdns.py:307
 msgid "Found port number for PDNS: {}."
 msgstr ""
 
-#: lib/pp_admintools/config/pdns.py:327
+#: lib/pp_admintools/config/pdns.py:321
 msgid "Found API key for PDNS: {!r}."
 msgstr ""
 
-#: lib/pp_admintools/config/pdns.py:338
+#: lib/pp_admintools/config/pdns.py:332
 msgid "Found PDNS API servername: {!r}."
 msgstr ""
 
-#: lib/pp_admintools/config/pdns.py:355
+#: lib/pp_admintools/config/pdns.py:349
 msgid "Evaluating PowerDNS instance {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/config/pdns.py:367
+#: lib/pp_admintools/config/pdns.py:361
 msgid "Searching for host for PDNS instance {!r} .."
 msgstr ""
 
-#: lib/pp_admintools/config/pdns.py:375
+#: lib/pp_admintools/config/pdns.py:369
 msgid "Found host for PDNS instance {inst!r}: {host!r}."
 msgstr ""
 
-#: lib/pp_admintools/config/pdns.py:383
+#: lib/pp_admintools/config/pdns.py:377
 msgid "Searching for post number for PDNS instance {!r} .."
 msgstr ""
 
-#: lib/pp_admintools/config/pdns.py:396
+#: lib/pp_admintools/config/pdns.py:390
 msgid "Wrong port number {p!r} for PDNS instance {inst!r} found: {e}"
 msgstr ""
 
-#: lib/pp_admintools/config/pdns.py:405
+#: lib/pp_admintools/config/pdns.py:399
 msgid "Found port number for PDNS instance {inst!r}: {p}."
 msgstr ""
 
-#: lib/pp_admintools/config/pdns.py:413
+#: lib/pp_admintools/config/pdns.py:407
 msgid "Searching for internal server name of PDNS instance {!r} .."
 msgstr ""
 
-#: lib/pp_admintools/config/pdns.py:423
+#: lib/pp_admintools/config/pdns.py:417
 msgid "Found internal server name PDNS instance {inst!r}: {sn!r}."
 msgstr ""
 
-#: lib/pp_admintools/config/pdns.py:431
+#: lib/pp_admintools/config/pdns.py:425
 msgid "Searching for API key of PDNS instance {!r} .."
 msgstr ""
 
-#: lib/pp_admintools/config/pdns.py:444
+#: lib/pp_admintools/config/pdns.py:438
 msgid "Found API key of PDNS instance {inst!r}: {key!r}."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:56
+#: lib/pp_admintools/handler/ldap_password.py:60
 msgid "Encryption schema {!r} not found."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:108
+#: lib/pp_admintools/handler/ldap_password.py:114
 msgid "The ancient and notorious 3 DES crypt method."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:109 lib/pp_admintools/handler/ldap_password.py:112
+#: lib/pp_admintools/handler/ldap_password.py:115 lib/pp_admintools/handler/ldap_password.py:118
 msgid "Pure {} hashing method."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:110 lib/pp_admintools/handler/ldap_password.py:113
-#: lib/pp_admintools/handler/ldap_password.py:115 lib/pp_admintools/handler/ldap_password.py:117
+#: lib/pp_admintools/handler/ldap_password.py:116 lib/pp_admintools/handler/ldap_password.py:119
+#: lib/pp_admintools/handler/ldap_password.py:121 lib/pp_admintools/handler/ldap_password.py:123
 msgid "A {} based hashing algorithm."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:111 lib/pp_admintools/handler/ldap_password.py:114
-#: lib/pp_admintools/handler/ldap_password.py:116 lib/pp_admintools/handler/ldap_password.py:118
+#: lib/pp_admintools/handler/ldap_password.py:117 lib/pp_admintools/handler/ldap_password.py:120
+#: lib/pp_admintools/handler/ldap_password.py:122 lib/pp_admintools/handler/ldap_password.py:124
 msgid "Salted {} hashing method."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:119
+#: lib/pp_admintools/handler/ldap_password.py:125
 msgid "A hashing method derived from {} with additional computing rounds."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:240
+#: lib/pp_admintools/handler/ldap_password.py:245
 msgid "Invalid schema {!r} given for update."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:277
+#: lib/pp_admintools/handler/ldap_password.py:282
 msgid "Usable Hashing schemes:"
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:286
+#: lib/pp_admintools/handler/ldap_password.py:291
 msgid "This schema cannot be used for authentication on a current freeradius server."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:290
+#: lib/pp_admintools/handler/ldap_password.py:295
 msgid "This is the default schema."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:334
+#: lib/pp_admintools/handler/ldap_password.py:339
 msgid "The password schema {!r} does not support a password salt."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:338
+#: lib/pp_admintools/handler/ldap_password.py:343
 msgid "The password salt must be at least by {} characters."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:342
+#: lib/pp_admintools/handler/ldap_password.py:347
 msgid "The password salt may have a length of maximum {} characters."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:352
+#: lib/pp_admintools/handler/ldap_password.py:357
 msgid "Found invalid character {!r} in password salt."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:365
+#: lib/pp_admintools/handler/ldap_password.py:370
 msgid "The password schema {!r} does not support calculation rounds."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:371
+#: lib/pp_admintools/handler/ldap_password.py:376
 msgid "Wrong value {v!r} for calculation rounds: {e}"
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:375
+#: lib/pp_admintools/handler/ldap_password.py:380
 msgid "The value for the calculation rounds has to be at least {}."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:380
+#: lib/pp_admintools/handler/ldap_password.py:385
 msgid "The value for the calculation rounds has to at most {}."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:413
+#: lib/pp_admintools/handler/ldap_password.py:418
 msgid "Cannot testing the quality of the new password, because the Python module {!r} is not installed."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:419
+#: lib/pp_admintools/handler/ldap_password.py:424
 msgid "Testing quality of new password ..."
 msgstr ""
 
-#: lib/pp_admintools/handler/ldap_password.py:423
+#: lib/pp_admintools/handler/ldap_password.py:428
 msgid "Quality of the new password is not sufficient:"
 msgstr ""
 
-#: lib/pp_admintools/xlate.py:97
+#: lib/pp_admintools/xlate.py:113
 msgid "Module directory: {!r}"
 msgstr ""
 
-#: lib/pp_admintools/xlate.py:98
+#: lib/pp_admintools/xlate.py:114
 msgid "Base directory: {!r}"
 msgstr ""
 
-#: lib/pp_admintools/xlate.py:99
+#: lib/pp_admintools/xlate.py:115
 msgid "Locale directory: {!r}"
 msgstr ""
 
-#: lib/pp_admintools/xlate.py:100
+#: lib/pp_admintools/xlate.py:116
 msgid "Locale domain: {!r}"
 msgstr ""
 
-#: lib/pp_admintools/xlate.py:101
+#: lib/pp_admintools/xlate.py:117
 msgid "Found .mo-file: {!r}"
 msgstr ""