]> Frank Brehm's Git Trees - pixelpark/pp-admin-tools.git/commitdiff
Finishing Removing mailaddresses from mailung lists
authorFrank Brehm <frank.brehm@pixelpark.com>
Mon, 12 Jun 2023 15:40:53 +0000 (17:40 +0200)
committerFrank Brehm <frank.brehm@pixelpark.com>
Mon, 12 Jun 2023 15:40:53 +0000 (17:40 +0200)
lib/pp_admintools/app/ldap.py
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 f623a5669a08f28296b1bb19092afd709b90c2bb..d9255d83f885c13aac735f1f8262ea043fe62673 100644 (file)
@@ -45,7 +45,7 @@ from ..config.ldap import DEFAULT_TIMEOUT
 from ..config.ldap import LdapConfiguration, LdapConnectionInfo
 from ..xlate import XLATOR, format_list
 
-__version__ = '0.11.6'
+__version__ = '0.11.7'
 LOG = logging.getLogger(__name__)
 
 _ = XLATOR.gettext
@@ -834,7 +834,8 @@ class BaseLdapApplication(BaseDPXApplication):
         return result
 
     # -------------------------------------------------------------------------
-    def get_all_entry_dns(self, inst, ldap_filter=None, base_dn=None, scope=None):
+    def get_all_entry_dns(
+            self, inst, ldap_filter=None, base_dn=None, scope=None, no_complain=False):
         """Get DNs of all entries in the given LDAP instance and sort them."""
         connect_info = self.cfg.ldap_connection[inst]
         if not base_dn:
@@ -858,6 +859,13 @@ class BaseLdapApplication(BaseDPXApplication):
             time_limit=self.cfg.ldap_timeout)
 
         if req_status:
+            if self.verbose > 2:
+                msg = ngettext(
+                    'Found one entry with filter {fltr!r} in {uri}/{bdn}.',
+                    'Found {nr} entries with filter {fltr!r} in {uri}/{bdn}.',
+                    len(req_response)).format(
+                    nr=len(req_response), uri=connect_info.url, bdn=base_dn, fltr=ldap_filter)
+                LOG.debug(msg)
             if self.verbose > 5:
                 msg = _('Result of searching for DNs of all entries:')
                 LOG.debug(msg + '\n' + pp(req_result))
@@ -867,7 +875,12 @@ class BaseLdapApplication(BaseDPXApplication):
                 result.append(entry['dn'])
 
         else:
-            LOG.warn('Got no entry DNs.')
+            msg = _('No entry found with filter {fltr!r} in {uri}/{bdn}.').format(
+                uri=connect_info.url, bdn=base_dn, fltr=ldap_filter)
+            if not no_complain:
+                LOG.warn(msg)
+            elif self.verbose > 2:
+                LOG.debug(msg)
 
         if result:
             result = sorted(result, key=cmp_to_key(self.compare_ldap_dns))
index 91fc0d9783db05e2fae1d62b3bf076de62cfba18..f4962dda14bbbae555c6dfcdef48eac99c170259 100644 (file)
@@ -26,7 +26,7 @@ from .ldap import FatalLDAPError, LdapAppError
 from .. import pp
 from ..xlate import XLATOR
 
-__version__ = '0.6.1'
+__version__ = '0.6.2'
 LOG = logging.getLogger(__name__)
 
 _ = XLATOR.gettext
@@ -49,6 +49,9 @@ class RemoveLdapUserApplication(BaseLdapApplication):
     default_nologin_shell = '/usr/sbin/nologin'
     value_inactive = 'inactive'
     raw_empty_passwd = 'none'
+    devnull_address = 'devnull@pixelpark.com'
+    maillist_attribs = [
+        'mailForwardingAddress', 'mailRoutingAddress', 'mgrpRFC822MailMember']
 
     # -------------------------------------------------------------------------
     def __init__(self, appname=None, base_dir=None):
@@ -120,6 +123,7 @@ class RemoveLdapUserApplication(BaseLdapApplication):
 
         res['deactivate'] = self.deactivate
         res['del_mails'] = self.del_mails
+        res['devnull_address'] = self.devnull_address
 
         return res
 
@@ -385,7 +389,8 @@ class RemoveLdapUserApplication(BaseLdapApplication):
             return False
 
         if self.del_mails:
-            self.del_mails_from_lists(inst, dn, attributes)
+            if not self.del_mails_from_lists(inst, dn, attributes):
+                return False
 
         if 'uid' in attributes:
             for uid in attributes['uid']:
@@ -565,8 +570,6 @@ class RemoveLdapUserApplication(BaseLdapApplication):
     # -------------------------------------------------------------------------
     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]                               # noqa
-
         mail_addresses = CIStringSet()
         for attr in attributes.keys():
             if attr.lower() in ('mail', 'mailalternateaddress', 'mailequivalentaddress'):
@@ -580,12 +583,106 @@ class RemoveLdapUserApplication(BaseLdapApplication):
         if not len(mail_addresses):
             msg = _('No mail addresses found to remove for user {!r}.').format(dn)
             LOG.debug(msg)
-            return
+            return True
 
         msg = _('Trying to remove the following mail addresses from mailing lists:')
         msg += ' ' + format_list(mail_addresses.as_list(), do_repr=True)
         LOG.info(msg)
 
+        for address in mail_addresses:
+            if not self.del_mail_from_lists(inst, address, dn):
+                return False
+
+        return True
+
+    # -------------------------------------------------------------------------
+    def del_mail_from_lists(self, inst, address, user_dn=None):
+        """Remove the given mail address from all mailing lists."""
+        dns = CIStringSet()
+        ldap_filter = ''.join(
+            '({}={{mail}})'.format(x) for x in self.maillist_attribs).format(mail=address)
+        ldap_filter = '(|' + ldap_filter + ')'
+
+        for this_dn in self.get_all_entry_dns(inst, ldap_filter=ldap_filter, no_complain=True):
+            if user_dn is not None and user_dn.lower() == this_dn.lower():
+                LOG.debug(_('Ignoring mailing list {!r} ...').format(this_dn))
+                continue
+            dns.add(this_dn)
+
+        if self.verbose > 3:
+            msg = _('Found DNs of mailing lists:') + ' ' + pp(dns.as_list())
+            LOG.debug(msg)
+
+        if not len(dns):
+            if self.verbose > 1:
+                msg = _('Did not found any mail groups including address {!r}.').format(address)
+                LOG.debug(msg)
+            return True
+
+        for list_dn in dns:
+            if not self.del_mail_from_list(inst, address, list_dn):
+                return False
+
+        return True
+
+    # -------------------------------------------------------------------------
+    def del_mail_from_list(self, inst, address, list_dn):
+        """Remove the given mail address from the particular mailing list."""
+        msg = _('Removing address {address!r} from mailing list {dn!r}.').format(
+            address=address, dn=list_dn)
+        LOG.info(msg)
+
+        changes = {}
+        entry = self.get_entry(list_dn, inst)
+        attributes = self.normalized_attributes(entry)
+
+        empty_attribs = {}
+
+        if 'mail' in attributes:
+            for value in attributes['mail']:
+                if value.lower() == address.lower():
+                    changes['mail'] = [(MODIFY_DELETE, value)]
+                    break
+
+        for attrib in self.maillist_attribs:
+            empty_attribs[attrib] = False
+            if attrib in attributes:
+                for value in attributes[attrib]:
+                    if value.lower() == address.lower():
+                        changes[attrib] = [(MODIFY_DELETE, value)]
+                        if len(attributes[attrib]) == 1:
+                            empty_attribs[attrib] = True
+                        break
+            else:
+                empty_attribs[attrib] = True
+
+        add_devnull_addr = True
+        for attrib in self.maillist_attribs:
+            if attrib in empty_attribs and not empty_attribs[attrib]:
+                add_devnull_addr = False
+
+        if add_devnull_addr:
+            if 'mailForwardingAddress' not in changes:
+                changes['mailForwardingAddress'] = []
+            changes['mailForwardingAddress'].append((MODIFY_ADD, self.devnull_address))
+
+        if not len(changes.keys()):
+            msg = _('There are no changes for mail {mail!r} on {dn!r}?!?').format(
+                mail=address, dn=list_dn)
+            LOG.warn(msg)
+            return True
+
+        try:
+            self.modify_entry(inst, list_dn, changes)
+        except FatalLDAPError as e:
+            msg = _('{c} on removing mail {mail!r} from {dn!r}: {e}').format(
+                c=e.__class__.__name__, mail=address, dn=list_dn, e=e)
+            msg += '\n' + _('Changes:') + '\n' + pp(changes)
+            LOG.error(msg)
+            return False
+
+        return True
+
 
 # =============================================================================
 if __name__ == '__main__':
index f3f02bc730f272a2c391238efd1ac01eff343a8a..23748061f98185819be3a4f3a1a65e6db54d63d9 100644 (file)
@@ -7,8 +7,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: pp_admintools 0.9.0\n"
 "Report-Msgid-Bugs-To: frank.brehm@pixelpark.com\n"
-"POT-Creation-Date: 2023-06-12 11:53+0200\n"
-"PO-Revision-Date: 2023-05-31 10:55+0200\n"
+"POT-Creation-Date: 2023-06-12 16:57+0200\n"
+"PO-Revision-Date: 2023-06-12 17:00+0200\n"
 "Last-Translator: Frank Brehm <frank.brehm@pixelpark.com>\n"
 "Language: de_DE\n"
 "Language-Team: de_DE <solution@pixelpark.com>\n"
@@ -85,10 +85,10 @@ msgstr "Fehler {} beim Ermitteln der Lookup-Tabellentypen"
 
 #: lib/pp_admintools/app/barracuda_sync.py:231 lib/pp_admintools/app/barracuda_sync.py:427
 #: lib/pp_admintools/app/dns_deploy_zones.py:434 lib/pp_admintools/app/dns_deploy_zones.py:788
-#: lib/pp_admintools/app/ldap.py:876 lib/pp_admintools/app/ldap.py:1009
-#: lib/pp_admintools/app/ldap.py:1062 lib/pp_admintools/app/ldap.py:1115
-#: lib/pp_admintools/app/ldap.py:1403 lib/pp_admintools/app/ldap.py:1437
-#: lib/pp_admintools/app/ldap.py:1471 lib/pp_admintools/app/ldap.py:1505
+#: lib/pp_admintools/app/ldap.py:889 lib/pp_admintools/app/ldap.py:1022
+#: lib/pp_admintools/app/ldap.py:1075 lib/pp_admintools/app/ldap.py:1128
+#: lib/pp_admintools/app/ldap.py:1416 lib/pp_admintools/app/ldap.py:1450
+#: lib/pp_admintools/app/ldap.py:1484 lib/pp_admintools/app/ldap.py:1518
 msgid "Result:"
 msgstr "Ergebnis:"
 
@@ -294,7 +294,7 @@ msgstr "Es sollen keine LDAP-Einträge geändert werden."
 msgid "LDAP Entries to modified:"
 msgstr "Zu ändernde LDAP-Einträge:"
 
-#: lib/pp_admintools/app/barracuda_sync.py:756 lib/pp_admintools/app/ldap.py:1618
+#: lib/pp_admintools/app/barracuda_sync.py:756 lib/pp_admintools/app/ldap.py:1631
 msgid "Values to add to attribute {!r}:"
 msgstr "Werte, die zu Attribut {!r} hinzugefügt werden:"
 
@@ -302,11 +302,11 @@ msgstr "Werte, die zu Attribut {!r} hinzugefügt werden:"
 msgid "Values to be removed from attribute {!r}:"
 msgstr "Werte, die von Attribut {!r} gelöscht werden sollen:"
 
-#: lib/pp_admintools/app/barracuda_sync.py:777 lib/pp_admintools/app/ldap.py:1639
+#: lib/pp_admintools/app/barracuda_sync.py:777 lib/pp_admintools/app/ldap.py:1652
 msgid "Changes for attribute {!r}:"
 msgstr "Änedrungen für Attribut {!r}:"
 
-#: lib/pp_admintools/app/barracuda_sync.py:780 lib/pp_admintools/app/ldap.py:1642
+#: lib/pp_admintools/app/barracuda_sync.py:780 lib/pp_admintools/app/ldap.py:1655
 msgid "No changes to attribute {!r}."
 msgstr "Keine Änderungen an Attribut {!r}."
 
@@ -762,17 +762,17 @@ msgid "The path {!r} must be an absolute path."
 msgstr "Der Pfad {!r} muss ein absoluter Pfad sein."
 
 #: lib/pp_admintools/app/ldap.py:121 lib/pp_admintools/app/ldap.py:287
-#: lib/pp_admintools/app/ldap.py:1521
+#: lib/pp_admintools/app/ldap.py:1534
 msgid "The file {!r} does not exists."
 msgstr "Die Datei {!r} existiert nicht."
 
 #: lib/pp_admintools/app/ldap.py:125 lib/pp_admintools/app/ldap.py:291
-#: lib/pp_admintools/app/ldap.py:1526
+#: lib/pp_admintools/app/ldap.py:1539
 msgid "The given path {!r} exists, but is not a regular file."
 msgstr "Der angegebene Pfad {!r} existiert, ist aber keine reguläre Datei."
 
 #: lib/pp_admintools/app/ldap.py:129 lib/pp_admintools/app/ldap.py:295
-#: lib/pp_admintools/app/ldap.py:1531
+#: lib/pp_admintools/app/ldap.py:1544
 msgid "The given file {!r} is not readable."
 msgstr "Die angegebene Datei {} ist nicht lesbar."
 
@@ -797,7 +797,7 @@ msgid "Options fo LDAP connections"
 msgstr "Optionen für die LDAP-Verbindungen"
 
 #: lib/pp_admintools/app/ldap.py:335 lib/pp_admintools/app/mirror_ldap.py:238
-#: lib/pp_admintools/app/remove_ldap_user.py:309 lib/pp_admintools/app/set_ldap_password.py:492
+#: lib/pp_admintools/app/remove_ldap_user.py:307 lib/pp_admintools/app/set_ldap_password.py:492
 msgid "No"
 msgstr "Nein"
 
@@ -979,7 +979,7 @@ msgstr "Ergebnis der Suche:"
 msgid "Found entry {!r}."
 msgstr "Gefundener Eintrag:"
 
-#: lib/pp_admintools/app/ldap.py:822
+#: lib/pp_admintools/app/ldap.py:822 lib/pp_admintools/app/ldap.py:866
 msgid "Found one entry with filter {fltr!r} in {uri}/{bdn}."
 msgid_plural "Found {nr} enries with filter {fltr!r} in {uri}/{bdn}."
 msgstr[0] "Fand einen Eintrag mit dem Filter {fltr!r} in {uri}/{bdn}."
@@ -989,222 +989,223 @@ msgstr[1] "Fand {nr} Einträge mit dem Filter {fltr!r} in {uri}/{bdn}."
 msgid "Got response entries:"
 msgstr "Erhaltene Antworteinträge:"
 
-#: lib/pp_admintools/app/ldap.py:830
+#: lib/pp_admintools/app/ldap.py:830 lib/pp_admintools/app/ldap.py:878
 msgid "No entry found with filter {fltr!r} in {uri}/{bdn}."
 msgstr "Keinen Eintrag mit dem Filter {fltr!r} in {uri}/{bdn} gefunden."
 
-#: lib/pp_admintools/app/ldap.py:853 lib/pp_admintools/app/ldap.py:895
+#: lib/pp_admintools/app/ldap.py:854 lib/pp_admintools/app/ldap.py:908
 msgid "Using LDAP filter: {!r}"
 msgstr "Verwende LDAP-Filter: {!r}."
 
-#: lib/pp_admintools/app/ldap.py:862 lib/pp_admintools/app/ldap.py:904
+#: lib/pp_admintools/app/ldap.py:870 lib/pp_admintools/app/ldap.py:917
 msgid "Result of searching for DNs of all entries:"
 msgstr "Ergebnis der Suche nach den DNs aller Einträge:"
 
-#: lib/pp_admintools/app/ldap.py:866 lib/pp_admintools/app/ldap.py:908
-#: lib/pp_admintools/app/ldap.py:1006 lib/pp_admintools/app/ldap.py:1059
-#: lib/pp_admintools/app/ldap.py:1112 lib/pp_admintools/app/ldap.py:1200
-#: lib/pp_admintools/app/ldap.py:1400 lib/pp_admintools/app/ldap.py:1434
-#: lib/pp_admintools/app/ldap.py:1468 lib/pp_admintools/app/ldap.py:1502
+#: lib/pp_admintools/app/ldap.py:874 lib/pp_admintools/app/ldap.py:921
+#: lib/pp_admintools/app/ldap.py:1019 lib/pp_admintools/app/ldap.py:1072
+#: lib/pp_admintools/app/ldap.py:1125 lib/pp_admintools/app/ldap.py:1213
+#: lib/pp_admintools/app/ldap.py:1413 lib/pp_admintools/app/ldap.py:1447
+#: lib/pp_admintools/app/ldap.py:1481 lib/pp_admintools/app/ldap.py:1515
 msgid "Got a response entry:"
 msgstr "Erhaltener Antwort-Eintrag:"
 
-#: lib/pp_admintools/app/ldap.py:891
+#: lib/pp_admintools/app/ldap.py:904
 msgid "Getting all Entry DNs of LDAP instance {i!r} below {b!r}."
 msgstr "Hole DNs aller Einträge der LDAP-Instanz {i!r} unterhalb von {b!r}."
 
-#: lib/pp_admintools/app/ldap.py:930
+#: lib/pp_admintools/app/ldap.py:943
 msgid "Trying to evaluate DN of user {user!r} in LDAP instance {inst} ..."
 msgstr "Versuche den DN des Nutzer {user!r} auf der LDAP-Instanz {inst} zu ermitteln …"
 
-#: lib/pp_admintools/app/ldap.py:935
+#: lib/pp_admintools/app/ldap.py:948
 msgid "Trying to evaluate DN of user {u!r} as a mail address ..."
 msgstr "Versuche den DN des Nutzer {u!r} als Mailadresse zu ermitteln …"
 
-#: lib/pp_admintools/app/ldap.py:942
+#: lib/pp_admintools/app/ldap.py:955
 msgid "Trying to evaluate DN of user {u!r} as a LDAP DN ..."
 msgstr "Versuche den DN des Nutzer {u!r} als LDAP DN zu ermitteln …"
 
-#: lib/pp_admintools/app/ldap.py:949
+#: lib/pp_admintools/app/ldap.py:962
 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:319
+#: lib/pp_admintools/app/ldap.py:971 lib/pp_admintools/app/remove_ldap_user.py:317
 msgid "Empty user given."
 msgstr "Leere Nutzername übergeben."
 
-#: lib/pp_admintools/app/ldap.py:961
+#: lib/pp_admintools/app/ldap.py:974
 msgid "Trying to evaluate DN of user {u!r} as a CN ({c}) ..."
 msgstr "Versuche den DN des Nutzer {u!r} als CN ({c}) zu ermitteln …"
 
-#: lib/pp_admintools/app/ldap.py:991 lib/pp_admintools/app/ldap.py:1044
-#: lib/pp_admintools/app/ldap.py:1097 lib/pp_admintools/app/ldap.py:1388
-#: lib/pp_admintools/app/ldap.py:1422 lib/pp_admintools/app/ldap.py:1456
-#: lib/pp_admintools/app/ldap.py:1490
+#: lib/pp_admintools/app/ldap.py:1004 lib/pp_admintools/app/ldap.py:1057
+#: lib/pp_admintools/app/ldap.py:1110 lib/pp_admintools/app/ldap.py:1401
+#: lib/pp_admintools/app/ldap.py:1435 lib/pp_admintools/app/ldap.py:1469
+#: lib/pp_admintools/app/ldap.py:1503
 msgid "Searching in {uri}/{bdn} with filter: {fltr}"
 msgstr "Suche in {uri}/{bdn} mit dem Filter: {fltr}"
 
-#: lib/pp_admintools/app/ldap.py:1002
+#: lib/pp_admintools/app/ldap.py:1015
 msgid "Result of searching for mail address {m!r}:"
 msgstr "Ergebnis der Suche nach der Mailadresse {m!r}:"
 
-#: lib/pp_admintools/app/ldap.py:1013
+#: lib/pp_admintools/app/ldap.py:1026
 msgid "User with mail address {m!r} not found in {uri}/{bdn}."
 msgstr "Ein Nutzer mit der Mailadresse {m!r} wurde nicht in {uri}/{bdn} gefunden."
 
-#: lib/pp_admintools/app/ldap.py:1055
+#: lib/pp_admintools/app/ldap.py:1068
 msgid "Result of searching for uid {u!r}:"
 msgstr "Ergebnis der Suche nach UID {u!r}:"
 
-#: lib/pp_admintools/app/ldap.py:1066
+#: lib/pp_admintools/app/ldap.py:1079
 msgid "User with uid {u!r} not found in {uri}/{bdn}."
 msgstr "Ein Nutzer mit der UID {u!r} wurde nicht in {uri}/{bdn} gefunden."
 
-#: lib/pp_admintools/app/ldap.py:1108
+#: lib/pp_admintools/app/ldap.py:1121
 msgid "Result of searching for CN {cn!r}:"
 msgstr "Ergebnis der Suche nach CN {cn!r}:"
 
-#: lib/pp_admintools/app/ldap.py:1119
+#: lib/pp_admintools/app/ldap.py:1132
 msgid "User with cn {cn!r} not found in {uri}/{bdn}."
 msgstr "Ein Nutzer mit dem CN {cn!r} wurde nicht in {uri}/{bdn} gefunden."
 
-#: lib/pp_admintools/app/ldap.py:1136 lib/pp_admintools/app/set_ldap_password.py:411
+#: lib/pp_admintools/app/ldap.py:1149 lib/pp_admintools/app/set_ldap_password.py:411
 msgid "User with DN {dn!r} not found in {uri}."
 msgstr "Ein Nutzer mit dem DN {dn!r} wurde nicht in {uri} gefunden."
 
-#: lib/pp_admintools/app/ldap.py:1154
+#: lib/pp_admintools/app/ldap.py:1167
 msgid "ObjectClasses of {dn!r}:"
 msgstr "ObjectClasses von {dn!r}:"
 
-#: lib/pp_admintools/app/ldap.py:1164
+#: lib/pp_admintools/app/ldap.py:1177
 msgid "Entry {dn!r} in {uri} seems not to be an account."
 msgstr "Der Eintrag {dn!r} in {uri} scheint kein Nutzerkonto zu sein."
 
-#: lib/pp_admintools/app/ldap.py:1186
+#: lib/pp_admintools/app/ldap.py:1199
 msgid "Searching DN {dn!r} in {uri}."
 msgstr "Suche DN {dn!r} in {uri}."
 
-#: lib/pp_admintools/app/ldap.py:1196
+#: lib/pp_admintools/app/ldap.py:1209
 msgid "Result of searching for DN {dn!r}:"
 msgstr "Ergebnis der Suche nach dem DN {dn!r}:"
 
-#: lib/pp_admintools/app/ldap.py:1204
+#: lib/pp_admintools/app/ldap.py:1217
 msgid "Entry with DN {dn!r} not found in {uri}."
 msgstr "Ein Eintrag bit dem DN {dn!r} wurde nicht in {uri} gefunden."
 
-#: lib/pp_admintools/app/ldap.py:1249
+#: lib/pp_admintools/app/ldap.py:1262
 msgid "Creating entry {dn!r} on {uri}:"
 msgstr "Erstelle Eintrag {dn!r} in {uri} …"
 
-#: lib/pp_admintools/app/ldap.py:1255
+#: lib/pp_admintools/app/ldap.py:1268
 msgid "Simulation mode - entry will not be created."
 msgstr "Simulationsmodus - der Eintrag wird nicht erstellt."
 
-#: lib/pp_admintools/app/ldap.py:1262
+#: lib/pp_admintools/app/ldap.py:1275
 msgid "Creation of entry {dn!r} was NOT successfull - {c}: {e}"
 msgstr "Die Erstellung des Eintrags {dn!r} war NICHT erfolgreich - {c}: {e}"
 
-#: lib/pp_admintools/app/ldap.py:1277
+#: lib/pp_admintools/app/ldap.py:1290
 msgid "Creation status: {!r}."
 msgstr "Erstellungsstatus: {!r}"
 
-#: lib/pp_admintools/app/ldap.py:1279
+#: lib/pp_admintools/app/ldap.py:1292
 msgid "Result of creating:"
 msgstr "Ergebnis der Erstellung:"
 
-#: lib/pp_admintools/app/ldap.py:1282
+#: lib/pp_admintools/app/ldap.py:1295
 msgid "Creation of entry {dn!r} was NOT successful: {desc} - {msg}"
 msgstr "Die Erstellung des Eintrags {dn!r} war NICHT erfolgreich - {desc}: {msg}"
 
-#: lib/pp_admintools/app/ldap.py:1288
+#: lib/pp_admintools/app/ldap.py:1301
 msgid "Creation successful."
 msgstr "Die Erstellung war erfolgreich."
 
-#: lib/pp_admintools/app/ldap.py:1299
+#: lib/pp_admintools/app/ldap.py:1312
 msgid "Applying changes on {uri} to DN {dn!r}:"
 msgstr "Wende Änderungen in {uri} an DN {dn!r} an:"
 
-#: lib/pp_admintools/app/ldap.py:1304
+#: lib/pp_admintools/app/ldap.py:1317
 msgid "Simulation mode - changes are not applied."
 msgstr "Simulationsmodus - hier wird jetzt nichts geändert."
 
-#: lib/pp_admintools/app/ldap.py:1310
+#: lib/pp_admintools/app/ldap.py:1323
 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: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
+#: lib/pp_admintools/app/ldap.py:1325 lib/pp_admintools/app/ldap.py:1344
+#: lib/pp_admintools/app/remove_ldap_user.py:448 lib/pp_admintools/app/remove_ldap_user.py:475
+#: lib/pp_admintools/app/remove_ldap_user.py:502 lib/pp_admintools/app/remove_ldap_user.py:533
+#: lib/pp_admintools/app/remove_ldap_user.py:564 lib/pp_admintools/app/remove_ldap_user.py:680
+#: lib/pp_admintools/app/set_ldap_password.py:521
 msgid "Changes:"
 msgstr "Änderungen:"
 
-#: lib/pp_admintools/app/ldap.py:1324
+#: lib/pp_admintools/app/ldap.py:1337
 msgid "Modification status: {!r}."
 msgstr "Änderungsstatus: {!r}."
 
-#: lib/pp_admintools/app/ldap.py:1326
+#: lib/pp_admintools/app/ldap.py:1339
 msgid "Result of modifying:"
 msgstr "Ergebnis der Änderung:"
 
-#: lib/pp_admintools/app/ldap.py:1329
+#: lib/pp_admintools/app/ldap.py:1342
 msgid "Modification of {dn!r} was NOT successful: {desc} - {msg}"
 msgstr "Die Änderung von {dn!r} war NICHT erfolgreich - {desc}: {msg}"
 
-#: lib/pp_admintools/app/ldap.py:1334
+#: lib/pp_admintools/app/ldap.py:1347
 msgid "Modification successful."
 msgstr "Die Änderung war erfolgreich."
 
-#: lib/pp_admintools/app/ldap.py:1344
+#: lib/pp_admintools/app/ldap.py:1357
 msgid "Deleting LDAP entry {dn!r} on {uri} ..."
 msgstr "Lösche LDAP-Eintrag {dn!r} in {uri} …"
 
-#: lib/pp_admintools/app/ldap.py:1349
+#: lib/pp_admintools/app/ldap.py:1362
 msgid "Simulation mode - deletion will not be executed."
 msgstr "Simulationsmodus - hier wird jetzt nichts gelöscht."
 
-#: lib/pp_admintools/app/ldap.py:1355
+#: lib/pp_admintools/app/ldap.py:1368
 msgid "Deletion of {dn!r} was NOT successfull - {c}: {e}"
 msgstr "Das Löschen von {dn!r} war NICHT erfolgreich - {c}: {e}"
 
-#: lib/pp_admintools/app/ldap.py:1360
+#: lib/pp_admintools/app/ldap.py:1373
 msgid "Deletion status: {!r}."
 msgstr "Löschstatus: {!r}"
 
-#: lib/pp_admintools/app/ldap.py:1362
+#: lib/pp_admintools/app/ldap.py:1375
 msgid "Result of deletion:"
 msgstr "Ergebnis der Löschung:"
 
-#: lib/pp_admintools/app/ldap.py:1365
+#: lib/pp_admintools/app/ldap.py:1378
 msgid "Deletion of {dn!r} was NOT successful: {desc} - {msg}"
 msgstr "Das Löschen von {dn!r} war NICHT erfolgreich - {desc}: {msg}"
 
-#: lib/pp_admintools/app/ldap.py:1369
+#: lib/pp_admintools/app/ldap.py:1382
 msgid "Deletion successful."
 msgstr "Die Löschung war erfolgreich."
 
-#: lib/pp_admintools/app/ldap.py:1518
+#: lib/pp_admintools/app/ldap.py:1531
 msgid "Reading password file {!r} ..."
 msgstr "Lese Passwortdatei {!r} …"
 
-#: lib/pp_admintools/app/ldap.py:1549
+#: lib/pp_admintools/app/ldap.py:1562
 msgid "Could not detect RDN from DN {!r}."
 msgstr "Konnte RDN nich aus {!r} ermitteln."
 
-#: lib/pp_admintools/app/ldap.py:1553
+#: lib/pp_admintools/app/ldap.py:1566
 msgid "Found RDN attribute {!r}."
 msgstr "Fand RDN-Attribut {!r}."
 
-#: lib/pp_admintools/app/ldap.py:1559
+#: lib/pp_admintools/app/ldap.py:1572
 msgid "RDN attribute {!r} will not be touched."
 msgstr "Das RDN-Attribut {!r} wird nicht angefasst."
 
-#: lib/pp_admintools/app/ldap.py:1565 lib/pp_admintools/app/ldap.py:1584
-#: lib/pp_admintools/app/ldap.py:1662
+#: lib/pp_admintools/app/ldap.py:1578 lib/pp_admintools/app/ldap.py:1597
+#: lib/pp_admintools/app/ldap.py:1675
 msgid "Attribute {!r} will not be touched."
 msgstr "Das Attribut {!r} wird nicht angefasst."
 
-#: lib/pp_admintools/app/ldap.py:1622
+#: lib/pp_admintools/app/ldap.py:1635
 msgid "Values to removed from attribute {!r}:"
 msgstr "Werte, die von Attribut {!r} gelöscht werden."
 
@@ -1387,7 +1388,7 @@ msgstr ""
 "Starte Spiegelung der LDAP-Instanz {src!r} ({src_url}) zur Instanz {tgt!r} ({tgt_url}) "
 "[{yes}/{no}]?"
 
-#: lib/pp_admintools/app/mirror_ldap.py:238 lib/pp_admintools/app/remove_ldap_user.py:309
+#: lib/pp_admintools/app/mirror_ldap.py:238 lib/pp_admintools/app/remove_ldap_user.py:307
 #: lib/pp_admintools/app/set_ldap_password.py:492
 msgid "yes"
 msgstr "ja"
@@ -1787,7 +1788,7 @@ msgstr "Erhaltene Antwort:"
 msgid "Zone object:"
 msgstr "Zonen-Objekt:"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:74
+#: lib/pp_admintools/app/remove_ldap_user.py:76
 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,36 +1800,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:131
+#: lib/pp_admintools/app/remove_ldap_user.py:133
 msgid "Removing options"
 msgstr "Lösch-Optionen"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:134
+#: lib/pp_admintools/app/remove_ldap_user.py:136
 msgid "This is the default."
 msgstr "Dieses ist die Vorgabe."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:135
+#: lib/pp_admintools/app/remove_ldap_user.py:137
 msgid "This is mutually exclusive to {!r}."
 msgstr "Das schließt sich mit {!r} gegenseitig aus."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:137
+#: lib/pp_admintools/app/remove_ldap_user.py:139
 msgid "Deactivating the user instead of removing it."
 msgstr "Deaktivieren der Nutzer anstatt Löschung."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:144
+#: lib/pp_admintools/app/remove_ldap_user.py:146
 msgid "Removing the user from LDAP."
 msgstr "Löschen der übergebenen Nutzer im LDAP."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:151
+#: lib/pp_admintools/app/remove_ldap_user.py:153
 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/remove_ldap_user.py:161 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:160
+#: lib/pp_admintools/app/remove_ldap_user.py:162
 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 "
@@ -1839,164 +1840,188 @@ msgstr ""
 "angegeben werden. Bitte beachten, dass sich letzterer bei den verschiedenen LDAP-Instanzen "
 "unterscheiden kann."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:184
+#: lib/pp_admintools/app/remove_ldap_user.py:183
 msgid "No users to remove given."
 msgstr "Kein Nutzername zum Löschen angegeben."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:203
+#: lib/pp_admintools/app/remove_ldap_user.py:201
 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:210
+#: lib/pp_admintools/app/remove_ldap_user.py:208
 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:218
+#: lib/pp_admintools/app/remove_ldap_user.py:216
 msgid "LDAP instance {!r} has only readonly access."
 msgstr "Die LDAP-Instanz {!r} besitzt nur Lesezugriffsrechte."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:223
+#: lib/pp_admintools/app/remove_ldap_user.py:221
 msgid "No admin access to LDAP instance {!r}."
 msgstr "Keine Admin-Zugriffsrechte bei LDAP-Instanz {!r}."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:240
+#: lib/pp_admintools/app/remove_ldap_user.py:238
 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:245
+#: lib/pp_admintools/app/remove_ldap_user.py:243
 msgid "Evaluated DNs to remove:"
 msgstr "Zum Löschen ermittelte DNs:"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:254
+#: lib/pp_admintools/app/remove_ldap_user.py:252
 msgid "Start disabling user entries in:"
 msgstr "Beginne Deaktivierung der Nutzereinträge in:"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:256
+#: lib/pp_admintools/app/remove_ldap_user.py:254
 msgid "Start removing user entries in:"
 msgstr "Beginne Löschung der Nutzereinträge in:"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:260
+#: lib/pp_admintools/app/remove_ldap_user.py:258
 msgid "Start disabling user entries ..."
 msgstr "Beginne Deaktivierung der Nutzereinträge …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:262
+#: lib/pp_admintools/app/remove_ldap_user.py:260
 msgid "Start removing user entries ..."
 msgstr "Beginne Löschung der Nutzereinträge …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:277
+#: lib/pp_admintools/app/remove_ldap_user.py:275
 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:279
+#: lib/pp_admintools/app/remove_ldap_user.py:277
 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:305
+#: lib/pp_admintools/app/remove_ldap_user.py:303
 msgid "Deactivate [{yes}/{no}]?"
 msgstr "Deaktivieren [{yes}/{no}]?"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:307
+#: lib/pp_admintools/app/remove_ldap_user.py:305
 msgid "Remove [{yes}/{no}]?"
 msgstr "Löschen [{yes}/{no}]?"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:315
+#: lib/pp_admintools/app/remove_ldap_user.py:313
 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:329 lib/pp_admintools/app/set_ldap_password.py:434
+#: lib/pp_admintools/app/remove_ldap_user.py:327 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:336 lib/pp_admintools/app/set_ldap_password.py:439
+#: lib/pp_admintools/app/remove_ldap_user.py:334 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:348 lib/pp_admintools/app/set_ldap_password.py:453
+#: lib/pp_admintools/app/remove_ldap_user.py:346 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:357
+#: lib/pp_admintools/app/remove_ldap_user.py:355
 msgid "Deactivating all given users from {} ..."
 msgstr "Deaktivieren aller übergebenen Nutzer in {} …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:359
+#: lib/pp_admintools/app/remove_ldap_user.py:357
 msgid "Removing all given users from {} ..."
 msgstr "Lösche alle übergebenen Nutzer in {} …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:374
+#: lib/pp_admintools/app/remove_ldap_user.py:372
 msgid "Deactivating user {dn!r} from {inst} ..."
 msgstr "Deaktivieren von Nutzer {dn!r} in {inst} …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:377
+#: lib/pp_admintools/app/remove_ldap_user.py:375
 msgid "Removing user {dn!r} from {inst} ..."
 msgstr "Lösche Nutzer {dn!r} in {inst} …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:383
+#: lib/pp_admintools/app/remove_ldap_user.py:381
 msgid "Attributes of {!r}:"
 msgstr "Attribute von {!r}:"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:407
+#: lib/pp_admintools/app/remove_ldap_user.py:406
 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:413
+#: lib/pp_admintools/app/remove_ldap_user.py:412
 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:416
+#: lib/pp_admintools/app/remove_ldap_user.py:415
 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:442
+#: lib/pp_admintools/app/remove_ldap_user.py:441
 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:447 lib/pp_admintools/app/set_ldap_password.py:519
+#: lib/pp_admintools/app/remove_ldap_user.py:446 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:463
+#: lib/pp_admintools/app/remove_ldap_user.py:462
 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: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
+#: lib/pp_admintools/app/remove_ldap_user.py:468 lib/pp_admintools/app/remove_ldap_user.py:495
+#: lib/pp_admintools/app/remove_ldap_user.py:526 lib/pp_admintools/app/remove_ldap_user.py:557
 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: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
+#: lib/pp_admintools/app/remove_ldap_user.py:473 lib/pp_admintools/app/remove_ldap_user.py:500
+#: lib/pp_admintools/app/remove_ldap_user.py:531 lib/pp_admintools/app/remove_ldap_user.py:562
 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:490
+#: lib/pp_admintools/app/remove_ldap_user.py:489
 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:514
+#: lib/pp_admintools/app/remove_ldap_user.py:513
 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:521
+#: lib/pp_admintools/app/remove_ldap_user.py:520
 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:545
+#: lib/pp_admintools/app/remove_ldap_user.py:544
 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:552
+#: lib/pp_admintools/app/remove_ldap_user.py:551
 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
+#: lib/pp_admintools/app/remove_ldap_user.py:584
 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
+#: lib/pp_admintools/app/remove_ldap_user.py:588
 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/remove_ldap_user.py:608
+msgid "Ignoring mailing list {!r} ..."
+msgstr "Ignoriere Mailingliste {!r} …"
+
+#: lib/pp_admintools/app/remove_ldap_user.py:613
+msgid "Found DNs of mailing lists:"
+msgstr "Gefundene DNs für Mailinglisten:"
+
+#: lib/pp_admintools/app/remove_ldap_user.py:618
+msgid "Did not found any mail groups including address {!r}."
+msgstr "Keine Mailgruppen gefunden, die die Adresse {!r} enthalten."
+
+#: lib/pp_admintools/app/remove_ldap_user.py:631
+msgid "Removing address {address!r} from mailing list {dn!r}."
+msgstr "Lösche Adresse {address!r} von Mailingliste {dn!r}."
+
+#: lib/pp_admintools/app/remove_ldap_user.py:670
+msgid "There are no changes for mail {mail!r} on {dn!r}?!?"
+msgstr "Es gibt keine Änderungen für die Mailadresse {mail!r} in {dn!r}?!?"
+
+#: lib/pp_admintools/app/remove_ldap_user.py:678
+msgid "{c} on removing mail {mail!r} from {dn!r}: {e}"
+msgstr "{c} beim Löschen des der Mailadresse {mail!r} von {dn!r}: {e}"
+
 #: 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 cff517576516e4a5ad92c6e4e4682e3bced4cd04..c413c4030ec6af1d85e470e75feb6af2d1019040 100644 (file)
@@ -7,8 +7,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: pp_admintools 0.9.0\n"
 "Report-Msgid-Bugs-To: frank.brehm@pixelpark.com\n"
-"POT-Creation-Date: 2023-06-12 11:53+0200\n"
-"PO-Revision-Date: 2023-05-31 10:53+0200\n"
+"POT-Creation-Date: 2023-06-12 16:57+0200\n"
+"PO-Revision-Date: 2023-06-12 17:05+0200\n"
 "Last-Translator: Frank Brehm <frank.brehm@pixelpark.com>\n"
 "Language: en_US\n"
 "Language-Team: Frank Brehm <frank.brehm@pixelpark.com>\n"
@@ -77,10 +77,10 @@ msgstr ""
 
 #: lib/pp_admintools/app/barracuda_sync.py:231 lib/pp_admintools/app/barracuda_sync.py:427
 #: lib/pp_admintools/app/dns_deploy_zones.py:434 lib/pp_admintools/app/dns_deploy_zones.py:788
-#: lib/pp_admintools/app/ldap.py:876 lib/pp_admintools/app/ldap.py:1009
-#: lib/pp_admintools/app/ldap.py:1062 lib/pp_admintools/app/ldap.py:1115
-#: lib/pp_admintools/app/ldap.py:1403 lib/pp_admintools/app/ldap.py:1437
-#: lib/pp_admintools/app/ldap.py:1471 lib/pp_admintools/app/ldap.py:1505
+#: lib/pp_admintools/app/ldap.py:889 lib/pp_admintools/app/ldap.py:1022
+#: lib/pp_admintools/app/ldap.py:1075 lib/pp_admintools/app/ldap.py:1128
+#: lib/pp_admintools/app/ldap.py:1416 lib/pp_admintools/app/ldap.py:1450
+#: lib/pp_admintools/app/ldap.py:1484 lib/pp_admintools/app/ldap.py:1518
 msgid "Result:"
 msgstr ""
 
@@ -284,7 +284,7 @@ msgstr ""
 msgid "LDAP Entries to modified:"
 msgstr ""
 
-#: lib/pp_admintools/app/barracuda_sync.py:756 lib/pp_admintools/app/ldap.py:1618
+#: lib/pp_admintools/app/barracuda_sync.py:756 lib/pp_admintools/app/ldap.py:1631
 msgid "Values to add to attribute {!r}:"
 msgstr ""
 
@@ -292,11 +292,11 @@ msgstr ""
 msgid "Values to be removed from attribute {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/barracuda_sync.py:777 lib/pp_admintools/app/ldap.py:1639
+#: lib/pp_admintools/app/barracuda_sync.py:777 lib/pp_admintools/app/ldap.py:1652
 msgid "Changes for attribute {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/barracuda_sync.py:780 lib/pp_admintools/app/ldap.py:1642
+#: lib/pp_admintools/app/barracuda_sync.py:780 lib/pp_admintools/app/ldap.py:1655
 msgid "No changes to attribute {!r}."
 msgstr ""
 
@@ -736,17 +736,17 @@ msgid "The path {!r} must be an absolute path."
 msgstr ""
 
 #: lib/pp_admintools/app/ldap.py:121 lib/pp_admintools/app/ldap.py:287
-#: lib/pp_admintools/app/ldap.py:1521
+#: lib/pp_admintools/app/ldap.py:1534
 msgid "The file {!r} does not exists."
 msgstr ""
 
 #: lib/pp_admintools/app/ldap.py:125 lib/pp_admintools/app/ldap.py:291
-#: lib/pp_admintools/app/ldap.py:1526
+#: lib/pp_admintools/app/ldap.py:1539
 msgid "The given path {!r} exists, but is not a regular file."
 msgstr ""
 
 #: lib/pp_admintools/app/ldap.py:129 lib/pp_admintools/app/ldap.py:295
-#: lib/pp_admintools/app/ldap.py:1531
+#: lib/pp_admintools/app/ldap.py:1544
 msgid "The given file {!r} is not readable."
 msgstr ""
 
@@ -771,7 +771,7 @@ msgid "Options fo LDAP connections"
 msgstr ""
 
 #: lib/pp_admintools/app/ldap.py:335 lib/pp_admintools/app/mirror_ldap.py:238
-#: lib/pp_admintools/app/remove_ldap_user.py:309 lib/pp_admintools/app/set_ldap_password.py:492
+#: lib/pp_admintools/app/remove_ldap_user.py:307 lib/pp_admintools/app/set_ldap_password.py:492
 msgid "No"
 msgstr ""
 
@@ -945,7 +945,7 @@ msgstr ""
 msgid "Found entry {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:822
+#: lib/pp_admintools/app/ldap.py:822 lib/pp_admintools/app/ldap.py:866
 msgid "Found one entry with filter {fltr!r} in {uri}/{bdn}."
 msgid_plural "Found {nr} enries with filter {fltr!r} in {uri}/{bdn}."
 msgstr[0] ""
@@ -955,222 +955,223 @@ msgstr[1] ""
 msgid "Got response entries:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:830
+#: lib/pp_admintools/app/ldap.py:830 lib/pp_admintools/app/ldap.py:878
 msgid "No entry found with filter {fltr!r} in {uri}/{bdn}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:853 lib/pp_admintools/app/ldap.py:895
+#: lib/pp_admintools/app/ldap.py:854 lib/pp_admintools/app/ldap.py:908
 msgid "Using LDAP filter: {!r}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:862 lib/pp_admintools/app/ldap.py:904
+#: lib/pp_admintools/app/ldap.py:870 lib/pp_admintools/app/ldap.py:917
 msgid "Result of searching for DNs of all entries:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:866 lib/pp_admintools/app/ldap.py:908
-#: lib/pp_admintools/app/ldap.py:1006 lib/pp_admintools/app/ldap.py:1059
-#: lib/pp_admintools/app/ldap.py:1112 lib/pp_admintools/app/ldap.py:1200
-#: lib/pp_admintools/app/ldap.py:1400 lib/pp_admintools/app/ldap.py:1434
-#: lib/pp_admintools/app/ldap.py:1468 lib/pp_admintools/app/ldap.py:1502
+#: lib/pp_admintools/app/ldap.py:874 lib/pp_admintools/app/ldap.py:921
+#: lib/pp_admintools/app/ldap.py:1019 lib/pp_admintools/app/ldap.py:1072
+#: lib/pp_admintools/app/ldap.py:1125 lib/pp_admintools/app/ldap.py:1213
+#: lib/pp_admintools/app/ldap.py:1413 lib/pp_admintools/app/ldap.py:1447
+#: lib/pp_admintools/app/ldap.py:1481 lib/pp_admintools/app/ldap.py:1515
 msgid "Got a response entry:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:891
+#: lib/pp_admintools/app/ldap.py:904
 msgid "Getting all Entry DNs of LDAP instance {i!r} below {b!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:930
+#: lib/pp_admintools/app/ldap.py:943
 msgid "Trying to evaluate DN of user {user!r} in LDAP instance {inst} ..."
 msgstr "Trying to evaluate DN of user {user!r} in LDAP instance {inst} …"
 
-#: lib/pp_admintools/app/ldap.py:935
+#: lib/pp_admintools/app/ldap.py:948
 msgid "Trying to evaluate DN of user {u!r} as a mail address ..."
 msgstr "Trying to evaluate DN of user {u!r} as a mail address …"
 
-#: lib/pp_admintools/app/ldap.py:942
+#: lib/pp_admintools/app/ldap.py:955
 msgid "Trying to evaluate DN of user {u!r} as a LDAP DN ..."
 msgstr "Trying to evaluate DN of user {u!r} as a LDAP DN …"
 
-#: lib/pp_admintools/app/ldap.py:949
+#: lib/pp_admintools/app/ldap.py:962
 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:319
+#: lib/pp_admintools/app/ldap.py:971 lib/pp_admintools/app/remove_ldap_user.py:317
 msgid "Empty user given."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:961
+#: lib/pp_admintools/app/ldap.py:974
 msgid "Trying to evaluate DN of user {u!r} as a CN ({c}) ..."
 msgstr "Trying to evaluate DN of user {u!r} as a CN ({c}) …"
 
-#: lib/pp_admintools/app/ldap.py:991 lib/pp_admintools/app/ldap.py:1044
-#: lib/pp_admintools/app/ldap.py:1097 lib/pp_admintools/app/ldap.py:1388
-#: lib/pp_admintools/app/ldap.py:1422 lib/pp_admintools/app/ldap.py:1456
-#: lib/pp_admintools/app/ldap.py:1490
+#: lib/pp_admintools/app/ldap.py:1004 lib/pp_admintools/app/ldap.py:1057
+#: lib/pp_admintools/app/ldap.py:1110 lib/pp_admintools/app/ldap.py:1401
+#: lib/pp_admintools/app/ldap.py:1435 lib/pp_admintools/app/ldap.py:1469
+#: lib/pp_admintools/app/ldap.py:1503
 msgid "Searching in {uri}/{bdn} with filter: {fltr}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1002
+#: lib/pp_admintools/app/ldap.py:1015
 msgid "Result of searching for mail address {m!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1013
+#: lib/pp_admintools/app/ldap.py:1026
 msgid "User with mail address {m!r} not found in {uri}/{bdn}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1055
+#: lib/pp_admintools/app/ldap.py:1068
 msgid "Result of searching for uid {u!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1066
+#: lib/pp_admintools/app/ldap.py:1079
 msgid "User with uid {u!r} not found in {uri}/{bdn}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1108
+#: lib/pp_admintools/app/ldap.py:1121
 msgid "Result of searching for CN {cn!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1119
+#: lib/pp_admintools/app/ldap.py:1132
 msgid "User with cn {cn!r} not found in {uri}/{bdn}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1136 lib/pp_admintools/app/set_ldap_password.py:411
+#: lib/pp_admintools/app/ldap.py:1149 lib/pp_admintools/app/set_ldap_password.py:411
 msgid "User with DN {dn!r} not found in {uri}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1154
+#: lib/pp_admintools/app/ldap.py:1167
 msgid "ObjectClasses of {dn!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1164
+#: lib/pp_admintools/app/ldap.py:1177
 msgid "Entry {dn!r} in {uri} seems not to be an account."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1186
+#: lib/pp_admintools/app/ldap.py:1199
 msgid "Searching DN {dn!r} in {uri}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1196
+#: lib/pp_admintools/app/ldap.py:1209
 msgid "Result of searching for DN {dn!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1204
+#: lib/pp_admintools/app/ldap.py:1217
 msgid "Entry with DN {dn!r} not found in {uri}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1249
+#: lib/pp_admintools/app/ldap.py:1262
 msgid "Creating entry {dn!r} on {uri}:"
 msgstr "Creating entry {dn!r} on {uri}:"
 
-#: lib/pp_admintools/app/ldap.py:1255
+#: lib/pp_admintools/app/ldap.py:1268
 msgid "Simulation mode - entry will not be created."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1262
+#: lib/pp_admintools/app/ldap.py:1275
 msgid "Creation of entry {dn!r} was NOT successfull - {c}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1277
+#: lib/pp_admintools/app/ldap.py:1290
 msgid "Creation status: {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1279
+#: lib/pp_admintools/app/ldap.py:1292
 msgid "Result of creating:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1282
+#: lib/pp_admintools/app/ldap.py:1295
 msgid "Creation of entry {dn!r} was NOT successful: {desc} - {msg}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1288
+#: lib/pp_admintools/app/ldap.py:1301
 msgid "Creation successful."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1299
+#: lib/pp_admintools/app/ldap.py:1312
 msgid "Applying changes on {uri} to DN {dn!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1304
+#: lib/pp_admintools/app/ldap.py:1317
 msgid "Simulation mode - changes are not applied."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1310
+#: lib/pp_admintools/app/ldap.py:1323
 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: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
+#: lib/pp_admintools/app/ldap.py:1325 lib/pp_admintools/app/ldap.py:1344
+#: lib/pp_admintools/app/remove_ldap_user.py:448 lib/pp_admintools/app/remove_ldap_user.py:475
+#: lib/pp_admintools/app/remove_ldap_user.py:502 lib/pp_admintools/app/remove_ldap_user.py:533
+#: lib/pp_admintools/app/remove_ldap_user.py:564 lib/pp_admintools/app/remove_ldap_user.py:680
+#: lib/pp_admintools/app/set_ldap_password.py:521
 msgid "Changes:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1324
+#: lib/pp_admintools/app/ldap.py:1337
 msgid "Modification status: {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1326
+#: lib/pp_admintools/app/ldap.py:1339
 msgid "Result of modifying:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1329
+#: lib/pp_admintools/app/ldap.py:1342
 msgid "Modification of {dn!r} was NOT successful: {desc} - {msg}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1334
+#: lib/pp_admintools/app/ldap.py:1347
 msgid "Modification successful."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1344
+#: lib/pp_admintools/app/ldap.py:1357
 msgid "Deleting LDAP entry {dn!r} on {uri} ..."
 msgstr "Deleting LDAP entry {dn!r} on {uri} …"
 
-#: lib/pp_admintools/app/ldap.py:1349
+#: lib/pp_admintools/app/ldap.py:1362
 msgid "Simulation mode - deletion will not be executed."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1355
+#: lib/pp_admintools/app/ldap.py:1368
 msgid "Deletion of {dn!r} was NOT successfull - {c}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1360
+#: lib/pp_admintools/app/ldap.py:1373
 msgid "Deletion status: {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1362
+#: lib/pp_admintools/app/ldap.py:1375
 msgid "Result of deletion:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1365
+#: lib/pp_admintools/app/ldap.py:1378
 msgid "Deletion of {dn!r} was NOT successful: {desc} - {msg}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1369
+#: lib/pp_admintools/app/ldap.py:1382
 msgid "Deletion successful."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1518
+#: lib/pp_admintools/app/ldap.py:1531
 msgid "Reading password file {!r} ..."
 msgstr "Reading password file {!r} …"
 
-#: lib/pp_admintools/app/ldap.py:1549
+#: lib/pp_admintools/app/ldap.py:1562
 msgid "Could not detect RDN from DN {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1553
+#: lib/pp_admintools/app/ldap.py:1566
 msgid "Found RDN attribute {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1559
+#: lib/pp_admintools/app/ldap.py:1572
 msgid "RDN attribute {!r} will not be touched."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1565 lib/pp_admintools/app/ldap.py:1584
-#: lib/pp_admintools/app/ldap.py:1662
+#: lib/pp_admintools/app/ldap.py:1578 lib/pp_admintools/app/ldap.py:1597
+#: lib/pp_admintools/app/ldap.py:1675
 msgid "Attribute {!r} will not be touched."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1622
+#: lib/pp_admintools/app/ldap.py:1635
 msgid "Values to removed from attribute {!r}:"
 msgstr ""
 
@@ -1333,7 +1334,7 @@ msgstr ""
 msgid "Start mirroring LDAP instance {src!r} ({src_url}) to instance {tgt!r} ({tgt_url}) [{yes}/{no}]?"
 msgstr "Start mirroring LDAP instance {src!r} ({src_url}) to instance {tgt!r} ({tgt_url}) [{yes}/{no}]?"
 
-#: lib/pp_admintools/app/mirror_ldap.py:238 lib/pp_admintools/app/remove_ldap_user.py:309
+#: lib/pp_admintools/app/mirror_ldap.py:238 lib/pp_admintools/app/remove_ldap_user.py:307
 #: lib/pp_admintools/app/set_ldap_password.py:492
 msgid "yes"
 msgstr ""
@@ -1723,7 +1724,7 @@ msgstr ""
 msgid "Zone object:"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:74
+#: lib/pp_admintools/app/remove_ldap_user.py:76
 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,200 +1732,224 @@ msgid ""
 "user will be really removed from LDAP."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:131
+#: lib/pp_admintools/app/remove_ldap_user.py:133
 msgid "Removing options"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:134
+#: lib/pp_admintools/app/remove_ldap_user.py:136
 msgid "This is the default."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:135
+#: lib/pp_admintools/app/remove_ldap_user.py:137
 msgid "This is mutually exclusive to {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:137
+#: lib/pp_admintools/app/remove_ldap_user.py:139
 msgid "Deactivating the user instead of removing it."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:144
+#: lib/pp_admintools/app/remove_ldap_user.py:146
 msgid "Removing the user from LDAP."
 msgstr "Removing the user from LDAP."
 
-#: lib/pp_admintools/app/remove_ldap_user.py:151
+#: lib/pp_admintools/app/remove_ldap_user.py:153
 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/remove_ldap_user.py:161 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:160
+#: lib/pp_admintools/app/remove_ldap_user.py:162
 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:184
+#: lib/pp_admintools/app/remove_ldap_user.py:183
 msgid "No users to remove given."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:203
+#: lib/pp_admintools/app/remove_ldap_user.py:201
 msgid "Checking given instances for admin and read/write access."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:210
+#: lib/pp_admintools/app/remove_ldap_user.py:208
 msgid "LDAP instance {!r} not found in configuration."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:218
+#: lib/pp_admintools/app/remove_ldap_user.py:216
 msgid "LDAP instance {!r} has only readonly access."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:223
+#: lib/pp_admintools/app/remove_ldap_user.py:221
 msgid "No admin access to LDAP instance {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:240
+#: lib/pp_admintools/app/remove_ldap_user.py:238
 msgid "All given users were not found in any LDAP instance."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:245
+#: lib/pp_admintools/app/remove_ldap_user.py:243
 msgid "Evaluated DNs to remove:"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:254
+#: lib/pp_admintools/app/remove_ldap_user.py:252
 msgid "Start disabling user entries in:"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:256
+#: lib/pp_admintools/app/remove_ldap_user.py:254
 msgid "Start removing user entries in:"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:260
+#: lib/pp_admintools/app/remove_ldap_user.py:258
 msgid "Start disabling user entries ..."
 msgstr "Start disabling user entries …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:262
+#: lib/pp_admintools/app/remove_ldap_user.py:260
 msgid "Start removing user entries ..."
 msgstr "Start removing user entries …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:277
+#: lib/pp_admintools/app/remove_ldap_user.py:275
 msgid "Do you really want to deactivate the following users?"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:279
+#: lib/pp_admintools/app/remove_ldap_user.py:277
 msgid "Do you really want to remove the following users?"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:305
+#: lib/pp_admintools/app/remove_ldap_user.py:303
 msgid "Deactivate [{yes}/{no}]?"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:307
+#: lib/pp_admintools/app/remove_ldap_user.py:305
 msgid "Remove [{yes}/{no}]?"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:315
+#: lib/pp_admintools/app/remove_ldap_user.py:313
 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:329 lib/pp_admintools/app/set_ldap_password.py:434
+#: lib/pp_admintools/app/remove_ldap_user.py:327 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:336 lib/pp_admintools/app/set_ldap_password.py:439
+#: lib/pp_admintools/app/remove_ldap_user.py:334 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:348 lib/pp_admintools/app/set_ldap_password.py:453
+#: lib/pp_admintools/app/remove_ldap_user.py:346 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:357
+#: lib/pp_admintools/app/remove_ldap_user.py:355
 msgid "Deactivating all given users from {} ..."
 msgstr "Deactivating all given users from {} …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:359
+#: lib/pp_admintools/app/remove_ldap_user.py:357
 msgid "Removing all given users from {} ..."
 msgstr "Removing all given users from {} …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:374
+#: lib/pp_admintools/app/remove_ldap_user.py:372
 msgid "Deactivating user {dn!r} from {inst} ..."
 msgstr "Deactivating user {dn!r} from {inst} …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:377
+#: lib/pp_admintools/app/remove_ldap_user.py:375
 msgid "Removing user {dn!r} from {inst} ..."
 msgstr "Removing user {dn!r} from {inst} …"
 
-#: lib/pp_admintools/app/remove_ldap_user.py:383
+#: lib/pp_admintools/app/remove_ldap_user.py:381
 msgid "Attributes of {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:407
+#: lib/pp_admintools/app/remove_ldap_user.py:406
 msgid "{c} on removing user {dn!r}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:413
+#: lib/pp_admintools/app/remove_ldap_user.py:412
 msgid "User {dn!r} successful deactivated on {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:416
+#: lib/pp_admintools/app/remove_ldap_user.py:415
 msgid "User {dn!r} successful removed from {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:442
+#: lib/pp_admintools/app/remove_ldap_user.py:441
 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:447 lib/pp_admintools/app/set_ldap_password.py:519
+#: lib/pp_admintools/app/remove_ldap_user.py:446 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:463
+#: lib/pp_admintools/app/remove_ldap_user.py:462
 msgid "Did not found any group memberships of {dn!r} in {inst}."
 msgstr ""
 
-#: 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
+#: lib/pp_admintools/app/remove_ldap_user.py:468 lib/pp_admintools/app/remove_ldap_user.py:495
+#: lib/pp_admintools/app/remove_ldap_user.py:526 lib/pp_admintools/app/remove_ldap_user.py:557
 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: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
+#: lib/pp_admintools/app/remove_ldap_user.py:473 lib/pp_admintools/app/remove_ldap_user.py:500
+#: lib/pp_admintools/app/remove_ldap_user.py:531 lib/pp_admintools/app/remove_ldap_user.py:562
 msgid "{c} on removing user {dn!r} from group {g!r}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:490
+#: lib/pp_admintools/app/remove_ldap_user.py:489
 msgid "Did not found any unique group memberships of {dn!r} in {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:514
+#: lib/pp_admintools/app/remove_ldap_user.py:513
 msgid "Deleting user {uid!r} from all POSIX groups in {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:521
+#: lib/pp_admintools/app/remove_ldap_user.py:520
 msgid "Did not found any POSIX group memberships of {uid!r} in {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:545
+#: lib/pp_admintools/app/remove_ldap_user.py:544
 msgid "Deleting user {uid!r} from all sudo groups in {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:552
+#: lib/pp_admintools/app/remove_ldap_user.py:551
 msgid "Did not found any sudo group memberships of {uid!r} in {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:587
+#: lib/pp_admintools/app/remove_ldap_user.py:584
 msgid "No mail addresses found to remove for user {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:591
+#: lib/pp_admintools/app/remove_ldap_user.py:588
 msgid "Trying to remove the following mail addresses from mailing lists:"
 msgstr ""
 
+#: lib/pp_admintools/app/remove_ldap_user.py:608
+msgid "Ignoring mailing list {!r} ..."
+msgstr "Ignoring mailing list {!r} …"
+
+#: lib/pp_admintools/app/remove_ldap_user.py:613
+msgid "Found DNs of mailing lists:"
+msgstr ""
+
+#: lib/pp_admintools/app/remove_ldap_user.py:618
+msgid "Did not found any mail groups including address {!r}."
+msgstr ""
+
+#: lib/pp_admintools/app/remove_ldap_user.py:631
+msgid "Removing address {address!r} from mailing list {dn!r}."
+msgstr ""
+
+#: lib/pp_admintools/app/remove_ldap_user.py:670
+msgid "There are no changes for mail {mail!r} on {dn!r}?!?"
+msgstr ""
+
+#: lib/pp_admintools/app/remove_ldap_user.py:678
+msgid "{c} on removing mail {mail!r} from {dn!r}: {e}"
+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 016f1a3da0ee2329b573cd4e9a88cebb82b07d34..588124672389e9e79fbd47cce49b3982bd43cc69 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: pp_admintools 0.9.0\n"
 "Report-Msgid-Bugs-To: frank.brehm@pixelpark.com\n"
-"POT-Creation-Date: 2023-06-12 11:53+0200\n"
+"POT-Creation-Date: 2023-06-12 16:57+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"
@@ -76,10 +76,10 @@ msgstr ""
 
 #: lib/pp_admintools/app/barracuda_sync.py:231 lib/pp_admintools/app/barracuda_sync.py:427
 #: lib/pp_admintools/app/dns_deploy_zones.py:434 lib/pp_admintools/app/dns_deploy_zones.py:788
-#: lib/pp_admintools/app/ldap.py:876 lib/pp_admintools/app/ldap.py:1009
-#: lib/pp_admintools/app/ldap.py:1062 lib/pp_admintools/app/ldap.py:1115
-#: lib/pp_admintools/app/ldap.py:1403 lib/pp_admintools/app/ldap.py:1437
-#: lib/pp_admintools/app/ldap.py:1471 lib/pp_admintools/app/ldap.py:1505
+#: lib/pp_admintools/app/ldap.py:889 lib/pp_admintools/app/ldap.py:1022
+#: lib/pp_admintools/app/ldap.py:1075 lib/pp_admintools/app/ldap.py:1128
+#: lib/pp_admintools/app/ldap.py:1416 lib/pp_admintools/app/ldap.py:1450
+#: lib/pp_admintools/app/ldap.py:1484 lib/pp_admintools/app/ldap.py:1518
 msgid "Result:"
 msgstr ""
 
@@ -283,7 +283,7 @@ msgstr ""
 msgid "LDAP Entries to modified:"
 msgstr ""
 
-#: lib/pp_admintools/app/barracuda_sync.py:756 lib/pp_admintools/app/ldap.py:1618
+#: lib/pp_admintools/app/barracuda_sync.py:756 lib/pp_admintools/app/ldap.py:1631
 msgid "Values to add to attribute {!r}:"
 msgstr ""
 
@@ -291,11 +291,11 @@ msgstr ""
 msgid "Values to be removed from attribute {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/barracuda_sync.py:777 lib/pp_admintools/app/ldap.py:1639
+#: lib/pp_admintools/app/barracuda_sync.py:777 lib/pp_admintools/app/ldap.py:1652
 msgid "Changes for attribute {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/barracuda_sync.py:780 lib/pp_admintools/app/ldap.py:1642
+#: lib/pp_admintools/app/barracuda_sync.py:780 lib/pp_admintools/app/ldap.py:1655
 msgid "No changes to attribute {!r}."
 msgstr ""
 
@@ -735,17 +735,17 @@ msgid "The path {!r} must be an absolute path."
 msgstr ""
 
 #: lib/pp_admintools/app/ldap.py:121 lib/pp_admintools/app/ldap.py:287
-#: lib/pp_admintools/app/ldap.py:1521
+#: lib/pp_admintools/app/ldap.py:1534
 msgid "The file {!r} does not exists."
 msgstr ""
 
 #: lib/pp_admintools/app/ldap.py:125 lib/pp_admintools/app/ldap.py:291
-#: lib/pp_admintools/app/ldap.py:1526
+#: lib/pp_admintools/app/ldap.py:1539
 msgid "The given path {!r} exists, but is not a regular file."
 msgstr ""
 
 #: lib/pp_admintools/app/ldap.py:129 lib/pp_admintools/app/ldap.py:295
-#: lib/pp_admintools/app/ldap.py:1531
+#: lib/pp_admintools/app/ldap.py:1544
 msgid "The given file {!r} is not readable."
 msgstr ""
 
@@ -770,7 +770,7 @@ msgid "Options fo LDAP connections"
 msgstr ""
 
 #: lib/pp_admintools/app/ldap.py:335 lib/pp_admintools/app/mirror_ldap.py:238
-#: lib/pp_admintools/app/remove_ldap_user.py:309 lib/pp_admintools/app/set_ldap_password.py:492
+#: lib/pp_admintools/app/remove_ldap_user.py:307 lib/pp_admintools/app/set_ldap_password.py:492
 msgid "No"
 msgstr ""
 
@@ -944,7 +944,7 @@ msgstr ""
 msgid "Found entry {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:822
+#: lib/pp_admintools/app/ldap.py:822 lib/pp_admintools/app/ldap.py:866
 msgid "Found one entry with filter {fltr!r} in {uri}/{bdn}."
 msgid_plural "Found {nr} enries with filter {fltr!r} in {uri}/{bdn}."
 msgstr[0] ""
@@ -954,222 +954,223 @@ msgstr[1] ""
 msgid "Got response entries:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:830
+#: lib/pp_admintools/app/ldap.py:830 lib/pp_admintools/app/ldap.py:878
 msgid "No entry found with filter {fltr!r} in {uri}/{bdn}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:853 lib/pp_admintools/app/ldap.py:895
+#: lib/pp_admintools/app/ldap.py:854 lib/pp_admintools/app/ldap.py:908
 msgid "Using LDAP filter: {!r}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:862 lib/pp_admintools/app/ldap.py:904
+#: lib/pp_admintools/app/ldap.py:870 lib/pp_admintools/app/ldap.py:917
 msgid "Result of searching for DNs of all entries:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:866 lib/pp_admintools/app/ldap.py:908
-#: lib/pp_admintools/app/ldap.py:1006 lib/pp_admintools/app/ldap.py:1059
-#: lib/pp_admintools/app/ldap.py:1112 lib/pp_admintools/app/ldap.py:1200
-#: lib/pp_admintools/app/ldap.py:1400 lib/pp_admintools/app/ldap.py:1434
-#: lib/pp_admintools/app/ldap.py:1468 lib/pp_admintools/app/ldap.py:1502
+#: lib/pp_admintools/app/ldap.py:874 lib/pp_admintools/app/ldap.py:921
+#: lib/pp_admintools/app/ldap.py:1019 lib/pp_admintools/app/ldap.py:1072
+#: lib/pp_admintools/app/ldap.py:1125 lib/pp_admintools/app/ldap.py:1213
+#: lib/pp_admintools/app/ldap.py:1413 lib/pp_admintools/app/ldap.py:1447
+#: lib/pp_admintools/app/ldap.py:1481 lib/pp_admintools/app/ldap.py:1515
 msgid "Got a response entry:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:891
+#: lib/pp_admintools/app/ldap.py:904
 msgid "Getting all Entry DNs of LDAP instance {i!r} below {b!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:930
+#: lib/pp_admintools/app/ldap.py:943
 msgid "Trying to evaluate DN of user {user!r} in LDAP instance {inst} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:935
+#: lib/pp_admintools/app/ldap.py:948
 msgid "Trying to evaluate DN of user {u!r} as a mail address ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:942
+#: lib/pp_admintools/app/ldap.py:955
 msgid "Trying to evaluate DN of user {u!r} as a LDAP DN ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:949
+#: lib/pp_admintools/app/ldap.py:962
 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:319
+#: lib/pp_admintools/app/ldap.py:971 lib/pp_admintools/app/remove_ldap_user.py:317
 msgid "Empty user given."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:961
+#: lib/pp_admintools/app/ldap.py:974
 msgid "Trying to evaluate DN of user {u!r} as a CN ({c}) ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:991 lib/pp_admintools/app/ldap.py:1044
-#: lib/pp_admintools/app/ldap.py:1097 lib/pp_admintools/app/ldap.py:1388
-#: lib/pp_admintools/app/ldap.py:1422 lib/pp_admintools/app/ldap.py:1456
-#: lib/pp_admintools/app/ldap.py:1490
+#: lib/pp_admintools/app/ldap.py:1004 lib/pp_admintools/app/ldap.py:1057
+#: lib/pp_admintools/app/ldap.py:1110 lib/pp_admintools/app/ldap.py:1401
+#: lib/pp_admintools/app/ldap.py:1435 lib/pp_admintools/app/ldap.py:1469
+#: lib/pp_admintools/app/ldap.py:1503
 msgid "Searching in {uri}/{bdn} with filter: {fltr}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1002
+#: lib/pp_admintools/app/ldap.py:1015
 msgid "Result of searching for mail address {m!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1013
+#: lib/pp_admintools/app/ldap.py:1026
 msgid "User with mail address {m!r} not found in {uri}/{bdn}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1055
+#: lib/pp_admintools/app/ldap.py:1068
 msgid "Result of searching for uid {u!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1066
+#: lib/pp_admintools/app/ldap.py:1079
 msgid "User with uid {u!r} not found in {uri}/{bdn}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1108
+#: lib/pp_admintools/app/ldap.py:1121
 msgid "Result of searching for CN {cn!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1119
+#: lib/pp_admintools/app/ldap.py:1132
 msgid "User with cn {cn!r} not found in {uri}/{bdn}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1136 lib/pp_admintools/app/set_ldap_password.py:411
+#: lib/pp_admintools/app/ldap.py:1149 lib/pp_admintools/app/set_ldap_password.py:411
 msgid "User with DN {dn!r} not found in {uri}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1154
+#: lib/pp_admintools/app/ldap.py:1167
 msgid "ObjectClasses of {dn!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1164
+#: lib/pp_admintools/app/ldap.py:1177
 msgid "Entry {dn!r} in {uri} seems not to be an account."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1186
+#: lib/pp_admintools/app/ldap.py:1199
 msgid "Searching DN {dn!r} in {uri}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1196
+#: lib/pp_admintools/app/ldap.py:1209
 msgid "Result of searching for DN {dn!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1204
+#: lib/pp_admintools/app/ldap.py:1217
 msgid "Entry with DN {dn!r} not found in {uri}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1249
+#: lib/pp_admintools/app/ldap.py:1262
 msgid "Creating entry {dn!r} on {uri}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1255
+#: lib/pp_admintools/app/ldap.py:1268
 msgid "Simulation mode - entry will not be created."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1262
+#: lib/pp_admintools/app/ldap.py:1275
 msgid "Creation of entry {dn!r} was NOT successfull - {c}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1277
+#: lib/pp_admintools/app/ldap.py:1290
 msgid "Creation status: {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1279
+#: lib/pp_admintools/app/ldap.py:1292
 msgid "Result of creating:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1282
+#: lib/pp_admintools/app/ldap.py:1295
 msgid "Creation of entry {dn!r} was NOT successful: {desc} - {msg}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1288
+#: lib/pp_admintools/app/ldap.py:1301
 msgid "Creation successful."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1299
+#: lib/pp_admintools/app/ldap.py:1312
 msgid "Applying changes on {uri} to DN {dn!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1304
+#: lib/pp_admintools/app/ldap.py:1317
 msgid "Simulation mode - changes are not applied."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1310
+#: lib/pp_admintools/app/ldap.py:1323
 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: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
+#: lib/pp_admintools/app/ldap.py:1325 lib/pp_admintools/app/ldap.py:1344
+#: lib/pp_admintools/app/remove_ldap_user.py:448 lib/pp_admintools/app/remove_ldap_user.py:475
+#: lib/pp_admintools/app/remove_ldap_user.py:502 lib/pp_admintools/app/remove_ldap_user.py:533
+#: lib/pp_admintools/app/remove_ldap_user.py:564 lib/pp_admintools/app/remove_ldap_user.py:680
+#: lib/pp_admintools/app/set_ldap_password.py:521
 msgid "Changes:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1324
+#: lib/pp_admintools/app/ldap.py:1337
 msgid "Modification status: {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1326
+#: lib/pp_admintools/app/ldap.py:1339
 msgid "Result of modifying:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1329
+#: lib/pp_admintools/app/ldap.py:1342
 msgid "Modification of {dn!r} was NOT successful: {desc} - {msg}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1334
+#: lib/pp_admintools/app/ldap.py:1347
 msgid "Modification successful."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1344
+#: lib/pp_admintools/app/ldap.py:1357
 msgid "Deleting LDAP entry {dn!r} on {uri} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1349
+#: lib/pp_admintools/app/ldap.py:1362
 msgid "Simulation mode - deletion will not be executed."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1355
+#: lib/pp_admintools/app/ldap.py:1368
 msgid "Deletion of {dn!r} was NOT successfull - {c}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1360
+#: lib/pp_admintools/app/ldap.py:1373
 msgid "Deletion status: {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1362
+#: lib/pp_admintools/app/ldap.py:1375
 msgid "Result of deletion:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1365
+#: lib/pp_admintools/app/ldap.py:1378
 msgid "Deletion of {dn!r} was NOT successful: {desc} - {msg}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1369
+#: lib/pp_admintools/app/ldap.py:1382
 msgid "Deletion successful."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1518
+#: lib/pp_admintools/app/ldap.py:1531
 msgid "Reading password file {!r} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1549
+#: lib/pp_admintools/app/ldap.py:1562
 msgid "Could not detect RDN from DN {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1553
+#: lib/pp_admintools/app/ldap.py:1566
 msgid "Found RDN attribute {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1559
+#: lib/pp_admintools/app/ldap.py:1572
 msgid "RDN attribute {!r} will not be touched."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1565 lib/pp_admintools/app/ldap.py:1584
-#: lib/pp_admintools/app/ldap.py:1662
+#: lib/pp_admintools/app/ldap.py:1578 lib/pp_admintools/app/ldap.py:1597
+#: lib/pp_admintools/app/ldap.py:1675
 msgid "Attribute {!r} will not be touched."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1622
+#: lib/pp_admintools/app/ldap.py:1635
 msgid "Values to removed from attribute {!r}:"
 msgstr ""
 
@@ -1332,7 +1333,7 @@ msgstr ""
 msgid "Start mirroring LDAP instance {src!r} ({src_url}) to instance {tgt!r} ({tgt_url}) [{yes}/{no}]?"
 msgstr ""
 
-#: lib/pp_admintools/app/mirror_ldap.py:238 lib/pp_admintools/app/remove_ldap_user.py:309
+#: lib/pp_admintools/app/mirror_ldap.py:238 lib/pp_admintools/app/remove_ldap_user.py:307
 #: lib/pp_admintools/app/set_ldap_password.py:492
 msgid "yes"
 msgstr ""
@@ -1722,7 +1723,7 @@ msgstr ""
 msgid "Zone object:"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:74
+#: lib/pp_admintools/app/remove_ldap_user.py:76
 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,200 +1731,224 @@ msgid ""
 "user will be really removed from LDAP."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:131
+#: lib/pp_admintools/app/remove_ldap_user.py:133
 msgid "Removing options"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:134
+#: lib/pp_admintools/app/remove_ldap_user.py:136
 msgid "This is the default."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:135
+#: lib/pp_admintools/app/remove_ldap_user.py:137
 msgid "This is mutually exclusive to {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:137
+#: lib/pp_admintools/app/remove_ldap_user.py:139
 msgid "Deactivating the user instead of removing it."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:144
+#: lib/pp_admintools/app/remove_ldap_user.py:146
 msgid "Removing the user from LDAP."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:151
+#: lib/pp_admintools/app/remove_ldap_user.py:153
 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/remove_ldap_user.py:161 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:160
+#: lib/pp_admintools/app/remove_ldap_user.py:162
 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:184
+#: lib/pp_admintools/app/remove_ldap_user.py:183
 msgid "No users to remove given."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:203
+#: lib/pp_admintools/app/remove_ldap_user.py:201
 msgid "Checking given instances for admin and read/write access."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:210
+#: lib/pp_admintools/app/remove_ldap_user.py:208
 msgid "LDAP instance {!r} not found in configuration."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:218
+#: lib/pp_admintools/app/remove_ldap_user.py:216
 msgid "LDAP instance {!r} has only readonly access."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:223
+#: lib/pp_admintools/app/remove_ldap_user.py:221
 msgid "No admin access to LDAP instance {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:240
+#: lib/pp_admintools/app/remove_ldap_user.py:238
 msgid "All given users were not found in any LDAP instance."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:245
+#: lib/pp_admintools/app/remove_ldap_user.py:243
 msgid "Evaluated DNs to remove:"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:254
+#: lib/pp_admintools/app/remove_ldap_user.py:252
 msgid "Start disabling user entries in:"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:256
+#: lib/pp_admintools/app/remove_ldap_user.py:254
 msgid "Start removing user entries in:"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:260
+#: lib/pp_admintools/app/remove_ldap_user.py:258
 msgid "Start disabling user entries ..."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:262
+#: lib/pp_admintools/app/remove_ldap_user.py:260
 msgid "Start removing user entries ..."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:277
+#: lib/pp_admintools/app/remove_ldap_user.py:275
 msgid "Do you really want to deactivate the following users?"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:279
+#: lib/pp_admintools/app/remove_ldap_user.py:277
 msgid "Do you really want to remove the following users?"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:305
+#: lib/pp_admintools/app/remove_ldap_user.py:303
 msgid "Deactivate [{yes}/{no}]?"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:307
+#: lib/pp_admintools/app/remove_ldap_user.py:305
 msgid "Remove [{yes}/{no}]?"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:315
+#: lib/pp_admintools/app/remove_ldap_user.py:313
 msgid "Evaluating DNs of the user {!r} to remove ..."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:329 lib/pp_admintools/app/set_ldap_password.py:434
+#: lib/pp_admintools/app/remove_ldap_user.py:327 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:336 lib/pp_admintools/app/set_ldap_password.py:439
+#: lib/pp_admintools/app/remove_ldap_user.py:334 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:348 lib/pp_admintools/app/set_ldap_password.py:453
+#: lib/pp_admintools/app/remove_ldap_user.py:346 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:357
+#: lib/pp_admintools/app/remove_ldap_user.py:355
 msgid "Deactivating all given users from {} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:359
+#: lib/pp_admintools/app/remove_ldap_user.py:357
 msgid "Removing all given users from {} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:374
+#: lib/pp_admintools/app/remove_ldap_user.py:372
 msgid "Deactivating user {dn!r} from {inst} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:377
+#: lib/pp_admintools/app/remove_ldap_user.py:375
 msgid "Removing user {dn!r} from {inst} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:383
+#: lib/pp_admintools/app/remove_ldap_user.py:381
 msgid "Attributes of {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:407
+#: lib/pp_admintools/app/remove_ldap_user.py:406
 msgid "{c} on removing user {dn!r}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:413
+#: lib/pp_admintools/app/remove_ldap_user.py:412
 msgid "User {dn!r} successful deactivated on {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:416
+#: lib/pp_admintools/app/remove_ldap_user.py:415
 msgid "User {dn!r} successful removed from {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:442
+#: lib/pp_admintools/app/remove_ldap_user.py:441
 msgid "Updating user info for {dn!r} on {inst} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:447 lib/pp_admintools/app/set_ldap_password.py:519
+#: lib/pp_admintools/app/remove_ldap_user.py:446 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:463
+#: lib/pp_admintools/app/remove_ldap_user.py:462
 msgid "Did not found any group memberships of {dn!r} in {inst}."
 msgstr ""
 
-#: 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
+#: lib/pp_admintools/app/remove_ldap_user.py:468 lib/pp_admintools/app/remove_ldap_user.py:495
+#: lib/pp_admintools/app/remove_ldap_user.py:526 lib/pp_admintools/app/remove_ldap_user.py:557
 msgid "Removing user {u!r} from group {g!r} ..."
 msgstr ""
 
-#: 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
+#: lib/pp_admintools/app/remove_ldap_user.py:473 lib/pp_admintools/app/remove_ldap_user.py:500
+#: lib/pp_admintools/app/remove_ldap_user.py:531 lib/pp_admintools/app/remove_ldap_user.py:562
 msgid "{c} on removing user {dn!r} from group {g!r}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:490
+#: lib/pp_admintools/app/remove_ldap_user.py:489
 msgid "Did not found any unique group memberships of {dn!r} in {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:514
+#: lib/pp_admintools/app/remove_ldap_user.py:513
 msgid "Deleting user {uid!r} from all POSIX groups in {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:521
+#: lib/pp_admintools/app/remove_ldap_user.py:520
 msgid "Did not found any POSIX group memberships of {uid!r} in {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:545
+#: lib/pp_admintools/app/remove_ldap_user.py:544
 msgid "Deleting user {uid!r} from all sudo groups in {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:552
+#: lib/pp_admintools/app/remove_ldap_user.py:551
 msgid "Did not found any sudo group memberships of {uid!r} in {inst}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:587
+#: lib/pp_admintools/app/remove_ldap_user.py:584
 msgid "No mail addresses found to remove for user {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/remove_ldap_user.py:591
+#: lib/pp_admintools/app/remove_ldap_user.py:588
 msgid "Trying to remove the following mail addresses from mailing lists:"
 msgstr ""
 
+#: lib/pp_admintools/app/remove_ldap_user.py:608
+msgid "Ignoring mailing list {!r} ..."
+msgstr ""
+
+#: lib/pp_admintools/app/remove_ldap_user.py:613
+msgid "Found DNs of mailing lists:"
+msgstr ""
+
+#: lib/pp_admintools/app/remove_ldap_user.py:618
+msgid "Did not found any mail groups including address {!r}."
+msgstr ""
+
+#: lib/pp_admintools/app/remove_ldap_user.py:631
+msgid "Removing address {address!r} from mailing list {dn!r}."
+msgstr ""
+
+#: lib/pp_admintools/app/remove_ldap_user.py:670
+msgid "There are no changes for mail {mail!r} on {dn!r}?!?"
+msgstr ""
+
+#: lib/pp_admintools/app/remove_ldap_user.py:678
+msgid "{c} on removing mail {mail!r} from {dn!r}: {e}"
+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 "