]> Frank Brehm's Git Trees - pixelpark/pp-admin-tools.git/commitdiff
Start implementation of removing mail addresses from mailing lists in bin/remove...
authorFrank Brehm <frank.brehm@pixelpark.com>
Mon, 12 Jun 2023 10:02:47 +0000 (12:02 +0200)
committerFrank Brehm <frank.brehm@pixelpark.com>
Mon, 12 Jun 2023 10:02:47 +0000 (12:02 +0200)
lib/pp_admintools/app/remove_ldap_user.py
locale/de_DE/LC_MESSAGES/pp_admintools.po
locale/en_US/LC_MESSAGES/pp_admintools.po
locale/pp_admintools.pot

index b0dcdfa3945659d67cb940796ace8a23e40df728..152624d12add51895a569a7dd63e4cd54490dbca 100644 (file)
@@ -16,7 +16,9 @@ import crypt
 from ldap3 import MODIFY_REPLACE, MODIFY_ADD, MODIFY_DELETE
 
 # Own modules
+from fb_tools.collections import CIStringSet
 from fb_tools.common import to_bool, is_sequence
+from fb_tools.xlate import format_list
 
 from .. import pp
 
@@ -25,7 +27,7 @@ from ..xlate import XLATOR
 from .ldap import LdapAppError, FatalLDAPError
 from .ldap import BaseLdapApplication
 
-__version__ = '0.5.10'
+__version__ = '0.6.0'
 LOG = logging.getLogger(__name__)
 
 _ = XLATOR.gettext
@@ -56,6 +58,8 @@ class RemoveLdapUserApplication(BaseLdapApplication):
         self.use_multiple_ldap_connections = True
         self.show_cmdline_ldap_timeout = True
 
+        self._del_mails = True
+
         self.dns = {}
         self.wrong_users = False
         self.empty_passwd = '{SSHA256}' + crypt.crypt(
@@ -84,13 +88,24 @@ class RemoveLdapUserApplication(BaseLdapApplication):
     @property
     def deactivate(self):
         """Defines, that the given users will not be removed, bur deactivated instaed."""
-
         return self._deactivate
 
     @deactivate.setter
     def deactivate(self, value):
         self._deactivate = to_bool(value)
 
+    # -------------------------------------------
+    @property
+    def del_mails(self):
+        """Return the need to delete all mail addresses from mailing lists."""
+        return self._del_mails
+
+    @del_mails.setter
+    def del_mails(self, value):
+        if value is None:
+            self._del_mails = True
+        self._del_mails = to_bool(value)
+
     # -------------------------------------------------------------------------
     def as_dict(self, short=True):
         """
@@ -106,6 +121,7 @@ class RemoveLdapUserApplication(BaseLdapApplication):
         res = super(RemoveLdapUserApplication, self).as_dict(short=short)
 
         res['deactivate'] = self.deactivate
+        res['del_mails'] = self.del_mails
 
         return res
 
@@ -132,6 +148,13 @@ class RemoveLdapUserApplication(BaseLdapApplication):
         remove_mode_group.add_argument(
             '-R', '--remove', dest="remove", action='store_true', help=help_txt)
 
+        help_txt = _(
+            "Don't remove all mail addresses of the users to remove from all "
+            "mailing lists.")
+        remove_group.add_argument(
+            '-N', '--no-del-mail-addresses-from-lists', dest='no_del_mails',
+            action='store_true', help=help_txt)
+
         remove_group.add_argument(
             'users', nargs='*', metavar=_('USER'),
             help=_(
@@ -166,6 +189,9 @@ class RemoveLdapUserApplication(BaseLdapApplication):
         if remove:
             self.deactivate = False
 
+        if getattr(self.args, 'no_del_mails', False):
+            self.del_mails = False
+
         self.given_users = given_users
 
         self.check_instances()
@@ -364,6 +390,9 @@ class RemoveLdapUserApplication(BaseLdapApplication):
         if not self.remove_all_unique_memberships(inst, dn):
             return False
 
+        if self.del_mails:
+            self.del_mails_from_lists(inst, dn, attributes)
+
         if 'uid' in attributes:
             for uid in attributes['uid']:
                 if not self.remove_all_posixgroup_memberships(inst, uid):
@@ -539,6 +568,30 @@ class RemoveLdapUserApplication(BaseLdapApplication):
 
         return True
 
+    # -------------------------------------------------------------------------
+    def del_mails_from_lists(self, inst, dn, attributes):
+        """Remove mail addresses of users from all mailing lists."""
+        connect_info = self.cfg.ldap_connection[inst]
+
+        mail_addresses = CIStringSet()
+        for attr in attributes.keys():
+            if attr.lower() in ('mail', 'mailalternateaddress', 'mailequivalentaddress'):
+                values = attributes[attr]
+                if is_sequence(values):
+                    for address in values:
+                        mail_addresses.add(address)
+                else:
+                    mail_addresses.add(values)
+
+        if not len(mail_addresses):
+            msg = _("No mail addresses found to remove for user {!r}.").format(dn)
+            LOG.debug(msg)
+            return
+
+        msg = _('Trying to remove the following mail addresses from mailing lists:')
+        msg += ' ' + format_list(mail_addresses.as_list(), do_repr=True)
+        LOG.info(msg)
+
 
 # =============================================================================
 if __name__ == "__main__":
index e97e55e3f6ef94a7cc3af26d5f1a6d91a8f64d3f..f3f02bc730f272a2c391238efd1ac01eff343a8a 100644 (file)
@@ -5,9 +5,9 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: pp_admintools 0.8.8\n"
+"Project-Id-Version: pp_admintools 0.9.0\n"
 "Report-Msgid-Bugs-To: frank.brehm@pixelpark.com\n"
-"POT-Creation-Date: 2023-05-31 10:50+0200\n"
+"POT-Creation-Date: 2023-06-12 11:53+0200\n"
 "PO-Revision-Date: 2023-05-31 10:55+0200\n"
 "Last-Translator: Frank Brehm <frank.brehm@pixelpark.com>\n"
 "Language: de_DE\n"
@@ -45,7 +45,7 @@ msgstr ""
 "werden sollen. Vorgabe: {!r}"
 
 #: lib/pp_admintools/app/barracuda_sync.py:149 lib/pp_admintools/app/ldap.py:438
-#: lib/pp_admintools/app/mirror_ldap.py:123 lib/pp_admintools/app/pdns.py:286
+#: lib/pp_admintools/app/mirror_ldap.py:118 lib/pp_admintools/app/pdns.py:284
 msgid "SECONDS"
 msgstr "SEKUNDEN"
 
@@ -364,7 +364,7 @@ msgstr[1] "{} Alias-Einträge im LDAP geändert."
 msgid "Get all necessary data from LDAP and static virtual aliases table ..."
 msgstr "Hole alle notwendigen Daten aus dem LDAP und aus der statische Tabelle der virtuellen Aliase …"
 
-#: lib/pp_admintools/app/barracuda_sync.py:972 lib/pp_admintools/app/mirror_ldap.py:317
+#: lib/pp_admintools/app/barracuda_sync.py:972 lib/pp_admintools/app/mirror_ldap.py:311
 msgid "Finished."
 msgstr "Beendet."
 
@@ -398,41 +398,41 @@ msgstr "Export-Datei {!r} erstellt."
 msgid "Start checking all DN-like attributes in in LDAP instance {inst!r} ({url}) ..."
 msgstr "Beginne mit der Überprüfung aller Attribute mit DN-Syntax in der LDAP-Instanz {inst!r} ({url}) …"
 
-#: lib/pp_admintools/app/check_ldap_dn_attributes.py:155
+#: lib/pp_admintools/app/check_ldap_dn_attributes.py:154
 msgid "Found one entry to check."
 msgid_plural "Found {} entries to check."
 msgstr[0] "Fand einen Eintrag, der überprüft werden muss."
 msgstr[1] "Fand {} Einträge, die überprüft werden müssen."
 
-#: lib/pp_admintools/app/check_ldap_dn_attributes.py:159
+#: lib/pp_admintools/app/check_ldap_dn_attributes.py:158
 msgid "Found no to check."
 msgstr "Fand nichts zum überprüfen."
 
-#: lib/pp_admintools/app/check_ldap_dn_attributes.py:179
+#: lib/pp_admintools/app/check_ldap_dn_attributes.py:178
 msgid "Got an inconsistent entry."
 msgid_plural "Got {} inconsistent entries."
 msgstr[0] "Habe einen inkonsistenten Eintrag gefunden."
 msgstr[1] "Habe {} inkonsistente Einträge gefunden."
 
-#: lib/pp_admintools/app/check_ldap_dn_attributes.py:182
+#: lib/pp_admintools/app/check_ldap_dn_attributes.py:181
 msgid "There is one inconsistent attribute."
 msgid_plural "There are {} inconsistent attributes."
 msgstr[0] "Es gibt ein inkonsistentes Attribut."
 msgstr[1] "Es gibt {} inkonsistente Attribute."
 
-#: lib/pp_admintools/app/check_ldap_dn_attributes.py:187
+#: lib/pp_admintools/app/check_ldap_dn_attributes.py:186
 msgid "Writing export file {!r} ..."
 msgstr "Schreibe Export-Datei {!r} …"
 
-#: lib/pp_admintools/app/check_ldap_dn_attributes.py:194
+#: lib/pp_admintools/app/check_ldap_dn_attributes.py:193
 msgid "Did not found any inconsistent entries."
 msgstr "Keine inkonsistente Attribute gefunden."
 
-#: lib/pp_admintools/app/check_ldap_dn_attributes.py:215
+#: lib/pp_admintools/app/check_ldap_dn_attributes.py:214
 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:220
+#: lib/pp_admintools/app/check_ldap_dn_attributes.py:219
 msgid "Got attributes:"
 msgstr "Gefindene Attribute:"
 
@@ -440,7 +440,7 @@ msgstr "Gefindene Attribute:"
 msgid "Generation of the BIND9 configuration file for slave zones."
 msgstr "Generierung der BIND9-Konfigurationsdatei für Slave-Zonen."
 
-#: lib/pp_admintools/app/dns_deploy_zones.py:250 lib/pp_admintools/app/mk_ldap_passwd.py:89
+#: lib/pp_admintools/app/dns_deploy_zones.py:250 lib/pp_admintools/app/mk_ldap_passwd.py:86
 #: lib/pp_admintools/app/set_ldap_password.py:124
 msgid "Options for {}"
 msgstr "Optionen für {}"
@@ -534,7 +534,7 @@ msgstr "Versuche alle Schlüssel der named.conf zu ermitteln …"
 #: lib/pp_admintools/app/dns_deploy_zones.py:428 lib/pp_admintools/app/dns_deploy_zones.py:782
 #: lib/pp_admintools/app/dns_deploy_zones.py:818 lib/pp_admintools/app/dns_deploy_zones.py:850
 #: lib/pp_admintools/app/dns_deploy_zones.py:885 lib/pp_admintools/app/dns_deploy_zones.py:920
-#: lib/pp_admintools/app/mail.py:328
+#: lib/pp_admintools/app/mail.py:317
 msgid "Executing: {}"
 msgstr "Führe aus: {}"
 
@@ -698,19 +698,19 @@ msgstr "Neu starten {} …"
 msgid "Reloading {} ..."
 msgstr "Reload {} …"
 
-#: lib/pp_admintools/app/duplicate_attribs.py:58
+#: lib/pp_admintools/app/duplicate_attribs.py:61
 msgid "Evaluating all LDAP entries, which are using duplicate attributes, which should be unique."
 msgstr "Ermittelt alle LDAP-Einträge, die Duplikat-Attribute haben, welche aber eindeutig sein sollten."
 
-#: lib/pp_admintools/app/duplicate_attribs.py:71
+#: lib/pp_admintools/app/duplicate_attribs.py:74
 msgid "Evaluation options"
 msgstr "Evaluationsoptionen"
 
-#: lib/pp_admintools/app/duplicate_attribs.py:74 lib/pp_admintools/app/duplicate_attribs.py:82
+#: lib/pp_admintools/app/duplicate_attribs.py:77 lib/pp_admintools/app/duplicate_attribs.py:85
 msgid "ATTRIBUTE"
 msgstr "ATTRIBUT"
 
-#: lib/pp_admintools/app/duplicate_attribs.py:75
+#: lib/pp_admintools/app/duplicate_attribs.py:78
 msgid ""
 "All attribute types, which should be unique over the complete LDAP tree. Per default the "
 "following attribute types should be unique:"
@@ -718,7 +718,7 @@ msgstr ""
 "Alle Attributtypen, die eindeutig über den gesamten LDAP-Baum sein sollten. Per Vorgabe sollen "
 "die folgenden Attributtypen eindeutig sein:"
 
-#: lib/pp_admintools/app/duplicate_attribs.py:83
+#: lib/pp_admintools/app/duplicate_attribs.py:86
 msgid ""
 "All attribute types, where their uniqueness depends on an additional LDAP filter. For instance, "
 "the attribute 'gidNumber' should be unique for all entries, which are using the objectClass "
@@ -796,8 +796,8 @@ msgstr "Optionen für die Vorgabe-LDAP-Verbindung"
 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:244
-#: lib/pp_admintools/app/remove_ldap_user.py:283 lib/pp_admintools/app/set_ldap_password.py:492
+#: lib/pp_admintools/app/ldap.py:335 lib/pp_admintools/app/mirror_ldap.py:238
+#: lib/pp_admintools/app/remove_ldap_user.py:309 lib/pp_admintools/app/set_ldap_password.py:492
 msgid "No"
 msgstr "Nein"
 
@@ -817,8 +817,8 @@ msgstr "Der Hostname oder die Adresse des zu verwendenden LDAP-Servers. Vorgabe:
 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:261
-#: lib/pp_admintools/app/pdns.py:275
+#: lib/pp_admintools/app/ldap.py:356 lib/pp_admintools/app/mail.py:250
+#: lib/pp_admintools/app/pdns.py:273
 msgid "PORT"
 msgstr "PORT"
 
@@ -834,7 +834,7 @@ msgstr "Die Basis-DN, die als Ausgangspunt bei LDAP-Suchen verwendet werden soll
 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:134
+#: lib/pp_admintools/app/ldap.py:379 lib/pp_admintools/app/mk_ldap_passwd.py:131
 #: lib/pp_admintools/app/set_ldap_password.py:130 lib/pp_admintools/app/set_ldap_password.py:131
 #: lib/pp_admintools/app/set_ldap_password.py:148 lib/pp_admintools/app/set_ldap_password.py:151
 msgid "PASSWORD"
@@ -861,7 +861,7 @@ msgstr "PASSWORT_DATEI"
 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:249
+#: lib/pp_admintools/app/ldap.py:401 lib/pp_admintools/app/pdns.py:247
 msgid "INSTANCE"
 msgstr "INSTANZ"
 
@@ -1029,7 +1029,7 @@ msgstr "Versuche den DN des Nutzer {u!r} als LDAP DN zu ermitteln …"
 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:958 lib/pp_admintools/app/remove_ldap_user.py:293
+#: lib/pp_admintools/app/ldap.py:958 lib/pp_admintools/app/remove_ldap_user.py:319
 msgid "Empty user given."
 msgstr "Leere Nutzername übergeben."
 
@@ -1133,9 +1133,9 @@ 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:1312 lib/pp_admintools/app/ldap.py:1331
-#: lib/pp_admintools/app/remove_ldap_user.py:420 lib/pp_admintools/app/remove_ldap_user.py:447
-#: lib/pp_admintools/app/remove_ldap_user.py:474 lib/pp_admintools/app/remove_ldap_user.py:505
-#: lib/pp_admintools/app/remove_ldap_user.py:536 lib/pp_admintools/app/set_ldap_password.py:521
+#: 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/set_ldap_password.py:521
 msgid "Changes:"
 msgstr "Änderungen:"
 
@@ -1208,66 +1208,66 @@ msgstr "Das Attribut {!r} wird nicht angefasst."
 msgid "Values to removed from attribute {!r}:"
 msgstr "Werte, die von Attribut {!r} gelöscht werden."
 
-#: lib/pp_admintools/app/mail.py:103
+#: lib/pp_admintools/app/mail.py:95
 msgid "Got invalid SMTP port number {!r}."
 msgstr "Ungültige SMTP-Port-Nummer {!r} erhalten."
 
-#: lib/pp_admintools/app/mail.py:121
+#: lib/pp_admintools/app/mail.py:113
 msgid "Got invalid mail from address {!r}."
 msgstr "Ungültige Absender-Mailadresse {!r} erhalten."
 
-#: lib/pp_admintools/app/mail.py:144
+#: lib/pp_admintools/app/mail.py:136
 msgid "Got invalid recipient mail addresses:"
 msgstr "Ungültige Empfänger-Mailadressen erhalten:"
 
-#: lib/pp_admintools/app/mail.py:172
+#: lib/pp_admintools/app/mail.py:164
 msgid "Got invalid cc mail addresses:"
 msgstr "Ungültige CC-Mailadressen erhalten:"
 
-#: lib/pp_admintools/app/mail.py:187
+#: lib/pp_admintools/app/mail.py:179
 msgid "Got invalid reply mail address {!r}."
 msgstr "Ungültige CC-Mailadresse {!r} erhalten."
 
-#: lib/pp_admintools/app/mail.py:201
+#: lib/pp_admintools/app/mail.py:190
 msgid "Mailing options"
 msgstr "E-Mail-Optionen"
 
-#: lib/pp_admintools/app/mail.py:216 lib/pp_admintools/app/mail.py:224
-#: lib/pp_admintools/app/mail.py:230 lib/pp_admintools/app/mail.py:236
+#: lib/pp_admintools/app/mail.py:205 lib/pp_admintools/app/mail.py:213
+#: lib/pp_admintools/app/mail.py:219 lib/pp_admintools/app/mail.py:225
 msgid "ADDRESS"
 msgstr "ADRESSE"
 
-#: lib/pp_admintools/app/mail.py:217
+#: lib/pp_admintools/app/mail.py:206
 msgid "Sender mail address for mails generated by this script. Default: {!r}"
 msgstr "Absender-Mailadresse von Mails, die von diesem Skript generiert werden. Vorgabe: {!r}"
 
-#: lib/pp_admintools/app/mail.py:225
+#: lib/pp_admintools/app/mail.py:214
 msgid "Mail addresses of all recipients for mails generated by this script."
 msgstr "Mailadressen aller Empfänger von Mails, die von diesem Skript generiert werden."
 
-#: lib/pp_admintools/app/mail.py:231
+#: lib/pp_admintools/app/mail.py:220
 msgid "Mail addresses of all CC recipients for mails generated by this script."
 msgstr "Mailadressen aller CC-Empfänger von Mails, die von diesem Skript generiert werden."
 
-#: lib/pp_admintools/app/mail.py:237
+#: lib/pp_admintools/app/mail.py:226
 msgid "Reply mail address for mails generated by this script."
 msgstr "Antwort-Mailadresse von Mails, die von diesem Skript generiert werden."
 
-#: lib/pp_admintools/app/mail.py:244
+#: lib/pp_admintools/app/mail.py:233
 msgid "METHOD"
 msgstr "METHODE"
 
-#: lib/pp_admintools/app/mail.py:245
+#: lib/pp_admintools/app/mail.py:234
 msgid "Method for sending the mails generated by this script. Valid values: {v}, default: {d!r}."
 msgstr ""
 "Methode zum Senden von Mails, die von diesem Skript generiert werden. Gültige Werte: {v}, "
 "Vorgabe: {d!r}."
 
-#: lib/pp_admintools/app/mail.py:253
+#: lib/pp_admintools/app/mail.py:242
 msgid "SERVER"
 msgstr "SERVER"
 
-#: lib/pp_admintools/app/mail.py:254
+#: lib/pp_admintools/app/mail.py:243
 msgid ""
 "Mail server for submitting generated by this script if the mail method of this script is 'smtp'."
 " Default: {!r}."
@@ -1275,7 +1275,7 @@ msgstr ""
 "Der Mailserver zur Übermittlung der von diesem Skript generierten Mails, wenn die Mail-Methode "
 "'smtp' ist. Vorgabe: {!r}."
 
-#: lib/pp_admintools/app/mail.py:263
+#: lib/pp_admintools/app/mail.py:252
 msgid ""
 "The port to use for submitting generated by this script if the mail method of this script is "
 "'smtp'. Default: {}."
@@ -1283,19 +1283,19 @@ msgstr ""
 "Der zu verwendende Port zur Übermittlung der von diesem Skript generierten Mails, wenn die Mail-"
 "Methode 'smtp' ist. Vorgabe: {}."
 
-#: lib/pp_admintools/app/mail.py:272
+#: lib/pp_admintools/app/mail.py:261
 msgid "Got command line arguments:"
 msgstr "Kommandozeilen-Argumente erhalten:"
 
-#: lib/pp_admintools/app/mail.py:289
+#: lib/pp_admintools/app/mail.py:278
 msgid "Mail to send:"
 msgstr "Die zu sendende Mail:"
 
-#: lib/pp_admintools/app/mail.py:322
+#: lib/pp_admintools/app/mail.py:311
 msgid "Did not found sendmail executable."
 msgstr "Kein ausführbares Programm 'sendmail' gefunden."
 
-#: lib/pp_admintools/app/mirror_ldap.py:101
+#: lib/pp_admintools/app/mirror_ldap.py:96
 msgid ""
 "Mirror the content of a complete LDAP instance (server or cluster) to another instance. This "
 "will be done first by clearing the target instance, then copying structural entries from the "
@@ -1309,15 +1309,15 @@ msgstr ""
 "dessen werden einige Transformationen ausgeführt, wie die Erssetzung der Inhalte bestimmter "
 "Attribute durch andere Werte."
 
-#: lib/pp_admintools/app/mirror_ldap.py:109
+#: lib/pp_admintools/app/mirror_ldap.py:104
 msgid "Do not execute a countdown before starting the application."
 msgstr "Keinen Countdown vor dem Start der Anwendung ausführen."
 
-#: lib/pp_admintools/app/mirror_ldap.py:120
+#: lib/pp_admintools/app/mirror_ldap.py:115
 msgid "Miroring options"
 msgstr "Spiegelungs--Optionen"
 
-#: lib/pp_admintools/app/mirror_ldap.py:125
+#: lib/pp_admintools/app/mirror_ldap.py:120
 msgid ""
 "Number of seconds to wait after each write operation. Given as a float value, and if set to "
 "zero, there is no waiting after a write. (default: {:.1f})"
@@ -1326,54 +1326,54 @@ msgstr ""
 "angegeben, und wenn sie auf Null gesetzt werden, erfolgt kein Warten nach dem Schreiben. "
 "(Vorgabe: {:.1f})"
 
-#: lib/pp_admintools/app/mirror_ldap.py:132 lib/pp_admintools/app/mk_ldap_passwd.py:124
+#: lib/pp_admintools/app/mirror_ldap.py:127 lib/pp_admintools/app/mk_ldap_passwd.py:121
 msgid "NUMBER"
 msgstr "ANZAHL"
 
-#: lib/pp_admintools/app/mirror_ldap.py:134
+#: lib/pp_admintools/app/mirror_ldap.py:129
 msgid "Limiting the mirroring to the first NUMBER entries. This option is valid only in simulation mode."
 msgstr ""
 "Begrenzung der Spiegelung auf die erste ANZAHL Einträge. Diese Option ist nur im Simulations-"
 "Modus gültig."
 
-#: lib/pp_admintools/app/mirror_ldap.py:141
+#: lib/pp_admintools/app/mirror_ldap.py:136
 msgid "Mirror only structural entries (entries with childs)."
 msgstr "Nur strukturelle Einträge (Einträge mit Child-Einträgen) spiegeln."
 
-#: lib/pp_admintools/app/mirror_ldap.py:163
+#: lib/pp_admintools/app/mirror_ldap.py:157
 msgid "Limiting the number of entries for mirroring to {} entries."
 msgstr "Begrenze die Anzahl der Einträge zum Spiegeln auf {}."
 
-#: lib/pp_admintools/app/mirror_ldap.py:167
+#: lib/pp_admintools/app/mirror_ldap.py:161
 msgid "Limition the number of entries for mirroring may only be done in simulation mode."
 msgstr "Die Begrenzung der Anzahl der Einträge zum Spiegeln ist nur im Simulationsmodus erlaubt."
 
-#: lib/pp_admintools/app/mirror_ldap.py:184
+#: lib/pp_admintools/app/mirror_ldap.py:178
 msgid "Did not found {tgt!r} in {e}:"
 msgstr "Fand {tgt!r} nicht in {e}:"
 
-#: lib/pp_admintools/app/mirror_ldap.py:196
+#: lib/pp_admintools/app/mirror_ldap.py:190
 msgid "Checking mirror source instance for target instance {!r} ..."
 msgstr "Überprüfe die Quell-Instanz für Spiegelung zur Ziel-Instanz {!r} …"
 
-#: lib/pp_admintools/app/mirror_ldap.py:200
+#: lib/pp_admintools/app/mirror_ldap.py:194
 msgid "Got {!r} as the mirror source instance."
 msgstr "Habe {!r} als Quell-Instanz für die Spiegelung erhalten."
 
-#: lib/pp_admintools/app/mirror_ldap.py:203 lib/pp_admintools/app/mirror_ldap.py:212
-#: lib/pp_admintools/app/mirror_ldap.py:223
+#: lib/pp_admintools/app/mirror_ldap.py:197 lib/pp_admintools/app/mirror_ldap.py:206
+#: lib/pp_admintools/app/mirror_ldap.py:217
 msgid "Error in configuration:"
 msgstr "Fehler in der Konfiguration:"
 
-#: lib/pp_admintools/app/mirror_ldap.py:204
+#: lib/pp_admintools/app/mirror_ldap.py:198
 msgid "the source LDAP instance {src!r} for mirroring to {tgt!r} does not exists."
 msgstr "die Quell-LDAP-Instanz {src!r} für die Spiegelung nach {tgt!r} existiert nicht."
 
-#: lib/pp_admintools/app/mirror_ldap.py:213
+#: lib/pp_admintools/app/mirror_ldap.py:207
 msgid "the source LDAP instance {src!r} must not be the same like the target instance."
 msgstr "die Quell-LDAP-Instanz {src!r} darf nicht identisch mit der Ziel-Instanz sein."
 
-#: lib/pp_admintools/app/mirror_ldap.py:224
+#: lib/pp_admintools/app/mirror_ldap.py:218
 msgid ""
 "the base DN {src_dn!r} of the source instance {src!r} does not match the base DN {tgt_dn!r} of "
 "the target instance {tgt!r}."
@@ -1381,104 +1381,104 @@ msgstr ""
 "die Basis-DN {src_dn!r} der Quell-Instanz {src!r} stimmt nicht mit der Basis-DN {tgt_dn!r} der "
 "Ziel-Instanz {tgt!r} überein."
 
-#: lib/pp_admintools/app/mirror_ldap.py:240
+#: lib/pp_admintools/app/mirror_ldap.py:234
 msgid "Start mirroring LDAP instance {src!r} ({src_url}) to instance {tgt!r} ({tgt_url}) [{yes}/{no}]?"
 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:244 lib/pp_admintools/app/remove_ldap_user.py:283
+#: lib/pp_admintools/app/mirror_ldap.py:238 lib/pp_admintools/app/remove_ldap_user.py:309
 #: lib/pp_admintools/app/set_ldap_password.py:492
 msgid "yes"
 msgstr "ja"
 
-#: lib/pp_admintools/app/mirror_ldap.py:250 lib/pp_admintools/app/mirror_ldap.py:312
+#: lib/pp_admintools/app/mirror_ldap.py:244 lib/pp_admintools/app/mirror_ldap.py:306
 msgid "Interrupted on demand."
 msgstr "Abbruch auf Verlangen."
 
-#: lib/pp_admintools/app/mirror_ldap.py:255
+#: lib/pp_admintools/app/mirror_ldap.py:249
 msgid "Start mirroring LDAP instance {src!r} ({src_url}) to instance {tgt!r} ({tgt_url}) ..."
 msgstr "Starte Spiegelung der LDAP-Instanz {src!r} ({src_url}) zur Instanz {tgt!r} ({tgt_url}) …"
 
-#: lib/pp_admintools/app/mirror_ldap.py:276 lib/pp_admintools/app/mirror_ldap.py:294
+#: lib/pp_admintools/app/mirror_ldap.py:270 lib/pp_admintools/app/mirror_ldap.py:288
 msgid "{:>5} entry deleted."
 msgid_plural "{:>5} entries deleted."
 msgstr[0] "{:>5} Eintrag gelöscht."
 msgstr[1] "{:>5} Einträge gelöscht."
 
-#: lib/pp_admintools/app/mirror_ldap.py:279 lib/pp_admintools/app/mirror_ldap.py:299
+#: lib/pp_admintools/app/mirror_ldap.py:273 lib/pp_admintools/app/mirror_ldap.py:293
 msgid "{:>5} entry updated."
 msgid_plural "{:>5} entries updated."
 msgstr[0] "{:>5} Eintrag aktualisiert."
 msgstr[1] "{:>5} Einträge aktualisiert."
 
-#: lib/pp_admintools/app/mirror_ldap.py:282 lib/pp_admintools/app/mirror_ldap.py:304
+#: lib/pp_admintools/app/mirror_ldap.py:276 lib/pp_admintools/app/mirror_ldap.py:298
 msgid "{:>5} entry created."
 msgid_plural "{:>5} entries created."
 msgstr[0] "{:>5} Eintrag erstellt."
 msgstr[1] "{:>5} Einträge erstellt."
 
-#: lib/pp_admintools/app/mirror_ldap.py:289
+#: lib/pp_admintools/app/mirror_ldap.py:283
 msgid "Changes total:"
 msgstr "Änderungen insgesamt:"
 
-#: lib/pp_admintools/app/mirror_ldap.py:312
+#: lib/pp_admintools/app/mirror_ldap.py:306
 msgid "Got a {}:"
 msgstr "Habe ein {} erhalten:"
 
-#: lib/pp_admintools/app/mirror_ldap.py:325
+#: lib/pp_admintools/app/mirror_ldap.py:318
 msgid "Trying to get DNs of all entries in the source LDAP instance."
 msgstr "Versuche die DNs aller Einträge in der Quell-LDAP-Instanz zu ermitteln."
 
-#: lib/pp_admintools/app/mirror_ldap.py:338 lib/pp_admintools/app/mirror_ldap.py:393
+#: lib/pp_admintools/app/mirror_ldap.py:331 lib/pp_admintools/app/mirror_ldap.py:385
 msgid "Found DNs in instance {!r}:"
 msgstr "Gefundene DNs in Instanz {!r}:"
 
-#: lib/pp_admintools/app/mirror_ldap.py:355
+#: lib/pp_admintools/app/mirror_ldap.py:348
 msgid "Found total one entry in source LDAP"
 msgid_plural "Found {no} entries in source LDAP"
 msgstr[0] "Fand einen Eintrag im Quell-LDAP"
 msgstr[1] "Fand {no} Einträge im Quell-LDAP"
 
-#: lib/pp_admintools/app/mirror_ldap.py:359
+#: lib/pp_admintools/app/mirror_ldap.py:352
 msgid "one structural entry in source LDAP"
 msgid_plural "{no} structural entries in source LDAP"
 msgstr[0] "einen strukturellen Eintrag im Quell-LDAP"
 msgstr[1] "{no} strukturelle Einträge im Quell-LDAP"
 
-#: lib/pp_admintools/app/mirror_ldap.py:363
+#: lib/pp_admintools/app/mirror_ldap.py:356
 msgid "one non-structural entry in source LDAP."
 msgid_plural "{no} non-structural entries in source LDAP."
 msgstr[0] "einen nicht-strukturellen Eintrag im Ziel-LDAP."
 msgstr[1] "{no} nicht-strukturelle Einträge im Ziel-LDAP."
 
-#: lib/pp_admintools/app/mirror_ldap.py:371 lib/pp_admintools/app/mirror_ldap.py:426
+#: lib/pp_admintools/app/mirror_ldap.py:364 lib/pp_admintools/app/mirror_ldap.py:418
 msgid "Found structural DNs in instance {!r}:"
 msgstr "Gefundene strukturelle DNs in Instanz {!r}:"
 
-#: lib/pp_admintools/app/mirror_ldap.py:380
+#: lib/pp_admintools/app/mirror_ldap.py:372
 msgid "Trying to get DNs of all entries in the target LDAP instance."
 msgstr "Versuche die DNs aller Einträge in der Ziel-LDAP-Instanz zu ermitteln."
 
-#: lib/pp_admintools/app/mirror_ldap.py:410
+#: lib/pp_admintools/app/mirror_ldap.py:402
 msgid "Found total one entry in target LDAP"
 msgid_plural "Found {no} entries in target LDAP"
 msgstr[0] "Fand insgesamt einen Eintrag im Ziel-LDAP"
 msgstr[1] "Fand {no} Einträge im Ziel-LDAP"
 
-#: lib/pp_admintools/app/mirror_ldap.py:414
+#: lib/pp_admintools/app/mirror_ldap.py:406
 msgid "one structural entry in target LDAP"
 msgid_plural "{no} structural entries in target LDAP"
 msgstr[0] "ein struktureller Eintrag im Ziel-LDAP"
 msgstr[1] "{no} strukturelle Einträge im Ziel-LDAP"
 
-#: lib/pp_admintools/app/mirror_ldap.py:418
+#: lib/pp_admintools/app/mirror_ldap.py:410
 msgid "one non-structural entry in target LDAP."
 msgid_plural "{no} non-structural entries in target LDAP."
 msgstr[0] "ein nicht-struktureller Eintrag im Ziel-LDAP."
 msgstr[1] "{no} nicht-strukturelle Einträge im Ziel-LDAP."
 
-#: lib/pp_admintools/app/mirror_ldap.py:434
+#: lib/pp_admintools/app/mirror_ldap.py:425
 msgid ""
 "Evaluating DNs of all target entries, which have to be synchronized, instead of removing and "
 "recreating them."
@@ -1486,151 +1486,151 @@ msgstr ""
 "Ermittel der DNs aller Zieleinträge, die synchronisiert werden müssen, anstatt sie zu löschen "
 "und sie neu anzulegen."
 
-#: lib/pp_admintools/app/mirror_ldap.py:492
+#: lib/pp_admintools/app/mirror_ldap.py:483
 msgid "Removing non structural entries from target LDAP instance."
 msgstr "Löschen nicht-struktureller Einträge in der Ziel-LDAP-Instanz."
 
-#: lib/pp_admintools/app/mirror_ldap.py:508 lib/pp_admintools/app/mirror_ldap.py:569
+#: lib/pp_admintools/app/mirror_ldap.py:499 lib/pp_admintools/app/mirror_ldap.py:560
 msgid "Entry {!r} exists on the source instance, will not be removed."
 msgstr "Der Eintrag {!r} existiert in der Ziel-Instanz und wird deshalb nicht gelöscht."
 
-#: lib/pp_admintools/app/mirror_ldap.py:514
+#: lib/pp_admintools/app/mirror_ldap.py:505
 msgid "Entry {!r} is a structural entry, will not be removed at this point."
 msgstr "Der Eintrag {!r} ist ein struktureller Eintrag, und wird deshalb an dieser Stelle nicht gelöscht."
 
-#: lib/pp_admintools/app/mirror_ldap.py:521 lib/pp_admintools/app/mirror_ldap.py:575
-#: lib/pp_admintools/app/mirror_ldap.py:622 lib/pp_admintools/app/mirror_ldap.py:726
-#: lib/pp_admintools/app/mirror_ldap.py:825
+#: lib/pp_admintools/app/mirror_ldap.py:512 lib/pp_admintools/app/mirror_ldap.py:566
+#: lib/pp_admintools/app/mirror_ldap.py:613 lib/pp_admintools/app/mirror_ldap.py:717
+#: lib/pp_admintools/app/mirror_ldap.py:816
 msgid "Entry {!r} is set to be kept."
 msgstr "Der Eintrag {!r} wurde auf Erhalten gesetzt."
 
-#: lib/pp_admintools/app/mirror_ldap.py:533
+#: lib/pp_admintools/app/mirror_ldap.py:524
 msgid "Removed one not structural entry in target LDAP instance."
 msgid_plural "Removed {no} not structural entries in target LDAP instance."
 msgstr[0] "Es wurde ein nicht-struktureller Eintrag in der Ziel-LDAP-Instanz gelöscht."
 msgstr[1] "Es wurden {no} nicht-strukturelle Einträge in der Ziel-LDAP-Instanz gelöscht."
 
-#: lib/pp_admintools/app/mirror_ldap.py:538
+#: lib/pp_admintools/app/mirror_ldap.py:529
 msgid "None not structural entries in target LDAP instance removed."
 msgstr "Es wurden keine nicht-strukturellen Einträge in der Ziel-LDAP-Instanz gelöscht."
 
-#: lib/pp_admintools/app/mirror_ldap.py:552
+#: lib/pp_admintools/app/mirror_ldap.py:543
 msgid "Removing structural entries from target LDAP instance."
 msgstr "Löschen struktureller Einträge in der Ziel-LDAP-Instanz."
 
-#: lib/pp_admintools/app/mirror_ldap.py:580
+#: lib/pp_admintools/app/mirror_ldap.py:571
 msgid "Entry {!r} is set to be synchronized."
 msgstr "Der Eintrag {!r} wurde auf Synchronisation gesetzt."
 
-#: lib/pp_admintools/app/mirror_ldap.py:592
+#: lib/pp_admintools/app/mirror_ldap.py:583
 msgid "Removed one structural entry in target LDAP instance."
 msgid_plural "Removed {no} structural entries in target LDAP instance."
 msgstr[0] "Es wurde ein struktureller Eintrag in der Ziel-LDAP-Instanz gelöscht."
 msgstr[1] "Es wurden {no} strukturelle Einträge in der Ziel-LDAP-Instanz gelöscht."
 
-#: lib/pp_admintools/app/mirror_ldap.py:597
+#: lib/pp_admintools/app/mirror_ldap.py:588
 msgid "None structural entries in target LDAP instance removed."
 msgstr "Es wurden keine strukturellen Einträge in der Ziel-LDAP-Instanz gelöscht."
 
-#: lib/pp_admintools/app/mirror_ldap.py:605
+#: lib/pp_admintools/app/mirror_ldap.py:596
 msgid "Mirroring structural entries from source to target LDAP instance."
 msgstr "Spiegeln struktureller Einträge von der Quell- in die Ziel-LDAP-Instanz."
 
-#: lib/pp_admintools/app/mirror_ldap.py:626 lib/pp_admintools/app/mirror_ldap.py:730
-#: lib/pp_admintools/app/mirror_ldap.py:831
+#: lib/pp_admintools/app/mirror_ldap.py:617 lib/pp_admintools/app/mirror_ldap.py:721
+#: lib/pp_admintools/app/mirror_ldap.py:822
 msgid "Mirroring entry {!r} ..."
 msgstr "Spiegele Eintrag {!r} …"
 
-#: lib/pp_admintools/app/mirror_ldap.py:630 lib/pp_admintools/app/mirror_ldap.py:734
-#: lib/pp_admintools/app/mirror_ldap.py:835
+#: lib/pp_admintools/app/mirror_ldap.py:621 lib/pp_admintools/app/mirror_ldap.py:725
+#: lib/pp_admintools/app/mirror_ldap.py:826
 msgid "Did not found {!r} in the source LDAP."
 msgstr "Fand {!r} nicht in der Quell-Datenbank."
 
-#: lib/pp_admintools/app/mirror_ldap.py:656 lib/pp_admintools/app/mirror_ldap.py:760
-#: lib/pp_admintools/app/mirror_ldap.py:857
+#: lib/pp_admintools/app/mirror_ldap.py:647 lib/pp_admintools/app/mirror_ldap.py:751
+#: lib/pp_admintools/app/mirror_ldap.py:848
 msgid "Modifying entry {!r} ..."
 msgstr "Ändere Eintrag {!r} …"
 
-#: lib/pp_admintools/app/mirror_ldap.py:657 lib/pp_admintools/app/mirror_ldap.py:761
-#: lib/pp_admintools/app/mirror_ldap.py:858
+#: lib/pp_admintools/app/mirror_ldap.py:648 lib/pp_admintools/app/mirror_ldap.py:752
+#: lib/pp_admintools/app/mirror_ldap.py:849
 msgid "Got modify data for DN {!r}:"
 msgstr "Bekam Änderungsdaten für DN {!r}:"
 
-#: lib/pp_admintools/app/mirror_ldap.py:668 lib/pp_admintools/app/mirror_ldap.py:772
-#: lib/pp_admintools/app/mirror_ldap.py:869
+#: lib/pp_admintools/app/mirror_ldap.py:659 lib/pp_admintools/app/mirror_ldap.py:763
+#: lib/pp_admintools/app/mirror_ldap.py:860
 msgid "No changes necessary on DN {!r}."
 msgstr "Keine Änderungen bei DN {!r} notwendig."
 
-#: lib/pp_admintools/app/mirror_ldap.py:672 lib/pp_admintools/app/mirror_ldap.py:776
-#: lib/pp_admintools/app/mirror_ldap.py:845
+#: lib/pp_admintools/app/mirror_ldap.py:663 lib/pp_admintools/app/mirror_ldap.py:767
+#: lib/pp_admintools/app/mirror_ldap.py:836
 msgid "Target entry {!r} not found."
 msgstr "Der Ziel-Eintrag {!r} wurde nicht gefunden."
 
-#: lib/pp_admintools/app/mirror_ldap.py:675 lib/pp_admintools/app/mirror_ldap.py:779
+#: lib/pp_admintools/app/mirror_ldap.py:666 lib/pp_admintools/app/mirror_ldap.py:770
 msgid "Creating entry {!r} ..."
 msgstr "Erstelle Eintrag {!r} …"
 
-#: lib/pp_admintools/app/mirror_ldap.py:676 lib/pp_admintools/app/mirror_ldap.py:780
+#: lib/pp_admintools/app/mirror_ldap.py:667 lib/pp_admintools/app/mirror_ldap.py:771
 msgid "Got create data for DN {!r}:"
 msgstr "Bekam Erstellungsdaten für DN {!r}:"
 
-#: lib/pp_admintools/app/mirror_ldap.py:693
+#: lib/pp_admintools/app/mirror_ldap.py:684
 msgid "Mirrored one structural entry in target LDAP instance."
 msgid_plural "Mirrored {no} structural entries to target LDAP instance."
 msgstr[0] "Es wurde ein struktureller Eintrag in die Ziel-LDAP-Instanz gespiegelt."
 msgstr[1] "Es wurden {no} strukturelle Einträge in die Ziel-LDAP-Instanz gespiegelt."
 
-#: lib/pp_admintools/app/mirror_ldap.py:698
+#: lib/pp_admintools/app/mirror_ldap.py:689
 msgid "Mirrored no structural entries to target LDAP instance."
 msgstr "Es wurden keine strukturellen Einträge in die Ziel-LDAP-Instanz gespiegelt."
 
-#: lib/pp_admintools/app/mirror_ldap.py:706
+#: lib/pp_admintools/app/mirror_ldap.py:697
 msgid "Mirroring non-structural entries from source to target LDAP instance."
 msgstr "Spiegeln nicht-struktureller Einträge von der Quell- in die Ziel-LDAP-Instanz."
 
-#: lib/pp_admintools/app/mirror_ldap.py:797
+#: lib/pp_admintools/app/mirror_ldap.py:788
 msgid "Mirrored one non-structural entry in target LDAP instance."
 msgid_plural "Mirrored {no} non-structural entries to target LDAP instance."
 msgstr[0] "Es wurde ein nicht-struktureller Eintrag in die Ziel-LDAP-Instanz gespiegelt."
 msgstr[1] "Es wurden {no} nicht-strukturelle Einträge in die Ziel-LDAP-Instanz gespiegelt."
 
-#: lib/pp_admintools/app/mirror_ldap.py:802
+#: lib/pp_admintools/app/mirror_ldap.py:793
 msgid "Mirrored none not-structural entries to target LDAP instance."
 msgstr "Es wurden keine nicht-strukturellen Einträge in die Ziel-LDAP-Instanz gespiegelt."
 
-#: lib/pp_admintools/app/mirror_ldap.py:811
+#: lib/pp_admintools/app/mirror_ldap.py:802
 msgid "Mirroring members in group entries from source to target LDAP instance."
 msgstr "Spiegeln von Mitgliedern in Gruppeneinträgen von der Quell- in die Ziel-LDAP-Instanz."
 
-#: lib/pp_admintools/app/mirror_ldap.py:874
+#: lib/pp_admintools/app/mirror_ldap.py:865
 msgid "Mirrored one group entry in target LDAP instance."
 msgid_plural "Mirrored {no} group entries to target LDAP instance."
 msgstr[0] "Es wurde ein Gruppeneintrag in die Ziel-LDAP-Instanz gespiegelt."
 msgstr[1] "Es wurden {no} Gruppeneinträge in die Ziel-LDAP-Instanz gespiegelt."
 
-#: lib/pp_admintools/app/mirror_ldap.py:879
+#: lib/pp_admintools/app/mirror_ldap.py:870
 msgid "Mirrored no group entries to target LDAP instance."
 msgstr "Es wurden keine Gruppeneinträge in die Ziel-LDAP-Instanz gespiegelt."
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:60
+#: lib/pp_admintools/app/mk_ldap_passwd.py:58
 msgid "Encrypting the password with a defined password schema."
 msgstr "Verschlüsseln eines Passwortes mit einem definierten Passwort-Schema."
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:102
+#: lib/pp_admintools/app/mk_ldap_passwd.py:99
 msgid "The schema (hashing method) to use to hash the new password. Default: {default!r}."
 msgstr ""
 "Das Schema (die Hashing-Methode), das zum Hashen des neuen Passwortes verwendet wird.  Vorgabe: "
 "{default!r}."
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:107
+#: lib/pp_admintools/app/mk_ldap_passwd.py:104
 msgid "TYPE"
 msgstr "TYP"
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:113
+#: lib/pp_admintools/app/mk_ldap_passwd.py:110
 msgid "Like {}"
 msgstr "Wie {}"
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:118 lib/pp_admintools/app/set_ldap_password.py:207
+#: lib/pp_admintools/app/mk_ldap_passwd.py:115 lib/pp_admintools/app/set_ldap_password.py:207
 msgid ""
 "A possible salt to use on hashing the password. Caution: not all hashing schemes are supporting "
 "a salt."
@@ -1638,7 +1638,7 @@ msgstr ""
 "Ein optionaler Salt, der zum Hashen des Passwortes verwendet werden kann. Achtung: nicht alle "
 "Hashing-Schemen unterstützen einen Salt."
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:125 lib/pp_admintools/app/set_ldap_password.py:214
+#: lib/pp_admintools/app/mk_ldap_passwd.py:122 lib/pp_admintools/app/set_ldap_password.py:214
 msgid ""
 "The number of calculation rounds to use on hashing the password. Caution: not all hashing "
 "schemes are supporting calculation rounds."
@@ -1646,7 +1646,7 @@ msgstr ""
 "Die Anzahl der Berechnungsrunden, die zum Hashen des Passwortes verwendet werden können. "
 "Achtung: nicht alle Hashing-Schemen unterstützen Berechnungsrunden."
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:130
+#: lib/pp_admintools/app/mk_ldap_passwd.py:127
 msgid ""
 "The password to hash. If not given and no file desriptor was given, then the password will be "
 "requested on TTY."
@@ -1654,24 +1654,24 @@ msgstr ""
 "Das Passort, das verschlüsselt werden soll. Wenn nicht angegeben, dann wird das Passwort über "
 "die Konsole abgefragt."
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:181
+#: lib/pp_admintools/app/mk_ldap_passwd.py:175
 msgid "Got no password by {}."
 msgstr "Kein Passwort üver {} erhalten."
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:184
+#: lib/pp_admintools/app/mk_ldap_passwd.py:178
 msgid "Password:"
 msgstr "Passwort:"
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:185 lib/pp_admintools/app/set_ldap_password.py:307
+#: lib/pp_admintools/app/mk_ldap_passwd.py:179 lib/pp_admintools/app/set_ldap_password.py:307
 #: lib/pp_admintools/app/set_ldap_password.py:327
 msgid "Repeat password:"
 msgstr "Passwort-Wiederholung:"
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:199
+#: lib/pp_admintools/app/mk_ldap_passwd.py:193
 msgid "Encrypting password with hashing schema '{schema}' ..."
 msgstr "Verschlüsseln des Passwortes mit dem Hashing-Schema '{schema}' …"
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:206 lib/pp_admintools/app/set_ldap_password.py:481
+#: lib/pp_admintools/app/mk_ldap_passwd.py:200 lib/pp_admintools/app/set_ldap_password.py:481
 msgid "Used schema: {!r}."
 msgstr "Verwendetes Schama : {!r}."
 
@@ -1707,87 +1707,87 @@ msgstr "Ermittle Instanz {!r} …"
 msgid "PDNS instance {!r} is not configured."
 msgstr "Die PDNS Instanz {!r} ist nicht konfiguriert."
 
-#: lib/pp_admintools/app/pdns.py:241
+#: lib/pp_admintools/app/pdns.py:239
 msgid "PowerDNS API options"
 msgstr "PowerDNS API-Optionen"
 
-#: lib/pp_admintools/app/pdns.py:250
+#: lib/pp_admintools/app/pdns.py:248
 msgid "Select, which PowerDNS instance to use. Valid values: {v}, default: {d!r}."
 msgstr "Auswahl der zu verwendenden PowerDNS-Instanz. Gültige Werte: {v}, Vorgaben: {d!r}."
 
-#: lib/pp_admintools/app/pdns.py:258 lib/pp_admintools/app/pdns.py:264
-#: lib/pp_admintools/app/pdns.py:270
+#: lib/pp_admintools/app/pdns.py:256 lib/pp_admintools/app/pdns.py:262
+#: lib/pp_admintools/app/pdns.py:268
 msgid "Using the {!r} PowerDNS instance."
 msgstr "Verwenden der {!r}-PowerDNS-Instanz."
 
-#: lib/pp_admintools/app/pdns.py:278
+#: lib/pp_admintools/app/pdns.py:276
 msgid "Which port to connect to PowerDNS API, default: {}."
 msgstr "Welcher Port soll verwendet werden, um sich mit der PowerDNS-API zu verbinden, Vorgabe: {}."
 
-#: lib/pp_admintools/app/pdns.py:282
+#: lib/pp_admintools/app/pdns.py:280
 msgid "The timeout in seconds for the communication with the PowerDNS-API. Default: {} seconds."
 msgstr "Der Timeout in Sekunden für die Kommunikation mit der PowerDNS-API. Vorgabe: {} Sekunden."
 
-#: lib/pp_admintools/app/pdns.py:331
+#: lib/pp_admintools/app/pdns.py:329
 msgid "No path given for{d} [{s}]/{k} in configuration."
 msgstr "Kein Pfad für{d} [{s}]/{k} in der Konfiguration angegegben."
 
-#: lib/pp_admintools/app/pdns.py:338
+#: lib/pp_admintools/app/pdns.py:336
 msgid "Path {p!r} for{d} [{s}]/{k} in configuration must be an absolute path."
 msgstr "Der Pfad {p!r} für{d} [{s}]/{k} in der Konfiguration muss ein absoluter sein."
 
-#: lib/pp_admintools/app/pdns.py:361 lib/pp_admintools/app/pdns.py:404
-#: lib/pp_admintools/app/pdns.py:431
+#: lib/pp_admintools/app/pdns.py:358 lib/pp_admintools/app/pdns.py:396
+#: lib/pp_admintools/app/pdns.py:421
 msgid "Executing {} ..."
 msgstr "Ausführung von {} …"
 
-#: lib/pp_admintools/app/pdns.py:379
+#: lib/pp_admintools/app/pdns.py:376
 msgid "Timeout of {t} seconds too big, at most {m} seconds are allowed."
 msgstr "Der Timeout von {t} Sekunden ist zu groß, es sind höchtens {m} Sekunden erlaubt."
 
-#: lib/pp_admintools/app/pdns.py:383
+#: lib/pp_admintools/app/pdns.py:380
 msgid "A timeout may not be negative."
 msgstr "Ein Timeout darf nicht negativ sein."
 
-#: lib/pp_admintools/app/pdns.py:406
+#: lib/pp_admintools/app/pdns.py:398
 msgid "Setting Loglevel of the requests module to {}."
 msgstr "Setze das Loglevel des Requests-Moduls auf {}."
 
-#: lib/pp_admintools/app/pdns.py:420
+#: lib/pp_admintools/app/pdns.py:411
 msgid "Executing nothing ..."
 msgstr "Führe nicht aus …"
 
-#: lib/pp_admintools/app/pdns.py:441 lib/pp_admintools/app/pdns.py:469
-#: lib/pp_admintools/app/pdns.py:480 lib/pp_admintools/app/pdns.py:490
+#: lib/pp_admintools/app/pdns.py:431 lib/pp_admintools/app/pdns.py:458
+#: lib/pp_admintools/app/pdns.py:469 lib/pp_admintools/app/pdns.py:479
 msgid "The PDNS server object does not exists."
 msgstr "Das PDNS-Server-Objekt existiert nicht."
 
-#: lib/pp_admintools/app/pdns.py:443 lib/pp_admintools/app/pdns.py:471
-#: lib/pp_admintools/app/pdns.py:482 lib/pp_admintools/app/pdns.py:492
+#: lib/pp_admintools/app/pdns.py:433 lib/pp_admintools/app/pdns.py:460
+#: lib/pp_admintools/app/pdns.py:471 lib/pp_admintools/app/pdns.py:481
 msgid "The PDNS server object is not initialized."
 msgstr "Das PDNS-Server-Objekt ist nicht initialisiert."
 
-#: lib/pp_admintools/app/pdns.py:448
+#: lib/pp_admintools/app/pdns.py:438
 msgid "Got a {} during evaluating the PDNS server version from API:"
 msgstr "Habe in {} bei der Ermittlung der PowerDNS-Serverversion erhalten:"
 
-#: lib/pp_admintools/app/pdns.py:500
+#: lib/pp_admintools/app/pdns.py:489
 msgid "Trying to get complete information about zone {!r} ..."
 msgstr "Versuch die kompletten Informationen über die Zone {!r} zu bekommen …"
 
-#: lib/pp_admintools/app/pdns.py:506
+#: lib/pp_admintools/app/pdns.py:495
 msgid "The given zone {} was not found."
 msgstr "Die angegebene Zone {} wurde nicht gefunden."
 
-#: lib/pp_admintools/app/pdns.py:509
+#: lib/pp_admintools/app/pdns.py:498
 msgid "Got a response:"
 msgstr "Erhaltene Antwort:"
 
-#: lib/pp_admintools/app/pdns.py:514
+#: lib/pp_admintools/app/pdns.py:503
 msgid "Zone object:"
 msgstr "Zonen-Objekt:"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:70
+#: lib/pp_admintools/app/remove_ldap_user.py:74
 msgid ""
 "Disables or removes the given users from LDAP. If disabling, then the user will not be really "
 "removed, but disabled by locking the password, setting all status flags to {inact!r}, assigning "
@@ -1799,32 +1799,36 @@ 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:115
+#: lib/pp_admintools/app/remove_ldap_user.py:131
 msgid "Removing options"
 msgstr "Lösch-Optionen"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:118
+#: lib/pp_admintools/app/remove_ldap_user.py:134
 msgid "This is the default."
 msgstr "Dieses ist die Vorgabe."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:119
+#: lib/pp_admintools/app/remove_ldap_user.py:135
 msgid "This is mutually exclusive to {!r}."
 msgstr "Das schließt sich mit {!r} gegenseitig aus."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:121
+#: lib/pp_admintools/app/remove_ldap_user.py:137
 msgid "Deactivating the user instead of removing it."
 msgstr "Deaktivieren der Nutzer anstatt Löschung."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:128
+#: lib/pp_admintools/app/remove_ldap_user.py:144
 msgid "Removing the user from LDAP."
 msgstr "Löschen der übergebenen Nutzer im LDAP."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:136 lib/pp_admintools/app/set_ldap_password.py:200
+#: lib/pp_admintools/app/remove_ldap_user.py:151
+msgid "Don't remove all mail addresses of the users to remove from all mailing lists."
+msgstr "Kein Löschen aller Mailadressen der zu löschenden Nutzer aus allen Mailing-Listen."
+
+#: lib/pp_admintools/app/remove_ldap_user.py:159 lib/pp_admintools/app/set_ldap_password.py:200
 #: lib/pp_admintools/app/set_ldap_password.py:203
 msgid "USER"
 msgstr "NUTZER"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:137
+#: lib/pp_admintools/app/remove_ldap_user.py:160
 msgid ""
 "The user, which should be deactivated or removed. They may be given by their Uid (the "
 "alphanumeric POSIX name), their mail address or their LDAP DN (be aware, that this may be "
@@ -1835,156 +1839,164 @@ msgstr ""
 "angegeben werden. Bitte beachten, dass sich letzterer bei den verschiedenen LDAP-Instanzen "
 "unterscheiden kann."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:161
+#: lib/pp_admintools/app/remove_ldap_user.py:184
 msgid "No users to remove given."
 msgstr "Kein Nutzername zum Löschen angegeben."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:177
+#: lib/pp_admintools/app/remove_ldap_user.py:203
 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:184
+#: lib/pp_admintools/app/remove_ldap_user.py:210
 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:192
+#: lib/pp_admintools/app/remove_ldap_user.py:218
 msgid "LDAP instance {!r} has only readonly access."
 msgstr "Die LDAP-Instanz {!r} besitzt nur Lesezugriffsrechte."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:197
+#: lib/pp_admintools/app/remove_ldap_user.py:223
 msgid "No admin access to LDAP instance {!r}."
 msgstr "Keine Admin-Zugriffsrechte bei LDAP-Instanz {!r}."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:214
+#: lib/pp_admintools/app/remove_ldap_user.py:240
 msgid "All given users were not found in any LDAP instance."
 msgstr "Alle übergebenen Nutzer wurden in keiner der LDAP-Instanzen gefunden."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:219
+#: lib/pp_admintools/app/remove_ldap_user.py:245
 msgid "Evaluated DNs to remove:"
 msgstr "Zum Löschen ermittelte DNs:"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:228
+#: lib/pp_admintools/app/remove_ldap_user.py:254
 msgid "Start disabling user entries in:"
 msgstr "Beginne Deaktivierung der Nutzereinträge in:"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:230
+#: lib/pp_admintools/app/remove_ldap_user.py:256
 msgid "Start removing user entries in:"
 msgstr "Beginne Löschung der Nutzereinträge in:"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:234
+#: lib/pp_admintools/app/remove_ldap_user.py:260
 msgid "Start disabling user entries ..."
 msgstr "Beginne Deaktivierung der Nutzereinträge …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:236
+#: lib/pp_admintools/app/remove_ldap_user.py:262
 msgid "Start removing user entries ..."
 msgstr "Beginne Löschung der Nutzereinträge …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:251
+#: lib/pp_admintools/app/remove_ldap_user.py:277
 msgid "Do you really want to deactivate the following users?"
 msgstr "Möchten Sie die folgenden Nutzer wirklich deaktivieren?"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:253
+#: lib/pp_admintools/app/remove_ldap_user.py:279
 msgid "Do you really want to remove the following users?"
 msgstr "Möchten Sie die folgenden Nutzer wirklich löschen?"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:279
+#: lib/pp_admintools/app/remove_ldap_user.py:305
 msgid "Deactivate [{yes}/{no}]?"
 msgstr "Deaktivieren [{yes}/{no}]?"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:281
+#: lib/pp_admintools/app/remove_ldap_user.py:307
 msgid "Remove [{yes}/{no}]?"
 msgstr "Löschen [{yes}/{no}]?"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:289
+#: lib/pp_admintools/app/remove_ldap_user.py:315
 msgid "Evaluating DNs of the user {!r} to remove ..."
 msgstr "Ermitteln der DNs des Nutzers {!r} zum Löschen …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:303 lib/pp_admintools/app/set_ldap_password.py:434
+#: lib/pp_admintools/app/remove_ldap_user.py:329 lib/pp_admintools/app/set_ldap_password.py:434
 msgid "Got DN {dn!r} for user {user!r} in LDAP instance {inst}."
 msgstr "Habe DN {dn!r} für den Nutzer {user!r} in der LDAP-Instanz {inst} ermittelt."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:310 lib/pp_admintools/app/set_ldap_password.py:439
+#: lib/pp_admintools/app/remove_ldap_user.py:336 lib/pp_admintools/app/set_ldap_password.py:439
 msgid "Found {nr} entries for user {u!r} in LDAP instance {i}."
 msgstr "Fand {nr} Einträge für den Nutzer {u!r} in der LDAP-Instanz {i}."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:322 lib/pp_admintools/app/set_ldap_password.py:453
+#: lib/pp_admintools/app/remove_ldap_user.py:348 lib/pp_admintools/app/set_ldap_password.py:453
 msgid "Did not found user {user!r} in LDAP instance {inst}."
 msgstr "Der Nutzer {user!r} wurde nicht in der LDAP-Instanz {inst} gefunden."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:331
+#: lib/pp_admintools/app/remove_ldap_user.py:357
 msgid "Deactivating all given users from {} ..."
 msgstr "Deaktivieren aller übergebenen Nutzer in {} …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:333
+#: lib/pp_admintools/app/remove_ldap_user.py:359
 msgid "Removing all given users from {} ..."
 msgstr "Lösche alle übergebenen Nutzer in {} …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:348
+#: lib/pp_admintools/app/remove_ldap_user.py:374
 msgid "Deactivating user {dn!r} from {inst} ..."
 msgstr "Deaktivieren von Nutzer {dn!r} in {inst} …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:351
+#: lib/pp_admintools/app/remove_ldap_user.py:377
 msgid "Removing user {dn!r} from {inst} ..."
 msgstr "Lösche Nutzer {dn!r} in {inst} …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:357
+#: lib/pp_admintools/app/remove_ldap_user.py:383
 msgid "Attributes of {!r}:"
 msgstr "Attribute von {!r}:"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:378
+#: lib/pp_admintools/app/remove_ldap_user.py:407
 msgid "{c} on removing user {dn!r}: {e}"
 msgstr "{c} beim Löschen des Nutzers {dn!r}: {e}"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:384
+#: lib/pp_admintools/app/remove_ldap_user.py:413
 msgid "User {dn!r} successful deactivated on {inst}."
 msgstr "Der Nutzer {dn!r} wurde erfolgreich auf {inst} deaktiviert."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:387
+#: lib/pp_admintools/app/remove_ldap_user.py:416
 msgid "User {dn!r} successful removed from {inst}."
 msgstr "Der Nutzer {dn!r} wurde erfolgreich von {inst} gelöscht."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:413
+#: lib/pp_admintools/app/remove_ldap_user.py:442
 msgid "Updating user info for {dn!r} on {inst} ..."
 msgstr "Aktualisiere die Nutzerinformationenn für {dn!r} in {inst} …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:418 lib/pp_admintools/app/set_ldap_password.py:519
+#: lib/pp_admintools/app/remove_ldap_user.py:447 lib/pp_admintools/app/set_ldap_password.py:519
 msgid "{c} on deactivating user {dn!r}: {e}"
 msgstr "{c} beim Deaktivieren des Nutzers {dn!r}: {e}"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:434
+#: lib/pp_admintools/app/remove_ldap_user.py:463
 msgid "Did not found any group memberships of {dn!r} in {inst}."
 msgstr "Keine Gruppenmitgliedschaften von {dn!r} in {inst} gefunden."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:440 lib/pp_admintools/app/remove_ldap_user.py:467
-#: lib/pp_admintools/app/remove_ldap_user.py:498 lib/pp_admintools/app/remove_ldap_user.py:529
+#: lib/pp_admintools/app/remove_ldap_user.py:469 lib/pp_admintools/app/remove_ldap_user.py:496
+#: lib/pp_admintools/app/remove_ldap_user.py:527 lib/pp_admintools/app/remove_ldap_user.py:558
 msgid "Removing user {u!r} from group {g!r} ..."
 msgstr "Lösche Nutzer {u!r} aus der Gruppe {g!r} …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:445 lib/pp_admintools/app/remove_ldap_user.py:472
-#: 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:474 lib/pp_admintools/app/remove_ldap_user.py:501
+#: lib/pp_admintools/app/remove_ldap_user.py:532 lib/pp_admintools/app/remove_ldap_user.py:563
 msgid "{c} on removing user {dn!r} from group {g!r}: {e}"
 msgstr "{c} beim Löschen des Nutzers {dn!r} von der Gruppe {g!r}: {e}"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:461
+#: lib/pp_admintools/app/remove_ldap_user.py:490
 msgid "Did not found any unique group memberships of {dn!r} in {inst}."
 msgstr "Keine eindeutigen Gruppenmitgliedschaften von {dn!r} in {inst} gefunden."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:485
+#: lib/pp_admintools/app/remove_ldap_user.py:514
 msgid "Deleting user {uid!r} from all POSIX groups in {inst}."
 msgstr "Lösche Nutzer {uid!r} aus allen POSIX-Gruppen in {inst} …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:492
+#: lib/pp_admintools/app/remove_ldap_user.py:521
 msgid "Did not found any POSIX group memberships of {uid!r} in {inst}."
 msgstr "Keine POSIX-Gruppenmitgliedschaften von {uid!r} in {inst} gefunden."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:516
+#: lib/pp_admintools/app/remove_ldap_user.py:545
 msgid "Deleting user {uid!r} from all sudo groups in {inst}."
 msgstr "Lösche Nutzer {uid!r} aus allen sudo-Gruppen in {inst}."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:523
+#: lib/pp_admintools/app/remove_ldap_user.py:552
 msgid "Did not found any sudo group memberships of {uid!r} in {inst}."
 msgstr "Keine sudo-Gruppenmitgliedschaften von {uid!r} in {inst} gefunden."
 
+#: lib/pp_admintools/app/remove_ldap_user.py:587
+msgid "No mail addresses found to remove for user {!r}."
+msgstr "Keine Mailadressen des Nutzers {!r} zum Löschen efunden."
+
+#: lib/pp_admintools/app/remove_ldap_user.py:591
+msgid "Trying to remove the following mail addresses from mailing lists:"
+msgstr "Versuche die folgenden Mailadressen aus Mailinglisten zu löschen:"
+
 #: lib/pp_admintools/app/set_ldap_password.py:90
 msgid ""
 "Changing the password of the given user. If no user was given, then {app} tries to use the name "
index 08ed39971e0ba7dcb1536d1a15a68c22b3eb8188..cff517576516e4a5ad92c6e4e4682e3bced4cd04 100644 (file)
@@ -5,9 +5,9 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: pp_admintools 0.8.8\n"
+"Project-Id-Version: pp_admintools 0.9.0\n"
 "Report-Msgid-Bugs-To: frank.brehm@pixelpark.com\n"
-"POT-Creation-Date: 2023-05-31 10:50+0200\n"
+"POT-Creation-Date: 2023-06-12 11:53+0200\n"
 "PO-Revision-Date: 2023-05-31 10:53+0200\n"
 "Last-Translator: Frank Brehm <frank.brehm@pixelpark.com>\n"
 "Language: en_US\n"
@@ -41,7 +41,7 @@ msgid ""
 msgstr ""
 
 #: lib/pp_admintools/app/barracuda_sync.py:149 lib/pp_admintools/app/ldap.py:438
-#: lib/pp_admintools/app/mirror_ldap.py:123 lib/pp_admintools/app/pdns.py:286
+#: lib/pp_admintools/app/mirror_ldap.py:118 lib/pp_admintools/app/pdns.py:284
 msgid "SECONDS"
 msgstr ""
 
@@ -354,7 +354,7 @@ msgstr[1] ""
 msgid "Get all necessary data from LDAP and static virtual aliases table ..."
 msgstr "Get all necessary data from LDAP and static virtual aliases table …"
 
-#: lib/pp_admintools/app/barracuda_sync.py:972 lib/pp_admintools/app/mirror_ldap.py:317
+#: lib/pp_admintools/app/barracuda_sync.py:972 lib/pp_admintools/app/mirror_ldap.py:311
 msgid "Finished."
 msgstr ""
 
@@ -384,41 +384,41 @@ msgstr ""
 msgid "Start checking all DN-like attributes in in LDAP instance {inst!r} ({url}) ..."
 msgstr "tart checking all DN-like attributes in in LDAP instance {inst!r} ({url}) …"
 
-#: lib/pp_admintools/app/check_ldap_dn_attributes.py:155
+#: lib/pp_admintools/app/check_ldap_dn_attributes.py:154
 msgid "Found one entry to check."
 msgid_plural "Found {} entries to check."
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/pp_admintools/app/check_ldap_dn_attributes.py:159
+#: lib/pp_admintools/app/check_ldap_dn_attributes.py:158
 msgid "Found no to check."
 msgstr ""
 
-#: lib/pp_admintools/app/check_ldap_dn_attributes.py:179
+#: lib/pp_admintools/app/check_ldap_dn_attributes.py:178
 msgid "Got an inconsistent entry."
 msgid_plural "Got {} inconsistent entries."
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/pp_admintools/app/check_ldap_dn_attributes.py:182
+#: lib/pp_admintools/app/check_ldap_dn_attributes.py:181
 msgid "There is one inconsistent attribute."
 msgid_plural "There are {} inconsistent attributes."
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/pp_admintools/app/check_ldap_dn_attributes.py:187
+#: lib/pp_admintools/app/check_ldap_dn_attributes.py:186
 msgid "Writing export file {!r} ..."
 msgstr "Writing export file {!r} …"
 
-#: lib/pp_admintools/app/check_ldap_dn_attributes.py:194
+#: lib/pp_admintools/app/check_ldap_dn_attributes.py:193
 msgid "Did not found any inconsistent entries."
 msgstr ""
 
-#: lib/pp_admintools/app/check_ldap_dn_attributes.py:215
+#: lib/pp_admintools/app/check_ldap_dn_attributes.py:214
 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:220
+#: lib/pp_admintools/app/check_ldap_dn_attributes.py:219
 msgid "Got attributes:"
 msgstr ""
 
@@ -426,7 +426,7 @@ msgstr ""
 msgid "Generation of the BIND9 configuration file for slave zones."
 msgstr ""
 
-#: lib/pp_admintools/app/dns_deploy_zones.py:250 lib/pp_admintools/app/mk_ldap_passwd.py:89
+#: lib/pp_admintools/app/dns_deploy_zones.py:250 lib/pp_admintools/app/mk_ldap_passwd.py:86
 #: lib/pp_admintools/app/set_ldap_password.py:124
 msgid "Options for {}"
 msgstr ""
@@ -518,7 +518,7 @@ msgstr "Trying to get all keys from named.conf …"
 #: lib/pp_admintools/app/dns_deploy_zones.py:428 lib/pp_admintools/app/dns_deploy_zones.py:782
 #: lib/pp_admintools/app/dns_deploy_zones.py:818 lib/pp_admintools/app/dns_deploy_zones.py:850
 #: lib/pp_admintools/app/dns_deploy_zones.py:885 lib/pp_admintools/app/dns_deploy_zones.py:920
-#: lib/pp_admintools/app/mail.py:328
+#: lib/pp_admintools/app/mail.py:317
 msgid "Executing: {}"
 msgstr ""
 
@@ -680,25 +680,25 @@ msgstr "Restarting {} …"
 msgid "Reloading {} ..."
 msgstr "Reloading {} …"
 
-#: lib/pp_admintools/app/duplicate_attribs.py:58
+#: lib/pp_admintools/app/duplicate_attribs.py:61
 msgid "Evaluating all LDAP entries, which are using duplicate attributes, which should be unique."
 msgstr ""
 
-#: lib/pp_admintools/app/duplicate_attribs.py:71
+#: lib/pp_admintools/app/duplicate_attribs.py:74
 msgid "Evaluation options"
 msgstr ""
 
-#: lib/pp_admintools/app/duplicate_attribs.py:74 lib/pp_admintools/app/duplicate_attribs.py:82
+#: lib/pp_admintools/app/duplicate_attribs.py:77 lib/pp_admintools/app/duplicate_attribs.py:85
 msgid "ATTRIBUTE"
 msgstr ""
 
-#: lib/pp_admintools/app/duplicate_attribs.py:75
+#: lib/pp_admintools/app/duplicate_attribs.py:78
 msgid ""
 "All attribute types, which should be unique over the complete LDAP tree. Per default the "
 "following attribute types should be unique:"
 msgstr ""
 
-#: lib/pp_admintools/app/duplicate_attribs.py:83
+#: lib/pp_admintools/app/duplicate_attribs.py:86
 msgid ""
 "All attribute types, where their uniqueness depends on an additional LDAP filter. For instance, "
 "the attribute 'gidNumber' should be unique for all entries, which are using the objectClass "
@@ -770,8 +770,8 @@ msgstr ""
 msgid "Options fo LDAP connections"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:335 lib/pp_admintools/app/mirror_ldap.py:244
-#: lib/pp_admintools/app/remove_ldap_user.py:283 lib/pp_admintools/app/set_ldap_password.py:492
+#: lib/pp_admintools/app/ldap.py:335 lib/pp_admintools/app/mirror_ldap.py:238
+#: lib/pp_admintools/app/remove_ldap_user.py:309 lib/pp_admintools/app/set_ldap_password.py:492
 msgid "No"
 msgstr ""
 
@@ -791,8 +791,8 @@ msgstr ""
 msgid "Use ldaps to connect to the LDAP server. Default: {}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:356 lib/pp_admintools/app/mail.py:261
-#: lib/pp_admintools/app/pdns.py:275
+#: lib/pp_admintools/app/ldap.py:356 lib/pp_admintools/app/mail.py:250
+#: lib/pp_admintools/app/pdns.py:273
 msgid "PORT"
 msgstr ""
 
@@ -808,7 +808,7 @@ msgstr ""
 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:134
+#: lib/pp_admintools/app/ldap.py:379 lib/pp_admintools/app/mk_ldap_passwd.py:131
 #: lib/pp_admintools/app/set_ldap_password.py:130 lib/pp_admintools/app/set_ldap_password.py:131
 #: lib/pp_admintools/app/set_ldap_password.py:148 lib/pp_admintools/app/set_ldap_password.py:151
 msgid "PASSWORD"
@@ -833,7 +833,7 @@ msgstr ""
 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:249
+#: lib/pp_admintools/app/ldap.py:401 lib/pp_admintools/app/pdns.py:247
 msgid "INSTANCE"
 msgstr ""
 
@@ -995,7 +995,7 @@ msgstr "Trying to evaluate DN of user {u!r} as a LDAP DN …"
 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:958 lib/pp_admintools/app/remove_ldap_user.py:293
+#: lib/pp_admintools/app/ldap.py:958 lib/pp_admintools/app/remove_ldap_user.py:319
 msgid "Empty user given."
 msgstr ""
 
@@ -1099,9 +1099,9 @@ msgid "Modification of {dn!r} was NOT successfull - {c}: {e}"
 msgstr ""
 
 #: lib/pp_admintools/app/ldap.py:1312 lib/pp_admintools/app/ldap.py:1331
-#: lib/pp_admintools/app/remove_ldap_user.py:420 lib/pp_admintools/app/remove_ldap_user.py:447
-#: lib/pp_admintools/app/remove_ldap_user.py:474 lib/pp_admintools/app/remove_ldap_user.py:505
-#: lib/pp_admintools/app/remove_ldap_user.py:536 lib/pp_admintools/app/set_ldap_password.py:521
+#: 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/set_ldap_password.py:521
 msgid "Changes:"
 msgstr ""
 
@@ -1174,88 +1174,88 @@ msgstr ""
 msgid "Values to removed from attribute {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/mail.py:103
+#: lib/pp_admintools/app/mail.py:95
 msgid "Got invalid SMTP port number {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/mail.py:121
+#: lib/pp_admintools/app/mail.py:113
 msgid "Got invalid mail from address {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/mail.py:144
+#: lib/pp_admintools/app/mail.py:136
 msgid "Got invalid recipient mail addresses:"
 msgstr ""
 
-#: lib/pp_admintools/app/mail.py:172
+#: lib/pp_admintools/app/mail.py:164
 msgid "Got invalid cc mail addresses:"
 msgstr ""
 
-#: lib/pp_admintools/app/mail.py:187
+#: lib/pp_admintools/app/mail.py:179
 msgid "Got invalid reply mail address {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/mail.py:201
+#: lib/pp_admintools/app/mail.py:190
 msgid "Mailing options"
 msgstr ""
 
-#: lib/pp_admintools/app/mail.py:216 lib/pp_admintools/app/mail.py:224
-#: lib/pp_admintools/app/mail.py:230 lib/pp_admintools/app/mail.py:236
+#: lib/pp_admintools/app/mail.py:205 lib/pp_admintools/app/mail.py:213
+#: lib/pp_admintools/app/mail.py:219 lib/pp_admintools/app/mail.py:225
 msgid "ADDRESS"
 msgstr ""
 
-#: lib/pp_admintools/app/mail.py:217
+#: lib/pp_admintools/app/mail.py:206
 msgid "Sender mail address for mails generated by this script. Default: {!r}"
 msgstr ""
 
-#: lib/pp_admintools/app/mail.py:225
+#: lib/pp_admintools/app/mail.py:214
 msgid "Mail addresses of all recipients for mails generated by this script."
 msgstr ""
 
-#: lib/pp_admintools/app/mail.py:231
+#: lib/pp_admintools/app/mail.py:220
 msgid "Mail addresses of all CC recipients for mails generated by this script."
 msgstr ""
 
-#: lib/pp_admintools/app/mail.py:237
+#: lib/pp_admintools/app/mail.py:226
 msgid "Reply mail address for mails generated by this script."
 msgstr ""
 
-#: lib/pp_admintools/app/mail.py:244
+#: lib/pp_admintools/app/mail.py:233
 msgid "METHOD"
 msgstr ""
 
-#: lib/pp_admintools/app/mail.py:245
+#: lib/pp_admintools/app/mail.py:234
 msgid "Method for sending the mails generated by this script. Valid values: {v}, default: {d!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/mail.py:253
+#: lib/pp_admintools/app/mail.py:242
 msgid "SERVER"
 msgstr ""
 
-#: lib/pp_admintools/app/mail.py:254
+#: lib/pp_admintools/app/mail.py:243
 msgid ""
 "Mail server for submitting generated by this script if the mail method of this script is 'smtp'."
 " Default: {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/mail.py:263
+#: lib/pp_admintools/app/mail.py:252
 msgid ""
 "The port to use for submitting generated by this script if the mail method of this script is "
 "'smtp'. Default: {}."
 msgstr ""
 
-#: lib/pp_admintools/app/mail.py:272
+#: lib/pp_admintools/app/mail.py:261
 msgid "Got command line arguments:"
 msgstr ""
 
-#: lib/pp_admintools/app/mail.py:289
+#: lib/pp_admintools/app/mail.py:278
 msgid "Mail to send:"
 msgstr ""
 
-#: lib/pp_admintools/app/mail.py:322
+#: lib/pp_admintools/app/mail.py:311
 msgid "Did not found sendmail executable."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:101
+#: lib/pp_admintools/app/mirror_ldap.py:96
 msgid ""
 "Mirror the content of a complete LDAP instance (server or cluster) to another instance. This "
 "will be done first by clearing the target instance, then copying structural entries from the "
@@ -1264,350 +1264,350 @@ msgid ""
 "values."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:109
+#: lib/pp_admintools/app/mirror_ldap.py:104
 msgid "Do not execute a countdown before starting the application."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:120
+#: lib/pp_admintools/app/mirror_ldap.py:115
 msgid "Miroring options"
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:125
+#: lib/pp_admintools/app/mirror_ldap.py:120
 msgid ""
 "Number of seconds to wait after each write operation. Given as a float value, and if set to "
 "zero, there is no waiting after a write. (default: {:.1f})"
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:132 lib/pp_admintools/app/mk_ldap_passwd.py:124
+#: lib/pp_admintools/app/mirror_ldap.py:127 lib/pp_admintools/app/mk_ldap_passwd.py:121
 msgid "NUMBER"
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:134
+#: lib/pp_admintools/app/mirror_ldap.py:129
 msgid "Limiting the mirroring to the first NUMBER entries. This option is valid only in simulation mode."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:141
+#: lib/pp_admintools/app/mirror_ldap.py:136
 msgid "Mirror only structural entries (entries with childs)."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:163
+#: lib/pp_admintools/app/mirror_ldap.py:157
 msgid "Limiting the number of entries for mirroring to {} entries."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:167
+#: lib/pp_admintools/app/mirror_ldap.py:161
 msgid "Limition the number of entries for mirroring may only be done in simulation mode."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:184
+#: lib/pp_admintools/app/mirror_ldap.py:178
 msgid "Did not found {tgt!r} in {e}:"
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:196
+#: lib/pp_admintools/app/mirror_ldap.py:190
 msgid "Checking mirror source instance for target instance {!r} ..."
 msgstr "Checking mirror source instance for target instance {!r} …"
 
-#: lib/pp_admintools/app/mirror_ldap.py:200
+#: lib/pp_admintools/app/mirror_ldap.py:194
 msgid "Got {!r} as the mirror source instance."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:203 lib/pp_admintools/app/mirror_ldap.py:212
-#: lib/pp_admintools/app/mirror_ldap.py:223
+#: lib/pp_admintools/app/mirror_ldap.py:197 lib/pp_admintools/app/mirror_ldap.py:206
+#: lib/pp_admintools/app/mirror_ldap.py:217
 msgid "Error in configuration:"
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:204
+#: lib/pp_admintools/app/mirror_ldap.py:198
 msgid "the source LDAP instance {src!r} for mirroring to {tgt!r} does not exists."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:213
+#: lib/pp_admintools/app/mirror_ldap.py:207
 msgid "the source LDAP instance {src!r} must not be the same like the target instance."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:224
+#: lib/pp_admintools/app/mirror_ldap.py:218
 msgid ""
 "the base DN {src_dn!r} of the source instance {src!r} does not match the base DN {tgt_dn!r} of "
 "the target instance {tgt!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:240
+#: lib/pp_admintools/app/mirror_ldap.py:234
 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:244 lib/pp_admintools/app/remove_ldap_user.py:283
+#: lib/pp_admintools/app/mirror_ldap.py:238 lib/pp_admintools/app/remove_ldap_user.py:309
 #: lib/pp_admintools/app/set_ldap_password.py:492
 msgid "yes"
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:250 lib/pp_admintools/app/mirror_ldap.py:312
+#: lib/pp_admintools/app/mirror_ldap.py:244 lib/pp_admintools/app/mirror_ldap.py:306
 msgid "Interrupted on demand."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:255
+#: lib/pp_admintools/app/mirror_ldap.py:249
 msgid "Start mirroring LDAP instance {src!r} ({src_url}) to instance {tgt!r} ({tgt_url}) ..."
 msgstr "Start mirroring LDAP instance {src!r} ({src_url}) to instance {tgt!r} ({tgt_url}) …"
 
-#: lib/pp_admintools/app/mirror_ldap.py:276 lib/pp_admintools/app/mirror_ldap.py:294
+#: lib/pp_admintools/app/mirror_ldap.py:270 lib/pp_admintools/app/mirror_ldap.py:288
 msgid "{:>5} entry deleted."
 msgid_plural "{:>5} entries deleted."
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:279 lib/pp_admintools/app/mirror_ldap.py:299
+#: lib/pp_admintools/app/mirror_ldap.py:273 lib/pp_admintools/app/mirror_ldap.py:293
 msgid "{:>5} entry updated."
 msgid_plural "{:>5} entries updated."
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:282 lib/pp_admintools/app/mirror_ldap.py:304
+#: lib/pp_admintools/app/mirror_ldap.py:276 lib/pp_admintools/app/mirror_ldap.py:298
 msgid "{:>5} entry created."
 msgid_plural "{:>5} entries created."
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:289
+#: lib/pp_admintools/app/mirror_ldap.py:283
 msgid "Changes total:"
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:312
+#: lib/pp_admintools/app/mirror_ldap.py:306
 msgid "Got a {}:"
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:325
+#: lib/pp_admintools/app/mirror_ldap.py:318
 msgid "Trying to get DNs of all entries in the source LDAP instance."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:338 lib/pp_admintools/app/mirror_ldap.py:393
+#: lib/pp_admintools/app/mirror_ldap.py:331 lib/pp_admintools/app/mirror_ldap.py:385
 msgid "Found DNs in instance {!r}:"
 msgstr "Found DNs in instance {!r}:"
 
-#: lib/pp_admintools/app/mirror_ldap.py:355
+#: lib/pp_admintools/app/mirror_ldap.py:348
 msgid "Found total one entry in source LDAP"
 msgid_plural "Found {no} entries in source LDAP"
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:359
+#: lib/pp_admintools/app/mirror_ldap.py:352
 msgid "one structural entry in source LDAP"
 msgid_plural "{no} structural entries in source LDAP"
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:363
+#: lib/pp_admintools/app/mirror_ldap.py:356
 msgid "one non-structural entry in source LDAP."
 msgid_plural "{no} non-structural entries in source LDAP."
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:371 lib/pp_admintools/app/mirror_ldap.py:426
+#: lib/pp_admintools/app/mirror_ldap.py:364 lib/pp_admintools/app/mirror_ldap.py:418
 msgid "Found structural DNs in instance {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:380
+#: lib/pp_admintools/app/mirror_ldap.py:372
 msgid "Trying to get DNs of all entries in the target LDAP instance."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:410
+#: lib/pp_admintools/app/mirror_ldap.py:402
 msgid "Found total one entry in target LDAP"
 msgid_plural "Found {no} entries in target LDAP"
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:414
+#: lib/pp_admintools/app/mirror_ldap.py:406
 msgid "one structural entry in target LDAP"
 msgid_plural "{no} structural entries in target LDAP"
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:418
+#: lib/pp_admintools/app/mirror_ldap.py:410
 msgid "one non-structural entry in target LDAP."
 msgid_plural "{no} non-structural entries in target LDAP."
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:434
+#: lib/pp_admintools/app/mirror_ldap.py:425
 msgid ""
 "Evaluating DNs of all target entries, which have to be synchronized, instead of removing and "
 "recreating them."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:492
+#: lib/pp_admintools/app/mirror_ldap.py:483
 msgid "Removing non structural entries from target LDAP instance."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:508 lib/pp_admintools/app/mirror_ldap.py:569
+#: lib/pp_admintools/app/mirror_ldap.py:499 lib/pp_admintools/app/mirror_ldap.py:560
 msgid "Entry {!r} exists on the source instance, will not be removed."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:514
+#: lib/pp_admintools/app/mirror_ldap.py:505
 msgid "Entry {!r} is a structural entry, will not be removed at this point."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:521 lib/pp_admintools/app/mirror_ldap.py:575
-#: lib/pp_admintools/app/mirror_ldap.py:622 lib/pp_admintools/app/mirror_ldap.py:726
-#: lib/pp_admintools/app/mirror_ldap.py:825
+#: lib/pp_admintools/app/mirror_ldap.py:512 lib/pp_admintools/app/mirror_ldap.py:566
+#: lib/pp_admintools/app/mirror_ldap.py:613 lib/pp_admintools/app/mirror_ldap.py:717
+#: lib/pp_admintools/app/mirror_ldap.py:816
 msgid "Entry {!r} is set to be kept."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:533
+#: lib/pp_admintools/app/mirror_ldap.py:524
 msgid "Removed one not structural entry in target LDAP instance."
 msgid_plural "Removed {no} not structural entries in target LDAP instance."
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:538
+#: lib/pp_admintools/app/mirror_ldap.py:529
 msgid "None not structural entries in target LDAP instance removed."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:552
+#: lib/pp_admintools/app/mirror_ldap.py:543
 msgid "Removing structural entries from target LDAP instance."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:580
+#: lib/pp_admintools/app/mirror_ldap.py:571
 msgid "Entry {!r} is set to be synchronized."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:592
+#: lib/pp_admintools/app/mirror_ldap.py:583
 msgid "Removed one structural entry in target LDAP instance."
 msgid_plural "Removed {no} structural entries in target LDAP instance."
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:597
+#: lib/pp_admintools/app/mirror_ldap.py:588
 msgid "None structural entries in target LDAP instance removed."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:605
+#: lib/pp_admintools/app/mirror_ldap.py:596
 msgid "Mirroring structural entries from source to target LDAP instance."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:626 lib/pp_admintools/app/mirror_ldap.py:730
-#: lib/pp_admintools/app/mirror_ldap.py:831
+#: lib/pp_admintools/app/mirror_ldap.py:617 lib/pp_admintools/app/mirror_ldap.py:721
+#: lib/pp_admintools/app/mirror_ldap.py:822
 msgid "Mirroring entry {!r} ..."
 msgstr "Mirroring entry {!r} …"
 
-#: lib/pp_admintools/app/mirror_ldap.py:630 lib/pp_admintools/app/mirror_ldap.py:734
-#: lib/pp_admintools/app/mirror_ldap.py:835
+#: lib/pp_admintools/app/mirror_ldap.py:621 lib/pp_admintools/app/mirror_ldap.py:725
+#: lib/pp_admintools/app/mirror_ldap.py:826
 msgid "Did not found {!r} in the source LDAP."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:656 lib/pp_admintools/app/mirror_ldap.py:760
-#: lib/pp_admintools/app/mirror_ldap.py:857
+#: lib/pp_admintools/app/mirror_ldap.py:647 lib/pp_admintools/app/mirror_ldap.py:751
+#: lib/pp_admintools/app/mirror_ldap.py:848
 msgid "Modifying entry {!r} ..."
 msgstr "Modifying entry {!r} …"
 
-#: lib/pp_admintools/app/mirror_ldap.py:657 lib/pp_admintools/app/mirror_ldap.py:761
-#: lib/pp_admintools/app/mirror_ldap.py:858
+#: lib/pp_admintools/app/mirror_ldap.py:648 lib/pp_admintools/app/mirror_ldap.py:752
+#: lib/pp_admintools/app/mirror_ldap.py:849
 msgid "Got modify data for DN {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:668 lib/pp_admintools/app/mirror_ldap.py:772
-#: lib/pp_admintools/app/mirror_ldap.py:869
+#: lib/pp_admintools/app/mirror_ldap.py:659 lib/pp_admintools/app/mirror_ldap.py:763
+#: lib/pp_admintools/app/mirror_ldap.py:860
 msgid "No changes necessary on DN {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:672 lib/pp_admintools/app/mirror_ldap.py:776
-#: lib/pp_admintools/app/mirror_ldap.py:845
+#: lib/pp_admintools/app/mirror_ldap.py:663 lib/pp_admintools/app/mirror_ldap.py:767
+#: lib/pp_admintools/app/mirror_ldap.py:836
 msgid "Target entry {!r} not found."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:675 lib/pp_admintools/app/mirror_ldap.py:779
+#: lib/pp_admintools/app/mirror_ldap.py:666 lib/pp_admintools/app/mirror_ldap.py:770
 msgid "Creating entry {!r} ..."
 msgstr "Creating entry {!r} …"
 
-#: lib/pp_admintools/app/mirror_ldap.py:676 lib/pp_admintools/app/mirror_ldap.py:780
+#: lib/pp_admintools/app/mirror_ldap.py:667 lib/pp_admintools/app/mirror_ldap.py:771
 msgid "Got create data for DN {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:693
+#: lib/pp_admintools/app/mirror_ldap.py:684
 msgid "Mirrored one structural entry in target LDAP instance."
 msgid_plural "Mirrored {no} structural entries to target LDAP instance."
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:698
+#: lib/pp_admintools/app/mirror_ldap.py:689
 msgid "Mirrored no structural entries to target LDAP instance."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:706
+#: lib/pp_admintools/app/mirror_ldap.py:697
 msgid "Mirroring non-structural entries from source to target LDAP instance."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:797
+#: lib/pp_admintools/app/mirror_ldap.py:788
 msgid "Mirrored one non-structural entry in target LDAP instance."
 msgid_plural "Mirrored {no} non-structural entries to target LDAP instance."
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:802
+#: lib/pp_admintools/app/mirror_ldap.py:793
 msgid "Mirrored none not-structural entries to target LDAP instance."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:811
+#: lib/pp_admintools/app/mirror_ldap.py:802
 msgid "Mirroring members in group entries from source to target LDAP instance."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:874
+#: lib/pp_admintools/app/mirror_ldap.py:865
 msgid "Mirrored one group entry in target LDAP instance."
 msgid_plural "Mirrored {no} group entries to target LDAP instance."
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:879
+#: lib/pp_admintools/app/mirror_ldap.py:870
 msgid "Mirrored no group entries to target LDAP instance."
 msgstr ""
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:60
+#: lib/pp_admintools/app/mk_ldap_passwd.py:58
 msgid "Encrypting the password with a defined password schema."
 msgstr ""
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:102
+#: lib/pp_admintools/app/mk_ldap_passwd.py:99
 msgid "The schema (hashing method) to use to hash the new password. Default: {default!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:107
+#: lib/pp_admintools/app/mk_ldap_passwd.py:104
 msgid "TYPE"
 msgstr ""
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:113
+#: lib/pp_admintools/app/mk_ldap_passwd.py:110
 msgid "Like {}"
 msgstr ""
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:118 lib/pp_admintools/app/set_ldap_password.py:207
+#: lib/pp_admintools/app/mk_ldap_passwd.py:115 lib/pp_admintools/app/set_ldap_password.py:207
 msgid ""
 "A possible salt to use on hashing the password. Caution: not all hashing schemes are supporting "
 "a salt."
 msgstr ""
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:125 lib/pp_admintools/app/set_ldap_password.py:214
+#: lib/pp_admintools/app/mk_ldap_passwd.py:122 lib/pp_admintools/app/set_ldap_password.py:214
 msgid ""
 "The number of calculation rounds to use on hashing the password. Caution: not all hashing "
 "schemes are supporting calculation rounds."
 msgstr ""
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:130
+#: lib/pp_admintools/app/mk_ldap_passwd.py:127
 msgid ""
 "The password to hash. If not given and no file desriptor was given, then the password will be "
 "requested on TTY."
 msgstr ""
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:181
+#: lib/pp_admintools/app/mk_ldap_passwd.py:175
 msgid "Got no password by {}."
 msgstr "Got no password by {}."
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:184
+#: lib/pp_admintools/app/mk_ldap_passwd.py:178
 msgid "Password:"
 msgstr ""
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:185 lib/pp_admintools/app/set_ldap_password.py:307
+#: lib/pp_admintools/app/mk_ldap_passwd.py:179 lib/pp_admintools/app/set_ldap_password.py:307
 #: lib/pp_admintools/app/set_ldap_password.py:327
 msgid "Repeat password:"
 msgstr ""
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:199
+#: lib/pp_admintools/app/mk_ldap_passwd.py:193
 msgid "Encrypting password with hashing schema '{schema}' ..."
 msgstr "Encrypting password with hashing schema '{schema}' …"
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:206 lib/pp_admintools/app/set_ldap_password.py:481
+#: lib/pp_admintools/app/mk_ldap_passwd.py:200 lib/pp_admintools/app/set_ldap_password.py:481
 msgid "Used schema: {!r}."
 msgstr ""
 
@@ -1643,87 +1643,87 @@ msgstr "Evaluating instance {!r} …"
 msgid "PDNS instance {!r} is not configured."
 msgstr ""
 
-#: lib/pp_admintools/app/pdns.py:241
+#: lib/pp_admintools/app/pdns.py:239
 msgid "PowerDNS API options"
 msgstr ""
 
-#: lib/pp_admintools/app/pdns.py:250
+#: lib/pp_admintools/app/pdns.py:248
 msgid "Select, which PowerDNS instance to use. Valid values: {v}, default: {d!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/pdns.py:258 lib/pp_admintools/app/pdns.py:264
-#: lib/pp_admintools/app/pdns.py:270
+#: lib/pp_admintools/app/pdns.py:256 lib/pp_admintools/app/pdns.py:262
+#: lib/pp_admintools/app/pdns.py:268
 msgid "Using the {!r} PowerDNS instance."
 msgstr ""
 
-#: lib/pp_admintools/app/pdns.py:278
+#: lib/pp_admintools/app/pdns.py:276
 msgid "Which port to connect to PowerDNS API, default: {}."
 msgstr ""
 
-#: lib/pp_admintools/app/pdns.py:282
+#: lib/pp_admintools/app/pdns.py:280
 msgid "The timeout in seconds for the communication with the PowerDNS-API. Default: {} seconds."
 msgstr ""
 
-#: lib/pp_admintools/app/pdns.py:331
+#: lib/pp_admintools/app/pdns.py:329
 msgid "No path given for{d} [{s}]/{k} in configuration."
 msgstr ""
 
-#: lib/pp_admintools/app/pdns.py:338
+#: lib/pp_admintools/app/pdns.py:336
 msgid "Path {p!r} for{d} [{s}]/{k} in configuration must be an absolute path."
 msgstr ""
 
-#: lib/pp_admintools/app/pdns.py:361 lib/pp_admintools/app/pdns.py:404
-#: lib/pp_admintools/app/pdns.py:431
+#: lib/pp_admintools/app/pdns.py:358 lib/pp_admintools/app/pdns.py:396
+#: lib/pp_admintools/app/pdns.py:421
 msgid "Executing {} ..."
 msgstr "Executing {} …"
 
-#: lib/pp_admintools/app/pdns.py:379
+#: lib/pp_admintools/app/pdns.py:376
 msgid "Timeout of {t} seconds too big, at most {m} seconds are allowed."
 msgstr ""
 
-#: lib/pp_admintools/app/pdns.py:383
+#: lib/pp_admintools/app/pdns.py:380
 msgid "A timeout may not be negative."
 msgstr ""
 
-#: lib/pp_admintools/app/pdns.py:406
+#: lib/pp_admintools/app/pdns.py:398
 msgid "Setting Loglevel of the requests module to {}."
 msgstr ""
 
-#: lib/pp_admintools/app/pdns.py:420
+#: lib/pp_admintools/app/pdns.py:411
 msgid "Executing nothing ..."
 msgstr "Executing nothing …"
 
-#: lib/pp_admintools/app/pdns.py:441 lib/pp_admintools/app/pdns.py:469
-#: lib/pp_admintools/app/pdns.py:480 lib/pp_admintools/app/pdns.py:490
+#: lib/pp_admintools/app/pdns.py:431 lib/pp_admintools/app/pdns.py:458
+#: lib/pp_admintools/app/pdns.py:469 lib/pp_admintools/app/pdns.py:479
 msgid "The PDNS server object does not exists."
 msgstr ""
 
-#: lib/pp_admintools/app/pdns.py:443 lib/pp_admintools/app/pdns.py:471
-#: lib/pp_admintools/app/pdns.py:482 lib/pp_admintools/app/pdns.py:492
+#: lib/pp_admintools/app/pdns.py:433 lib/pp_admintools/app/pdns.py:460
+#: lib/pp_admintools/app/pdns.py:471 lib/pp_admintools/app/pdns.py:481
 msgid "The PDNS server object is not initialized."
 msgstr ""
 
-#: lib/pp_admintools/app/pdns.py:448
+#: lib/pp_admintools/app/pdns.py:438
 msgid "Got a {} during evaluating the PDNS server version from API:"
 msgstr ""
 
-#: lib/pp_admintools/app/pdns.py:500
+#: lib/pp_admintools/app/pdns.py:489
 msgid "Trying to get complete information about zone {!r} ..."
 msgstr "Trying to get complete information about zone {!r} …"
 
-#: lib/pp_admintools/app/pdns.py:506
+#: lib/pp_admintools/app/pdns.py:495
 msgid "The given zone {} was not found."
 msgstr ""
 
-#: lib/pp_admintools/app/pdns.py:509
+#: lib/pp_admintools/app/pdns.py:498
 msgid "Got a response:"
 msgstr ""
 
-#: lib/pp_admintools/app/pdns.py:514
+#: lib/pp_admintools/app/pdns.py:503
 msgid "Zone object:"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:70
+#: lib/pp_admintools/app/remove_ldap_user.py:74
 msgid ""
 "Disables or removes the given users from LDAP. If disabling, then the user will not be really "
 "removed, but disabled by locking the password, setting all status flags to {inact!r}, assigning "
@@ -1731,188 +1731,200 @@ msgid ""
 "user will be really removed from LDAP."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:115
+#: lib/pp_admintools/app/remove_ldap_user.py:131
 msgid "Removing options"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:118
+#: lib/pp_admintools/app/remove_ldap_user.py:134
 msgid "This is the default."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:119
+#: lib/pp_admintools/app/remove_ldap_user.py:135
 msgid "This is mutually exclusive to {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:121
+#: lib/pp_admintools/app/remove_ldap_user.py:137
 msgid "Deactivating the user instead of removing it."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:128
+#: lib/pp_admintools/app/remove_ldap_user.py:144
 msgid "Removing the user from LDAP."
 msgstr "Removing the user from LDAP."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:136 lib/pp_admintools/app/set_ldap_password.py:200
+#: lib/pp_admintools/app/remove_ldap_user.py:151
+msgid "Don't remove all mail addresses of the users to remove from all mailing lists."
+msgstr ""
+
+#: lib/pp_admintools/app/remove_ldap_user.py:159 lib/pp_admintools/app/set_ldap_password.py:200
 #: lib/pp_admintools/app/set_ldap_password.py:203
 msgid "USER"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:137
+#: lib/pp_admintools/app/remove_ldap_user.py:160
 msgid ""
 "The user, which should be deactivated or removed. They may be given by their Uid (the "
 "alphanumeric POSIX name), their mail address or their LDAP DN (be aware, that this may be "
 "different in the particular LDAP instances)."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:161
+#: lib/pp_admintools/app/remove_ldap_user.py:184
 msgid "No users to remove given."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:177
+#: lib/pp_admintools/app/remove_ldap_user.py:203
 msgid "Checking given instances for admin and read/write access."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:184
+#: lib/pp_admintools/app/remove_ldap_user.py:210
 msgid "LDAP instance {!r} not found in configuration."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:192
+#: lib/pp_admintools/app/remove_ldap_user.py:218
 msgid "LDAP instance {!r} has only readonly access."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:197
+#: lib/pp_admintools/app/remove_ldap_user.py:223
 msgid "No admin access to LDAP instance {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:214
+#: lib/pp_admintools/app/remove_ldap_user.py:240
 msgid "All given users were not found in any LDAP instance."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:219
+#: lib/pp_admintools/app/remove_ldap_user.py:245
 msgid "Evaluated DNs to remove:"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:228
+#: lib/pp_admintools/app/remove_ldap_user.py:254
 msgid "Start disabling user entries in:"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:230
+#: lib/pp_admintools/app/remove_ldap_user.py:256
 msgid "Start removing user entries in:"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:234
+#: lib/pp_admintools/app/remove_ldap_user.py:260
 msgid "Start disabling user entries ..."
 msgstr "Start disabling user entries …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:236
+#: lib/pp_admintools/app/remove_ldap_user.py:262
 msgid "Start removing user entries ..."
 msgstr "Start removing user entries …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:251
+#: lib/pp_admintools/app/remove_ldap_user.py:277
 msgid "Do you really want to deactivate the following users?"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:253
+#: lib/pp_admintools/app/remove_ldap_user.py:279
 msgid "Do you really want to remove the following users?"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:279
+#: lib/pp_admintools/app/remove_ldap_user.py:305
 msgid "Deactivate [{yes}/{no}]?"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:281
+#: lib/pp_admintools/app/remove_ldap_user.py:307
 msgid "Remove [{yes}/{no}]?"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:289
+#: lib/pp_admintools/app/remove_ldap_user.py:315
 msgid "Evaluating DNs of the user {!r} to remove ..."
 msgstr "Evaluating DNs of the user {!r} to remove …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:303 lib/pp_admintools/app/set_ldap_password.py:434
+#: lib/pp_admintools/app/remove_ldap_user.py:329 lib/pp_admintools/app/set_ldap_password.py:434
 msgid "Got DN {dn!r} for user {user!r} in LDAP instance {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:310 lib/pp_admintools/app/set_ldap_password.py:439
+#: lib/pp_admintools/app/remove_ldap_user.py:336 lib/pp_admintools/app/set_ldap_password.py:439
 msgid "Found {nr} entries for user {u!r} in LDAP instance {i}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:322 lib/pp_admintools/app/set_ldap_password.py:453
+#: lib/pp_admintools/app/remove_ldap_user.py:348 lib/pp_admintools/app/set_ldap_password.py:453
 msgid "Did not found user {user!r} in LDAP instance {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:331
+#: lib/pp_admintools/app/remove_ldap_user.py:357
 msgid "Deactivating all given users from {} ..."
 msgstr "Deactivating all given users from {} …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:333
+#: lib/pp_admintools/app/remove_ldap_user.py:359
 msgid "Removing all given users from {} ..."
 msgstr "Removing all given users from {} …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:348
+#: lib/pp_admintools/app/remove_ldap_user.py:374
 msgid "Deactivating user {dn!r} from {inst} ..."
 msgstr "Deactivating user {dn!r} from {inst} …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:351
+#: lib/pp_admintools/app/remove_ldap_user.py:377
 msgid "Removing user {dn!r} from {inst} ..."
 msgstr "Removing user {dn!r} from {inst} …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:357
+#: lib/pp_admintools/app/remove_ldap_user.py:383
 msgid "Attributes of {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:378
+#: lib/pp_admintools/app/remove_ldap_user.py:407
 msgid "{c} on removing user {dn!r}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:384
+#: lib/pp_admintools/app/remove_ldap_user.py:413
 msgid "User {dn!r} successful deactivated on {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:387
+#: lib/pp_admintools/app/remove_ldap_user.py:416
 msgid "User {dn!r} successful removed from {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:413
+#: lib/pp_admintools/app/remove_ldap_user.py:442
 msgid "Updating user info for {dn!r} on {inst} ..."
 msgstr "Updating user info for {dn!r} on {inst} …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:418 lib/pp_admintools/app/set_ldap_password.py:519
+#: lib/pp_admintools/app/remove_ldap_user.py:447 lib/pp_admintools/app/set_ldap_password.py:519
 msgid "{c} on deactivating user {dn!r}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:434
+#: lib/pp_admintools/app/remove_ldap_user.py:463
 msgid "Did not found any group memberships of {dn!r} in {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:440 lib/pp_admintools/app/remove_ldap_user.py:467
-#: lib/pp_admintools/app/remove_ldap_user.py:498 lib/pp_admintools/app/remove_ldap_user.py:529
+#: lib/pp_admintools/app/remove_ldap_user.py:469 lib/pp_admintools/app/remove_ldap_user.py:496
+#: lib/pp_admintools/app/remove_ldap_user.py:527 lib/pp_admintools/app/remove_ldap_user.py:558
 msgid "Removing user {u!r} from group {g!r} ..."
 msgstr "Removing user {u!r} from group {g!r} …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:445 lib/pp_admintools/app/remove_ldap_user.py:472
-#: 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:474 lib/pp_admintools/app/remove_ldap_user.py:501
+#: lib/pp_admintools/app/remove_ldap_user.py:532 lib/pp_admintools/app/remove_ldap_user.py:563
 msgid "{c} on removing user {dn!r} from group {g!r}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:461
+#: lib/pp_admintools/app/remove_ldap_user.py:490
 msgid "Did not found any unique group memberships of {dn!r} in {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:485
+#: lib/pp_admintools/app/remove_ldap_user.py:514
 msgid "Deleting user {uid!r} from all POSIX groups in {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:492
+#: lib/pp_admintools/app/remove_ldap_user.py:521
 msgid "Did not found any POSIX group memberships of {uid!r} in {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:516
+#: lib/pp_admintools/app/remove_ldap_user.py:545
 msgid "Deleting user {uid!r} from all sudo groups in {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:523
+#: lib/pp_admintools/app/remove_ldap_user.py:552
 msgid "Did not found any sudo group memberships of {uid!r} in {inst}."
 msgstr ""
 
+#: lib/pp_admintools/app/remove_ldap_user.py:587
+msgid "No mail addresses found to remove for user {!r}."
+msgstr ""
+
+#: lib/pp_admintools/app/remove_ldap_user.py:591
+msgid "Trying to remove the following mail addresses from mailing lists:"
+msgstr ""
+
 #: lib/pp_admintools/app/set_ldap_password.py:90
 msgid ""
 "Changing the password of the given user. If no user was given, then {app} tries to use the name "
index 0cf105f223ad37bd8425908fb78bacf61383fc22..016f1a3da0ee2329b573cd4e9a88cebb82b07d34 100644 (file)
@@ -6,9 +6,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: pp_admintools 0.8.8\n"
+"Project-Id-Version: pp_admintools 0.9.0\n"
 "Report-Msgid-Bugs-To: frank.brehm@pixelpark.com\n"
-"POT-Creation-Date: 2023-05-31 10:50+0200\n"
+"POT-Creation-Date: 2023-06-12 11:53+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"
@@ -40,7 +40,7 @@ msgid ""
 msgstr ""
 
 #: lib/pp_admintools/app/barracuda_sync.py:149 lib/pp_admintools/app/ldap.py:438
-#: lib/pp_admintools/app/mirror_ldap.py:123 lib/pp_admintools/app/pdns.py:286
+#: lib/pp_admintools/app/mirror_ldap.py:118 lib/pp_admintools/app/pdns.py:284
 msgid "SECONDS"
 msgstr ""
 
@@ -353,7 +353,7 @@ msgstr[1] ""
 msgid "Get all necessary data from LDAP and static virtual aliases table ..."
 msgstr ""
 
-#: lib/pp_admintools/app/barracuda_sync.py:972 lib/pp_admintools/app/mirror_ldap.py:317
+#: lib/pp_admintools/app/barracuda_sync.py:972 lib/pp_admintools/app/mirror_ldap.py:311
 msgid "Finished."
 msgstr ""
 
@@ -383,41 +383,41 @@ msgstr ""
 msgid "Start checking all DN-like attributes in in LDAP instance {inst!r} ({url}) ..."
 msgstr ""
 
-#: lib/pp_admintools/app/check_ldap_dn_attributes.py:155
+#: lib/pp_admintools/app/check_ldap_dn_attributes.py:154
 msgid "Found one entry to check."
 msgid_plural "Found {} entries to check."
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/pp_admintools/app/check_ldap_dn_attributes.py:159
+#: lib/pp_admintools/app/check_ldap_dn_attributes.py:158
 msgid "Found no to check."
 msgstr ""
 
-#: lib/pp_admintools/app/check_ldap_dn_attributes.py:179
+#: lib/pp_admintools/app/check_ldap_dn_attributes.py:178
 msgid "Got an inconsistent entry."
 msgid_plural "Got {} inconsistent entries."
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/pp_admintools/app/check_ldap_dn_attributes.py:182
+#: lib/pp_admintools/app/check_ldap_dn_attributes.py:181
 msgid "There is one inconsistent attribute."
 msgid_plural "There are {} inconsistent attributes."
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/pp_admintools/app/check_ldap_dn_attributes.py:187
+#: lib/pp_admintools/app/check_ldap_dn_attributes.py:186
 msgid "Writing export file {!r} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/check_ldap_dn_attributes.py:194
+#: lib/pp_admintools/app/check_ldap_dn_attributes.py:193
 msgid "Did not found any inconsistent entries."
 msgstr ""
 
-#: lib/pp_admintools/app/check_ldap_dn_attributes.py:215
+#: lib/pp_admintools/app/check_ldap_dn_attributes.py:214
 msgid "Checking DN-like attributes of entry {!r} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/check_ldap_dn_attributes.py:220
+#: lib/pp_admintools/app/check_ldap_dn_attributes.py:219
 msgid "Got attributes:"
 msgstr ""
 
@@ -425,7 +425,7 @@ msgstr ""
 msgid "Generation of the BIND9 configuration file for slave zones."
 msgstr ""
 
-#: lib/pp_admintools/app/dns_deploy_zones.py:250 lib/pp_admintools/app/mk_ldap_passwd.py:89
+#: lib/pp_admintools/app/dns_deploy_zones.py:250 lib/pp_admintools/app/mk_ldap_passwd.py:86
 #: lib/pp_admintools/app/set_ldap_password.py:124
 msgid "Options for {}"
 msgstr ""
@@ -517,7 +517,7 @@ msgstr ""
 #: lib/pp_admintools/app/dns_deploy_zones.py:428 lib/pp_admintools/app/dns_deploy_zones.py:782
 #: lib/pp_admintools/app/dns_deploy_zones.py:818 lib/pp_admintools/app/dns_deploy_zones.py:850
 #: lib/pp_admintools/app/dns_deploy_zones.py:885 lib/pp_admintools/app/dns_deploy_zones.py:920
-#: lib/pp_admintools/app/mail.py:328
+#: lib/pp_admintools/app/mail.py:317
 msgid "Executing: {}"
 msgstr ""
 
@@ -679,25 +679,25 @@ msgstr ""
 msgid "Reloading {} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/duplicate_attribs.py:58
+#: lib/pp_admintools/app/duplicate_attribs.py:61
 msgid "Evaluating all LDAP entries, which are using duplicate attributes, which should be unique."
 msgstr ""
 
-#: lib/pp_admintools/app/duplicate_attribs.py:71
+#: lib/pp_admintools/app/duplicate_attribs.py:74
 msgid "Evaluation options"
 msgstr ""
 
-#: lib/pp_admintools/app/duplicate_attribs.py:74 lib/pp_admintools/app/duplicate_attribs.py:82
+#: lib/pp_admintools/app/duplicate_attribs.py:77 lib/pp_admintools/app/duplicate_attribs.py:85
 msgid "ATTRIBUTE"
 msgstr ""
 
-#: lib/pp_admintools/app/duplicate_attribs.py:75
+#: lib/pp_admintools/app/duplicate_attribs.py:78
 msgid ""
 "All attribute types, which should be unique over the complete LDAP tree. Per default the "
 "following attribute types should be unique:"
 msgstr ""
 
-#: lib/pp_admintools/app/duplicate_attribs.py:83
+#: lib/pp_admintools/app/duplicate_attribs.py:86
 msgid ""
 "All attribute types, where their uniqueness depends on an additional LDAP filter. For instance, "
 "the attribute 'gidNumber' should be unique for all entries, which are using the objectClass "
@@ -769,8 +769,8 @@ msgstr ""
 msgid "Options fo LDAP connections"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:335 lib/pp_admintools/app/mirror_ldap.py:244
-#: lib/pp_admintools/app/remove_ldap_user.py:283 lib/pp_admintools/app/set_ldap_password.py:492
+#: lib/pp_admintools/app/ldap.py:335 lib/pp_admintools/app/mirror_ldap.py:238
+#: lib/pp_admintools/app/remove_ldap_user.py:309 lib/pp_admintools/app/set_ldap_password.py:492
 msgid "No"
 msgstr ""
 
@@ -790,8 +790,8 @@ msgstr ""
 msgid "Use ldaps to connect to the LDAP server. Default: {}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:356 lib/pp_admintools/app/mail.py:261
-#: lib/pp_admintools/app/pdns.py:275
+#: lib/pp_admintools/app/ldap.py:356 lib/pp_admintools/app/mail.py:250
+#: lib/pp_admintools/app/pdns.py:273
 msgid "PORT"
 msgstr ""
 
@@ -807,7 +807,7 @@ msgstr ""
 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:134
+#: lib/pp_admintools/app/ldap.py:379 lib/pp_admintools/app/mk_ldap_passwd.py:131
 #: lib/pp_admintools/app/set_ldap_password.py:130 lib/pp_admintools/app/set_ldap_password.py:131
 #: lib/pp_admintools/app/set_ldap_password.py:148 lib/pp_admintools/app/set_ldap_password.py:151
 msgid "PASSWORD"
@@ -832,7 +832,7 @@ msgstr ""
 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:249
+#: lib/pp_admintools/app/ldap.py:401 lib/pp_admintools/app/pdns.py:247
 msgid "INSTANCE"
 msgstr ""
 
@@ -994,7 +994,7 @@ msgstr ""
 msgid "Trying to evaluate DN of user {u!r} as a UID (Posix user name) ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:958 lib/pp_admintools/app/remove_ldap_user.py:293
+#: lib/pp_admintools/app/ldap.py:958 lib/pp_admintools/app/remove_ldap_user.py:319
 msgid "Empty user given."
 msgstr ""
 
@@ -1098,9 +1098,9 @@ msgid "Modification of {dn!r} was NOT successfull - {c}: {e}"
 msgstr ""
 
 #: lib/pp_admintools/app/ldap.py:1312 lib/pp_admintools/app/ldap.py:1331
-#: lib/pp_admintools/app/remove_ldap_user.py:420 lib/pp_admintools/app/remove_ldap_user.py:447
-#: lib/pp_admintools/app/remove_ldap_user.py:474 lib/pp_admintools/app/remove_ldap_user.py:505
-#: lib/pp_admintools/app/remove_ldap_user.py:536 lib/pp_admintools/app/set_ldap_password.py:521
+#: 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/set_ldap_password.py:521
 msgid "Changes:"
 msgstr ""
 
@@ -1173,88 +1173,88 @@ msgstr ""
 msgid "Values to removed from attribute {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/mail.py:103
+#: lib/pp_admintools/app/mail.py:95
 msgid "Got invalid SMTP port number {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/mail.py:121
+#: lib/pp_admintools/app/mail.py:113
 msgid "Got invalid mail from address {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/mail.py:144
+#: lib/pp_admintools/app/mail.py:136
 msgid "Got invalid recipient mail addresses:"
 msgstr ""
 
-#: lib/pp_admintools/app/mail.py:172
+#: lib/pp_admintools/app/mail.py:164
 msgid "Got invalid cc mail addresses:"
 msgstr ""
 
-#: lib/pp_admintools/app/mail.py:187
+#: lib/pp_admintools/app/mail.py:179
 msgid "Got invalid reply mail address {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/mail.py:201
+#: lib/pp_admintools/app/mail.py:190
 msgid "Mailing options"
 msgstr ""
 
-#: lib/pp_admintools/app/mail.py:216 lib/pp_admintools/app/mail.py:224
-#: lib/pp_admintools/app/mail.py:230 lib/pp_admintools/app/mail.py:236
+#: lib/pp_admintools/app/mail.py:205 lib/pp_admintools/app/mail.py:213
+#: lib/pp_admintools/app/mail.py:219 lib/pp_admintools/app/mail.py:225
 msgid "ADDRESS"
 msgstr ""
 
-#: lib/pp_admintools/app/mail.py:217
+#: lib/pp_admintools/app/mail.py:206
 msgid "Sender mail address for mails generated by this script. Default: {!r}"
 msgstr ""
 
-#: lib/pp_admintools/app/mail.py:225
+#: lib/pp_admintools/app/mail.py:214
 msgid "Mail addresses of all recipients for mails generated by this script."
 msgstr ""
 
-#: lib/pp_admintools/app/mail.py:231
+#: lib/pp_admintools/app/mail.py:220
 msgid "Mail addresses of all CC recipients for mails generated by this script."
 msgstr ""
 
-#: lib/pp_admintools/app/mail.py:237
+#: lib/pp_admintools/app/mail.py:226
 msgid "Reply mail address for mails generated by this script."
 msgstr ""
 
-#: lib/pp_admintools/app/mail.py:244
+#: lib/pp_admintools/app/mail.py:233
 msgid "METHOD"
 msgstr ""
 
-#: lib/pp_admintools/app/mail.py:245
+#: lib/pp_admintools/app/mail.py:234
 msgid "Method for sending the mails generated by this script. Valid values: {v}, default: {d!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/mail.py:253
+#: lib/pp_admintools/app/mail.py:242
 msgid "SERVER"
 msgstr ""
 
-#: lib/pp_admintools/app/mail.py:254
+#: lib/pp_admintools/app/mail.py:243
 msgid ""
 "Mail server for submitting generated by this script if the mail method of this script is 'smtp'."
 " Default: {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/mail.py:263
+#: lib/pp_admintools/app/mail.py:252
 msgid ""
 "The port to use for submitting generated by this script if the mail method of this script is "
 "'smtp'. Default: {}."
 msgstr ""
 
-#: lib/pp_admintools/app/mail.py:272
+#: lib/pp_admintools/app/mail.py:261
 msgid "Got command line arguments:"
 msgstr ""
 
-#: lib/pp_admintools/app/mail.py:289
+#: lib/pp_admintools/app/mail.py:278
 msgid "Mail to send:"
 msgstr ""
 
-#: lib/pp_admintools/app/mail.py:322
+#: lib/pp_admintools/app/mail.py:311
 msgid "Did not found sendmail executable."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:101
+#: lib/pp_admintools/app/mirror_ldap.py:96
 msgid ""
 "Mirror the content of a complete LDAP instance (server or cluster) to another instance. This "
 "will be done first by clearing the target instance, then copying structural entries from the "
@@ -1263,350 +1263,350 @@ msgid ""
 "values."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:109
+#: lib/pp_admintools/app/mirror_ldap.py:104
 msgid "Do not execute a countdown before starting the application."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:120
+#: lib/pp_admintools/app/mirror_ldap.py:115
 msgid "Miroring options"
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:125
+#: lib/pp_admintools/app/mirror_ldap.py:120
 msgid ""
 "Number of seconds to wait after each write operation. Given as a float value, and if set to "
 "zero, there is no waiting after a write. (default: {:.1f})"
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:132 lib/pp_admintools/app/mk_ldap_passwd.py:124
+#: lib/pp_admintools/app/mirror_ldap.py:127 lib/pp_admintools/app/mk_ldap_passwd.py:121
 msgid "NUMBER"
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:134
+#: lib/pp_admintools/app/mirror_ldap.py:129
 msgid "Limiting the mirroring to the first NUMBER entries. This option is valid only in simulation mode."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:141
+#: lib/pp_admintools/app/mirror_ldap.py:136
 msgid "Mirror only structural entries (entries with childs)."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:163
+#: lib/pp_admintools/app/mirror_ldap.py:157
 msgid "Limiting the number of entries for mirroring to {} entries."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:167
+#: lib/pp_admintools/app/mirror_ldap.py:161
 msgid "Limition the number of entries for mirroring may only be done in simulation mode."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:184
+#: lib/pp_admintools/app/mirror_ldap.py:178
 msgid "Did not found {tgt!r} in {e}:"
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:196
+#: lib/pp_admintools/app/mirror_ldap.py:190
 msgid "Checking mirror source instance for target instance {!r} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:200
+#: lib/pp_admintools/app/mirror_ldap.py:194
 msgid "Got {!r} as the mirror source instance."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:203 lib/pp_admintools/app/mirror_ldap.py:212
-#: lib/pp_admintools/app/mirror_ldap.py:223
+#: lib/pp_admintools/app/mirror_ldap.py:197 lib/pp_admintools/app/mirror_ldap.py:206
+#: lib/pp_admintools/app/mirror_ldap.py:217
 msgid "Error in configuration:"
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:204
+#: lib/pp_admintools/app/mirror_ldap.py:198
 msgid "the source LDAP instance {src!r} for mirroring to {tgt!r} does not exists."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:213
+#: lib/pp_admintools/app/mirror_ldap.py:207
 msgid "the source LDAP instance {src!r} must not be the same like the target instance."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:224
+#: lib/pp_admintools/app/mirror_ldap.py:218
 msgid ""
 "the base DN {src_dn!r} of the source instance {src!r} does not match the base DN {tgt_dn!r} of "
 "the target instance {tgt!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:240
+#: lib/pp_admintools/app/mirror_ldap.py:234
 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:244 lib/pp_admintools/app/remove_ldap_user.py:283
+#: lib/pp_admintools/app/mirror_ldap.py:238 lib/pp_admintools/app/remove_ldap_user.py:309
 #: lib/pp_admintools/app/set_ldap_password.py:492
 msgid "yes"
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:250 lib/pp_admintools/app/mirror_ldap.py:312
+#: lib/pp_admintools/app/mirror_ldap.py:244 lib/pp_admintools/app/mirror_ldap.py:306
 msgid "Interrupted on demand."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:255
+#: lib/pp_admintools/app/mirror_ldap.py:249
 msgid "Start mirroring LDAP instance {src!r} ({src_url}) to instance {tgt!r} ({tgt_url}) ..."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:276 lib/pp_admintools/app/mirror_ldap.py:294
+#: lib/pp_admintools/app/mirror_ldap.py:270 lib/pp_admintools/app/mirror_ldap.py:288
 msgid "{:>5} entry deleted."
 msgid_plural "{:>5} entries deleted."
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:279 lib/pp_admintools/app/mirror_ldap.py:299
+#: lib/pp_admintools/app/mirror_ldap.py:273 lib/pp_admintools/app/mirror_ldap.py:293
 msgid "{:>5} entry updated."
 msgid_plural "{:>5} entries updated."
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:282 lib/pp_admintools/app/mirror_ldap.py:304
+#: lib/pp_admintools/app/mirror_ldap.py:276 lib/pp_admintools/app/mirror_ldap.py:298
 msgid "{:>5} entry created."
 msgid_plural "{:>5} entries created."
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:289
+#: lib/pp_admintools/app/mirror_ldap.py:283
 msgid "Changes total:"
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:312
+#: lib/pp_admintools/app/mirror_ldap.py:306
 msgid "Got a {}:"
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:325
+#: lib/pp_admintools/app/mirror_ldap.py:318
 msgid "Trying to get DNs of all entries in the source LDAP instance."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:338 lib/pp_admintools/app/mirror_ldap.py:393
+#: lib/pp_admintools/app/mirror_ldap.py:331 lib/pp_admintools/app/mirror_ldap.py:385
 msgid "Found DNs in instance {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:355
+#: lib/pp_admintools/app/mirror_ldap.py:348
 msgid "Found total one entry in source LDAP"
 msgid_plural "Found {no} entries in source LDAP"
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:359
+#: lib/pp_admintools/app/mirror_ldap.py:352
 msgid "one structural entry in source LDAP"
 msgid_plural "{no} structural entries in source LDAP"
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:363
+#: lib/pp_admintools/app/mirror_ldap.py:356
 msgid "one non-structural entry in source LDAP."
 msgid_plural "{no} non-structural entries in source LDAP."
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:371 lib/pp_admintools/app/mirror_ldap.py:426
+#: lib/pp_admintools/app/mirror_ldap.py:364 lib/pp_admintools/app/mirror_ldap.py:418
 msgid "Found structural DNs in instance {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:380
+#: lib/pp_admintools/app/mirror_ldap.py:372
 msgid "Trying to get DNs of all entries in the target LDAP instance."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:410
+#: lib/pp_admintools/app/mirror_ldap.py:402
 msgid "Found total one entry in target LDAP"
 msgid_plural "Found {no} entries in target LDAP"
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:414
+#: lib/pp_admintools/app/mirror_ldap.py:406
 msgid "one structural entry in target LDAP"
 msgid_plural "{no} structural entries in target LDAP"
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:418
+#: lib/pp_admintools/app/mirror_ldap.py:410
 msgid "one non-structural entry in target LDAP."
 msgid_plural "{no} non-structural entries in target LDAP."
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:434
+#: lib/pp_admintools/app/mirror_ldap.py:425
 msgid ""
 "Evaluating DNs of all target entries, which have to be synchronized, instead of removing and "
 "recreating them."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:492
+#: lib/pp_admintools/app/mirror_ldap.py:483
 msgid "Removing non structural entries from target LDAP instance."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:508 lib/pp_admintools/app/mirror_ldap.py:569
+#: lib/pp_admintools/app/mirror_ldap.py:499 lib/pp_admintools/app/mirror_ldap.py:560
 msgid "Entry {!r} exists on the source instance, will not be removed."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:514
+#: lib/pp_admintools/app/mirror_ldap.py:505
 msgid "Entry {!r} is a structural entry, will not be removed at this point."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:521 lib/pp_admintools/app/mirror_ldap.py:575
-#: lib/pp_admintools/app/mirror_ldap.py:622 lib/pp_admintools/app/mirror_ldap.py:726
-#: lib/pp_admintools/app/mirror_ldap.py:825
+#: lib/pp_admintools/app/mirror_ldap.py:512 lib/pp_admintools/app/mirror_ldap.py:566
+#: lib/pp_admintools/app/mirror_ldap.py:613 lib/pp_admintools/app/mirror_ldap.py:717
+#: lib/pp_admintools/app/mirror_ldap.py:816
 msgid "Entry {!r} is set to be kept."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:533
+#: lib/pp_admintools/app/mirror_ldap.py:524
 msgid "Removed one not structural entry in target LDAP instance."
 msgid_plural "Removed {no} not structural entries in target LDAP instance."
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:538
+#: lib/pp_admintools/app/mirror_ldap.py:529
 msgid "None not structural entries in target LDAP instance removed."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:552
+#: lib/pp_admintools/app/mirror_ldap.py:543
 msgid "Removing structural entries from target LDAP instance."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:580
+#: lib/pp_admintools/app/mirror_ldap.py:571
 msgid "Entry {!r} is set to be synchronized."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:592
+#: lib/pp_admintools/app/mirror_ldap.py:583
 msgid "Removed one structural entry in target LDAP instance."
 msgid_plural "Removed {no} structural entries in target LDAP instance."
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:597
+#: lib/pp_admintools/app/mirror_ldap.py:588
 msgid "None structural entries in target LDAP instance removed."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:605
+#: lib/pp_admintools/app/mirror_ldap.py:596
 msgid "Mirroring structural entries from source to target LDAP instance."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:626 lib/pp_admintools/app/mirror_ldap.py:730
-#: lib/pp_admintools/app/mirror_ldap.py:831
+#: lib/pp_admintools/app/mirror_ldap.py:617 lib/pp_admintools/app/mirror_ldap.py:721
+#: lib/pp_admintools/app/mirror_ldap.py:822
 msgid "Mirroring entry {!r} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:630 lib/pp_admintools/app/mirror_ldap.py:734
-#: lib/pp_admintools/app/mirror_ldap.py:835
+#: lib/pp_admintools/app/mirror_ldap.py:621 lib/pp_admintools/app/mirror_ldap.py:725
+#: lib/pp_admintools/app/mirror_ldap.py:826
 msgid "Did not found {!r} in the source LDAP."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:656 lib/pp_admintools/app/mirror_ldap.py:760
-#: lib/pp_admintools/app/mirror_ldap.py:857
+#: lib/pp_admintools/app/mirror_ldap.py:647 lib/pp_admintools/app/mirror_ldap.py:751
+#: lib/pp_admintools/app/mirror_ldap.py:848
 msgid "Modifying entry {!r} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:657 lib/pp_admintools/app/mirror_ldap.py:761
-#: lib/pp_admintools/app/mirror_ldap.py:858
+#: lib/pp_admintools/app/mirror_ldap.py:648 lib/pp_admintools/app/mirror_ldap.py:752
+#: lib/pp_admintools/app/mirror_ldap.py:849
 msgid "Got modify data for DN {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:668 lib/pp_admintools/app/mirror_ldap.py:772
-#: lib/pp_admintools/app/mirror_ldap.py:869
+#: lib/pp_admintools/app/mirror_ldap.py:659 lib/pp_admintools/app/mirror_ldap.py:763
+#: lib/pp_admintools/app/mirror_ldap.py:860
 msgid "No changes necessary on DN {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:672 lib/pp_admintools/app/mirror_ldap.py:776
-#: lib/pp_admintools/app/mirror_ldap.py:845
+#: lib/pp_admintools/app/mirror_ldap.py:663 lib/pp_admintools/app/mirror_ldap.py:767
+#: lib/pp_admintools/app/mirror_ldap.py:836
 msgid "Target entry {!r} not found."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:675 lib/pp_admintools/app/mirror_ldap.py:779
+#: lib/pp_admintools/app/mirror_ldap.py:666 lib/pp_admintools/app/mirror_ldap.py:770
 msgid "Creating entry {!r} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:676 lib/pp_admintools/app/mirror_ldap.py:780
+#: lib/pp_admintools/app/mirror_ldap.py:667 lib/pp_admintools/app/mirror_ldap.py:771
 msgid "Got create data for DN {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:693
+#: lib/pp_admintools/app/mirror_ldap.py:684
 msgid "Mirrored one structural entry in target LDAP instance."
 msgid_plural "Mirrored {no} structural entries to target LDAP instance."
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:698
+#: lib/pp_admintools/app/mirror_ldap.py:689
 msgid "Mirrored no structural entries to target LDAP instance."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:706
+#: lib/pp_admintools/app/mirror_ldap.py:697
 msgid "Mirroring non-structural entries from source to target LDAP instance."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:797
+#: lib/pp_admintools/app/mirror_ldap.py:788
 msgid "Mirrored one non-structural entry in target LDAP instance."
 msgid_plural "Mirrored {no} non-structural entries to target LDAP instance."
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:802
+#: lib/pp_admintools/app/mirror_ldap.py:793
 msgid "Mirrored none not-structural entries to target LDAP instance."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:811
+#: lib/pp_admintools/app/mirror_ldap.py:802
 msgid "Mirroring members in group entries from source to target LDAP instance."
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:874
+#: lib/pp_admintools/app/mirror_ldap.py:865
 msgid "Mirrored one group entry in target LDAP instance."
 msgid_plural "Mirrored {no} group entries to target LDAP instance."
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:879
+#: lib/pp_admintools/app/mirror_ldap.py:870
 msgid "Mirrored no group entries to target LDAP instance."
 msgstr ""
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:60
+#: lib/pp_admintools/app/mk_ldap_passwd.py:58
 msgid "Encrypting the password with a defined password schema."
 msgstr ""
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:102
+#: lib/pp_admintools/app/mk_ldap_passwd.py:99
 msgid "The schema (hashing method) to use to hash the new password. Default: {default!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:107
+#: lib/pp_admintools/app/mk_ldap_passwd.py:104
 msgid "TYPE"
 msgstr ""
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:113
+#: lib/pp_admintools/app/mk_ldap_passwd.py:110
 msgid "Like {}"
 msgstr ""
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:118 lib/pp_admintools/app/set_ldap_password.py:207
+#: lib/pp_admintools/app/mk_ldap_passwd.py:115 lib/pp_admintools/app/set_ldap_password.py:207
 msgid ""
 "A possible salt to use on hashing the password. Caution: not all hashing schemes are supporting "
 "a salt."
 msgstr ""
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:125 lib/pp_admintools/app/set_ldap_password.py:214
+#: lib/pp_admintools/app/mk_ldap_passwd.py:122 lib/pp_admintools/app/set_ldap_password.py:214
 msgid ""
 "The number of calculation rounds to use on hashing the password. Caution: not all hashing "
 "schemes are supporting calculation rounds."
 msgstr ""
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:130
+#: lib/pp_admintools/app/mk_ldap_passwd.py:127
 msgid ""
 "The password to hash. If not given and no file desriptor was given, then the password will be "
 "requested on TTY."
 msgstr ""
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:181
+#: lib/pp_admintools/app/mk_ldap_passwd.py:175
 msgid "Got no password by {}."
 msgstr ""
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:184
+#: lib/pp_admintools/app/mk_ldap_passwd.py:178
 msgid "Password:"
 msgstr ""
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:185 lib/pp_admintools/app/set_ldap_password.py:307
+#: lib/pp_admintools/app/mk_ldap_passwd.py:179 lib/pp_admintools/app/set_ldap_password.py:307
 #: lib/pp_admintools/app/set_ldap_password.py:327
 msgid "Repeat password:"
 msgstr ""
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:199
+#: lib/pp_admintools/app/mk_ldap_passwd.py:193
 msgid "Encrypting password with hashing schema '{schema}' ..."
 msgstr ""
 
-#: lib/pp_admintools/app/mk_ldap_passwd.py:206 lib/pp_admintools/app/set_ldap_password.py:481
+#: lib/pp_admintools/app/mk_ldap_passwd.py:200 lib/pp_admintools/app/set_ldap_password.py:481
 msgid "Used schema: {!r}."
 msgstr ""
 
@@ -1642,87 +1642,87 @@ msgstr ""
 msgid "PDNS instance {!r} is not configured."
 msgstr ""
 
-#: lib/pp_admintools/app/pdns.py:241
+#: lib/pp_admintools/app/pdns.py:239
 msgid "PowerDNS API options"
 msgstr ""
 
-#: lib/pp_admintools/app/pdns.py:250
+#: lib/pp_admintools/app/pdns.py:248
 msgid "Select, which PowerDNS instance to use. Valid values: {v}, default: {d!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/pdns.py:258 lib/pp_admintools/app/pdns.py:264
-#: lib/pp_admintools/app/pdns.py:270
+#: lib/pp_admintools/app/pdns.py:256 lib/pp_admintools/app/pdns.py:262
+#: lib/pp_admintools/app/pdns.py:268
 msgid "Using the {!r} PowerDNS instance."
 msgstr ""
 
-#: lib/pp_admintools/app/pdns.py:278
+#: lib/pp_admintools/app/pdns.py:276
 msgid "Which port to connect to PowerDNS API, default: {}."
 msgstr ""
 
-#: lib/pp_admintools/app/pdns.py:282
+#: lib/pp_admintools/app/pdns.py:280
 msgid "The timeout in seconds for the communication with the PowerDNS-API. Default: {} seconds."
 msgstr ""
 
-#: lib/pp_admintools/app/pdns.py:331
+#: lib/pp_admintools/app/pdns.py:329
 msgid "No path given for{d} [{s}]/{k} in configuration."
 msgstr ""
 
-#: lib/pp_admintools/app/pdns.py:338
+#: lib/pp_admintools/app/pdns.py:336
 msgid "Path {p!r} for{d} [{s}]/{k} in configuration must be an absolute path."
 msgstr ""
 
-#: lib/pp_admintools/app/pdns.py:361 lib/pp_admintools/app/pdns.py:404
-#: lib/pp_admintools/app/pdns.py:431
+#: lib/pp_admintools/app/pdns.py:358 lib/pp_admintools/app/pdns.py:396
+#: lib/pp_admintools/app/pdns.py:421
 msgid "Executing {} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/pdns.py:379
+#: lib/pp_admintools/app/pdns.py:376
 msgid "Timeout of {t} seconds too big, at most {m} seconds are allowed."
 msgstr ""
 
-#: lib/pp_admintools/app/pdns.py:383
+#: lib/pp_admintools/app/pdns.py:380
 msgid "A timeout may not be negative."
 msgstr ""
 
-#: lib/pp_admintools/app/pdns.py:406
+#: lib/pp_admintools/app/pdns.py:398
 msgid "Setting Loglevel of the requests module to {}."
 msgstr ""
 
-#: lib/pp_admintools/app/pdns.py:420
+#: lib/pp_admintools/app/pdns.py:411
 msgid "Executing nothing ..."
 msgstr ""
 
-#: lib/pp_admintools/app/pdns.py:441 lib/pp_admintools/app/pdns.py:469
-#: lib/pp_admintools/app/pdns.py:480 lib/pp_admintools/app/pdns.py:490
+#: lib/pp_admintools/app/pdns.py:431 lib/pp_admintools/app/pdns.py:458
+#: lib/pp_admintools/app/pdns.py:469 lib/pp_admintools/app/pdns.py:479
 msgid "The PDNS server object does not exists."
 msgstr ""
 
-#: lib/pp_admintools/app/pdns.py:443 lib/pp_admintools/app/pdns.py:471
-#: lib/pp_admintools/app/pdns.py:482 lib/pp_admintools/app/pdns.py:492
+#: lib/pp_admintools/app/pdns.py:433 lib/pp_admintools/app/pdns.py:460
+#: lib/pp_admintools/app/pdns.py:471 lib/pp_admintools/app/pdns.py:481
 msgid "The PDNS server object is not initialized."
 msgstr ""
 
-#: lib/pp_admintools/app/pdns.py:448
+#: lib/pp_admintools/app/pdns.py:438
 msgid "Got a {} during evaluating the PDNS server version from API:"
 msgstr ""
 
-#: lib/pp_admintools/app/pdns.py:500
+#: lib/pp_admintools/app/pdns.py:489
 msgid "Trying to get complete information about zone {!r} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/pdns.py:506
+#: lib/pp_admintools/app/pdns.py:495
 msgid "The given zone {} was not found."
 msgstr ""
 
-#: lib/pp_admintools/app/pdns.py:509
+#: lib/pp_admintools/app/pdns.py:498
 msgid "Got a response:"
 msgstr ""
 
-#: lib/pp_admintools/app/pdns.py:514
+#: lib/pp_admintools/app/pdns.py:503
 msgid "Zone object:"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:70
+#: lib/pp_admintools/app/remove_ldap_user.py:74
 msgid ""
 "Disables or removes the given users from LDAP. If disabling, then the user will not be really "
 "removed, but disabled by locking the password, setting all status flags to {inact!r}, assigning "
@@ -1730,188 +1730,200 @@ msgid ""
 "user will be really removed from LDAP."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:115
+#: lib/pp_admintools/app/remove_ldap_user.py:131
 msgid "Removing options"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:118
+#: lib/pp_admintools/app/remove_ldap_user.py:134
 msgid "This is the default."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:119
+#: lib/pp_admintools/app/remove_ldap_user.py:135
 msgid "This is mutually exclusive to {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:121
+#: lib/pp_admintools/app/remove_ldap_user.py:137
 msgid "Deactivating the user instead of removing it."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:128
+#: lib/pp_admintools/app/remove_ldap_user.py:144
 msgid "Removing the user from LDAP."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:136 lib/pp_admintools/app/set_ldap_password.py:200
+#: lib/pp_admintools/app/remove_ldap_user.py:151
+msgid "Don't remove all mail addresses of the users to remove from all mailing lists."
+msgstr ""
+
+#: lib/pp_admintools/app/remove_ldap_user.py:159 lib/pp_admintools/app/set_ldap_password.py:200
 #: lib/pp_admintools/app/set_ldap_password.py:203
 msgid "USER"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:137
+#: lib/pp_admintools/app/remove_ldap_user.py:160
 msgid ""
 "The user, which should be deactivated or removed. They may be given by their Uid (the "
 "alphanumeric POSIX name), their mail address or their LDAP DN (be aware, that this may be "
 "different in the particular LDAP instances)."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:161
+#: lib/pp_admintools/app/remove_ldap_user.py:184
 msgid "No users to remove given."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:177
+#: lib/pp_admintools/app/remove_ldap_user.py:203
 msgid "Checking given instances for admin and read/write access."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:184
+#: lib/pp_admintools/app/remove_ldap_user.py:210
 msgid "LDAP instance {!r} not found in configuration."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:192
+#: lib/pp_admintools/app/remove_ldap_user.py:218
 msgid "LDAP instance {!r} has only readonly access."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:197
+#: lib/pp_admintools/app/remove_ldap_user.py:223
 msgid "No admin access to LDAP instance {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:214
+#: lib/pp_admintools/app/remove_ldap_user.py:240
 msgid "All given users were not found in any LDAP instance."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:219
+#: lib/pp_admintools/app/remove_ldap_user.py:245
 msgid "Evaluated DNs to remove:"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:228
+#: lib/pp_admintools/app/remove_ldap_user.py:254
 msgid "Start disabling user entries in:"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:230
+#: lib/pp_admintools/app/remove_ldap_user.py:256
 msgid "Start removing user entries in:"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:234
+#: lib/pp_admintools/app/remove_ldap_user.py:260
 msgid "Start disabling user entries ..."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:236
+#: lib/pp_admintools/app/remove_ldap_user.py:262
 msgid "Start removing user entries ..."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:251
+#: lib/pp_admintools/app/remove_ldap_user.py:277
 msgid "Do you really want to deactivate the following users?"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:253
+#: lib/pp_admintools/app/remove_ldap_user.py:279
 msgid "Do you really want to remove the following users?"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:279
+#: lib/pp_admintools/app/remove_ldap_user.py:305
 msgid "Deactivate [{yes}/{no}]?"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:281
+#: lib/pp_admintools/app/remove_ldap_user.py:307
 msgid "Remove [{yes}/{no}]?"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:289
+#: lib/pp_admintools/app/remove_ldap_user.py:315
 msgid "Evaluating DNs of the user {!r} to remove ..."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:303 lib/pp_admintools/app/set_ldap_password.py:434
+#: lib/pp_admintools/app/remove_ldap_user.py:329 lib/pp_admintools/app/set_ldap_password.py:434
 msgid "Got DN {dn!r} for user {user!r} in LDAP instance {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:310 lib/pp_admintools/app/set_ldap_password.py:439
+#: lib/pp_admintools/app/remove_ldap_user.py:336 lib/pp_admintools/app/set_ldap_password.py:439
 msgid "Found {nr} entries for user {u!r} in LDAP instance {i}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:322 lib/pp_admintools/app/set_ldap_password.py:453
+#: lib/pp_admintools/app/remove_ldap_user.py:348 lib/pp_admintools/app/set_ldap_password.py:453
 msgid "Did not found user {user!r} in LDAP instance {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:331
+#: lib/pp_admintools/app/remove_ldap_user.py:357
 msgid "Deactivating all given users from {} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:333
+#: lib/pp_admintools/app/remove_ldap_user.py:359
 msgid "Removing all given users from {} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:348
+#: lib/pp_admintools/app/remove_ldap_user.py:374
 msgid "Deactivating user {dn!r} from {inst} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:351
+#: lib/pp_admintools/app/remove_ldap_user.py:377
 msgid "Removing user {dn!r} from {inst} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:357
+#: lib/pp_admintools/app/remove_ldap_user.py:383
 msgid "Attributes of {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:378
+#: lib/pp_admintools/app/remove_ldap_user.py:407
 msgid "{c} on removing user {dn!r}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:384
+#: lib/pp_admintools/app/remove_ldap_user.py:413
 msgid "User {dn!r} successful deactivated on {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:387
+#: lib/pp_admintools/app/remove_ldap_user.py:416
 msgid "User {dn!r} successful removed from {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:413
+#: lib/pp_admintools/app/remove_ldap_user.py:442
 msgid "Updating user info for {dn!r} on {inst} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:418 lib/pp_admintools/app/set_ldap_password.py:519
+#: lib/pp_admintools/app/remove_ldap_user.py:447 lib/pp_admintools/app/set_ldap_password.py:519
 msgid "{c} on deactivating user {dn!r}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:434
+#: lib/pp_admintools/app/remove_ldap_user.py:463
 msgid "Did not found any group memberships of {dn!r} in {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:440 lib/pp_admintools/app/remove_ldap_user.py:467
-#: lib/pp_admintools/app/remove_ldap_user.py:498 lib/pp_admintools/app/remove_ldap_user.py:529
+#: lib/pp_admintools/app/remove_ldap_user.py:469 lib/pp_admintools/app/remove_ldap_user.py:496
+#: lib/pp_admintools/app/remove_ldap_user.py:527 lib/pp_admintools/app/remove_ldap_user.py:558
 msgid "Removing user {u!r} from group {g!r} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:445 lib/pp_admintools/app/remove_ldap_user.py:472
-#: 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:474 lib/pp_admintools/app/remove_ldap_user.py:501
+#: lib/pp_admintools/app/remove_ldap_user.py:532 lib/pp_admintools/app/remove_ldap_user.py:563
 msgid "{c} on removing user {dn!r} from group {g!r}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:461
+#: lib/pp_admintools/app/remove_ldap_user.py:490
 msgid "Did not found any unique group memberships of {dn!r} in {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:485
+#: lib/pp_admintools/app/remove_ldap_user.py:514
 msgid "Deleting user {uid!r} from all POSIX groups in {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:492
+#: lib/pp_admintools/app/remove_ldap_user.py:521
 msgid "Did not found any POSIX group memberships of {uid!r} in {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:516
+#: lib/pp_admintools/app/remove_ldap_user.py:545
 msgid "Deleting user {uid!r} from all sudo groups in {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:523
+#: lib/pp_admintools/app/remove_ldap_user.py:552
 msgid "Did not found any sudo group memberships of {uid!r} in {inst}."
 msgstr ""
 
+#: lib/pp_admintools/app/remove_ldap_user.py:587
+msgid "No mail addresses found to remove for user {!r}."
+msgstr ""
+
+#: lib/pp_admintools/app/remove_ldap_user.py:591
+msgid "Trying to remove the following mail addresses from mailing lists:"
+msgstr ""
+
 #: lib/pp_admintools/app/set_ldap_password.py:90
 msgid ""
 "Changing the password of the given user. If no user was given, then {app} tries to use the name "