]> Frank Brehm's Git Trees - pixelpark/pp-admin-tools.git/commitdiff
Translations
authorFrank Brehm <frank@brehm-online.com>
Tue, 30 Jul 2024 15:35:03 +0000 (17:35 +0200)
committerFrank Brehm <frank@brehm-online.com>
Tue, 30 Jul 2024 15:35:03 +0000 (17:35 +0200)
lib/pp_admintools/app/get_from_addr.py
lib/pp_admintools/handler/pflogparse.py
lib/pp_admintools/tzlocal.py
locale/de_DE/LC_MESSAGES/pp_admintools.po
locale/en_US/LC_MESSAGES/pp_admintools.po
locale/pp_admintools.pot

index 6c299a0d1a1589aac8ccd5638dcd115be2624817..06aebb18f9f7912769a7bac01778e9c3aa384108 100644 (file)
@@ -30,7 +30,7 @@ from ..errors import DpxFileError
 from ..handler.pflogparse import PostfixLogfileParser
 from ..xlate import XLATOR
 
-__version__ = '0.8.1'
+__version__ = '0.8.2'
 LOG = logging.getLogger(__name__)
 
 _ = XLATOR.gettext
@@ -140,7 +140,7 @@ class GetFromAddressesApp(BaseDPXApplication):
             action=OutputFileOptionAction,
             help=_(
                 'The output YAML file for collecting and cummulating the results. '
-                'Dafault: {!r}.').format(str(self.totals_yaml_file))
+                'Default: {!r}.').format(str(self.totals_yaml_file))
         )
 
         app_group.add_argument(
index 27eb0ba7e6e4e39ae1a452e64c88c26443832e92..9da6dc487c6c12b46ebaa6cb22195e9d110d77ae 100644 (file)
@@ -34,7 +34,7 @@ LOG = logging.getLogger(__name__)
 _ = XLATOR.gettext
 ngettext = XLATOR.ngettext
 
-__version__ = '0.6.3'
+__version__ = '0.6.4'
 
 
 # =============================================================================
@@ -181,7 +181,7 @@ class PostfixLogfileParser(HandlingObject):
     def evaluate_logfiles(self, logfiles):
         """Evaluate and parse all given logfiles."""
         if not is_sequence(logfiles):
-            msg = _('Given parameter {p!r} for {f}() is not a sequential objects: {v!r}.').format(
+            msg = _('Given parameter {p!r} for {f}() is not a sequential object: {v!r}.').format(
                 p='logfiles', f='evaluate_logfiles', v=logfiles)
             raise TypeError(msg)
 
index df903c55b9e1ef67f5e5f78d87ecc6bc45333c13..a5887a007636905aac71f0b309d42c8fa1807b32 100644 (file)
@@ -28,7 +28,7 @@ from .xlate import XLATOR
 _ = XLATOR.gettext
 ngettext = XLATOR.ngettext
 
-__version__ = '0.6.0'
+__version__ = '0.6.1'
 
 
 LOG = logging.getLogger(__name__)
@@ -1063,7 +1063,7 @@ def _get_localzone(_root='/'):
     tzname = _get_localzone_name(_root)
     if tzname is None:
         # No explicit setting existed. Use localtime
-        LOG.debug(_('No explicit setting existed. Use localtime".'))
+        LOG.debug(_('No explicit setting existed. Use localtime.'))
         for filename in ('etc/localtime', 'usr/local/etc/localtime'):
             tzpath = os.path.join(_root, filename)
 
index 03d3b3e586683343838fc80d73cc6b63e53ccafa..01fe7e0cb4da8720e773267d0afc4aaa35240157 100644 (file)
@@ -5,31 +5,35 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: pp_admintools 0.11.0\n"
+"Project-Id-Version: pp_admintools 1.1.0\n"
 "Report-Msgid-Bugs-To: frank.brehm@pixelpark.com\n"
-"POT-Creation-Date: 2024-02-06 15:10+0100\n"
-"PO-Revision-Date: 2024-02-06 15:15+0100\n"
+"POT-Creation-Date: 2024-07-30 17:28+0200\n"
+"PO-Revision-Date: 2024-07-30 17:30+0100\n"
 "Last-Translator: Frank Brehm <frank.brehm@pixelpark.com>\n"
 "Language: de_DE\n"
 "Language-Team: de_DE <solution@pixelpark.com>\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.14.0\n"
+"Generated-By: Babel 2.8.0\n"
 
-#: lib/pp_admintools/app/__init__.py:51
+#: lib/pp_admintools/app/__init__.py:54
 msgid "Cursor position:"
 msgstr "Cursorposition:"
 
-#: lib/pp_admintools/app/__init__.py:158
+#: lib/pp_admintools/app/__init__.py:161
 msgid "Using logfile {!r}."
 msgstr "Verwende Logdatei {!r}."
 
-#: lib/pp_admintools/app/__init__.py:160
+#: lib/pp_admintools/app/__init__.py:163
 msgid "Don't using a logfile."
 msgstr "Verwende keine Logdatei."
 
+#: lib/pp_admintools/app/__init__.py:221
+msgid "The output file to check must not be None."
+msgstr "Die Ausgabedatei zum Überprüfen darf nicht None sein."
+
 #: lib/pp_admintools/app/barracuda_sync.py:125
 msgid "Synchronization of existing virtual aliases with alias definitions in LDAP for Barracuda."
 msgstr ""
@@ -48,8 +52,8 @@ msgstr ""
 "Die DN des LDAP-Containers (meistens eine OU), in dem alle virtuellen Aliaseinträge geplegt "
 "werden sollen. Vorgabe: {!r}"
 
-#: lib/pp_admintools/app/barracuda_sync.py:149 lib/pp_admintools/app/ldap.py:463
-#: lib/pp_admintools/app/ldap.py:474 lib/pp_admintools/app/mirror_ldap.py:114
+#: lib/pp_admintools/app/barracuda_sync.py:149 lib/pp_admintools/app/ldap.py:468
+#: lib/pp_admintools/app/ldap.py:479 lib/pp_admintools/app/mirror_ldap.py:114
 #: lib/pp_admintools/app/pdns.py:275
 msgid "SECONDS"
 msgstr "SEKUNDEN"
@@ -90,10 +94,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:431 lib/pp_admintools/app/dns_deploy_zones.py:791
-#: lib/pp_admintools/app/ldap.py:1195 lib/pp_admintools/app/ldap.py:1322
-#: lib/pp_admintools/app/ldap.py:1370 lib/pp_admintools/app/ldap.py:1418
-#: lib/pp_admintools/app/ldap.py:1904 lib/pp_admintools/app/ldap.py:1935
-#: lib/pp_admintools/app/ldap.py:1966 lib/pp_admintools/app/ldap.py:1997
+#: lib/pp_admintools/app/ldap.py:1201 lib/pp_admintools/app/ldap.py:1328
+#: lib/pp_admintools/app/ldap.py:1376 lib/pp_admintools/app/ldap.py:1424
+#: lib/pp_admintools/app/ldap.py:1910 lib/pp_admintools/app/ldap.py:1941
+#: lib/pp_admintools/app/ldap.py:1972 lib/pp_admintools/app/ldap.py:2003
 msgid "Result:"
 msgstr "Ergebnis:"
 
@@ -299,7 +303,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:2110
+#: lib/pp_admintools/app/barracuda_sync.py:756 lib/pp_admintools/app/ldap.py:2116
 msgid "Values to add to attribute {!r}:"
 msgstr "Werte, die zu Attribut {!r} hinzugefügt werden:"
 
@@ -307,11 +311,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:2131
+#: lib/pp_admintools/app/barracuda_sync.py:777 lib/pp_admintools/app/ldap.py:2137
 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:2134
+#: lib/pp_admintools/app/barracuda_sync.py:780 lib/pp_admintools/app/ldap.py:2140
 msgid "No changes to attribute {!r}."
 msgstr "Keine Änderungen an Attribut {!r}."
 
@@ -386,7 +390,8 @@ msgstr ""
 msgid "Script options"
 msgstr "Skript-Optionen"
 
-#: lib/pp_admintools/app/check_ldap_dn_attributes.py:91
+#: lib/pp_admintools/app/check_ldap_dn_attributes.py:91 lib/pp_admintools/app/get_from_addr.py:139
+#: lib/pp_admintools/app/get_from_addr.py:147 lib/pp_admintools/app/get_from_addr.py:157
 msgid "FILE"
 msgstr "DATEI"
 
@@ -440,7 +445,7 @@ msgstr "Überprüfe Attribute mit DN-Syntax von Eintrag {!r} …"
 
 #: lib/pp_admintools/app/check_ldap_dn_attributes.py:210
 #: lib/pp_admintools/app/check_ldap_pwd_schemes.py:180
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:224
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:233
 msgid "Got attributes:"
 msgstr "Gefundene Attribute:"
 
@@ -510,7 +515,11 @@ msgstr "Keine Einträge mit einem {attr}-Attribut und dem gegebenen Filter gefun
 msgid "Found entry DNs:"
 msgstr "Gefundener Eintrag-DNs:"
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:66
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:52
+msgid "The base DN used as the root for the LDAP search."
+msgstr "Die Basis-DN, die als Ausgangspunkt bei der LDAP-Suche verwendet werden soll."
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:68
 msgid ""
 "Removes all LDAP groups, which does not have any members, that means, they are one of the "
 "following objectClasses: {ocl}, and they have none of the following attributes: {atl}."
@@ -518,77 +527,79 @@ msgstr ""
 "Löscht alle LDAP-Gruppen, die keine Mitglieder haben. Das heißt, sie haben eine der folgenden "
 "Objektklassen: {ocl}, und sie besitzen keines der folgenden Attribute: {atl}."
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:115 lib/pp_admintools/app/remove_ldap_user.py:127
-msgid "Removing options"
-msgstr "Lösch-Optionen"
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:117 lib/pp_admintools/app/dns_deploy_zones.py:247
+#: lib/pp_admintools/app/get_from_addr.py:122 lib/pp_admintools/app/mk_ldap_passwd.py:78
+#: lib/pp_admintools/app/set_ldap_password.py:117
+msgid "Options for {}"
+msgstr "Optionen für {}"
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:119
-msgid "The base DN used as the root for the LDAP search."
-msgstr "Die Basis-DN, die als Ausgangspunkt bei der LDAP-Suche verwendet werden soll."
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:122
+msgid "Delete only the first found empty group and exit."
+msgstr "Nur die erste gefundene leere Gruppe löschen und sich dann beenden."
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:145 lib/pp_admintools/app/remove_ldap_user.py:195
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:150 lib/pp_admintools/app/remove_ldap_user.py:195
 msgid "Checking given instances for admin and read/write access."
 msgstr "Überprüfe die gegebenen Instanzen nach Admin- und Schreib-/Lesezugriffsrechten."
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:152 lib/pp_admintools/app/remove_ldap_user.py:202
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:157 lib/pp_admintools/app/remove_ldap_user.py:202
 msgid "LDAP instance {!r} not found in configuration."
 msgstr "Die LDAP-Instanz {!r} wurde nicht in der Konfiguration gefunden."
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:160 lib/pp_admintools/app/remove_ldap_user.py:210
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:165 lib/pp_admintools/app/remove_ldap_user.py:210
 msgid "LDAP instance {!r} has only readonly access."
 msgstr "Die LDAP-Instanz {!r} besitzt nur Lesezugriffsrechte."
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:165 lib/pp_admintools/app/remove_ldap_user.py:215
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:170 lib/pp_admintools/app/remove_ldap_user.py:215
 msgid "No admin access to LDAP instance {!r}."
 msgstr "Keine Admin-Zugriffsrechte bei LDAP-Instanz {!r}."
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:175
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:180
 msgid "Searching for empty groups ..."
 msgstr "Suche nach leeren Gruppen …"
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:182
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:187
 msgid "No more empty groups left for removing."
 msgstr "Keine weitern Gruppen zu Löschen."
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:185
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:190
 msgid "Lap {} on searching for empty groups to remove."
 msgstr "Runde {} bei der Suche nach zu löschenden leeren Gruppen."
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:220
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:229
 msgid "Searching for member attributes of {!r} ..."
 msgstr "Suche nach Mitglieds-Attributen von {!r} …"
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:230
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:239
 msgid "Found attribute {at!r} in group {g!r}."
 msgstr "Fand Attribut {at!r} in Gruppe {g!r}."
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:233
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:242
 msgid "Group {!r} is not empty!"
 msgstr "Die Gruppe {!r} ist nicht leer!"
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:238
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:247
 msgid "Removing group {!r} ..."
 msgstr "Lösche Gruppe {!r} …"
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:242
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:251
 msgid "Dont't removing group {!r}."
 msgstr "Kein Löschen der Gruppe {!r}."
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:249
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:258
 msgid "Do you really want to remove the group '{}'"
 msgstr "Möchten Sie die Gruppe '{}' wirklich löschen"
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:251
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:260
 msgid "[{yes}/{no}]?"
 msgstr "[{yes}/{no}]?"
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:252 lib/pp_admintools/app/ldap.py:331
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:261 lib/pp_admintools/app/ldap.py:338
 #: lib/pp_admintools/app/mirror_ldap.py:246 lib/pp_admintools/app/remove_ldap_user.py:301
 #: lib/pp_admintools/app/set_ldap_password.py:481
 msgid "No"
 msgstr "Nein"
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:252 lib/pp_admintools/app/mirror_ldap.py:246
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:261 lib/pp_admintools/app/mirror_ldap.py:246
 #: lib/pp_admintools/app/remove_ldap_user.py:301 lib/pp_admintools/app/set_ldap_password.py:481
 msgid "yes"
 msgstr "ja"
@@ -597,11 +608,6 @@ msgstr "ja"
 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:247 lib/pp_admintools/app/mk_ldap_passwd.py:78
-#: lib/pp_admintools/app/set_ldap_password.py:117
-msgid "Options for {}"
-msgstr "Optionen für {}"
-
 #: lib/pp_admintools/app/dns_deploy_zones.py:252
 msgid "Keep a backup file for each changed configuration file."
 msgstr "Eine Backup-Datei für jede geänderte Konfigurationsdatei aufbewahren."
@@ -910,7 +916,7 @@ msgstr "' …"
 msgid "Checking for dependend unique attribute '"
 msgstr "Überprüfe abhängig eindeutiges Attribut '"
 
-#: lib/pp_admintools/app/duplicate_attribs.py:172 lib/pp_admintools/app/ldap.py:617
+#: lib/pp_admintools/app/duplicate_attribs.py:172 lib/pp_admintools/app/ldap.py:622
 msgid "Used filter:"
 msgstr "Verwendeter Filter:"
 
@@ -918,74 +924,195 @@ msgstr "Verwendeter Filter:"
 msgid "No duplicates for attribute {!r} found."
 msgstr "Keine Duplikate für das Attribut {!r} gefunden."
 
-#: lib/pp_admintools/app/ldap.py:241
+#: lib/pp_admintools/app/get_from_addr.py:105
+msgid ""
+"This script collects all envelop-From-addresses from /var/log/maillog*, which are used for "
+"outbound mails. "
+msgstr ""
+"Das Skript sammelt Frm-Adressen der Envelopes aus /var/log/maillog* zusammen, die für ausgehende"
+" Mails verwendet wurden."
+
+#: lib/pp_admintools/app/get_from_addr.py:108
+msgid ""
+"Please note, that these addresses are those from the mail envelope. They may not be the same "
+"like the From addresses in the mail headers."
+msgstr ""
+"Bitte beachten, dass diese Adressen aus den Mail-Envelopes stammen. Diese müssen nicht mit den "
+"From-Adressen aus den Mail-Headern übereinstimmen."
+
+#: lib/pp_admintools/app/get_from_addr.py:127
+msgid "Show also results for particular mail addresses."
+msgstr "Zeige auch Ergebnisse von einzelenen Mail-Adressen an."
+
+#: lib/pp_admintools/app/get_from_addr.py:131 lib/pp_admintools/app/ldap.py:459
+msgid "COUNT"
+msgstr "ANZAHL"
+
+#: lib/pp_admintools/app/get_from_addr.py:133
+msgid ""
+"Limit the output of domains and addresses to those with a count of at least this value. Default:"
+" {}"
+msgstr "Begrenzung der Domänen und Adressen auf die mit einer Anzahl von wenigstens diesem Wert. Vorgabe:"
+
+#: lib/pp_admintools/app/get_from_addr.py:141
+msgid "The output YAML file for collecting and cummulating the results. Default: {!r}."
+msgstr "Die Ausgabe-YAML-Datei zum Sammeln und Kummulieren der Ergebnisse. Vorgabe: {!r}."
+
+#: lib/pp_admintools/app/get_from_addr.py:149
+msgid ""
+"The output CSV file about the domains of found FROM addresses for importing in a spread sheet or"
+" into a database. Default: {!r}"
+msgstr ""
+"aDie Ausgabe-CSV-Datei über die Domänen der gefundenen FROM-Adressen zum Import in eine "
+"Tabellenkalkulation oder in eine Datenbank. Vorgabe: {!r}"
+
+#: lib/pp_admintools/app/get_from_addr.py:158
+msgid "The logfiles, which should be inspected. Default: {!r}"
+msgstr "Die LOgdateien, die inspiziert werden sollen. Vorgabe: {!r}"
+
+#: lib/pp_admintools/app/get_from_addr.py:208 lib/pp_admintools/app/get_from_addr.py:222
+#: lib/pp_admintools/app/get_from_addr.py:233
+msgid "File {!r} is not a regular file."
+msgstr "Die Datei {!r} ist keine reguläre Datei-"
+
+#: lib/pp_admintools/app/get_from_addr.py:214
+msgid "Path {!r} is not a directory."
+msgstr "Der Pfad {!r} ist kein Verzeichnis."
+
+#: lib/pp_admintools/app/get_from_addr.py:239
+msgid "Sorting logfiles ..."
+msgstr "Sortiere Logdateien …"
+
+#: lib/pp_admintools/app/get_from_addr.py:263
+msgid "Collecting results ..."
+msgstr "Sammle Ergebnisse …"
+
+#: lib/pp_admintools/app/get_from_addr.py:374
+msgid "No logfiles for evaluating found."
+msgstr "Keine Logdateien zum Untersuchen gefunden."
+
+#: lib/pp_admintools/app/get_from_addr.py:379
+msgid "Evaluating Postfix log files:"
+msgstr "Untersuche Postfix-Logdataeien:"
+
+#: lib/pp_admintools/app/get_from_addr.py:390 lib/pp_admintools/app/get_from_addr.py:563
+msgid "Results per domain:"
+msgstr "Ergebnisse per Domain:"
+
+#: lib/pp_admintools/app/get_from_addr.py:393 lib/pp_admintools/app/get_from_addr.py:511
+msgid "Results per address:"
+msgstr "Ergebnisse per Adresse:"
+
+#: lib/pp_admintools/app/get_from_addr.py:401
+msgid "Start of oldest found Postfix transaction:"
+msgstr "Beginn der ältesten gefundenen Postfix-Transaktion:"
+
+#: lib/pp_admintools/app/get_from_addr.py:405
+msgid "Start of newest found Postfix transaction:"
+msgstr "Beginn der jüngsten gefundenen Postfix-Transaktion:"
+
+#: lib/pp_admintools/app/get_from_addr.py:418
+msgid "Using totals YAML file {!r}."
+msgstr "Verwende YAML-Datei {!r} für die Ergebnisse."
+
+#: lib/pp_admintools/app/get_from_addr.py:433
+msgid "Results total:"
+msgstr "Gesamtergebnisse:"
+
+#: lib/pp_admintools/app/get_from_addr.py:436
+msgid "Writing file {!r} ..."
+msgstr "Schreibe Datei {!r} …"
+
+#: lib/pp_admintools/app/get_from_addr.py:452
+msgid "Reading file {!r} ..."
+msgstr "Lese Datei {!r} …"
+
+#: lib/pp_admintools/app/get_from_addr.py:461
+msgid "Preparing CSV table for domains ..."
+msgstr "Bereite CSV-Tabelle für die Domänen vor …"
+
+#: lib/pp_admintools/app/get_from_addr.py:488
+msgid "Prepared domains CSV table:"
+msgstr "Vorbereitete CSV-Tabelle der Domänen:"
+
+#: lib/pp_admintools/app/get_from_addr.py:489
+msgid "Writing CSV file {!r} ..."
+msgstr "Schreibe CSVDatei {!r} …"
+
+#: lib/pp_admintools/app/ldap.py:116
+msgid "Override the configured base DN of the instance used as the root for the LDAP searches."
+msgstr ""
+"Überschreibt die konfigurierte Basis-DN, die als Ausgangspunkt bei der LDAP-Suche verwendet "
+"werden soll."
+
+#: lib/pp_admintools/app/ldap.py:248
 msgid "The value {v} for {n} must be greater than zero."
 msgstr "Der Wert {v} für {n} muss größer als Null sein."
 
-#: lib/pp_admintools/app/ldap.py:245 lib/pp_admintools/app/ldap.py:267
+#: lib/pp_admintools/app/ldap.py:252 lib/pp_admintools/app/ldap.py:274
 msgid "The value {v} for {n} must not be greater than {m}."
 msgstr "Der Wert {v} für {n} darf nicht größer als {m} sein."
 
-#: lib/pp_admintools/app/ldap.py:263
+#: lib/pp_admintools/app/ldap.py:270
 msgid "The value {v} for {n} must be equal to or greater than zero."
 msgstr "Der Wert {v} für {n} muss größer als oder gleich Null sein."
 
-#: lib/pp_admintools/app/ldap.py:320
+#: lib/pp_admintools/app/ldap.py:327
 msgid "LDAP options"
 msgstr "LDAP-Optionen"
 
-#: lib/pp_admintools/app/ldap.py:322
+#: lib/pp_admintools/app/ldap.py:329
 msgid "Options for the default LDAP connection"
 msgstr "Optionen für die Vorgabe-LDAP-Verbindung"
 
-#: lib/pp_admintools/app/ldap.py:324
+#: lib/pp_admintools/app/ldap.py:331
 msgid "Options fo LDAP connections"
 msgstr "Optionen für die LDAP-Verbindungen"
 
-#: lib/pp_admintools/app/ldap.py:333
+#: lib/pp_admintools/app/ldap.py:340
 msgid "Yes"
 msgstr "Ja"
 
-#: lib/pp_admintools/app/ldap.py:339 lib/pp_admintools/app/ldap.py:435
+#: lib/pp_admintools/app/ldap.py:346 lib/pp_admintools/app/ldap.py:442
 msgid "HOST"
 msgstr "HOST"
 
-#: lib/pp_admintools/app/ldap.py:340
+#: lib/pp_admintools/app/ldap.py:347
 msgid "Hostname or address of the LDAP server to use. Default: {!r}"
 msgstr "Der Hostname oder die Adresse des zu verwendenden LDAP-Servers. Vorgabe: {!r}"
 
-#: lib/pp_admintools/app/ldap.py:347
+#: lib/pp_admintools/app/ldap.py:354
 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:352 lib/pp_admintools/app/ldap.py:441
+#: lib/pp_admintools/app/ldap.py:359 lib/pp_admintools/app/ldap.py:448
 #: lib/pp_admintools/app/mail.py:243 lib/pp_admintools/app/pdns.py:264
 msgid "PORT"
 msgstr "PORT"
 
-#: lib/pp_admintools/app/ldap.py:354
+#: lib/pp_admintools/app/ldap.py:361
 msgid "The port number to connect to the LDAP server. Default: {}"
 msgstr "Welcher Port soll verwendet werden, um sich mit dem LDAP-Server zu verbinden? Vorgabe: {}."
 
-#: lib/pp_admintools/app/ldap.py:360
+#: lib/pp_admintools/app/ldap.py:367
 msgid "The base DN used as the root for the LDAP searches. Default: {!r}"
 msgstr "Die Basis-DN, die als Ausgangspunkt bei LDAP-Suchen verwendet werden soll. Vorgabe: {!r}"
 
-#: lib/pp_admintools/app/ldap.py:367
+#: lib/pp_admintools/app/ldap.py:374
 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:375 lib/pp_admintools/app/mk_ldap_passwd.py:123
+#: lib/pp_admintools/app/ldap.py:382 lib/pp_admintools/app/mk_ldap_passwd.py:123
 #: lib/pp_admintools/app/set_ldap_password.py:123 lib/pp_admintools/app/set_ldap_password.py:124
 #: lib/pp_admintools/app/set_ldap_password.py:141 lib/pp_admintools/app/set_ldap_password.py:144
 msgid "PASSWORD"
 msgstr "PASSWORT"
 
-#: lib/pp_admintools/app/ldap.py:376
+#: lib/pp_admintools/app/ldap.py:383
 msgid "Use PASSWORD as the password for simple LDAP authentication."
 msgstr "Verwende PASSWORT als Passwort für die einfache Authentifizierung."
 
-#: lib/pp_admintools/app/ldap.py:381
+#: lib/pp_admintools/app/ldap.py:388
 msgid ""
 "Prompt for simple LDAP authentication. This is used instead of specifying the password on the "
 "command line."
@@ -993,30 +1120,30 @@ msgstr ""
 "Nachfrage nach dem Passwort für eine einfache LDAP-Authentifizierung. Dies wird anstelle der "
 "Angabe des Passwortes an der Kommandozeile verwendet."
 
-#: lib/pp_admintools/app/ldap.py:387 lib/pp_admintools/app/set_ldap_password.py:135
+#: lib/pp_admintools/app/ldap.py:394 lib/pp_admintools/app/set_ldap_password.py:135
 #: lib/pp_admintools/app/set_ldap_password.py:137
 msgid "PASSWORD_FILE"
 msgstr "PASSWORT_DATEI"
 
-#: lib/pp_admintools/app/ldap.py:389
+#: lib/pp_admintools/app/ldap.py:396
 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:397 lib/pp_admintools/app/pdns.py:238
+#: lib/pp_admintools/app/ldap.py:404 lib/pp_admintools/app/pdns.py:238
 msgid "INSTANCE"
 msgstr "INSTANZ"
 
-#: lib/pp_admintools/app/ldap.py:400
+#: lib/pp_admintools/app/ldap.py:407
 msgid "If not given, then the instance {!r} will be used."
 msgstr "Wenn nicht angegeben, dann wird die Instanz {!r} verwendet."
 
-#: lib/pp_admintools/app/ldap.py:404
+#: lib/pp_admintools/app/ldap.py:411
 msgid "The LDAP instance (LDAP cluster) from configuration, where to execute this script."
 msgstr ""
 "Die LDAP-Instanz (das LDAP-Cluster) aus der Konfiguration, in welcher das Skript ausgeführt "
 "werden soll."
 
-#: lib/pp_admintools/app/ldap.py:408
+#: lib/pp_admintools/app/ldap.py:415
 msgid ""
 "The LDAP instance (LDAP cluster) from configuration, where to execute this script. It is "
 "possible to give here the value {val_all!r}, then all found LDAP instances except {default!r} "
@@ -1028,25 +1155,15 @@ msgstr ""
 " außer {default!r} verwendet. Es ist ebenfalls möglich, den Wert {val_list!r} anzugeben, in "
 "diesem Fall werden alle LDAP-Instanzen ausgegeben, und das Skript beendet sich."
 
-#: lib/pp_admintools/app/ldap.py:436
+#: lib/pp_admintools/app/ldap.py:443
 msgid "Override configured hostname or address of the LDAP server."
 msgstr "Überschreibt den konfigurierten Hostnamen oder die Adresse des zu verwendenden LDAP-Servers."
 
-#: lib/pp_admintools/app/ldap.py:443
+#: lib/pp_admintools/app/ldap.py:450
 msgid "Override the configured port number to connect to the LDAP server."
 msgstr "Überschreibt den konfigurierten TCP Port für die Verbindung mit dem LDAP-Server."
 
-#: lib/pp_admintools/app/ldap.py:448
-msgid "Override the configured base DN of the instance used as the root for the LDAP searches."
-msgstr ""
-"Überschreibt die konfigurierte Basis-DN, die als Ausgangspunkt bei der LDAP-Suche verwendet "
-"werden soll."
-
-#: lib/pp_admintools/app/ldap.py:454
-msgid "COUNT"
-msgstr "ANZAHL"
-
-#: lib/pp_admintools/app/ldap.py:457
+#: lib/pp_admintools/app/ldap.py:462
 msgid ""
 "The number of retries for executing a LDAP request, which was failing because of a connection "
 "problem. Default: {}"
@@ -1054,7 +1171,7 @@ msgstr ""
 "Die Anzahl der Versuche zum Ausführen einer LDAP-Abfrage, welche wegen einem Verbindungsproblem "
 "misslang. Vorgabe: {}"
 
-#: lib/pp_admintools/app/ldap.py:466
+#: lib/pp_admintools/app/ldap.py:471
 msgid ""
 "The time in seconds after a failed LDAP request, which was failing because of a connection "
 "problem, for the next try. Default: {}"
@@ -1062,346 +1179,346 @@ msgstr ""
 "Die Wartezeit in Sekunden nach einer misslungenen LDAP-Abfrage, was von einem Verbindungsproblem"
 " verursacht wurde. Vorgabe: {}"
 
-#: lib/pp_admintools/app/ldap.py:476
+#: lib/pp_admintools/app/ldap.py:481
 msgid "Using the given timeout in seconds for all LDAP operations. Default: {}"
 msgstr "Der Timeout in Sekunden für alle LDAP-Operationen. Vorgabe: {}."
 
-#: lib/pp_admintools/app/ldap.py:511
+#: lib/pp_admintools/app/ldap.py:516
 msgid "Limiting console timeout to {} seconds due to LDAP timeout."
 msgstr ""
 "Begrenze wegen des LDAP-Zeitüberschreitungslimits das Zeitüberschreitungslimit der Konsole auf "
 "{} Sekunden."
 
-#: lib/pp_admintools/app/ldap.py:522
+#: lib/pp_admintools/app/ldap.py:527
 msgid "Checking given instances."
 msgstr "Überprüfe die übergebenen Instanzen."
 
-#: lib/pp_admintools/app/ldap.py:526
+#: lib/pp_admintools/app/ldap.py:531
 msgid "Given insts:"
 msgstr "Übergebene Instanzen:"
 
-#: lib/pp_admintools/app/ldap.py:583
+#: lib/pp_admintools/app/ldap.py:588
 msgid "Configured LDAP instances:"
 msgstr "Konfigurierte LDAP-Instanzen:"
 
-#: lib/pp_admintools/app/ldap.py:604
+#: lib/pp_admintools/app/ldap.py:609
 msgid "Verifying given instances ..."
 msgstr "Überprüfe Instanzen …"
 
-#: lib/pp_admintools/app/ldap.py:642
+#: lib/pp_admintools/app/ldap.py:647
 msgid "Filtered instances:"
 msgstr "Gefilterte Instanzen:"
 
-#: lib/pp_admintools/app/ldap.py:650
+#: lib/pp_admintools/app/ldap.py:655
 msgid "LDAP instances to use:"
 msgstr "Verwendete LDAP-Instanzen:"
 
-#: lib/pp_admintools/app/ldap.py:666
+#: lib/pp_admintools/app/ldap.py:671
 msgid "LDAP instance {!r} not found in configuration or is not usable."
 msgstr "Die LDAP-Instanz {!r} wurde nicht in der Konfiguration gefunden oder ist nicht verwendbar."
 
-#: lib/pp_admintools/app/ldap.py:746
+#: lib/pp_admintools/app/ldap.py:751
 msgid "Preparations ..."
 msgstr "Vorbereitungen …"
 
-#: lib/pp_admintools/app/ldap.py:750
+#: lib/pp_admintools/app/ldap.py:755
 msgid "Open all necessary LDAP connections ..."
 msgstr "Öffne alle notwendigen LDAP-Verbindungen …"
 
-#: lib/pp_admintools/app/ldap.py:764
+#: lib/pp_admintools/app/ldap.py:769
 msgid "Password of user {usr} on LDAP instance {inst}:"
 msgstr "Passwort des Nutzers {usr} der LDAP-Instanz {inst}:"
 
-#: lib/pp_admintools/app/ldap.py:776
+#: lib/pp_admintools/app/ldap.py:781
 msgid "Info about LDAP server {}:"
 msgstr "Informationen zu LDAP-Server {}:"
 
-#: lib/pp_admintools/app/ldap.py:789
+#: lib/pp_admintools/app/ldap.py:794
 msgid "Trying to get LDAP server object for {} ..."
 msgstr "Versuche ein LDAP-Server-Objekt für {} zu bekommen …"
 
-#: lib/pp_admintools/app/ldap.py:796
+#: lib/pp_admintools/app/ldap.py:801
 msgid "Already resolved hostname {h!r} to {a!r}."
 msgstr "Hostname {h!r} wurde bereits zu {a!r} aufgelöst."
 
-#: lib/pp_admintools/app/ldap.py:799
+#: lib/pp_admintools/app/ldap.py:805
 msgid "Resolving hostname {!r} to an IP address ..."
 msgstr "Löse Hostnamen {!r} zu einer IP-Adresse auf …"
 
-#: lib/pp_admintools/app/ldap.py:803
+#: lib/pp_admintools/app/ldap.py:809
 msgid "Could not resolve hostname {!r}:"
 msgstr "Konnte Hostnamen nicht auflösen."
 
-#: lib/pp_admintools/app/ldap.py:807
+#: lib/pp_admintools/app/ldap.py:813
 msgid "Could not resolve hostname {!r}."
 msgstr "Konnte Hostnamen {!r} nicht auflösen."
 
-#: lib/pp_admintools/app/ldap.py:825
+#: lib/pp_admintools/app/ldap.py:831
 msgid "Connect options to server {!r}:"
 msgstr "Verbindungs-Optionen zu Server {!r}:"
 
-#: lib/pp_admintools/app/ldap.py:832
+#: lib/pp_admintools/app/ldap.py:838
 msgid "LDAP server {s}: {re}"
 msgstr "LDAP-Server {s}: {re}"
 
-#: lib/pp_admintools/app/ldap.py:854
+#: lib/pp_admintools/app/ldap.py:860
 msgid "Connecting to LDAP server {url} ({addr}) as {dn!r} ..."
 msgstr "Verbinde mit LDAP-Server {url} ({addr}) als {dn!r} …"
 
-#: lib/pp_admintools/app/ldap.py:861
+#: lib/pp_admintools/app/ldap.py:867
 msgid "Try number {nr} for connecting to LDAP server instance {i!r} ..."
 msgstr "Versuch Nummer {nr} zum Verbinden mit der LDAP-Serverinstanz {i!r} …"
 
-#: lib/pp_admintools/app/ldap.py:873
+#: lib/pp_admintools/app/ldap.py:879
 msgid "Got a {cls} on connecting to LDAP instance {i!r}:"
 msgstr "Habe einen {cls} bei der Verbindung zur LDAP-Instanz {i!r} erhalten:"
 
-#: lib/pp_admintools/app/ldap.py:877
+#: lib/pp_admintools/app/ldap.py:883
 msgid "Waiting #{nr} on connecting to instance {i!r} because of a {cls}:"
 msgstr "Warten Nummer {nr} bei der Verbindung zur Instanz {i!r} wegen einem {cls}:"
 
-#: lib/pp_admintools/app/ldap.py:883
+#: lib/pp_admintools/app/ldap.py:889
 msgid "Could not connect to LDAP server {url!r} as {user!r}: {e}"
 msgstr "Konnte keine Verbindung zum LDAP-Server {url!r} als Nutzer {url!r} herstellen: {e}"
 
-#: lib/pp_admintools/app/ldap.py:888
+#: lib/pp_admintools/app/ldap.py:894
 msgid "{c} on connecting to LDAP server {url!r} as {user!r}: {e}"
 msgstr "{c} beim Verbinden mit LDAP-Server {url} als {user!r}: {e}"
 
-#: lib/pp_admintools/app/ldap.py:898
+#: lib/pp_admintools/app/ldap.py:904
 msgid "Finishing ..."
 msgstr "Beende …"
 
-#: lib/pp_admintools/app/ldap.py:909
+#: lib/pp_admintools/app/ldap.py:915
 msgid "Disconnecting from all remaining LDAP instances ..."
 msgstr "Trenne Verbindung zu allen verbleibenden LDAP-Instanzen …"
 
-#: lib/pp_admintools/app/ldap.py:930
+#: lib/pp_admintools/app/ldap.py:936
 msgid "Unbinding from LDAP server {!r} ..."
 msgstr "Trenne Bindung zu LDAP-Server {!r} …"
 
-#: lib/pp_admintools/app/ldap.py:934
+#: lib/pp_admintools/app/ldap.py:940
 msgid "Try number {nr} for disconnecting from LDAP server instance {i!r} ..."
 msgstr "Versuch Nummer {nr} zum Trennen der Verbindung zur LDAP-Serverinstanz {i!r} …"
 
-#: lib/pp_admintools/app/ldap.py:946
+#: lib/pp_admintools/app/ldap.py:952
 msgid "Got a {cls} on disconnecting from LDAP instance {i!r}:"
 msgstr "Habe einen {cls} beim Trennen der Verbindung zur LDAP-Instanz {i!r} erhalten:"
 
-#: lib/pp_admintools/app/ldap.py:950
+#: lib/pp_admintools/app/ldap.py:956
 msgid "Waiting #{nr} on disconnecting from instance {i!r} because of a {cls}:"
 msgstr "Warten Nummer {nr} beim Trennen der Verbindung zur Instanz {i!r} wegen einem {cls}:"
 
-#: lib/pp_admintools/app/ldap.py:956
+#: lib/pp_admintools/app/ldap.py:962
 msgid "{c} on disconnecting from LDAP server instance {i!r}: {e}"
 msgstr "{c} beim Trennen der Verbindung zur LDAP-Serverinstanz {i!r}: {e}"
 
-#: lib/pp_admintools/app/ldap.py:964
+#: lib/pp_admintools/app/ldap.py:970
 msgid "Removing LDAP server connection data {!r} ..."
 msgstr "Entferne LDAP-Server-Verbindung {!r} …"
 
-#: lib/pp_admintools/app/ldap.py:987
+#: lib/pp_admintools/app/ldap.py:993
 msgid "recursive"
 msgstr "rekursuv"
 
-#: lib/pp_admintools/app/ldap.py:1003
+#: lib/pp_admintools/app/ldap.py:1009
 msgid "Searching in {uri}/{bdn} {rec}for all entries with filter {fltr!r}, giving attributes:"
 msgstr ""
 "Suche in {uri}/{bdn} {rec}nach allen Einträgen mit dem Filter {fltr!r} und den angegebenen "
 "Attributen:"
 
-#: lib/pp_admintools/app/ldap.py:1033
+#: lib/pp_admintools/app/ldap.py:1039
 msgid "Result of searching:"
 msgstr "Ergebnis der Suche:"
 
-#: lib/pp_admintools/app/ldap.py:1035 lib/pp_admintools/app/ldap.py:1180
-#: lib/pp_admintools/app/ldap.py:1225 lib/pp_admintools/app/ldap.py:1367
-#: lib/pp_admintools/app/ldap.py:1415 lib/pp_admintools/app/ldap.py:1901
-#: lib/pp_admintools/app/ldap.py:1932 lib/pp_admintools/app/ldap.py:1963
-#: lib/pp_admintools/app/ldap.py:1994
+#: lib/pp_admintools/app/ldap.py:1041 lib/pp_admintools/app/ldap.py:1186
+#: lib/pp_admintools/app/ldap.py:1231 lib/pp_admintools/app/ldap.py:1373
+#: lib/pp_admintools/app/ldap.py:1421 lib/pp_admintools/app/ldap.py:1907
+#: lib/pp_admintools/app/ldap.py:1938 lib/pp_admintools/app/ldap.py:1969
+#: lib/pp_admintools/app/ldap.py:2000
 msgid "Got a response entry:"
 msgstr "Erhaltener Antwort-Eintrag:"
 
-#: lib/pp_admintools/app/ldap.py:1039
+#: lib/pp_admintools/app/ldap.py:1045
 msgid "Search was not successful."
 msgstr "Die Suche war nicht erfolgreich."
 
-#: lib/pp_admintools/app/ldap.py:1055
+#: lib/pp_admintools/app/ldap.py:1061
 msgid "Try number {} for searching ..."
 msgstr "Versuch Nummer {} zur Suche …"
 
-#: lib/pp_admintools/app/ldap.py:1071 lib/pp_admintools/app/ldap.py:1086
+#: lib/pp_admintools/app/ldap.py:1077 lib/pp_admintools/app/ldap.py:1092
 msgid "Got a {cls} on searching in LDAP instance {i!r}:"
 msgstr "Habe einen {cls} bei der Suche in der LDAP-Instanz {i!r} erhalten:"
 
-#: lib/pp_admintools/app/ldap.py:1074
+#: lib/pp_admintools/app/ldap.py:1080
 msgid "Waiting #{nr} on searching in instance {i!r} because of a {cls}:"
 msgstr "Warten Nummer {nr} bei der Suche in Instanz {i!r} wegen einem {cls}:"
 
-#: lib/pp_admintools/app/ldap.py:1081
+#: lib/pp_admintools/app/ldap.py:1087
 msgid "Session terminated by server on searching on instance {i!r}:"
 msgstr "Die Sitzung wurde vom Server bei der Suche in der Instanz {i!r} unterbrochen:"
 
-#: lib/pp_admintools/app/ldap.py:1122 lib/pp_admintools/app/ldap.py:1319
+#: lib/pp_admintools/app/ldap.py:1128 lib/pp_admintools/app/ldap.py:1325
 msgid "Found entry {!r}."
 msgstr "Gefundener Eintrag {!r}."
 
-#: lib/pp_admintools/app/ldap.py:1129 lib/pp_admintools/app/ldap.py:1172
+#: lib/pp_admintools/app/ldap.py:1135 lib/pp_admintools/app/ldap.py:1178
 msgid "Found one entry with filter {fltr!r} in {uri}/{bdn}."
 msgid_plural "Found {nr} enries with filter {fltr!r} in {uri}/{bdn}."
 msgstr[0] "Fand einen Eintrag mit dem Filter {fltr!r} in {uri}/{bdn}."
 msgstr[1] "Fand {nr} Einträge mit dem Filter {fltr!r} in {uri}/{bdn}."
 
-#: lib/pp_admintools/app/ldap.py:1133
+#: lib/pp_admintools/app/ldap.py:1139
 msgid "Got response entries:"
 msgstr "Erhaltene Antworteinträge:"
 
-#: lib/pp_admintools/app/ldap.py:1137 lib/pp_admintools/app/ldap.py:1184
+#: lib/pp_admintools/app/ldap.py:1143 lib/pp_admintools/app/ldap.py:1190
 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:1161 lib/pp_admintools/app/ldap.py:1214
+#: lib/pp_admintools/app/ldap.py:1167 lib/pp_admintools/app/ldap.py:1220
 msgid "Using LDAP filter: {!r}"
 msgstr "Verwende LDAP-Filter: {!r}."
 
-#: lib/pp_admintools/app/ldap.py:1176 lib/pp_admintools/app/ldap.py:1221
+#: lib/pp_admintools/app/ldap.py:1182 lib/pp_admintools/app/ldap.py:1227
 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:1210
+#: lib/pp_admintools/app/ldap.py:1216
 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:1237
+#: lib/pp_admintools/app/ldap.py:1243
 msgid "Got no entry DNs."
 msgstr "Keine Eintrag-DNs gefunden."
 
-#: lib/pp_admintools/app/ldap.py:1247
+#: lib/pp_admintools/app/ldap.py:1253
 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:1252
+#: lib/pp_admintools/app/ldap.py:1258
 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:1259
+#: lib/pp_admintools/app/ldap.py:1265
 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:1266
+#: lib/pp_admintools/app/ldap.py:1272
 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:1275 lib/pp_admintools/app/remove_ldap_user.py:311
+#: lib/pp_admintools/app/ldap.py:1281 lib/pp_admintools/app/remove_ldap_user.py:311
 msgid "Empty user given."
 msgstr "Leere Nutzername übergeben."
 
-#: lib/pp_admintools/app/ldap.py:1278
+#: lib/pp_admintools/app/ldap.py:1284
 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:1308 lib/pp_admintools/app/ldap.py:1356
-#: lib/pp_admintools/app/ldap.py:1404 lib/pp_admintools/app/ldap.py:1891
-#: lib/pp_admintools/app/ldap.py:1922 lib/pp_admintools/app/ldap.py:1953
-#: lib/pp_admintools/app/ldap.py:1984
+#: lib/pp_admintools/app/ldap.py:1314 lib/pp_admintools/app/ldap.py:1362
+#: lib/pp_admintools/app/ldap.py:1410 lib/pp_admintools/app/ldap.py:1897
+#: lib/pp_admintools/app/ldap.py:1928 lib/pp_admintools/app/ldap.py:1959
+#: lib/pp_admintools/app/ldap.py:1990
 msgid "Searching in {uri}/{bdn} with filter: {fltr}"
 msgstr "Suche in {uri}/{bdn} mit dem Filter: {fltr}"
 
-#: lib/pp_admintools/app/ldap.py:1325
+#: lib/pp_admintools/app/ldap.py:1331
 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:1373
+#: lib/pp_admintools/app/ldap.py:1379
 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:1421
+#: lib/pp_admintools/app/ldap.py:1427
 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:1438 lib/pp_admintools/app/set_ldap_password.py:401
+#: lib/pp_admintools/app/ldap.py:1444 lib/pp_admintools/app/set_ldap_password.py:401
 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:1456
+#: lib/pp_admintools/app/ldap.py:1462
 msgid "ObjectClasses of {dn!r}:"
 msgstr "ObjectClasses von {dn!r}:"
 
-#: lib/pp_admintools/app/ldap.py:1466
+#: lib/pp_admintools/app/ldap.py:1472
 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:1479
+#: lib/pp_admintools/app/ldap.py:1485
 msgid "Searching DN {dn!r} in {uri}."
 msgstr "Suche DN {dn!r} in {uri}."
 
-#: lib/pp_admintools/app/ldap.py:1492
+#: lib/pp_admintools/app/ldap.py:1498
 msgid "Entry with DN {dn!r} not found in {i!r} ({uri})."
 msgstr "Ein Eintrag bit dem DN {dn!r} wurde nicht in {i!r} ({uri}) gefunden."
 
-#: lib/pp_admintools/app/ldap.py:1543
+#: lib/pp_admintools/app/ldap.py:1549
 msgid "Creating entry {dn!r} on {uri}:"
 msgstr "Erstelle Eintrag {dn!r} in {uri} …"
 
-#: lib/pp_admintools/app/ldap.py:1549
+#: lib/pp_admintools/app/ldap.py:1555
 msgid "Simulation mode - entry will not be created."
 msgstr "Simulationsmodus - der Eintrag wird nicht erstellt."
 
-#: lib/pp_admintools/app/ldap.py:1573
+#: lib/pp_admintools/app/ldap.py:1579
 msgid "Creation status: {!r}."
 msgstr "Erstellungsstatus: {!r}"
 
-#: lib/pp_admintools/app/ldap.py:1575
+#: lib/pp_admintools/app/ldap.py:1581
 msgid "Result of creating:"
 msgstr "Ergebnis der Erstellung:"
 
-#: lib/pp_admintools/app/ldap.py:1578
+#: lib/pp_admintools/app/ldap.py:1584
 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:1586
+#: lib/pp_admintools/app/ldap.py:1592
 msgid "Creation successful."
 msgstr "Die Erstellung war erfolgreich."
 
-#: lib/pp_admintools/app/ldap.py:1601
+#: lib/pp_admintools/app/ldap.py:1607
 msgid "Try number {} for adding entry ..."
 msgstr "Versuch Nummer {} zum Hinzufügen eines Eintrags …"
 
-#: lib/pp_admintools/app/ldap.py:1618
+#: lib/pp_admintools/app/ldap.py:1624
 msgid "Got a {cls} on adding LDAP entry {dn!r} to instance {i!r}:"
 msgstr "Habe einen {cls} beim Hinzufügen des Eintrags {dn!r} in die LDAP-Instanz {i!r} erhalten:"
 
-#: lib/pp_admintools/app/ldap.py:1621
+#: lib/pp_admintools/app/ldap.py:1627
 msgid "Waiting #{nr} on inserting LDAP entry {dn!r} to instance {i!r} because of a {cls}:"
 msgstr ""
 "Warten Nummer #{nr} beim Hinzufügen des Eintrags {dn!r} in die LDAP-Instanz {i!r} wegen einem "
 "{cls}:"
 
-#: lib/pp_admintools/app/ldap.py:1632
+#: lib/pp_admintools/app/ldap.py:1638
 msgid "Creation of entry {dn!r} in instance {i!r} was NOT successfull - {c}: {e}"
 msgstr "Die Erstellung des Eintrags {dn!r} in die LDAP-Instanz {i!r} war NICHT erfolgreich - {c}: {e}"
 
-#: lib/pp_admintools/app/ldap.py:1665
+#: lib/pp_admintools/app/ldap.py:1671
 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:1670
+#: lib/pp_admintools/app/ldap.py:1676
 msgid "Simulation mode - changes are not applied."
 msgstr "Simulationsmodus - hier wird jetzt nichts geändert."
 
-#: lib/pp_admintools/app/ldap.py:1694
+#: lib/pp_admintools/app/ldap.py:1700
 msgid "Modification status: {!r}."
 msgstr "Änderungsstatus: {!r}."
 
-#: lib/pp_admintools/app/ldap.py:1696
+#: lib/pp_admintools/app/ldap.py:1702
 msgid "Result of modifying:"
 msgstr "Ergebnis der Änderung:"
 
-#: lib/pp_admintools/app/ldap.py:1699
+#: lib/pp_admintools/app/ldap.py:1705
 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:1703 lib/pp_admintools/app/ldap.py:1753
+#: lib/pp_admintools/app/ldap.py:1709 lib/pp_admintools/app/ldap.py:1759
 #: lib/pp_admintools/app/remove_ldap_user.py:442 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:674
@@ -1409,88 +1526,88 @@ msgstr "Die Änderung von {dn!r} war NICHT erfolgreich - {desc}: {msg}"
 msgid "Changes:"
 msgstr "Änderungen:"
 
-#: lib/pp_admintools/app/ldap.py:1706
+#: lib/pp_admintools/app/ldap.py:1712
 msgid "Modification successful."
 msgstr "Die Änderung war erfolgreich."
 
-#: lib/pp_admintools/app/ldap.py:1720
+#: lib/pp_admintools/app/ldap.py:1726
 msgid "Try number {} for modifying an entry ..."
 msgstr "Versuch Nummer {} zur Änderung eines Eintrages …"
 
-#: lib/pp_admintools/app/ldap.py:1736
+#: lib/pp_admintools/app/ldap.py:1742
 msgid "Got a {cls} on modifying LDAP entry {dn!r} on instance {i!r}:"
 msgstr "Habe einen {cls} bei der Änderung des Eintrages {dn!r} in der LDAP-Instanz {i!r} erhalten:"
 
-#: lib/pp_admintools/app/ldap.py:1739
+#: lib/pp_admintools/app/ldap.py:1745
 msgid "Waiting #{nr} on modifying LDAP entry {dn!r} on instance {i!r} because of a {cls}:"
 msgstr "Warten Nummer #{nr} beim Ändern des Eintrags {dn!r} in der LDAP-Instanz {i!r} wegen einem {cls}:"
 
-#: lib/pp_admintools/app/ldap.py:1750
+#: lib/pp_admintools/app/ldap.py:1756
 msgid "Modification of entry {dn!r} on instance {i!r} was NOT successfull - {c}: {e}"
 msgstr "Die Änderung von des Eintrags {dn!r} in der LDAP-Instanz {i!r} war NICHT erfolgreich - {c}: {e}"
 
-#: lib/pp_admintools/app/ldap.py:1781
+#: lib/pp_admintools/app/ldap.py:1787
 msgid "Deleting LDAP entry {dn!r} on {uri} ..."
 msgstr "Lösche LDAP-Eintrag {dn!r} in {uri} …"
 
-#: lib/pp_admintools/app/ldap.py:1786
+#: lib/pp_admintools/app/ldap.py:1792
 msgid "Simulation mode - deletion will not be executed."
 msgstr "Simulationsmodus - hier wird jetzt nichts gelöscht."
 
-#: lib/pp_admintools/app/ldap.py:1810
+#: lib/pp_admintools/app/ldap.py:1816
 msgid "Deletion status: {!r}."
 msgstr "Löschstatus: {!r}"
 
-#: lib/pp_admintools/app/ldap.py:1812
+#: lib/pp_admintools/app/ldap.py:1818
 msgid "Result of deletion:"
 msgstr "Ergebnis der Löschung:"
 
-#: lib/pp_admintools/app/ldap.py:1815
+#: lib/pp_admintools/app/ldap.py:1821
 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:1821
+#: lib/pp_admintools/app/ldap.py:1827
 msgid "Deletion successful."
 msgstr "Die Löschung war erfolgreich."
 
-#: lib/pp_admintools/app/ldap.py:1836
+#: lib/pp_admintools/app/ldap.py:1842
 msgid "Try number {i} for deleting entry {dn!r} ..."
 msgstr "Versuch Nummer {} zum Löschen des Eintrags {dn!r} …"
 
-#: lib/pp_admintools/app/ldap.py:1852
+#: lib/pp_admintools/app/ldap.py:1858
 msgid "Got a {cls} on deleting LDAP entry {dn!r} on instance {i!r}:"
 msgstr "Habe einen {cls} beim Löschen es Eintrags {dn!r} in der LDAP-Instanz {i!r} erhalten:"
 
-#: lib/pp_admintools/app/ldap.py:1855
+#: lib/pp_admintools/app/ldap.py:1861
 msgid "Waiting #{nr} on deleting LDAP entry {dn!r} on instance {i!r} because of a {cls}:"
 msgstr "Warten Nummer #{nr} beim Löschen des Eintrags {dn!r} in der LDAP-Instanz {i!r} wegen einem {cls}:"
 
-#: lib/pp_admintools/app/ldap.py:1866
+#: lib/pp_admintools/app/ldap.py:1872
 msgid "Deleting of entry {dn!r} on instance {i!r} was NOT successfull - {c}: {e}"
 msgstr "Das Löschen des Eintrags {dn!r} in der LDAP-Instanz {i!r} war NICHT erfolgreich - {c}: {e}"
 
-#: lib/pp_admintools/app/ldap.py:2010
+#: lib/pp_admintools/app/ldap.py:2016
 msgid "Reading password file {!r} ..."
 msgstr "Lese Passwortdatei {!r} …"
 
-#: lib/pp_admintools/app/ldap.py:2041
+#: lib/pp_admintools/app/ldap.py:2047
 msgid "Could not detect RDN from DN {!r}."
 msgstr "Konnte RDN nich aus {!r} ermitteln."
 
-#: lib/pp_admintools/app/ldap.py:2045
+#: lib/pp_admintools/app/ldap.py:2051
 msgid "Found RDN attribute {!r}."
 msgstr "Fand RDN-Attribut {!r}."
 
-#: lib/pp_admintools/app/ldap.py:2051
+#: lib/pp_admintools/app/ldap.py:2057
 msgid "RDN attribute {!r} will not be touched."
 msgstr "Das RDN-Attribut {!r} wird nicht angefasst."
 
-#: lib/pp_admintools/app/ldap.py:2057 lib/pp_admintools/app/ldap.py:2076
-#: lib/pp_admintools/app/ldap.py:2154
+#: lib/pp_admintools/app/ldap.py:2063 lib/pp_admintools/app/ldap.py:2082
+#: lib/pp_admintools/app/ldap.py:2160
 msgid "Attribute {!r} will not be touched."
 msgstr "Das Attribut {!r} wird nicht angefasst."
 
-#: lib/pp_admintools/app/ldap.py:2114
+#: lib/pp_admintools/app/ldap.py:2120
 msgid "Values to removed from attribute {!r}:"
 msgstr "Werte, die von Attribut {!r} gelöscht werden."
 
@@ -2133,6 +2250,10 @@ 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:127
+msgid "Removing options"
+msgstr "Lösch-Optionen"
+
 #: lib/pp_admintools/app/remove_ldap_user.py:130
 msgid "This is the default."
 msgstr "Dieses ist die Vorgabe."
@@ -2535,33 +2656,57 @@ msgstr "Die Option muss kleiner oder gleich {m} sein (gegeben: {v})."
 msgid "The option must be less than {m} (given: {v})."
 msgstr "Die Option muss kleiner als {m} sein (gegeben: {v})."
 
-#: lib/pp_admintools/app/ldap.py:214 lib/pp_admintools/argparse_actions.py:268
+#: lib/pp_admintools/app/__init__.py:226 lib/pp_admintools/app/ldap.py:221
+#: lib/pp_admintools/argparse_actions.py:268 lib/pp_admintools/argparse_actions.py:307
 msgid "The path {!r} must be an absolute path."
 msgstr "Der Pfad {!r} muss ein absoluter Pfad sein."
 
-#: lib/pp_admintools/app/ldap.py:218 lib/pp_admintools/app/ldap.py:2013
-#: lib/pp_admintools/argparse_actions.py:274
+#: lib/pp_admintools/app/ldap.py:225 lib/pp_admintools/app/ldap.py:2019
+#: lib/pp_admintools/argparse_actions.py:274 lib/pp_admintools/argparse_actions.py:313
 msgid "The file {!r} does not exists."
 msgstr "Die Datei {!r} existiert nicht."
 
-#: lib/pp_admintools/app/ldap.py:222 lib/pp_admintools/app/ldap.py:2018
-#: lib/pp_admintools/argparse_actions.py:278
+#: lib/pp_admintools/app/__init__.py:232 lib/pp_admintools/app/ldap.py:229
+#: lib/pp_admintools/app/ldap.py:2024 lib/pp_admintools/argparse_actions.py:278
+#: lib/pp_admintools/argparse_actions.py:318
 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:226 lib/pp_admintools/app/ldap.py:2023
-#: lib/pp_admintools/argparse_actions.py:282
+#: lib/pp_admintools/app/__init__.py:237 lib/pp_admintools/app/ldap.py:233
+#: lib/pp_admintools/app/ldap.py:2029 lib/pp_admintools/argparse_actions.py:282
+#: lib/pp_admintools/argparse_actions.py:322
 msgid "The given file {!r} is not readable."
-msgstr "Die angegebene Datei {} ist nicht lesbar."
+msgstr "Die angegebene Datei {!r} ist nicht lesbar."
+
+#: lib/pp_admintools/app/__init__.py:241 lib/pp_admintools/argparse_actions.py:326
+msgid "The given file {!r} is not writeable."
+msgstr "Die angegebene Datei {!r} ist nicht beschreibbar."
+
+#: lib/pp_admintools/app/__init__.py:248 lib/pp_admintools/app/get_from_addr.py:212
+#: lib/pp_admintools/argparse_actions.py:332
+msgid "Directory {!r} does not exists."
+msgstr "Das Verzeichnis {!r} existiert nicht."
+
+#: lib/pp_admintools/app/__init__.py:252 lib/pp_admintools/argparse_actions.py:336
+msgid "Path {!r} exists, bu is not a directory."
+msgstr "Der Pfad {!r} existiert, ist aber kein Verzeichnis."
 
-#: lib/pp_admintools/argparse_actions.py:304
+#: lib/pp_admintools/app/__init__.py:256 lib/pp_admintools/argparse_actions.py:340
+msgid "The directory {!r} is not writeable."
+msgstr "Das Verzeichnis {!r} ist nicht beschreibbar."
+
+#: lib/pp_admintools/argparse_actions.py:362
 msgid "a port number must be greater than zero and less or equal to {}."
 msgstr "ein Port muss größer als Null und kleiner oder gleich {} sein."
 
-#: lib/pp_admintools/argparse_actions.py:309
+#: lib/pp_admintools/argparse_actions.py:367
 msgid "Wrong port number {!r}:"
 msgstr "Ungültige Portnummer {!r}."
 
+#: lib/pp_admintools/common.py:73
+msgid "Could not interprete {!r} as a timezone offset."
+msgstr "Konnte {!r} nicht als Zeitzonen-Offset interpretieren."
+
 #: lib/pp_admintools/config/dns_deploy_zones.py:202 lib/pp_admintools/config/dns_deploy_zones.py:515
 #: lib/pp_admintools/config/mail.py:138 lib/pp_admintools/config/pdns.py:182
 msgid "Evaluating config section {!r}:"
@@ -2801,6 +2946,10 @@ msgstr "Suche nach API-Schlüssel für PowerDNS-Instanz {!r} …"
 msgid "Found API key of PDNS instance {inst!r}: {key!r}."
 msgstr "Fand API-Schlüssel für PowerDNS-Instanz {inst!r}: {key!r}."
 
+#: lib/pp_admintools/errors.py:168
+msgid "The date string {!r} could not be interpreted as an ISO date."
+msgstr "Der Datums-String {!r} konnte nicht als ISO-Datum interpretiert werden."
+
 #: lib/pp_admintools/handler/ldap_password.py:61
 msgid "Encryption schema {!r} not found."
 msgstr "Das Verschlüsselungs-Schema {!r} wurde nicht gefunden."
@@ -2891,6 +3040,220 @@ msgstr "Teste Qualität des neuen Passwortes …"
 msgid "Quality of the new password is not sufficient:"
 msgstr "Die Qualität des neuen Passwortes ist nicht ausreichend:"
 
+#: lib/pp_admintools/handler/pflogparse.py:170
+msgid "Resetting all resulting data structures."
+msgstr "Zurücksetzen aller Ergebnis-Datenstrrukturen."
+
+#: lib/pp_admintools/handler/pflogparse.py:184
+msgid "Given parameter {p!r} for {f}() is not a sequential object: {v!r}."
+msgstr "Der übergebene Parameter {p!r} für {f}() ist kein sequentielles Objekt: {v!r}."
+
+#: lib/pp_admintools/handler/pflogparse.py:197
+msgid "Parameter {p!r} for {f}() is not a {what} object: {v!r}."
+msgstr "Der Parameter {p!r} für {f}() ist kein {what}-Objekt: {v!r}."
+
+#: lib/pp_admintools/handler/pflogparse.py:202
+msgid "Logfile {!r} does not exists."
+msgstr "Die Logdatei {!r} existiert micht."
+
+#: lib/pp_admintools/handler/pflogparse.py:206
+msgid "Logfile {!r} is not a regular file."
+msgstr "Die Logdatei {!r} ist keine reguläre Datei-"
+
+#: lib/pp_admintools/handler/pflogparse.py:210
+msgid "No read access to logfile {!r}."
+msgstr "Kein Lesezugriff auf Logdatei {!r}."
+
+#: lib/pp_admintools/handler/pflogparse.py:213
+msgid "Evaluating logfile {!r} ..."
+msgstr "Untersuche Logdatei {!r} …"
+
+#: lib/pp_admintools/handler/pflogparse.py:217 lib/pp_admintools/handler/pflogparse.py:222
+#: lib/pp_admintools/handler/pflogparse.py:227
+msgid "Reading file {f!r} as a {what} compressed file."
+msgstr "Lese Datei {f!r} als eine {what}-komprimierte Datei."
+
+#: lib/pp_admintools/handler/pflogparse.py:232
+msgid "Reading file {!r} as an uncompressed file."
+msgstr "Lese Datei {!r} als eine unkomprimierte Datei."
+
+#: lib/pp_admintools/handler/pflogparse.py:239
+msgid "Closing file {!r}."
+msgstr "Schließe Datei {!r}."
+
+#: lib/pp_admintools/handler/pflogparse.py:245
+msgid "Start parsing postfix logfile ..."
+msgstr "Beginne mit Parsen der Postfix-Logdatei …"
+
+#: lib/pp_admintools/handler/pflogparse.py:475
+msgid "Postfix transaction {!r} for delivering does not exists."
+msgstr "Die Postfix Transaktion {!r} zum Ausliefern existiert nicht."
+
+#: lib/pp_admintools/handler/pflogparse.py:510
+msgid "Did not found Postfix ID {pfid!r} for Message Id {mid!r}."
+msgstr "Postfix-ID {pfid!r} für Message-ID {mid!r} nicht gefunden."
+
+#: lib/pp_admintools/handler/pflogparse.py:552
+msgid "Did not found Postfix ID {pfid!r} for OpenDKIM log entry."
+msgstr "Postfix-ID {pfid!r} für OpenDKIM-Logeintrag nicht gefunden."
+
+#: lib/pp_admintools/handler/pflogparse.py:574
+msgid "Did not found Postfix ID {pfid!r} for Bounce ID {bid!r}."
+msgstr "Postfix-ID {pfid!r} für Bounce-ID {bid!r} nicht gefunden."
+
+#: lib/pp_admintools/postfix_chain.py:73 lib/pp_admintools/postfix_deliver_action.py:86
+msgid "Unknown parameter {p!r} on calling {c}.__init__()."
+msgstr "Unbekannter Parameter {p!r} beim Aufruf von {c}.__init__()."
+
+#: lib/pp_admintools/postfix_chain.py:95
+msgid "You may not append a None value as a DeliverAction to the list deliver_actions."
+msgstr "Ein None-Wert darf nicht als DeliverAction an die Liste der Liefer-Aktionen angehängt werden."
+
+#: lib/pp_admintools/postfix_chain.py:108
+msgid "Wrong type {c!r} for creating a {w} object from: {a!r}"
+msgstr "Falscher Typ {c!r} beim Erstellen eine {w}-Obkekts aus: {a!r}"
+
+#: lib/pp_admintools/postfix_chain.py:116
+msgid "You may not append a None value as a Bounce Id."
+msgstr "Ein None-Wert darf nicht als Bounce-ID angehängt werden."
+
+#: lib/pp_admintools/postfix_chain.py:121
+msgid "You may not append an empty value as a Bounce Id."
+msgstr "Ein leere Wert darf nicht als Bounce-ID angehängt werden."
+
+#: lib/pp_admintools/postfix_chain.py:184
+msgid "Could not interprete client address {a!r}: {e}"
+msgstr "Konnte Client-Adresse {a!r} nicht interpretieren: {e}"
+
+#: lib/pp_admintools/postfix_chain.py:354 lib/pp_admintools/postfix_chain.py:637
+#: lib/pp_admintools/postfix_deliver_action.py:133
+msgid "Could not interprete date {!r}:"
+msgstr "Konnte Datum {!r} nicht interpretieren:"
+
+#: lib/pp_admintools/postfix_chain.py:402
+msgid "Could not interprete from address {a!r}: {e}"
+msgstr "Konnte From-Adresse {a!r} nicht interpretieren: {e}"
+
+#: lib/pp_admintools/postfix_chain.py:507
+msgid "Could not interprete the Uid of a picked up mail {a!r}: {e}"
+msgstr "Konnte Uid der aufgegriffenen Mail {a!r} nicht interpretieren: {e}"
+
+#: lib/pp_admintools/postfix_chain.py:606
+msgid "Could not interprete PID of smtpd {a!r}: {e}"
+msgstr "Konnte die PID des smtpd {a!r} nicht interpretieren: {e}"
+
+#: lib/pp_admintools/postfix_chain.py:728
+msgid "Could not interprete mail size {a!r}: {e}"
+msgstr "Konnte die Mailgröße {a!r} nicht interpretieren: {e}"
+
+#: lib/pp_admintools/postfix_chain.py:754
+msgid "Could not interprete number of recipients {a!r}: {e}"
+msgstr "Konnte die Anzahl der Empfänger {a!r} nicht interpretieren: {e}"
+
+#: lib/pp_admintools/postfix_data_pair.py:39
+msgid "The first value {v!r} of {c} must be greater than or equal to null."
+msgstr "Der erste Wert {v!r} von {c} muss grüßer oder gleich Null sein."
+
+#: lib/pp_admintools/postfix_data_pair.py:48
+msgid "The total value {t!r} must be greater than or equal to the value {v}."
+msgstr "Der Gesamtwert {t!r} muss grüßer oder gleich dem Wert {v} sein."
+
+#: lib/pp_admintools/postfix_data_pair.py:59
+msgid "Invalid value {v!r} of a {c}."
+msgstr "Ungültiger Wert {v!r} für ein {c}."
+
+#: lib/pp_admintools/postfix_deliver_action.py:167
+msgid "Could not interprete total delay {a!r}: {e}"
+msgstr "Konnte di eGesamtverzögerung {a!r} nicht interpretieren: {e}"
+
+#: lib/pp_admintools/postfix_deliver_action.py:233 lib/pp_admintools/postfix_deliver_action.py:496
+msgid "Could not interprete to address {a!r}: {e}"
+msgstr "Konnte die To-Adresse {a!r} nicht interpretieren: {e}"
+
+#: lib/pp_admintools/postfix_deliver_action.py:273
+msgid "Could not interprete relay address {a!r}: {e}"
+msgstr "Konnte die Relay-Adresse {a!r} nicht interpretieren: {e}"
+
+#: lib/pp_admintools/postfix_deliver_action.py:323
+msgid "Could not interprete PID of deliverer {a!r}: {e}"
+msgstr "Kinnte die PID des Auslieferers {a!r} nicht interpretieren: {e}"
+
+#: lib/pp_admintools/postfix_deliver_action.py:371
+msgid "Could not interprete time before queueing {a!r}: {e}"
+msgstr "Konnte die Zeit bis zum Queueing {a!r} nicht interpretieren: {e}"
+
+#: lib/pp_admintools/postfix_deliver_action.py:405
+msgid "Could not interprete smtp connection setup time {a!r}: {e}"
+msgstr "Konnte die SMTP-Verbindungs-Setupzeit {a!r} nicht interpretieren: {e}"
+
+#: lib/pp_admintools/postfix_deliver_action.py:436
+msgid "Could not interprete time in queue {a!r}: {e}"
+msgstr "Konnte die Zeit in der Queue {a!r} nicht interpretieren: {e}"
+
+#: lib/pp_admintools/postfix_deliver_action.py:466
+msgid "Could not interprete smtp transmission time {a!r}: {e}"
+msgstr "Konnte die SMTP-Übertragungszeit {a!r} nicht interpretieren: {e}"
+
+#: lib/pp_admintools/tzlocal.py:797
+msgid ""
+"Timezone offset does not match system offset: {tz_offset} != {system_offset}. Please, check your"
+" config files."
+msgstr ""
+"Der Zeitzonen-Offset stimmt nicht mit dem System-Offset überein: {tz_offset} != {system_offset}."
+" Bitte Konfigurationsdateien überprüfen."
+
+#: lib/pp_admintools/tzlocal.py:814
+msgid "Found a TZ environment: {}"
+msgstr "Fan eine TZ-Umgebung: {}"
+
+#: lib/pp_admintools/tzlocal.py:838
+msgid "Environment variable TZ does not contain a time zone name."
+msgstr "Die Umgebungsvariable TZ enthält keinen Zeitzonennamen."
+
+#: lib/pp_admintools/tzlocal.py:871
+msgid "tzlocal() does not support non-zoneinfo timezones like {!r}."
+msgstr "tzlocal() unterstützt keine Nicht-Zoneninfo Zeitzone wie {!r}."
+
+#: lib/pp_admintools/tzlocal.py:872
+msgid "Please use a timezone in the form of Continent/City."
+msgstr "Bitte eine Zeitzone in der Form Kontinent/Stadt verwenden."
+
+#: lib/pp_admintools/tzlocal.py:878
+msgid "This looks like {}."
+msgstr "Das sieht aus wie {}."
+
+#: lib/pp_admintools/tzlocal.py:891
+msgid "It's not {}?"
+msgstr "Ist e nicht {}?"
+
+#: lib/pp_admintools/tzlocal.py:901 lib/pp_admintools/tzlocal.py:931
+msgid "{!r} found, contents:"
+msgstr "{!r} gefunden, Inhalt:"
+
+#: lib/pp_admintools/tzlocal.py:1001
+msgid "{!r} found."
+msgstr "{!r} gefunden."
+
+#: lib/pp_admintools/tzlocal.py:1017
+msgid "{} found:"
+msgstr "{} gefunden."
+
+#: lib/pp_admintools/tzlocal.py:1034
+msgid "Multiple conflicting time zone configurations found:"
+msgstr "Mehrere widersprüchliche Zeitzonen-Konfigurationen gefunden:"
+
+#: lib/pp_admintools/tzlocal.py:1037
+msgid "Fix the configuration, or set the time zone in a TZ environment variable."
+msgstr "Reparier die Konfiguration, oder setze die Zeitzone in der TZ-Umgebungsvariable."
+
+#: lib/pp_admintools/tzlocal.py:1066
+msgid "No explicit setting existed. Use localtime."
+msgstr "Es existiert keine explizite Einstellung. Verwende localtime."
+
+#: lib/pp_admintools/tzlocal.py:1076
+msgid "Can not find any timezone configuration, defaulting to UTC."
+msgstr "Kann keine Zeitzonenkonfiguration finden, gehe auf UTC zurück."
+
 #: lib/pp_admintools/xlate.py:113
 msgid "Module directory: {!r}"
 msgstr "Modul-Verzeichnis: {!r}"
index 484f94d0eff079ced2e310b5c5402c12bafb312d..7e777d9e3df143bcaca1c58c53f591db34c8685d 100644 (file)
@@ -5,31 +5,35 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: pp_admintools 0.11.0\n"
+"Project-Id-Version: pp_admintools 1.1.0\n"
 "Report-Msgid-Bugs-To: frank.brehm@pixelpark.com\n"
-"POT-Creation-Date: 2024-02-06 15:10+0100\n"
-"PO-Revision-Date: 2024-02-06 15:15+0100\n"
+"POT-Creation-Date: 2024-07-30 17:28+0200\n"
+"PO-Revision-Date: 2024-07-30 17:30+0100\n"
 "Last-Translator: Frank Brehm <frank.brehm@pixelpark.com>\n"
 "Language: en_US\n"
 "Language-Team: Frank Brehm <frank.brehm@pixelpark.com>\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.14.0\n"
+"Generated-By: Babel 2.8.0\n"
 
-#: lib/pp_admintools/app/__init__.py:51
+#: lib/pp_admintools/app/__init__.py:54
 msgid "Cursor position:"
 msgstr ""
 
-#: lib/pp_admintools/app/__init__.py:158
+#: lib/pp_admintools/app/__init__.py:161
 msgid "Using logfile {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/__init__.py:160
+#: lib/pp_admintools/app/__init__.py:163
 msgid "Don't using a logfile."
 msgstr ""
 
+#: lib/pp_admintools/app/__init__.py:221
+msgid "The output file to check must not be None."
+msgstr ""
+
 #: lib/pp_admintools/app/barracuda_sync.py:125
 msgid "Synchronization of existing virtual aliases with alias definitions in LDAP for Barracuda."
 msgstr ""
@@ -44,8 +48,8 @@ msgid ""
 "Default: {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/barracuda_sync.py:149 lib/pp_admintools/app/ldap.py:463
-#: lib/pp_admintools/app/ldap.py:474 lib/pp_admintools/app/mirror_ldap.py:114
+#: lib/pp_admintools/app/barracuda_sync.py:149 lib/pp_admintools/app/ldap.py:468
+#: lib/pp_admintools/app/ldap.py:479 lib/pp_admintools/app/mirror_ldap.py:114
 #: lib/pp_admintools/app/pdns.py:275
 msgid "SECONDS"
 msgstr ""
@@ -82,10 +86,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:431 lib/pp_admintools/app/dns_deploy_zones.py:791
-#: lib/pp_admintools/app/ldap.py:1195 lib/pp_admintools/app/ldap.py:1322
-#: lib/pp_admintools/app/ldap.py:1370 lib/pp_admintools/app/ldap.py:1418
-#: lib/pp_admintools/app/ldap.py:1904 lib/pp_admintools/app/ldap.py:1935
-#: lib/pp_admintools/app/ldap.py:1966 lib/pp_admintools/app/ldap.py:1997
+#: lib/pp_admintools/app/ldap.py:1201 lib/pp_admintools/app/ldap.py:1328
+#: lib/pp_admintools/app/ldap.py:1376 lib/pp_admintools/app/ldap.py:1424
+#: lib/pp_admintools/app/ldap.py:1910 lib/pp_admintools/app/ldap.py:1941
+#: lib/pp_admintools/app/ldap.py:1972 lib/pp_admintools/app/ldap.py:2003
 msgid "Result:"
 msgstr ""
 
@@ -289,7 +293,7 @@ msgstr ""
 msgid "LDAP Entries to modified:"
 msgstr ""
 
-#: lib/pp_admintools/app/barracuda_sync.py:756 lib/pp_admintools/app/ldap.py:2110
+#: lib/pp_admintools/app/barracuda_sync.py:756 lib/pp_admintools/app/ldap.py:2116
 msgid "Values to add to attribute {!r}:"
 msgstr ""
 
@@ -297,11 +301,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:2131
+#: lib/pp_admintools/app/barracuda_sync.py:777 lib/pp_admintools/app/ldap.py:2137
 msgid "Changes for attribute {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/barracuda_sync.py:780 lib/pp_admintools/app/ldap.py:2134
+#: lib/pp_admintools/app/barracuda_sync.py:780 lib/pp_admintools/app/ldap.py:2140
 msgid "No changes to attribute {!r}."
 msgstr ""
 
@@ -374,7 +378,8 @@ msgstr ""
 msgid "Script options"
 msgstr ""
 
-#: lib/pp_admintools/app/check_ldap_dn_attributes.py:91
+#: lib/pp_admintools/app/check_ldap_dn_attributes.py:91 lib/pp_admintools/app/get_from_addr.py:139
+#: lib/pp_admintools/app/get_from_addr.py:147 lib/pp_admintools/app/get_from_addr.py:157
 msgid "FILE"
 msgstr ""
 
@@ -426,7 +431,7 @@ msgstr "Checking DN-like attributes of entry {!r} …"
 
 #: lib/pp_admintools/app/check_ldap_dn_attributes.py:210
 #: lib/pp_admintools/app/check_ldap_pwd_schemes.py:180
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:224
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:233
 msgid "Got attributes:"
 msgstr ""
 
@@ -486,83 +491,89 @@ msgstr ""
 msgid "Found entry DNs:"
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:66
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:52
+msgid "The base DN used as the root for the LDAP search."
+msgstr ""
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:68
 msgid ""
 "Removes all LDAP groups, which does not have any members, that means, they are one of the "
 "following objectClasses: {ocl}, and they have none of the following attributes: {atl}."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:115 lib/pp_admintools/app/remove_ldap_user.py:127
-msgid "Removing options"
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:117 lib/pp_admintools/app/dns_deploy_zones.py:247
+#: lib/pp_admintools/app/get_from_addr.py:122 lib/pp_admintools/app/mk_ldap_passwd.py:78
+#: lib/pp_admintools/app/set_ldap_password.py:117
+msgid "Options for {}"
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:119
-msgid "The base DN used as the root for the LDAP search."
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:122
+msgid "Delete only the first found empty group and exit."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:145 lib/pp_admintools/app/remove_ldap_user.py:195
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:150 lib/pp_admintools/app/remove_ldap_user.py:195
 msgid "Checking given instances for admin and read/write access."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:152 lib/pp_admintools/app/remove_ldap_user.py:202
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:157 lib/pp_admintools/app/remove_ldap_user.py:202
 msgid "LDAP instance {!r} not found in configuration."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:160 lib/pp_admintools/app/remove_ldap_user.py:210
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:165 lib/pp_admintools/app/remove_ldap_user.py:210
 msgid "LDAP instance {!r} has only readonly access."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:165 lib/pp_admintools/app/remove_ldap_user.py:215
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:170 lib/pp_admintools/app/remove_ldap_user.py:215
 msgid "No admin access to LDAP instance {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:175
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:180
 msgid "Searching for empty groups ..."
 msgstr "Searching for empty groups …"
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:182
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:187
 msgid "No more empty groups left for removing."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:185
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:190
 msgid "Lap {} on searching for empty groups to remove."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:220
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:229
 msgid "Searching for member attributes of {!r} ..."
 msgstr "Searching for member attributes of {!r} …"
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:230
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:239
 msgid "Found attribute {at!r} in group {g!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:233
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:242
 msgid "Group {!r} is not empty!"
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:238
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:247
 msgid "Removing group {!r} ..."
 msgstr "Removing group {!r} …"
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:242
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:251
 msgid "Dont't removing group {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:249
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:258
 msgid "Do you really want to remove the group '{}'"
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:251
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:260
 msgid "[{yes}/{no}]?"
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:252 lib/pp_admintools/app/ldap.py:331
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:261 lib/pp_admintools/app/ldap.py:338
 #: lib/pp_admintools/app/mirror_ldap.py:246 lib/pp_admintools/app/remove_ldap_user.py:301
 #: lib/pp_admintools/app/set_ldap_password.py:481
 msgid "No"
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:252 lib/pp_admintools/app/mirror_ldap.py:246
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:261 lib/pp_admintools/app/mirror_ldap.py:246
 #: lib/pp_admintools/app/remove_ldap_user.py:301 lib/pp_admintools/app/set_ldap_password.py:481
 msgid "yes"
 msgstr ""
@@ -571,11 +582,6 @@ msgstr ""
 msgid "Generation of the BIND9 configuration file for slave zones."
 msgstr ""
 
-#: lib/pp_admintools/app/dns_deploy_zones.py:247 lib/pp_admintools/app/mk_ldap_passwd.py:78
-#: lib/pp_admintools/app/set_ldap_password.py:117
-msgid "Options for {}"
-msgstr ""
-
 #: lib/pp_admintools/app/dns_deploy_zones.py:252
 msgid "Keep a backup file for each changed configuration file."
 msgstr ""
@@ -872,7 +878,7 @@ msgstr "' …"
 msgid "Checking for dependend unique attribute '"
 msgstr ""
 
-#: lib/pp_admintools/app/duplicate_attribs.py:172 lib/pp_admintools/app/ldap.py:617
+#: lib/pp_admintools/app/duplicate_attribs.py:172 lib/pp_admintools/app/ldap.py:622
 msgid "Used filter:"
 msgstr ""
 
@@ -880,101 +886,214 @@ msgstr ""
 msgid "No duplicates for attribute {!r} found."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:241
+#: lib/pp_admintools/app/get_from_addr.py:105
+msgid ""
+"This script collects all envelop-From-addresses from /var/log/maillog*, which are used for "
+"outbound mails. "
+msgstr ""
+
+#: lib/pp_admintools/app/get_from_addr.py:108
+msgid ""
+"Please note, that these addresses are those from the mail envelope. They may not be the same "
+"like the From addresses in the mail headers."
+msgstr ""
+
+#: lib/pp_admintools/app/get_from_addr.py:127
+msgid "Show also results for particular mail addresses."
+msgstr ""
+
+#: lib/pp_admintools/app/get_from_addr.py:131 lib/pp_admintools/app/ldap.py:459
+msgid "COUNT"
+msgstr ""
+
+#: lib/pp_admintools/app/get_from_addr.py:133
+msgid ""
+"Limit the output of domains and addresses to those with a count of at least this value. Default:"
+" {}"
+msgstr ""
+
+#: lib/pp_admintools/app/get_from_addr.py:141
+msgid "The output YAML file for collecting and cummulating the results. Default: {!r}."
+msgstr ""
+
+#: lib/pp_admintools/app/get_from_addr.py:149
+msgid ""
+"The output CSV file about the domains of found FROM addresses for importing in a spread sheet or"
+" into a database. Default: {!r}"
+msgstr ""
+
+#: lib/pp_admintools/app/get_from_addr.py:158
+msgid "The logfiles, which should be inspected. Default: {!r}"
+msgstr ""
+
+#: lib/pp_admintools/app/get_from_addr.py:208 lib/pp_admintools/app/get_from_addr.py:222
+#: lib/pp_admintools/app/get_from_addr.py:233
+msgid "File {!r} is not a regular file."
+msgstr ""
+
+#: lib/pp_admintools/app/get_from_addr.py:214
+msgid "Path {!r} is not a directory."
+msgstr ""
+
+#: lib/pp_admintools/app/get_from_addr.py:239
+msgid "Sorting logfiles ..."
+msgstr "Sorting logfiles …"
+
+#: lib/pp_admintools/app/get_from_addr.py:263
+msgid "Collecting results ..."
+msgstr "Collecting results …"
+
+#: lib/pp_admintools/app/get_from_addr.py:374
+msgid "No logfiles for evaluating found."
+msgstr ""
+
+#: lib/pp_admintools/app/get_from_addr.py:379
+msgid "Evaluating Postfix log files:"
+msgstr ""
+
+#: lib/pp_admintools/app/get_from_addr.py:390 lib/pp_admintools/app/get_from_addr.py:563
+msgid "Results per domain:"
+msgstr ""
+
+#: lib/pp_admintools/app/get_from_addr.py:393 lib/pp_admintools/app/get_from_addr.py:511
+msgid "Results per address:"
+msgstr ""
+
+#: lib/pp_admintools/app/get_from_addr.py:401
+msgid "Start of oldest found Postfix transaction:"
+msgstr ""
+
+#: lib/pp_admintools/app/get_from_addr.py:405
+msgid "Start of newest found Postfix transaction:"
+msgstr ""
+
+#: lib/pp_admintools/app/get_from_addr.py:418
+msgid "Using totals YAML file {!r}."
+msgstr ""
+
+#: lib/pp_admintools/app/get_from_addr.py:433
+msgid "Results total:"
+msgstr ""
+
+#: lib/pp_admintools/app/get_from_addr.py:436
+msgid "Writing file {!r} ..."
+msgstr "Writing file {!r} …"
+
+#: lib/pp_admintools/app/get_from_addr.py:452
+msgid "Reading file {!r} ..."
+msgstr "Reading file {!r} …"
+
+#: lib/pp_admintools/app/get_from_addr.py:461
+msgid "Preparing CSV table for domains ..."
+msgstr "Preparing CSV table for domains …"
+
+#: lib/pp_admintools/app/get_from_addr.py:488
+msgid "Prepared domains CSV table:"
+msgstr ""
+
+#: lib/pp_admintools/app/get_from_addr.py:489
+msgid "Writing CSV file {!r} ..."
+msgstr "Writing CSV file {!r} …"
+
+#: lib/pp_admintools/app/ldap.py:116
+msgid "Override the configured base DN of the instance used as the root for the LDAP searches."
+msgstr ""
+
+#: lib/pp_admintools/app/ldap.py:248
 msgid "The value {v} for {n} must be greater than zero."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:245 lib/pp_admintools/app/ldap.py:267
+#: lib/pp_admintools/app/ldap.py:252 lib/pp_admintools/app/ldap.py:274
 msgid "The value {v} for {n} must not be greater than {m}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:263
+#: lib/pp_admintools/app/ldap.py:270
 msgid "The value {v} for {n} must be equal to or greater than zero."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:320
+#: lib/pp_admintools/app/ldap.py:327
 msgid "LDAP options"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:322
+#: lib/pp_admintools/app/ldap.py:329
 msgid "Options for the default LDAP connection"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:324
+#: lib/pp_admintools/app/ldap.py:331
 msgid "Options fo LDAP connections"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:333
+#: lib/pp_admintools/app/ldap.py:340
 msgid "Yes"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:339 lib/pp_admintools/app/ldap.py:435
+#: lib/pp_admintools/app/ldap.py:346 lib/pp_admintools/app/ldap.py:442
 msgid "HOST"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:340
+#: lib/pp_admintools/app/ldap.py:347
 msgid "Hostname or address of the LDAP server to use. Default: {!r}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:347
+#: lib/pp_admintools/app/ldap.py:354
 msgid "Use ldaps to connect to the LDAP server. Default: {}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:352 lib/pp_admintools/app/ldap.py:441
+#: lib/pp_admintools/app/ldap.py:359 lib/pp_admintools/app/ldap.py:448
 #: lib/pp_admintools/app/mail.py:243 lib/pp_admintools/app/pdns.py:264
 msgid "PORT"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:354
+#: lib/pp_admintools/app/ldap.py:361
 msgid "The port number to connect to the LDAP server. Default: {}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:360
+#: lib/pp_admintools/app/ldap.py:367
 msgid "The base DN used as the root for the LDAP searches. Default: {!r}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:367
+#: lib/pp_admintools/app/ldap.py:374
 msgid "The Bind DN to use to connect to the LDAP server. Default: {!r}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:375 lib/pp_admintools/app/mk_ldap_passwd.py:123
+#: lib/pp_admintools/app/ldap.py:382 lib/pp_admintools/app/mk_ldap_passwd.py:123
 #: lib/pp_admintools/app/set_ldap_password.py:123 lib/pp_admintools/app/set_ldap_password.py:124
 #: lib/pp_admintools/app/set_ldap_password.py:141 lib/pp_admintools/app/set_ldap_password.py:144
 msgid "PASSWORD"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:376
+#: lib/pp_admintools/app/ldap.py:383
 msgid "Use PASSWORD as the password for simple LDAP authentication."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:381
+#: lib/pp_admintools/app/ldap.py:388
 msgid ""
 "Prompt for simple LDAP authentication. This is used instead of specifying the password on the "
 "command line."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:387 lib/pp_admintools/app/set_ldap_password.py:135
+#: lib/pp_admintools/app/ldap.py:394 lib/pp_admintools/app/set_ldap_password.py:135
 #: lib/pp_admintools/app/set_ldap_password.py:137
 msgid "PASSWORD_FILE"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:389
+#: lib/pp_admintools/app/ldap.py:396
 msgid "Use contents of PASSWORD_FILE as the password for simple authentication."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:397 lib/pp_admintools/app/pdns.py:238
+#: lib/pp_admintools/app/ldap.py:404 lib/pp_admintools/app/pdns.py:238
 msgid "INSTANCE"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:400
+#: lib/pp_admintools/app/ldap.py:407
 msgid "If not given, then the instance {!r} will be used."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:404
+#: lib/pp_admintools/app/ldap.py:411
 msgid "The LDAP instance (LDAP cluster) from configuration, where to execute this script."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:408
+#: lib/pp_admintools/app/ldap.py:415
 msgid ""
 "The LDAP instance (LDAP cluster) from configuration, where to execute this script. It is "
 "possible to give here the value {val_all!r}, then all found LDAP instances except {default!r} "
@@ -982,368 +1101,360 @@ msgid ""
 "are shown, and the application is exiting."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:436
+#: lib/pp_admintools/app/ldap.py:443
 msgid "Override configured hostname or address of the LDAP server."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:443
+#: lib/pp_admintools/app/ldap.py:450
 msgid "Override the configured port number to connect to the LDAP server."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:448
-msgid "Override the configured base DN of the instance used as the root for the LDAP searches."
-msgstr ""
-
-#: lib/pp_admintools/app/ldap.py:454
-msgid "COUNT"
-msgstr ""
-
-#: lib/pp_admintools/app/ldap.py:457
+#: lib/pp_admintools/app/ldap.py:462
 msgid ""
 "The number of retries for executing a LDAP request, which was failing because of a connection "
 "problem. Default: {}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:466
+#: lib/pp_admintools/app/ldap.py:471
 msgid ""
 "The time in seconds after a failed LDAP request, which was failing because of a connection "
 "problem, for the next try. Default: {}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:476
+#: lib/pp_admintools/app/ldap.py:481
 msgid "Using the given timeout in seconds for all LDAP operations. Default: {}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:511
+#: lib/pp_admintools/app/ldap.py:516
 msgid "Limiting console timeout to {} seconds due to LDAP timeout."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:522
+#: lib/pp_admintools/app/ldap.py:527
 msgid "Checking given instances."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:526
+#: lib/pp_admintools/app/ldap.py:531
 msgid "Given insts:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:583
+#: lib/pp_admintools/app/ldap.py:588
 msgid "Configured LDAP instances:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:604
+#: lib/pp_admintools/app/ldap.py:609
 msgid "Verifying given instances ..."
 msgstr "Verifying given instances …"
 
-#: lib/pp_admintools/app/ldap.py:642
+#: lib/pp_admintools/app/ldap.py:647
 msgid "Filtered instances:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:650
+#: lib/pp_admintools/app/ldap.py:655
 msgid "LDAP instances to use:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:666
+#: lib/pp_admintools/app/ldap.py:671
 msgid "LDAP instance {!r} not found in configuration or is not usable."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:746
+#: lib/pp_admintools/app/ldap.py:751
 msgid "Preparations ..."
 msgstr "Preparations …"
 
-#: lib/pp_admintools/app/ldap.py:750
+#: lib/pp_admintools/app/ldap.py:755
 msgid "Open all necessary LDAP connections ..."
 msgstr "Open all necessary LDAP connections …"
 
-#: lib/pp_admintools/app/ldap.py:764
+#: lib/pp_admintools/app/ldap.py:769
 msgid "Password of user {usr} on LDAP instance {inst}:"
 msgstr "Password of user {usr} on LDAP instance {inst}:"
 
-#: lib/pp_admintools/app/ldap.py:776
+#: lib/pp_admintools/app/ldap.py:781
 msgid "Info about LDAP server {}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:789
+#: lib/pp_admintools/app/ldap.py:794
 msgid "Trying to get LDAP server object for {} ..."
 msgstr "Trying to get LDAP server object for {} …"
 
-#: lib/pp_admintools/app/ldap.py:796
+#: lib/pp_admintools/app/ldap.py:801
 msgid "Already resolved hostname {h!r} to {a!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:799
+#: lib/pp_admintools/app/ldap.py:805
 msgid "Resolving hostname {!r} to an IP address ..."
 msgstr "Resolving hostname {!r} to an IP address …"
 
-#: lib/pp_admintools/app/ldap.py:803
+#: lib/pp_admintools/app/ldap.py:809
 msgid "Could not resolve hostname {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:807
+#: lib/pp_admintools/app/ldap.py:813
 msgid "Could not resolve hostname {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:825
+#: lib/pp_admintools/app/ldap.py:831
 msgid "Connect options to server {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:832
+#: lib/pp_admintools/app/ldap.py:838
 msgid "LDAP server {s}: {re}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:854
+#: lib/pp_admintools/app/ldap.py:860
 msgid "Connecting to LDAP server {url} ({addr}) as {dn!r} ..."
 msgstr "Connecting to LDAP server {url} ({addr}) as {dn!r} …"
 
-#: lib/pp_admintools/app/ldap.py:861
+#: lib/pp_admintools/app/ldap.py:867
 msgid "Try number {nr} for connecting to LDAP server instance {i!r} ..."
 msgstr "Try number {nr} for connecting to LDAP server instance {i!r} …"
 
-#: lib/pp_admintools/app/ldap.py:873
+#: lib/pp_admintools/app/ldap.py:879
 msgid "Got a {cls} on connecting to LDAP instance {i!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:877
+#: lib/pp_admintools/app/ldap.py:883
 msgid "Waiting #{nr} on connecting to instance {i!r} because of a {cls}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:883
+#: lib/pp_admintools/app/ldap.py:889
 msgid "Could not connect to LDAP server {url!r} as {user!r}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:888
+#: lib/pp_admintools/app/ldap.py:894
 msgid "{c} on connecting to LDAP server {url!r} as {user!r}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:898
+#: lib/pp_admintools/app/ldap.py:904
 msgid "Finishing ..."
 msgstr "Finishing …"
 
-#: lib/pp_admintools/app/ldap.py:909
+#: lib/pp_admintools/app/ldap.py:915
 msgid "Disconnecting from all remaining LDAP instances ..."
 msgstr "Disconnecting from all remaining LDAP instances …"
 
-#: lib/pp_admintools/app/ldap.py:930
+#: lib/pp_admintools/app/ldap.py:936
 msgid "Unbinding from LDAP server {!r} ..."
 msgstr "Unbinding from LDAP server {!r} …"
 
-#: lib/pp_admintools/app/ldap.py:934
+#: lib/pp_admintools/app/ldap.py:940
 msgid "Try number {nr} for disconnecting from LDAP server instance {i!r} ..."
 msgstr "Try number {nr} for disconnecting from LDAP server instance {i!r} …"
 
-#: lib/pp_admintools/app/ldap.py:946
+#: lib/pp_admintools/app/ldap.py:952
 msgid "Got a {cls} on disconnecting from LDAP instance {i!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:950
+#: lib/pp_admintools/app/ldap.py:956
 msgid "Waiting #{nr} on disconnecting from instance {i!r} because of a {cls}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:956
+#: lib/pp_admintools/app/ldap.py:962
 msgid "{c} on disconnecting from LDAP server instance {i!r}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:964
+#: lib/pp_admintools/app/ldap.py:970
 msgid "Removing LDAP server connection data {!r} ..."
 msgstr "Removing LDAP server connection data {!r} …"
 
-#: lib/pp_admintools/app/ldap.py:987
+#: lib/pp_admintools/app/ldap.py:993
 msgid "recursive"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1003
+#: lib/pp_admintools/app/ldap.py:1009
 msgid "Searching in {uri}/{bdn} {rec}for all entries with filter {fltr!r}, giving attributes:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1033
+#: lib/pp_admintools/app/ldap.py:1039
 msgid "Result of searching:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1035 lib/pp_admintools/app/ldap.py:1180
-#: lib/pp_admintools/app/ldap.py:1225 lib/pp_admintools/app/ldap.py:1367
-#: lib/pp_admintools/app/ldap.py:1415 lib/pp_admintools/app/ldap.py:1901
-#: lib/pp_admintools/app/ldap.py:1932 lib/pp_admintools/app/ldap.py:1963
-#: lib/pp_admintools/app/ldap.py:1994
+#: lib/pp_admintools/app/ldap.py:1041 lib/pp_admintools/app/ldap.py:1186
+#: lib/pp_admintools/app/ldap.py:1231 lib/pp_admintools/app/ldap.py:1373
+#: lib/pp_admintools/app/ldap.py:1421 lib/pp_admintools/app/ldap.py:1907
+#: lib/pp_admintools/app/ldap.py:1938 lib/pp_admintools/app/ldap.py:1969
+#: lib/pp_admintools/app/ldap.py:2000
 msgid "Got a response entry:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1039
+#: lib/pp_admintools/app/ldap.py:1045
 msgid "Search was not successful."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1055
+#: lib/pp_admintools/app/ldap.py:1061
 msgid "Try number {} for searching ..."
 msgstr "Try number {} for searching …"
 
-#: lib/pp_admintools/app/ldap.py:1071 lib/pp_admintools/app/ldap.py:1086
+#: lib/pp_admintools/app/ldap.py:1077 lib/pp_admintools/app/ldap.py:1092
 msgid "Got a {cls} on searching in LDAP instance {i!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1074
+#: lib/pp_admintools/app/ldap.py:1080
 msgid "Waiting #{nr} on searching in instance {i!r} because of a {cls}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1081
+#: lib/pp_admintools/app/ldap.py:1087
 msgid "Session terminated by server on searching on instance {i!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1122 lib/pp_admintools/app/ldap.py:1319
+#: lib/pp_admintools/app/ldap.py:1128 lib/pp_admintools/app/ldap.py:1325
 msgid "Found entry {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1129 lib/pp_admintools/app/ldap.py:1172
+#: lib/pp_admintools/app/ldap.py:1135 lib/pp_admintools/app/ldap.py:1178
 msgid "Found one entry with filter {fltr!r} in {uri}/{bdn}."
 msgid_plural "Found {nr} enries with filter {fltr!r} in {uri}/{bdn}."
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/pp_admintools/app/ldap.py:1133
+#: lib/pp_admintools/app/ldap.py:1139
 msgid "Got response entries:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1137 lib/pp_admintools/app/ldap.py:1184
+#: lib/pp_admintools/app/ldap.py:1143 lib/pp_admintools/app/ldap.py:1190
 msgid "No entry found with filter {fltr!r} in {uri}/{bdn}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1161 lib/pp_admintools/app/ldap.py:1214
+#: lib/pp_admintools/app/ldap.py:1167 lib/pp_admintools/app/ldap.py:1220
 msgid "Using LDAP filter: {!r}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1176 lib/pp_admintools/app/ldap.py:1221
+#: lib/pp_admintools/app/ldap.py:1182 lib/pp_admintools/app/ldap.py:1227
 msgid "Result of searching for DNs of all entries:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1210
+#: lib/pp_admintools/app/ldap.py:1216
 msgid "Getting all Entry DNs of LDAP instance {i!r} below {b!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1237
+#: lib/pp_admintools/app/ldap.py:1243
 msgid "Got no entry DNs."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1247
+#: lib/pp_admintools/app/ldap.py:1253
 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:1252
+#: lib/pp_admintools/app/ldap.py:1258
 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:1259
+#: lib/pp_admintools/app/ldap.py:1265
 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:1266
+#: lib/pp_admintools/app/ldap.py:1272
 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:1275 lib/pp_admintools/app/remove_ldap_user.py:311
+#: lib/pp_admintools/app/ldap.py:1281 lib/pp_admintools/app/remove_ldap_user.py:311
 msgid "Empty user given."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1278
+#: lib/pp_admintools/app/ldap.py:1284
 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:1308 lib/pp_admintools/app/ldap.py:1356
-#: lib/pp_admintools/app/ldap.py:1404 lib/pp_admintools/app/ldap.py:1891
-#: lib/pp_admintools/app/ldap.py:1922 lib/pp_admintools/app/ldap.py:1953
-#: lib/pp_admintools/app/ldap.py:1984
+#: lib/pp_admintools/app/ldap.py:1314 lib/pp_admintools/app/ldap.py:1362
+#: lib/pp_admintools/app/ldap.py:1410 lib/pp_admintools/app/ldap.py:1897
+#: lib/pp_admintools/app/ldap.py:1928 lib/pp_admintools/app/ldap.py:1959
+#: lib/pp_admintools/app/ldap.py:1990
 msgid "Searching in {uri}/{bdn} with filter: {fltr}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1325
+#: lib/pp_admintools/app/ldap.py:1331
 msgid "User with mail address {m!r} not found in {uri}/{bdn}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1373
+#: lib/pp_admintools/app/ldap.py:1379
 msgid "User with uid {u!r} not found in {uri}/{bdn}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1421
+#: lib/pp_admintools/app/ldap.py:1427
 msgid "User with cn {cn!r} not found in {uri}/{bdn}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1438 lib/pp_admintools/app/set_ldap_password.py:401
+#: lib/pp_admintools/app/ldap.py:1444 lib/pp_admintools/app/set_ldap_password.py:401
 msgid "User with DN {dn!r} not found in {uri}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1456
+#: lib/pp_admintools/app/ldap.py:1462
 msgid "ObjectClasses of {dn!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1466
+#: lib/pp_admintools/app/ldap.py:1472
 msgid "Entry {dn!r} in {uri} seems not to be an account."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1479
+#: lib/pp_admintools/app/ldap.py:1485
 msgid "Searching DN {dn!r} in {uri}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1492
+#: lib/pp_admintools/app/ldap.py:1498
 msgid "Entry with DN {dn!r} not found in {i!r} ({uri})."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1543
+#: lib/pp_admintools/app/ldap.py:1549
 msgid "Creating entry {dn!r} on {uri}:"
 msgstr "Creating entry {dn!r} on {uri}:"
 
-#: lib/pp_admintools/app/ldap.py:1549
+#: lib/pp_admintools/app/ldap.py:1555
 msgid "Simulation mode - entry will not be created."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1573
+#: lib/pp_admintools/app/ldap.py:1579
 msgid "Creation status: {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1575
+#: lib/pp_admintools/app/ldap.py:1581
 msgid "Result of creating:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1578
+#: lib/pp_admintools/app/ldap.py:1584
 msgid "Creation of entry {dn!r} was NOT successful: {desc} - {msg}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1586
+#: lib/pp_admintools/app/ldap.py:1592
 msgid "Creation successful."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1601
+#: lib/pp_admintools/app/ldap.py:1607
 msgid "Try number {} for adding entry ..."
 msgstr "Try number {} for dding entry …"
 
-#: lib/pp_admintools/app/ldap.py:1618
+#: lib/pp_admintools/app/ldap.py:1624
 msgid "Got a {cls} on adding LDAP entry {dn!r} to instance {i!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1621
+#: lib/pp_admintools/app/ldap.py:1627
 msgid "Waiting #{nr} on inserting LDAP entry {dn!r} to instance {i!r} because of a {cls}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1632
+#: lib/pp_admintools/app/ldap.py:1638
 msgid "Creation of entry {dn!r} in instance {i!r} was NOT successfull - {c}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1665
+#: lib/pp_admintools/app/ldap.py:1671
 msgid "Applying changes on {uri} to DN {dn!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1670
+#: lib/pp_admintools/app/ldap.py:1676
 msgid "Simulation mode - changes are not applied."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1694
+#: lib/pp_admintools/app/ldap.py:1700
 msgid "Modification status: {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1696
+#: lib/pp_admintools/app/ldap.py:1702
 msgid "Result of modifying:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1699
+#: lib/pp_admintools/app/ldap.py:1705
 msgid "Modification of {dn!r} was NOT successful: {desc} - {msg}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1703 lib/pp_admintools/app/ldap.py:1753
+#: lib/pp_admintools/app/ldap.py:1709 lib/pp_admintools/app/ldap.py:1759
 #: lib/pp_admintools/app/remove_ldap_user.py:442 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:674
@@ -1351,88 +1462,88 @@ msgstr ""
 msgid "Changes:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1706
+#: lib/pp_admintools/app/ldap.py:1712
 msgid "Modification successful."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1720
+#: lib/pp_admintools/app/ldap.py:1726
 msgid "Try number {} for modifying an entry ..."
 msgstr "Try number {} for modifying an entry …"
 
-#: lib/pp_admintools/app/ldap.py:1736
+#: lib/pp_admintools/app/ldap.py:1742
 msgid "Got a {cls} on modifying LDAP entry {dn!r} on instance {i!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1739
+#: lib/pp_admintools/app/ldap.py:1745
 msgid "Waiting #{nr} on modifying LDAP entry {dn!r} on instance {i!r} because of a {cls}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1750
+#: lib/pp_admintools/app/ldap.py:1756
 msgid "Modification of entry {dn!r} on instance {i!r} was NOT successfull - {c}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1781
+#: lib/pp_admintools/app/ldap.py:1787
 msgid "Deleting LDAP entry {dn!r} on {uri} ..."
 msgstr "Deleting LDAP entry {dn!r} on {uri} …"
 
-#: lib/pp_admintools/app/ldap.py:1786
+#: lib/pp_admintools/app/ldap.py:1792
 msgid "Simulation mode - deletion will not be executed."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1810
+#: lib/pp_admintools/app/ldap.py:1816
 msgid "Deletion status: {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1812
+#: lib/pp_admintools/app/ldap.py:1818
 msgid "Result of deletion:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1815
+#: lib/pp_admintools/app/ldap.py:1821
 msgid "Deletion of {dn!r} was NOT successful: {desc} - {msg}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1821
+#: lib/pp_admintools/app/ldap.py:1827
 msgid "Deletion successful."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1836
+#: lib/pp_admintools/app/ldap.py:1842
 msgid "Try number {i} for deleting entry {dn!r} ..."
 msgstr "Try number {} for deleting entry {dn!r} …"
 
-#: lib/pp_admintools/app/ldap.py:1852
+#: lib/pp_admintools/app/ldap.py:1858
 msgid "Got a {cls} on deleting LDAP entry {dn!r} on instance {i!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1855
+#: lib/pp_admintools/app/ldap.py:1861
 msgid "Waiting #{nr} on deleting LDAP entry {dn!r} on instance {i!r} because of a {cls}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1866
+#: lib/pp_admintools/app/ldap.py:1872
 msgid "Deleting of entry {dn!r} on instance {i!r} was NOT successfull - {c}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:2010
+#: lib/pp_admintools/app/ldap.py:2016
 msgid "Reading password file {!r} ..."
 msgstr "Reading password file {!r} …"
 
-#: lib/pp_admintools/app/ldap.py:2041
+#: lib/pp_admintools/app/ldap.py:2047
 msgid "Could not detect RDN from DN {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:2045
+#: lib/pp_admintools/app/ldap.py:2051
 msgid "Found RDN attribute {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:2051
+#: lib/pp_admintools/app/ldap.py:2057
 msgid "RDN attribute {!r} will not be touched."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:2057 lib/pp_admintools/app/ldap.py:2076
-#: lib/pp_admintools/app/ldap.py:2154
+#: lib/pp_admintools/app/ldap.py:2063 lib/pp_admintools/app/ldap.py:2082
+#: lib/pp_admintools/app/ldap.py:2160
 msgid "Attribute {!r} will not be touched."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:2114
+#: lib/pp_admintools/app/ldap.py:2120
 msgid "Values to removed from attribute {!r}:"
 msgstr ""
 
@@ -2043,6 +2154,10 @@ msgid ""
 "user will be really removed from LDAP."
 msgstr ""
 
+#: lib/pp_admintools/app/remove_ldap_user.py:127
+msgid "Removing options"
+msgstr ""
+
 #: lib/pp_admintools/app/remove_ldap_user.py:130
 msgid "This is the default."
 msgstr ""
@@ -2425,33 +2540,57 @@ msgstr ""
 msgid "The option must be less than {m} (given: {v})."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:214 lib/pp_admintools/argparse_actions.py:268
+#: lib/pp_admintools/app/__init__.py:226 lib/pp_admintools/app/ldap.py:221
+#: lib/pp_admintools/argparse_actions.py:268 lib/pp_admintools/argparse_actions.py:307
 msgid "The path {!r} must be an absolute path."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:218 lib/pp_admintools/app/ldap.py:2013
-#: lib/pp_admintools/argparse_actions.py:274
+#: lib/pp_admintools/app/ldap.py:225 lib/pp_admintools/app/ldap.py:2019
+#: lib/pp_admintools/argparse_actions.py:274 lib/pp_admintools/argparse_actions.py:313
 msgid "The file {!r} does not exists."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:222 lib/pp_admintools/app/ldap.py:2018
-#: lib/pp_admintools/argparse_actions.py:278
+#: lib/pp_admintools/app/__init__.py:232 lib/pp_admintools/app/ldap.py:229
+#: lib/pp_admintools/app/ldap.py:2024 lib/pp_admintools/argparse_actions.py:278
+#: lib/pp_admintools/argparse_actions.py:318
 msgid "The given path {!r} exists, but is not a regular file."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:226 lib/pp_admintools/app/ldap.py:2023
-#: lib/pp_admintools/argparse_actions.py:282
+#: lib/pp_admintools/app/__init__.py:237 lib/pp_admintools/app/ldap.py:233
+#: lib/pp_admintools/app/ldap.py:2029 lib/pp_admintools/argparse_actions.py:282
+#: lib/pp_admintools/argparse_actions.py:322
 msgid "The given file {!r} is not readable."
 msgstr ""
 
-#: lib/pp_admintools/argparse_actions.py:304
+#: lib/pp_admintools/app/__init__.py:241 lib/pp_admintools/argparse_actions.py:326
+msgid "The given file {!r} is not writeable."
+msgstr ""
+
+#: lib/pp_admintools/app/__init__.py:248 lib/pp_admintools/app/get_from_addr.py:212
+#: lib/pp_admintools/argparse_actions.py:332
+msgid "Directory {!r} does not exists."
+msgstr ""
+
+#: lib/pp_admintools/app/__init__.py:252 lib/pp_admintools/argparse_actions.py:336
+msgid "Path {!r} exists, bu is not a directory."
+msgstr ""
+
+#: lib/pp_admintools/app/__init__.py:256 lib/pp_admintools/argparse_actions.py:340
+msgid "The directory {!r} is not writeable."
+msgstr ""
+
+#: lib/pp_admintools/argparse_actions.py:362
 msgid "a port number must be greater than zero and less or equal to {}."
 msgstr ""
 
-#: lib/pp_admintools/argparse_actions.py:309
+#: lib/pp_admintools/argparse_actions.py:367
 msgid "Wrong port number {!r}:"
 msgstr ""
 
+#: lib/pp_admintools/common.py:73
+msgid "Could not interprete {!r} as a timezone offset."
+msgstr ""
+
 #: lib/pp_admintools/config/dns_deploy_zones.py:202 lib/pp_admintools/config/dns_deploy_zones.py:515
 #: lib/pp_admintools/config/mail.py:138 lib/pp_admintools/config/pdns.py:182
 msgid "Evaluating config section {!r}:"
@@ -2691,6 +2830,10 @@ msgstr "Searching for API key of PDNS instance {!r} …"
 msgid "Found API key of PDNS instance {inst!r}: {key!r}."
 msgstr ""
 
+#: lib/pp_admintools/errors.py:168
+msgid "The date string {!r} could not be interpreted as an ISO date."
+msgstr ""
+
 #: lib/pp_admintools/handler/ldap_password.py:61
 msgid "Encryption schema {!r} not found."
 msgstr ""
@@ -2777,6 +2920,218 @@ msgstr "Testing quality of new password …"
 msgid "Quality of the new password is not sufficient:"
 msgstr ""
 
+#: lib/pp_admintools/handler/pflogparse.py:170
+msgid "Resetting all resulting data structures."
+msgstr ""
+
+#: lib/pp_admintools/handler/pflogparse.py:184
+msgid "Given parameter {p!r} for {f}() is not a sequential object: {v!r}."
+msgstr ""
+
+#: lib/pp_admintools/handler/pflogparse.py:197
+msgid "Parameter {p!r} for {f}() is not a {what} object: {v!r}."
+msgstr ""
+
+#: lib/pp_admintools/handler/pflogparse.py:202
+msgid "Logfile {!r} does not exists."
+msgstr ""
+
+#: lib/pp_admintools/handler/pflogparse.py:206
+msgid "Logfile {!r} is not a regular file."
+msgstr ""
+
+#: lib/pp_admintools/handler/pflogparse.py:210
+msgid "No read access to logfile {!r}."
+msgstr ""
+
+#: lib/pp_admintools/handler/pflogparse.py:213
+msgid "Evaluating logfile {!r} ..."
+msgstr "Evaluating logfile {!r} …"
+
+#: lib/pp_admintools/handler/pflogparse.py:217 lib/pp_admintools/handler/pflogparse.py:222
+#: lib/pp_admintools/handler/pflogparse.py:227
+msgid "Reading file {f!r} as a {what} compressed file."
+msgstr ""
+
+#: lib/pp_admintools/handler/pflogparse.py:232
+msgid "Reading file {!r} as an uncompressed file."
+msgstr ""
+
+#: lib/pp_admintools/handler/pflogparse.py:239
+msgid "Closing file {!r}."
+msgstr ""
+
+#: lib/pp_admintools/handler/pflogparse.py:245
+msgid "Start parsing postfix logfile ..."
+msgstr "Start parsing postfix logfile …"
+
+#: lib/pp_admintools/handler/pflogparse.py:475
+msgid "Postfix transaction {!r} for delivering does not exists."
+msgstr ""
+
+#: lib/pp_admintools/handler/pflogparse.py:510
+msgid "Did not found Postfix ID {pfid!r} for Message Id {mid!r}."
+msgstr ""
+
+#: lib/pp_admintools/handler/pflogparse.py:552
+msgid "Did not found Postfix ID {pfid!r} for OpenDKIM log entry."
+msgstr ""
+
+#: lib/pp_admintools/handler/pflogparse.py:574
+msgid "Did not found Postfix ID {pfid!r} for Bounce ID {bid!r}."
+msgstr ""
+
+#: lib/pp_admintools/postfix_chain.py:73 lib/pp_admintools/postfix_deliver_action.py:86
+msgid "Unknown parameter {p!r} on calling {c}.__init__()."
+msgstr ""
+
+#: lib/pp_admintools/postfix_chain.py:95
+msgid "You may not append a None value as a DeliverAction to the list deliver_actions."
+msgstr ""
+
+#: lib/pp_admintools/postfix_chain.py:108
+msgid "Wrong type {c!r} for creating a {w} object from: {a!r}"
+msgstr ""
+
+#: lib/pp_admintools/postfix_chain.py:116
+msgid "You may not append a None value as a Bounce Id."
+msgstr ""
+
+#: lib/pp_admintools/postfix_chain.py:121
+msgid "You may not append an empty value as a Bounce Id."
+msgstr ""
+
+#: lib/pp_admintools/postfix_chain.py:184
+msgid "Could not interprete client address {a!r}: {e}"
+msgstr ""
+
+#: lib/pp_admintools/postfix_chain.py:354 lib/pp_admintools/postfix_chain.py:637
+#: lib/pp_admintools/postfix_deliver_action.py:133
+msgid "Could not interprete date {!r}:"
+msgstr ""
+
+#: lib/pp_admintools/postfix_chain.py:402
+msgid "Could not interprete from address {a!r}: {e}"
+msgstr ""
+
+#: lib/pp_admintools/postfix_chain.py:507
+msgid "Could not interprete the Uid of a picked up mail {a!r}: {e}"
+msgstr ""
+
+#: lib/pp_admintools/postfix_chain.py:606
+msgid "Could not interprete PID of smtpd {a!r}: {e}"
+msgstr ""
+
+#: lib/pp_admintools/postfix_chain.py:728
+msgid "Could not interprete mail size {a!r}: {e}"
+msgstr ""
+
+#: lib/pp_admintools/postfix_chain.py:754
+msgid "Could not interprete number of recipients {a!r}: {e}"
+msgstr ""
+
+#: lib/pp_admintools/postfix_data_pair.py:39
+msgid "The first value {v!r} of {c} must be greater than or equal to null."
+msgstr ""
+
+#: lib/pp_admintools/postfix_data_pair.py:48
+msgid "The total value {t!r} must be greater than or equal to the value {v}."
+msgstr ""
+
+#: lib/pp_admintools/postfix_data_pair.py:59
+msgid "Invalid value {v!r} of a {c}."
+msgstr ""
+
+#: lib/pp_admintools/postfix_deliver_action.py:167
+msgid "Could not interprete total delay {a!r}: {e}"
+msgstr ""
+
+#: lib/pp_admintools/postfix_deliver_action.py:233 lib/pp_admintools/postfix_deliver_action.py:496
+msgid "Could not interprete to address {a!r}: {e}"
+msgstr ""
+
+#: lib/pp_admintools/postfix_deliver_action.py:273
+msgid "Could not interprete relay address {a!r}: {e}"
+msgstr ""
+
+#: lib/pp_admintools/postfix_deliver_action.py:323
+msgid "Could not interprete PID of deliverer {a!r}: {e}"
+msgstr ""
+
+#: lib/pp_admintools/postfix_deliver_action.py:371
+msgid "Could not interprete time before queueing {a!r}: {e}"
+msgstr ""
+
+#: lib/pp_admintools/postfix_deliver_action.py:405
+msgid "Could not interprete smtp connection setup time {a!r}: {e}"
+msgstr ""
+
+#: lib/pp_admintools/postfix_deliver_action.py:436
+msgid "Could not interprete time in queue {a!r}: {e}"
+msgstr ""
+
+#: lib/pp_admintools/postfix_deliver_action.py:466
+msgid "Could not interprete smtp transmission time {a!r}: {e}"
+msgstr ""
+
+#: lib/pp_admintools/tzlocal.py:797
+msgid ""
+"Timezone offset does not match system offset: {tz_offset} != {system_offset}. Please, check your"
+" config files."
+msgstr ""
+
+#: lib/pp_admintools/tzlocal.py:814
+msgid "Found a TZ environment: {}"
+msgstr ""
+
+#: lib/pp_admintools/tzlocal.py:838
+msgid "Environment variable TZ does not contain a time zone name."
+msgstr ""
+
+#: lib/pp_admintools/tzlocal.py:871
+msgid "tzlocal() does not support non-zoneinfo timezones like {!r}."
+msgstr ""
+
+#: lib/pp_admintools/tzlocal.py:872
+msgid "Please use a timezone in the form of Continent/City."
+msgstr ""
+
+#: lib/pp_admintools/tzlocal.py:878
+msgid "This looks like {}."
+msgstr ""
+
+#: lib/pp_admintools/tzlocal.py:891
+msgid "It's not {}?"
+msgstr ""
+
+#: lib/pp_admintools/tzlocal.py:901 lib/pp_admintools/tzlocal.py:931
+msgid "{!r} found, contents:"
+msgstr ""
+
+#: lib/pp_admintools/tzlocal.py:1001
+msgid "{!r} found."
+msgstr ""
+
+#: lib/pp_admintools/tzlocal.py:1017
+msgid "{} found:"
+msgstr ""
+
+#: lib/pp_admintools/tzlocal.py:1034
+msgid "Multiple conflicting time zone configurations found:"
+msgstr ""
+
+#: lib/pp_admintools/tzlocal.py:1037
+msgid "Fix the configuration, or set the time zone in a TZ environment variable."
+msgstr ""
+
+#: lib/pp_admintools/tzlocal.py:1066
+msgid "No explicit setting existed. Use localtime."
+msgstr ""
+
+#: lib/pp_admintools/tzlocal.py:1076
+msgid "Can not find any timezone configuration, defaulting to UTC."
+msgstr ""
+
 #: lib/pp_admintools/xlate.py:113
 msgid "Module directory: {!r}"
 msgstr ""
index d01ae85433737da9bb2e642437f235cc8863e94d..aeca5f8a8d8900c5032c55d4d48096a260e4156f 100644 (file)
@@ -6,29 +6,33 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: pp_admintools 0.11.0\n"
+"Project-Id-Version: pp_admintools 1.1.0\n"
 "Report-Msgid-Bugs-To: frank.brehm@pixelpark.com\n"
-"POT-Creation-Date: 2024-02-06 15:10+0100\n"
+"POT-Creation-Date: 2024-07-30 17:28+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"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.14.0\n"
+"Generated-By: Babel 2.8.0\n"
 
-#: lib/pp_admintools/app/__init__.py:51
+#: lib/pp_admintools/app/__init__.py:54
 msgid "Cursor position:"
 msgstr ""
 
-#: lib/pp_admintools/app/__init__.py:158
+#: lib/pp_admintools/app/__init__.py:161
 msgid "Using logfile {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/__init__.py:160
+#: lib/pp_admintools/app/__init__.py:163
 msgid "Don't using a logfile."
 msgstr ""
 
+#: lib/pp_admintools/app/__init__.py:221
+msgid "The output file to check must not be None."
+msgstr ""
+
 #: lib/pp_admintools/app/barracuda_sync.py:125
 msgid "Synchronization of existing virtual aliases with alias definitions in LDAP for Barracuda."
 msgstr ""
@@ -43,8 +47,8 @@ msgid ""
 "Default: {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/barracuda_sync.py:149 lib/pp_admintools/app/ldap.py:463
-#: lib/pp_admintools/app/ldap.py:474 lib/pp_admintools/app/mirror_ldap.py:114
+#: lib/pp_admintools/app/barracuda_sync.py:149 lib/pp_admintools/app/ldap.py:468
+#: lib/pp_admintools/app/ldap.py:479 lib/pp_admintools/app/mirror_ldap.py:114
 #: lib/pp_admintools/app/pdns.py:275
 msgid "SECONDS"
 msgstr ""
@@ -81,10 +85,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:431 lib/pp_admintools/app/dns_deploy_zones.py:791
-#: lib/pp_admintools/app/ldap.py:1195 lib/pp_admintools/app/ldap.py:1322
-#: lib/pp_admintools/app/ldap.py:1370 lib/pp_admintools/app/ldap.py:1418
-#: lib/pp_admintools/app/ldap.py:1904 lib/pp_admintools/app/ldap.py:1935
-#: lib/pp_admintools/app/ldap.py:1966 lib/pp_admintools/app/ldap.py:1997
+#: lib/pp_admintools/app/ldap.py:1201 lib/pp_admintools/app/ldap.py:1328
+#: lib/pp_admintools/app/ldap.py:1376 lib/pp_admintools/app/ldap.py:1424
+#: lib/pp_admintools/app/ldap.py:1910 lib/pp_admintools/app/ldap.py:1941
+#: lib/pp_admintools/app/ldap.py:1972 lib/pp_admintools/app/ldap.py:2003
 msgid "Result:"
 msgstr ""
 
@@ -288,7 +292,7 @@ msgstr ""
 msgid "LDAP Entries to modified:"
 msgstr ""
 
-#: lib/pp_admintools/app/barracuda_sync.py:756 lib/pp_admintools/app/ldap.py:2110
+#: lib/pp_admintools/app/barracuda_sync.py:756 lib/pp_admintools/app/ldap.py:2116
 msgid "Values to add to attribute {!r}:"
 msgstr ""
 
@@ -296,11 +300,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:2131
+#: lib/pp_admintools/app/barracuda_sync.py:777 lib/pp_admintools/app/ldap.py:2137
 msgid "Changes for attribute {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/barracuda_sync.py:780 lib/pp_admintools/app/ldap.py:2134
+#: lib/pp_admintools/app/barracuda_sync.py:780 lib/pp_admintools/app/ldap.py:2140
 msgid "No changes to attribute {!r}."
 msgstr ""
 
@@ -373,7 +377,8 @@ msgstr ""
 msgid "Script options"
 msgstr ""
 
-#: lib/pp_admintools/app/check_ldap_dn_attributes.py:91
+#: lib/pp_admintools/app/check_ldap_dn_attributes.py:91 lib/pp_admintools/app/get_from_addr.py:139
+#: lib/pp_admintools/app/get_from_addr.py:147 lib/pp_admintools/app/get_from_addr.py:157
 msgid "FILE"
 msgstr ""
 
@@ -425,7 +430,7 @@ msgstr ""
 
 #: lib/pp_admintools/app/check_ldap_dn_attributes.py:210
 #: lib/pp_admintools/app/check_ldap_pwd_schemes.py:180
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:224
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:233
 msgid "Got attributes:"
 msgstr ""
 
@@ -483,83 +488,89 @@ msgstr ""
 msgid "Found entry DNs:"
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:66
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:52
+msgid "The base DN used as the root for the LDAP search."
+msgstr ""
+
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:68
 msgid ""
 "Removes all LDAP groups, which does not have any members, that means, they are one of the "
 "following objectClasses: {ocl}, and they have none of the following attributes: {atl}."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:115 lib/pp_admintools/app/remove_ldap_user.py:127
-msgid "Removing options"
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:117 lib/pp_admintools/app/dns_deploy_zones.py:247
+#: lib/pp_admintools/app/get_from_addr.py:122 lib/pp_admintools/app/mk_ldap_passwd.py:78
+#: lib/pp_admintools/app/set_ldap_password.py:117
+msgid "Options for {}"
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:119
-msgid "The base DN used as the root for the LDAP search."
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:122
+msgid "Delete only the first found empty group and exit."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:145 lib/pp_admintools/app/remove_ldap_user.py:195
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:150 lib/pp_admintools/app/remove_ldap_user.py:195
 msgid "Checking given instances for admin and read/write access."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:152 lib/pp_admintools/app/remove_ldap_user.py:202
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:157 lib/pp_admintools/app/remove_ldap_user.py:202
 msgid "LDAP instance {!r} not found in configuration."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:160 lib/pp_admintools/app/remove_ldap_user.py:210
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:165 lib/pp_admintools/app/remove_ldap_user.py:210
 msgid "LDAP instance {!r} has only readonly access."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:165 lib/pp_admintools/app/remove_ldap_user.py:215
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:170 lib/pp_admintools/app/remove_ldap_user.py:215
 msgid "No admin access to LDAP instance {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:175
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:180
 msgid "Searching for empty groups ..."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:182
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:187
 msgid "No more empty groups left for removing."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:185
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:190
 msgid "Lap {} on searching for empty groups to remove."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:220
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:229
 msgid "Searching for member attributes of {!r} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:230
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:239
 msgid "Found attribute {at!r} in group {g!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:233
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:242
 msgid "Group {!r} is not empty!"
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:238
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:247
 msgid "Removing group {!r} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:242
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:251
 msgid "Dont't removing group {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:249
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:258
 msgid "Do you really want to remove the group '{}'"
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:251
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:260
 msgid "[{yes}/{no}]?"
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:252 lib/pp_admintools/app/ldap.py:331
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:261 lib/pp_admintools/app/ldap.py:338
 #: lib/pp_admintools/app/mirror_ldap.py:246 lib/pp_admintools/app/remove_ldap_user.py:301
 #: lib/pp_admintools/app/set_ldap_password.py:481
 msgid "No"
 msgstr ""
 
-#: lib/pp_admintools/app/clean_empty_ldap_groups.py:252 lib/pp_admintools/app/mirror_ldap.py:246
+#: lib/pp_admintools/app/clean_empty_ldap_groups.py:261 lib/pp_admintools/app/mirror_ldap.py:246
 #: lib/pp_admintools/app/remove_ldap_user.py:301 lib/pp_admintools/app/set_ldap_password.py:481
 msgid "yes"
 msgstr ""
@@ -568,11 +579,6 @@ msgstr ""
 msgid "Generation of the BIND9 configuration file for slave zones."
 msgstr ""
 
-#: lib/pp_admintools/app/dns_deploy_zones.py:247 lib/pp_admintools/app/mk_ldap_passwd.py:78
-#: lib/pp_admintools/app/set_ldap_password.py:117
-msgid "Options for {}"
-msgstr ""
-
 #: lib/pp_admintools/app/dns_deploy_zones.py:252
 msgid "Keep a backup file for each changed configuration file."
 msgstr ""
@@ -869,7 +875,7 @@ msgstr ""
 msgid "Checking for dependend unique attribute '"
 msgstr ""
 
-#: lib/pp_admintools/app/duplicate_attribs.py:172 lib/pp_admintools/app/ldap.py:617
+#: lib/pp_admintools/app/duplicate_attribs.py:172 lib/pp_admintools/app/ldap.py:622
 msgid "Used filter:"
 msgstr ""
 
@@ -877,101 +883,214 @@ msgstr ""
 msgid "No duplicates for attribute {!r} found."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:241
+#: lib/pp_admintools/app/get_from_addr.py:105
+msgid ""
+"This script collects all envelop-From-addresses from /var/log/maillog*, which are used for "
+"outbound mails. "
+msgstr ""
+
+#: lib/pp_admintools/app/get_from_addr.py:108
+msgid ""
+"Please note, that these addresses are those from the mail envelope. They may not be the same "
+"like the From addresses in the mail headers."
+msgstr ""
+
+#: lib/pp_admintools/app/get_from_addr.py:127
+msgid "Show also results for particular mail addresses."
+msgstr ""
+
+#: lib/pp_admintools/app/get_from_addr.py:131 lib/pp_admintools/app/ldap.py:459
+msgid "COUNT"
+msgstr ""
+
+#: lib/pp_admintools/app/get_from_addr.py:133
+msgid ""
+"Limit the output of domains and addresses to those with a count of at least this value. Default:"
+" {}"
+msgstr ""
+
+#: lib/pp_admintools/app/get_from_addr.py:141
+msgid "The output YAML file for collecting and cummulating the results. Default: {!r}."
+msgstr ""
+
+#: lib/pp_admintools/app/get_from_addr.py:149
+msgid ""
+"The output CSV file about the domains of found FROM addresses for importing in a spread sheet or"
+" into a database. Default: {!r}"
+msgstr ""
+
+#: lib/pp_admintools/app/get_from_addr.py:158
+msgid "The logfiles, which should be inspected. Default: {!r}"
+msgstr ""
+
+#: lib/pp_admintools/app/get_from_addr.py:208 lib/pp_admintools/app/get_from_addr.py:222
+#: lib/pp_admintools/app/get_from_addr.py:233
+msgid "File {!r} is not a regular file."
+msgstr ""
+
+#: lib/pp_admintools/app/get_from_addr.py:214
+msgid "Path {!r} is not a directory."
+msgstr ""
+
+#: lib/pp_admintools/app/get_from_addr.py:239
+msgid "Sorting logfiles ..."
+msgstr ""
+
+#: lib/pp_admintools/app/get_from_addr.py:263
+msgid "Collecting results ..."
+msgstr ""
+
+#: lib/pp_admintools/app/get_from_addr.py:374
+msgid "No logfiles for evaluating found."
+msgstr ""
+
+#: lib/pp_admintools/app/get_from_addr.py:379
+msgid "Evaluating Postfix log files:"
+msgstr ""
+
+#: lib/pp_admintools/app/get_from_addr.py:390 lib/pp_admintools/app/get_from_addr.py:563
+msgid "Results per domain:"
+msgstr ""
+
+#: lib/pp_admintools/app/get_from_addr.py:393 lib/pp_admintools/app/get_from_addr.py:511
+msgid "Results per address:"
+msgstr ""
+
+#: lib/pp_admintools/app/get_from_addr.py:401
+msgid "Start of oldest found Postfix transaction:"
+msgstr ""
+
+#: lib/pp_admintools/app/get_from_addr.py:405
+msgid "Start of newest found Postfix transaction:"
+msgstr ""
+
+#: lib/pp_admintools/app/get_from_addr.py:418
+msgid "Using totals YAML file {!r}."
+msgstr ""
+
+#: lib/pp_admintools/app/get_from_addr.py:433
+msgid "Results total:"
+msgstr ""
+
+#: lib/pp_admintools/app/get_from_addr.py:436
+msgid "Writing file {!r} ..."
+msgstr ""
+
+#: lib/pp_admintools/app/get_from_addr.py:452
+msgid "Reading file {!r} ..."
+msgstr ""
+
+#: lib/pp_admintools/app/get_from_addr.py:461
+msgid "Preparing CSV table for domains ..."
+msgstr ""
+
+#: lib/pp_admintools/app/get_from_addr.py:488
+msgid "Prepared domains CSV table:"
+msgstr ""
+
+#: lib/pp_admintools/app/get_from_addr.py:489
+msgid "Writing CSV file {!r} ..."
+msgstr ""
+
+#: lib/pp_admintools/app/ldap.py:116
+msgid "Override the configured base DN of the instance used as the root for the LDAP searches."
+msgstr ""
+
+#: lib/pp_admintools/app/ldap.py:248
 msgid "The value {v} for {n} must be greater than zero."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:245 lib/pp_admintools/app/ldap.py:267
+#: lib/pp_admintools/app/ldap.py:252 lib/pp_admintools/app/ldap.py:274
 msgid "The value {v} for {n} must not be greater than {m}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:263
+#: lib/pp_admintools/app/ldap.py:270
 msgid "The value {v} for {n} must be equal to or greater than zero."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:320
+#: lib/pp_admintools/app/ldap.py:327
 msgid "LDAP options"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:322
+#: lib/pp_admintools/app/ldap.py:329
 msgid "Options for the default LDAP connection"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:324
+#: lib/pp_admintools/app/ldap.py:331
 msgid "Options fo LDAP connections"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:333
+#: lib/pp_admintools/app/ldap.py:340
 msgid "Yes"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:339 lib/pp_admintools/app/ldap.py:435
+#: lib/pp_admintools/app/ldap.py:346 lib/pp_admintools/app/ldap.py:442
 msgid "HOST"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:340
+#: lib/pp_admintools/app/ldap.py:347
 msgid "Hostname or address of the LDAP server to use. Default: {!r}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:347
+#: lib/pp_admintools/app/ldap.py:354
 msgid "Use ldaps to connect to the LDAP server. Default: {}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:352 lib/pp_admintools/app/ldap.py:441
+#: lib/pp_admintools/app/ldap.py:359 lib/pp_admintools/app/ldap.py:448
 #: lib/pp_admintools/app/mail.py:243 lib/pp_admintools/app/pdns.py:264
 msgid "PORT"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:354
+#: lib/pp_admintools/app/ldap.py:361
 msgid "The port number to connect to the LDAP server. Default: {}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:360
+#: lib/pp_admintools/app/ldap.py:367
 msgid "The base DN used as the root for the LDAP searches. Default: {!r}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:367
+#: lib/pp_admintools/app/ldap.py:374
 msgid "The Bind DN to use to connect to the LDAP server. Default: {!r}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:375 lib/pp_admintools/app/mk_ldap_passwd.py:123
+#: lib/pp_admintools/app/ldap.py:382 lib/pp_admintools/app/mk_ldap_passwd.py:123
 #: lib/pp_admintools/app/set_ldap_password.py:123 lib/pp_admintools/app/set_ldap_password.py:124
 #: lib/pp_admintools/app/set_ldap_password.py:141 lib/pp_admintools/app/set_ldap_password.py:144
 msgid "PASSWORD"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:376
+#: lib/pp_admintools/app/ldap.py:383
 msgid "Use PASSWORD as the password for simple LDAP authentication."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:381
+#: lib/pp_admintools/app/ldap.py:388
 msgid ""
 "Prompt for simple LDAP authentication. This is used instead of specifying the password on the "
 "command line."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:387 lib/pp_admintools/app/set_ldap_password.py:135
+#: lib/pp_admintools/app/ldap.py:394 lib/pp_admintools/app/set_ldap_password.py:135
 #: lib/pp_admintools/app/set_ldap_password.py:137
 msgid "PASSWORD_FILE"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:389
+#: lib/pp_admintools/app/ldap.py:396
 msgid "Use contents of PASSWORD_FILE as the password for simple authentication."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:397 lib/pp_admintools/app/pdns.py:238
+#: lib/pp_admintools/app/ldap.py:404 lib/pp_admintools/app/pdns.py:238
 msgid "INSTANCE"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:400
+#: lib/pp_admintools/app/ldap.py:407
 msgid "If not given, then the instance {!r} will be used."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:404
+#: lib/pp_admintools/app/ldap.py:411
 msgid "The LDAP instance (LDAP cluster) from configuration, where to execute this script."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:408
+#: lib/pp_admintools/app/ldap.py:415
 msgid ""
 "The LDAP instance (LDAP cluster) from configuration, where to execute this script. It is "
 "possible to give here the value {val_all!r}, then all found LDAP instances except {default!r} "
@@ -979,368 +1098,360 @@ msgid ""
 "are shown, and the application is exiting."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:436
+#: lib/pp_admintools/app/ldap.py:443
 msgid "Override configured hostname or address of the LDAP server."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:443
+#: lib/pp_admintools/app/ldap.py:450
 msgid "Override the configured port number to connect to the LDAP server."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:448
-msgid "Override the configured base DN of the instance used as the root for the LDAP searches."
-msgstr ""
-
-#: lib/pp_admintools/app/ldap.py:454
-msgid "COUNT"
-msgstr ""
-
-#: lib/pp_admintools/app/ldap.py:457
+#: lib/pp_admintools/app/ldap.py:462
 msgid ""
 "The number of retries for executing a LDAP request, which was failing because of a connection "
 "problem. Default: {}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:466
+#: lib/pp_admintools/app/ldap.py:471
 msgid ""
 "The time in seconds after a failed LDAP request, which was failing because of a connection "
 "problem, for the next try. Default: {}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:476
+#: lib/pp_admintools/app/ldap.py:481
 msgid "Using the given timeout in seconds for all LDAP operations. Default: {}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:511
+#: lib/pp_admintools/app/ldap.py:516
 msgid "Limiting console timeout to {} seconds due to LDAP timeout."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:522
+#: lib/pp_admintools/app/ldap.py:527
 msgid "Checking given instances."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:526
+#: lib/pp_admintools/app/ldap.py:531
 msgid "Given insts:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:583
+#: lib/pp_admintools/app/ldap.py:588
 msgid "Configured LDAP instances:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:604
+#: lib/pp_admintools/app/ldap.py:609
 msgid "Verifying given instances ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:642
+#: lib/pp_admintools/app/ldap.py:647
 msgid "Filtered instances:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:650
+#: lib/pp_admintools/app/ldap.py:655
 msgid "LDAP instances to use:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:666
+#: lib/pp_admintools/app/ldap.py:671
 msgid "LDAP instance {!r} not found in configuration or is not usable."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:746
+#: lib/pp_admintools/app/ldap.py:751
 msgid "Preparations ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:750
+#: lib/pp_admintools/app/ldap.py:755
 msgid "Open all necessary LDAP connections ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:764
+#: lib/pp_admintools/app/ldap.py:769
 msgid "Password of user {usr} on LDAP instance {inst}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:776
+#: lib/pp_admintools/app/ldap.py:781
 msgid "Info about LDAP server {}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:789
+#: lib/pp_admintools/app/ldap.py:794
 msgid "Trying to get LDAP server object for {} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:796
+#: lib/pp_admintools/app/ldap.py:801
 msgid "Already resolved hostname {h!r} to {a!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:799
+#: lib/pp_admintools/app/ldap.py:805
 msgid "Resolving hostname {!r} to an IP address ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:803
+#: lib/pp_admintools/app/ldap.py:809
 msgid "Could not resolve hostname {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:807
+#: lib/pp_admintools/app/ldap.py:813
 msgid "Could not resolve hostname {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:825
+#: lib/pp_admintools/app/ldap.py:831
 msgid "Connect options to server {!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:832
+#: lib/pp_admintools/app/ldap.py:838
 msgid "LDAP server {s}: {re}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:854
+#: lib/pp_admintools/app/ldap.py:860
 msgid "Connecting to LDAP server {url} ({addr}) as {dn!r} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:861
+#: lib/pp_admintools/app/ldap.py:867
 msgid "Try number {nr} for connecting to LDAP server instance {i!r} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:873
+#: lib/pp_admintools/app/ldap.py:879
 msgid "Got a {cls} on connecting to LDAP instance {i!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:877
+#: lib/pp_admintools/app/ldap.py:883
 msgid "Waiting #{nr} on connecting to instance {i!r} because of a {cls}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:883
+#: lib/pp_admintools/app/ldap.py:889
 msgid "Could not connect to LDAP server {url!r} as {user!r}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:888
+#: lib/pp_admintools/app/ldap.py:894
 msgid "{c} on connecting to LDAP server {url!r} as {user!r}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:898
+#: lib/pp_admintools/app/ldap.py:904
 msgid "Finishing ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:909
+#: lib/pp_admintools/app/ldap.py:915
 msgid "Disconnecting from all remaining LDAP instances ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:930
+#: lib/pp_admintools/app/ldap.py:936
 msgid "Unbinding from LDAP server {!r} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:934
+#: lib/pp_admintools/app/ldap.py:940
 msgid "Try number {nr} for disconnecting from LDAP server instance {i!r} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:946
+#: lib/pp_admintools/app/ldap.py:952
 msgid "Got a {cls} on disconnecting from LDAP instance {i!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:950
+#: lib/pp_admintools/app/ldap.py:956
 msgid "Waiting #{nr} on disconnecting from instance {i!r} because of a {cls}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:956
+#: lib/pp_admintools/app/ldap.py:962
 msgid "{c} on disconnecting from LDAP server instance {i!r}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:964
+#: lib/pp_admintools/app/ldap.py:970
 msgid "Removing LDAP server connection data {!r} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:987
+#: lib/pp_admintools/app/ldap.py:993
 msgid "recursive"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1003
+#: lib/pp_admintools/app/ldap.py:1009
 msgid "Searching in {uri}/{bdn} {rec}for all entries with filter {fltr!r}, giving attributes:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1033
+#: lib/pp_admintools/app/ldap.py:1039
 msgid "Result of searching:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1035 lib/pp_admintools/app/ldap.py:1180
-#: lib/pp_admintools/app/ldap.py:1225 lib/pp_admintools/app/ldap.py:1367
-#: lib/pp_admintools/app/ldap.py:1415 lib/pp_admintools/app/ldap.py:1901
-#: lib/pp_admintools/app/ldap.py:1932 lib/pp_admintools/app/ldap.py:1963
-#: lib/pp_admintools/app/ldap.py:1994
+#: lib/pp_admintools/app/ldap.py:1041 lib/pp_admintools/app/ldap.py:1186
+#: lib/pp_admintools/app/ldap.py:1231 lib/pp_admintools/app/ldap.py:1373
+#: lib/pp_admintools/app/ldap.py:1421 lib/pp_admintools/app/ldap.py:1907
+#: lib/pp_admintools/app/ldap.py:1938 lib/pp_admintools/app/ldap.py:1969
+#: lib/pp_admintools/app/ldap.py:2000
 msgid "Got a response entry:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1039
+#: lib/pp_admintools/app/ldap.py:1045
 msgid "Search was not successful."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1055
+#: lib/pp_admintools/app/ldap.py:1061
 msgid "Try number {} for searching ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1071 lib/pp_admintools/app/ldap.py:1086
+#: lib/pp_admintools/app/ldap.py:1077 lib/pp_admintools/app/ldap.py:1092
 msgid "Got a {cls} on searching in LDAP instance {i!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1074
+#: lib/pp_admintools/app/ldap.py:1080
 msgid "Waiting #{nr} on searching in instance {i!r} because of a {cls}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1081
+#: lib/pp_admintools/app/ldap.py:1087
 msgid "Session terminated by server on searching on instance {i!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1122 lib/pp_admintools/app/ldap.py:1319
+#: lib/pp_admintools/app/ldap.py:1128 lib/pp_admintools/app/ldap.py:1325
 msgid "Found entry {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1129 lib/pp_admintools/app/ldap.py:1172
+#: lib/pp_admintools/app/ldap.py:1135 lib/pp_admintools/app/ldap.py:1178
 msgid "Found one entry with filter {fltr!r} in {uri}/{bdn}."
 msgid_plural "Found {nr} enries with filter {fltr!r} in {uri}/{bdn}."
 msgstr[0] ""
 msgstr[1] ""
 
-#: lib/pp_admintools/app/ldap.py:1133
+#: lib/pp_admintools/app/ldap.py:1139
 msgid "Got response entries:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1137 lib/pp_admintools/app/ldap.py:1184
+#: lib/pp_admintools/app/ldap.py:1143 lib/pp_admintools/app/ldap.py:1190
 msgid "No entry found with filter {fltr!r} in {uri}/{bdn}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1161 lib/pp_admintools/app/ldap.py:1214
+#: lib/pp_admintools/app/ldap.py:1167 lib/pp_admintools/app/ldap.py:1220
 msgid "Using LDAP filter: {!r}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1176 lib/pp_admintools/app/ldap.py:1221
+#: lib/pp_admintools/app/ldap.py:1182 lib/pp_admintools/app/ldap.py:1227
 msgid "Result of searching for DNs of all entries:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1210
+#: lib/pp_admintools/app/ldap.py:1216
 msgid "Getting all Entry DNs of LDAP instance {i!r} below {b!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1237
+#: lib/pp_admintools/app/ldap.py:1243
 msgid "Got no entry DNs."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1247
+#: lib/pp_admintools/app/ldap.py:1253
 msgid "Trying to evaluate DN of user {user!r} in LDAP instance {inst} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1252
+#: lib/pp_admintools/app/ldap.py:1258
 msgid "Trying to evaluate DN of user {u!r} as a mail address ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1259
+#: lib/pp_admintools/app/ldap.py:1265
 msgid "Trying to evaluate DN of user {u!r} as a LDAP DN ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1266
+#: lib/pp_admintools/app/ldap.py:1272
 msgid "Trying to evaluate DN of user {u!r} as a UID (Posix user name) ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1275 lib/pp_admintools/app/remove_ldap_user.py:311
+#: lib/pp_admintools/app/ldap.py:1281 lib/pp_admintools/app/remove_ldap_user.py:311
 msgid "Empty user given."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1278
+#: lib/pp_admintools/app/ldap.py:1284
 msgid "Trying to evaluate DN of user {u!r} as a CN ({c}) ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1308 lib/pp_admintools/app/ldap.py:1356
-#: lib/pp_admintools/app/ldap.py:1404 lib/pp_admintools/app/ldap.py:1891
-#: lib/pp_admintools/app/ldap.py:1922 lib/pp_admintools/app/ldap.py:1953
-#: lib/pp_admintools/app/ldap.py:1984
+#: lib/pp_admintools/app/ldap.py:1314 lib/pp_admintools/app/ldap.py:1362
+#: lib/pp_admintools/app/ldap.py:1410 lib/pp_admintools/app/ldap.py:1897
+#: lib/pp_admintools/app/ldap.py:1928 lib/pp_admintools/app/ldap.py:1959
+#: lib/pp_admintools/app/ldap.py:1990
 msgid "Searching in {uri}/{bdn} with filter: {fltr}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1325
+#: lib/pp_admintools/app/ldap.py:1331
 msgid "User with mail address {m!r} not found in {uri}/{bdn}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1373
+#: lib/pp_admintools/app/ldap.py:1379
 msgid "User with uid {u!r} not found in {uri}/{bdn}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1421
+#: lib/pp_admintools/app/ldap.py:1427
 msgid "User with cn {cn!r} not found in {uri}/{bdn}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1438 lib/pp_admintools/app/set_ldap_password.py:401
+#: lib/pp_admintools/app/ldap.py:1444 lib/pp_admintools/app/set_ldap_password.py:401
 msgid "User with DN {dn!r} not found in {uri}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1456
+#: lib/pp_admintools/app/ldap.py:1462
 msgid "ObjectClasses of {dn!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1466
+#: lib/pp_admintools/app/ldap.py:1472
 msgid "Entry {dn!r} in {uri} seems not to be an account."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1479
+#: lib/pp_admintools/app/ldap.py:1485
 msgid "Searching DN {dn!r} in {uri}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1492
+#: lib/pp_admintools/app/ldap.py:1498
 msgid "Entry with DN {dn!r} not found in {i!r} ({uri})."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1543
+#: lib/pp_admintools/app/ldap.py:1549
 msgid "Creating entry {dn!r} on {uri}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1549
+#: lib/pp_admintools/app/ldap.py:1555
 msgid "Simulation mode - entry will not be created."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1573
+#: lib/pp_admintools/app/ldap.py:1579
 msgid "Creation status: {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1575
+#: lib/pp_admintools/app/ldap.py:1581
 msgid "Result of creating:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1578
+#: lib/pp_admintools/app/ldap.py:1584
 msgid "Creation of entry {dn!r} was NOT successful: {desc} - {msg}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1586
+#: lib/pp_admintools/app/ldap.py:1592
 msgid "Creation successful."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1601
+#: lib/pp_admintools/app/ldap.py:1607
 msgid "Try number {} for adding entry ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1618
+#: lib/pp_admintools/app/ldap.py:1624
 msgid "Got a {cls} on adding LDAP entry {dn!r} to instance {i!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1621
+#: lib/pp_admintools/app/ldap.py:1627
 msgid "Waiting #{nr} on inserting LDAP entry {dn!r} to instance {i!r} because of a {cls}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1632
+#: lib/pp_admintools/app/ldap.py:1638
 msgid "Creation of entry {dn!r} in instance {i!r} was NOT successfull - {c}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1665
+#: lib/pp_admintools/app/ldap.py:1671
 msgid "Applying changes on {uri} to DN {dn!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1670
+#: lib/pp_admintools/app/ldap.py:1676
 msgid "Simulation mode - changes are not applied."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1694
+#: lib/pp_admintools/app/ldap.py:1700
 msgid "Modification status: {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1696
+#: lib/pp_admintools/app/ldap.py:1702
 msgid "Result of modifying:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1699
+#: lib/pp_admintools/app/ldap.py:1705
 msgid "Modification of {dn!r} was NOT successful: {desc} - {msg}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1703 lib/pp_admintools/app/ldap.py:1753
+#: lib/pp_admintools/app/ldap.py:1709 lib/pp_admintools/app/ldap.py:1759
 #: lib/pp_admintools/app/remove_ldap_user.py:442 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:674
@@ -1348,88 +1459,88 @@ msgstr ""
 msgid "Changes:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1706
+#: lib/pp_admintools/app/ldap.py:1712
 msgid "Modification successful."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1720
+#: lib/pp_admintools/app/ldap.py:1726
 msgid "Try number {} for modifying an entry ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1736
+#: lib/pp_admintools/app/ldap.py:1742
 msgid "Got a {cls} on modifying LDAP entry {dn!r} on instance {i!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1739
+#: lib/pp_admintools/app/ldap.py:1745
 msgid "Waiting #{nr} on modifying LDAP entry {dn!r} on instance {i!r} because of a {cls}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1750
+#: lib/pp_admintools/app/ldap.py:1756
 msgid "Modification of entry {dn!r} on instance {i!r} was NOT successfull - {c}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1781
+#: lib/pp_admintools/app/ldap.py:1787
 msgid "Deleting LDAP entry {dn!r} on {uri} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1786
+#: lib/pp_admintools/app/ldap.py:1792
 msgid "Simulation mode - deletion will not be executed."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1810
+#: lib/pp_admintools/app/ldap.py:1816
 msgid "Deletion status: {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1812
+#: lib/pp_admintools/app/ldap.py:1818
 msgid "Result of deletion:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1815
+#: lib/pp_admintools/app/ldap.py:1821
 msgid "Deletion of {dn!r} was NOT successful: {desc} - {msg}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1821
+#: lib/pp_admintools/app/ldap.py:1827
 msgid "Deletion successful."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1836
+#: lib/pp_admintools/app/ldap.py:1842
 msgid "Try number {i} for deleting entry {dn!r} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1852
+#: lib/pp_admintools/app/ldap.py:1858
 msgid "Got a {cls} on deleting LDAP entry {dn!r} on instance {i!r}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1855
+#: lib/pp_admintools/app/ldap.py:1861
 msgid "Waiting #{nr} on deleting LDAP entry {dn!r} on instance {i!r} because of a {cls}:"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:1866
+#: lib/pp_admintools/app/ldap.py:1872
 msgid "Deleting of entry {dn!r} on instance {i!r} was NOT successfull - {c}: {e}"
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:2010
+#: lib/pp_admintools/app/ldap.py:2016
 msgid "Reading password file {!r} ..."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:2041
+#: lib/pp_admintools/app/ldap.py:2047
 msgid "Could not detect RDN from DN {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:2045
+#: lib/pp_admintools/app/ldap.py:2051
 msgid "Found RDN attribute {!r}."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:2051
+#: lib/pp_admintools/app/ldap.py:2057
 msgid "RDN attribute {!r} will not be touched."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:2057 lib/pp_admintools/app/ldap.py:2076
-#: lib/pp_admintools/app/ldap.py:2154
+#: lib/pp_admintools/app/ldap.py:2063 lib/pp_admintools/app/ldap.py:2082
+#: lib/pp_admintools/app/ldap.py:2160
 msgid "Attribute {!r} will not be touched."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:2114
+#: lib/pp_admintools/app/ldap.py:2120
 msgid "Values to removed from attribute {!r}:"
 msgstr ""
 
@@ -2040,6 +2151,10 @@ msgid ""
 "user will be really removed from LDAP."
 msgstr ""
 
+#: lib/pp_admintools/app/remove_ldap_user.py:127
+msgid "Removing options"
+msgstr ""
+
 #: lib/pp_admintools/app/remove_ldap_user.py:130
 msgid "This is the default."
 msgstr ""
@@ -2422,33 +2537,57 @@ msgstr ""
 msgid "The option must be less than {m} (given: {v})."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:214 lib/pp_admintools/argparse_actions.py:268
+#: lib/pp_admintools/app/__init__.py:226 lib/pp_admintools/app/ldap.py:221
+#: lib/pp_admintools/argparse_actions.py:268 lib/pp_admintools/argparse_actions.py:307
 msgid "The path {!r} must be an absolute path."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:218 lib/pp_admintools/app/ldap.py:2013
-#: lib/pp_admintools/argparse_actions.py:274
+#: lib/pp_admintools/app/ldap.py:225 lib/pp_admintools/app/ldap.py:2019
+#: lib/pp_admintools/argparse_actions.py:274 lib/pp_admintools/argparse_actions.py:313
 msgid "The file {!r} does not exists."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:222 lib/pp_admintools/app/ldap.py:2018
-#: lib/pp_admintools/argparse_actions.py:278
+#: lib/pp_admintools/app/__init__.py:232 lib/pp_admintools/app/ldap.py:229
+#: lib/pp_admintools/app/ldap.py:2024 lib/pp_admintools/argparse_actions.py:278
+#: lib/pp_admintools/argparse_actions.py:318
 msgid "The given path {!r} exists, but is not a regular file."
 msgstr ""
 
-#: lib/pp_admintools/app/ldap.py:226 lib/pp_admintools/app/ldap.py:2023
-#: lib/pp_admintools/argparse_actions.py:282
+#: lib/pp_admintools/app/__init__.py:237 lib/pp_admintools/app/ldap.py:233
+#: lib/pp_admintools/app/ldap.py:2029 lib/pp_admintools/argparse_actions.py:282
+#: lib/pp_admintools/argparse_actions.py:322
 msgid "The given file {!r} is not readable."
 msgstr ""
 
-#: lib/pp_admintools/argparse_actions.py:304
+#: lib/pp_admintools/app/__init__.py:241 lib/pp_admintools/argparse_actions.py:326
+msgid "The given file {!r} is not writeable."
+msgstr ""
+
+#: lib/pp_admintools/app/__init__.py:248 lib/pp_admintools/app/get_from_addr.py:212
+#: lib/pp_admintools/argparse_actions.py:332
+msgid "Directory {!r} does not exists."
+msgstr ""
+
+#: lib/pp_admintools/app/__init__.py:252 lib/pp_admintools/argparse_actions.py:336
+msgid "Path {!r} exists, bu is not a directory."
+msgstr ""
+
+#: lib/pp_admintools/app/__init__.py:256 lib/pp_admintools/argparse_actions.py:340
+msgid "The directory {!r} is not writeable."
+msgstr ""
+
+#: lib/pp_admintools/argparse_actions.py:362
 msgid "a port number must be greater than zero and less or equal to {}."
 msgstr ""
 
-#: lib/pp_admintools/argparse_actions.py:309
+#: lib/pp_admintools/argparse_actions.py:367
 msgid "Wrong port number {!r}:"
 msgstr ""
 
+#: lib/pp_admintools/common.py:73
+msgid "Could not interprete {!r} as a timezone offset."
+msgstr ""
+
 #: lib/pp_admintools/config/dns_deploy_zones.py:202 lib/pp_admintools/config/dns_deploy_zones.py:515
 #: lib/pp_admintools/config/mail.py:138 lib/pp_admintools/config/pdns.py:182
 msgid "Evaluating config section {!r}:"
@@ -2688,6 +2827,10 @@ msgstr ""
 msgid "Found API key of PDNS instance {inst!r}: {key!r}."
 msgstr ""
 
+#: lib/pp_admintools/errors.py:168
+msgid "The date string {!r} could not be interpreted as an ISO date."
+msgstr ""
+
 #: lib/pp_admintools/handler/ldap_password.py:61
 msgid "Encryption schema {!r} not found."
 msgstr ""
@@ -2774,6 +2917,218 @@ msgstr ""
 msgid "Quality of the new password is not sufficient:"
 msgstr ""
 
+#: lib/pp_admintools/handler/pflogparse.py:170
+msgid "Resetting all resulting data structures."
+msgstr ""
+
+#: lib/pp_admintools/handler/pflogparse.py:184
+msgid "Given parameter {p!r} for {f}() is not a sequential object: {v!r}."
+msgstr ""
+
+#: lib/pp_admintools/handler/pflogparse.py:197
+msgid "Parameter {p!r} for {f}() is not a {what} object: {v!r}."
+msgstr ""
+
+#: lib/pp_admintools/handler/pflogparse.py:202
+msgid "Logfile {!r} does not exists."
+msgstr ""
+
+#: lib/pp_admintools/handler/pflogparse.py:206
+msgid "Logfile {!r} is not a regular file."
+msgstr ""
+
+#: lib/pp_admintools/handler/pflogparse.py:210
+msgid "No read access to logfile {!r}."
+msgstr ""
+
+#: lib/pp_admintools/handler/pflogparse.py:213
+msgid "Evaluating logfile {!r} ..."
+msgstr ""
+
+#: lib/pp_admintools/handler/pflogparse.py:217 lib/pp_admintools/handler/pflogparse.py:222
+#: lib/pp_admintools/handler/pflogparse.py:227
+msgid "Reading file {f!r} as a {what} compressed file."
+msgstr ""
+
+#: lib/pp_admintools/handler/pflogparse.py:232
+msgid "Reading file {!r} as an uncompressed file."
+msgstr ""
+
+#: lib/pp_admintools/handler/pflogparse.py:239
+msgid "Closing file {!r}."
+msgstr ""
+
+#: lib/pp_admintools/handler/pflogparse.py:245
+msgid "Start parsing postfix logfile ..."
+msgstr ""
+
+#: lib/pp_admintools/handler/pflogparse.py:475
+msgid "Postfix transaction {!r} for delivering does not exists."
+msgstr ""
+
+#: lib/pp_admintools/handler/pflogparse.py:510
+msgid "Did not found Postfix ID {pfid!r} for Message Id {mid!r}."
+msgstr ""
+
+#: lib/pp_admintools/handler/pflogparse.py:552
+msgid "Did not found Postfix ID {pfid!r} for OpenDKIM log entry."
+msgstr ""
+
+#: lib/pp_admintools/handler/pflogparse.py:574
+msgid "Did not found Postfix ID {pfid!r} for Bounce ID {bid!r}."
+msgstr ""
+
+#: lib/pp_admintools/postfix_chain.py:73 lib/pp_admintools/postfix_deliver_action.py:86
+msgid "Unknown parameter {p!r} on calling {c}.__init__()."
+msgstr ""
+
+#: lib/pp_admintools/postfix_chain.py:95
+msgid "You may not append a None value as a DeliverAction to the list deliver_actions."
+msgstr ""
+
+#: lib/pp_admintools/postfix_chain.py:108
+msgid "Wrong type {c!r} for creating a {w} object from: {a!r}"
+msgstr ""
+
+#: lib/pp_admintools/postfix_chain.py:116
+msgid "You may not append a None value as a Bounce Id."
+msgstr ""
+
+#: lib/pp_admintools/postfix_chain.py:121
+msgid "You may not append an empty value as a Bounce Id."
+msgstr ""
+
+#: lib/pp_admintools/postfix_chain.py:184
+msgid "Could not interprete client address {a!r}: {e}"
+msgstr ""
+
+#: lib/pp_admintools/postfix_chain.py:354 lib/pp_admintools/postfix_chain.py:637
+#: lib/pp_admintools/postfix_deliver_action.py:133
+msgid "Could not interprete date {!r}:"
+msgstr ""
+
+#: lib/pp_admintools/postfix_chain.py:402
+msgid "Could not interprete from address {a!r}: {e}"
+msgstr ""
+
+#: lib/pp_admintools/postfix_chain.py:507
+msgid "Could not interprete the Uid of a picked up mail {a!r}: {e}"
+msgstr ""
+
+#: lib/pp_admintools/postfix_chain.py:606
+msgid "Could not interprete PID of smtpd {a!r}: {e}"
+msgstr ""
+
+#: lib/pp_admintools/postfix_chain.py:728
+msgid "Could not interprete mail size {a!r}: {e}"
+msgstr ""
+
+#: lib/pp_admintools/postfix_chain.py:754
+msgid "Could not interprete number of recipients {a!r}: {e}"
+msgstr ""
+
+#: lib/pp_admintools/postfix_data_pair.py:39
+msgid "The first value {v!r} of {c} must be greater than or equal to null."
+msgstr ""
+
+#: lib/pp_admintools/postfix_data_pair.py:48
+msgid "The total value {t!r} must be greater than or equal to the value {v}."
+msgstr ""
+
+#: lib/pp_admintools/postfix_data_pair.py:59
+msgid "Invalid value {v!r} of a {c}."
+msgstr ""
+
+#: lib/pp_admintools/postfix_deliver_action.py:167
+msgid "Could not interprete total delay {a!r}: {e}"
+msgstr ""
+
+#: lib/pp_admintools/postfix_deliver_action.py:233 lib/pp_admintools/postfix_deliver_action.py:496
+msgid "Could not interprete to address {a!r}: {e}"
+msgstr ""
+
+#: lib/pp_admintools/postfix_deliver_action.py:273
+msgid "Could not interprete relay address {a!r}: {e}"
+msgstr ""
+
+#: lib/pp_admintools/postfix_deliver_action.py:323
+msgid "Could not interprete PID of deliverer {a!r}: {e}"
+msgstr ""
+
+#: lib/pp_admintools/postfix_deliver_action.py:371
+msgid "Could not interprete time before queueing {a!r}: {e}"
+msgstr ""
+
+#: lib/pp_admintools/postfix_deliver_action.py:405
+msgid "Could not interprete smtp connection setup time {a!r}: {e}"
+msgstr ""
+
+#: lib/pp_admintools/postfix_deliver_action.py:436
+msgid "Could not interprete time in queue {a!r}: {e}"
+msgstr ""
+
+#: lib/pp_admintools/postfix_deliver_action.py:466
+msgid "Could not interprete smtp transmission time {a!r}: {e}"
+msgstr ""
+
+#: lib/pp_admintools/tzlocal.py:797
+msgid ""
+"Timezone offset does not match system offset: {tz_offset} != {system_offset}. Please, check your"
+" config files."
+msgstr ""
+
+#: lib/pp_admintools/tzlocal.py:814
+msgid "Found a TZ environment: {}"
+msgstr ""
+
+#: lib/pp_admintools/tzlocal.py:838
+msgid "Environment variable TZ does not contain a time zone name."
+msgstr ""
+
+#: lib/pp_admintools/tzlocal.py:871
+msgid "tzlocal() does not support non-zoneinfo timezones like {!r}."
+msgstr ""
+
+#: lib/pp_admintools/tzlocal.py:872
+msgid "Please use a timezone in the form of Continent/City."
+msgstr ""
+
+#: lib/pp_admintools/tzlocal.py:878
+msgid "This looks like {}."
+msgstr ""
+
+#: lib/pp_admintools/tzlocal.py:891
+msgid "It's not {}?"
+msgstr ""
+
+#: lib/pp_admintools/tzlocal.py:901 lib/pp_admintools/tzlocal.py:931
+msgid "{!r} found, contents:"
+msgstr ""
+
+#: lib/pp_admintools/tzlocal.py:1001
+msgid "{!r} found."
+msgstr ""
+
+#: lib/pp_admintools/tzlocal.py:1017
+msgid "{} found:"
+msgstr ""
+
+#: lib/pp_admintools/tzlocal.py:1034
+msgid "Multiple conflicting time zone configurations found:"
+msgstr ""
+
+#: lib/pp_admintools/tzlocal.py:1037
+msgid "Fix the configuration, or set the time zone in a TZ environment variable."
+msgstr ""
+
+#: lib/pp_admintools/tzlocal.py:1066
+msgid "No explicit setting existed. Use localtime."
+msgstr ""
+
+#: lib/pp_admintools/tzlocal.py:1076
+msgid "Can not find any timezone configuration, defaulting to UTC."
+msgstr ""
+
 #: lib/pp_admintools/xlate.py:113
 msgid "Module directory: {!r}"
 msgstr ""