Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:dovecot_archlinux_-_mail-log-schreibung

Dovecot ArchLinux - Mail-Log-Schreibung

:!: HINWEIS - Die Nachfolgende Konfiguration von Dovecot setzt eine lauffähige Installation von Dovecot voraus, wie unter nachfolgendem internen Link beschrieben:

* Dovecot ArchLinux

Dovecot ist ein Quelloffener IMAP-und POP3-E-Mail-Server für Linux bzw. UNIX-ähnlichen Systeme, entwickelt mit dem Hauptaugenmerk auf Sicherheit. Dovecot ist eine ausgezeichnete Wahl für kleine und grosse Installationen. Dovecot ist schnell und einfach zu installieren, erfordert keine besonderen Voraussetzungen und ist Ressourcenschonend.

Dovecot wird von Timo Sirainen entwickelt und soll hier in der Version CE zum Einsatz kommen.

Ab hier werden root-Rechte zur Ausführung der nachfolgenden Befehle benötigt. Um root zu werden geben Sie bitte folgenden Befehl ein:

$ su -
Password: 

Voraussetzungen

Für die nachfolgende Installation wird vorausgesetzt,

  • dass eine lauffähige Version von Dovecot ab Version 2.3

vorhanden ist und die unter nachfolgenden Links beschriebenen Installationen und Konfigurationen von Dovecot als Mindestvoraussetzung zwingend durchgeführt wurden:

Vorbereitung

Dieses Plugin wird dazu verwendet, um verschiedene Aktionen zu protokollieren, die in einer Mail-Sitzung durchgeführt werden:

  • Setting and removing Deleted flag (Setzen und Entfernen der Markierung „Gelöscht“)
  • Expunging (includes autoexpunge) (Löschen (einschliesslich automatisches Löschen))
  • Copying mails (Kopieren von E-Mails)
  • Saves (Speichern von E-Mails)
  • Mailbox creations (Anlegen von Postfächern)
  • Mailbox deletions (Löschen von Postfächern)
  • Mailbox renames (Umbenennen von Postfächern)
  • Any flag changes (Alle Zustands-Änderungen)

Die IMAP UID und Message-ID Header der Nachrichten werden für jede Aktion protokolliert.

:!: HINWEIS - Das notify-Plugin ist für den Betrieb des mail_log-Plugins erforderlich, dazu ist es sicher zu stellen, dass es dieses zusätzlich mit aktiviert ist.

Das Plugin mail_log für Dovecot ermöglicht es, alle IMAP-Aktionen die der e-Mail-Client durchgeführt hat, in der Log-Schreibung von Dovecot zu protokollieren, welcher standardmässig nach systemd_journald protokolliert.

Damit des Plugin mail_log alle IMAP-Aktionen die der e-Mail-Client durchgeführt hat, auch in die Log-Schreibung von Dovecot mit einbeziehen zu können, ist zusätzlich das Plugin notify ebenfalls einzusetzen.

Das Plugin notify wird vom Plugin mail_log dazu genutzt, über Änderungen an dem Postfächern (Mailbox(es)) des jeweiligen Benutzers, informiert zu werden!

/etc/dovecot/conf.d/10-mail.conf

In der Konfigurationsdatei wird festgelegt, welche Art von „Ablagesystem“ Mailbox-Format verwendet werden soll und wo die e-Mail (Postfächer) im Dateisystem abgelegt werden sollen und welche plugins verwendet werden.

mail_plugins

:!: HINWEIS - Die hier nachfolgend ebenfalls schon aufgelistet Plugins stammen aus vorhergehenden Konfigurationen:

Um die beiden Plugins notify und mail_log zu laden und zu aktivieren, sind nachfolgende Ergänzungen erforderlich:

Information Beschreibung
Dokumentation https://doc.dovecot.org/2.3/settings/core/
Dovecot Configuration Manual - Plugins - Mail logger plugin
Defaultwert
mail_plugins =
Neuer Wert
mail_plugins = $mail_plugins quota notify mail_log
Konfiguration
# Space separated list of plugins to load for all services. Plugins specific to
# IMAP, LDA, etc. are added to this list in their own .conf files.
# Tachtler
# default: #mail_plugins = 
mail_plugins = $mail_plugins quota notify mail_log
}
Beschreibung Eine durch Leerzeichen getrennte Liste der zu ladenden Plugins.

:!: HINWEIS - $mail_plugins fügt bestehende plugins, aus evtl. anderen Konfigurationen und den Wert notify und mail_log gemeinsam, dem Parameter mail_plugins hinzu!

/etc/dovecot/conf.d/10-logging.conf

Zu beginn einer neuen Dovecot Installation, kann es hilfreich sein das Logging bzw. das Log Level so zu konfigurieren, dass ein erweitertes Logging erfolgt.

:!: HINWEIS - Es sind grundsätzlich keine Änderungen an den Standardeinstellungen erforderlich !!!

:!: HINWEIS - Nachfolgende Änderung kann die Nachvollziehbarkeit jedoch erhöhen, in dem die Aktionen save und mailbox_create mit in die Log-Schreibung aufgenommen wird.

:!: HINWEIS - Nachfolgende Änderung kann die Nachvollziehbarkeit jedoch erhöhen, in dem die Ausgabe der Angaben vsize und from mit in die Log-Schreibung aufgenommen wird.

plugin (mail_log): mail_log_events

Information Beschreibung
Dokumentation Dovecot Configuration Manual - Plugins - Mail logger plugin
Defaultwert
mail_log_events =
Neuer Wert
mail_log_events = delete undelete expunge save copy mailbox_create
 mailbox_delete mailbox_rename

:!: HINWEIS - Alle Angaben sollten in einer Zeile stehen!

Konfiguration
# mail_log plugin provides more event logging for mail processes.
plugin {
  # Events to log. Also available: flag_change append
  # Tachtler
  # default: #mail_log_events = delete undelete expunge copy mailbox_delete mailbox_rename
  mail_log_events = delete undelete expunge save copy mailbox_create mailbox_delete
   mailbox_rename
  # Available fields: uid, box, msgid, from, subject, size, vsize, flags
  # size and vsize are available only for expunge and copy events.
  # Tachtler
  # default: #mail_log_fields = uid box msgid size
  mail_log_fields = uid box msgid size vsize from
}
Beschreibung Eine durch Leerzeichen getrennte Liste der zu protokollierenden Ereignisse.

* Setting and removing Deleted flag (Setzen und Entfernen der Markierung „Gelöscht“)
* Expunging (includes autoexpunge) (Löschen (einschliesslich automatisches Löschen))
* Copying mails (Kopieren von E-Mails)
* Saves (Speichern von E-Mails)
* Mailbox creations (Anlegen von Postfächern)
* Mailbox deletions (Löschen von Postfächern)
* Mailbox renames (Umbenennen von Postfächern)
* Any flag changes (Alle Zustands-Änderungen)

:!: HINWEIS - Auf die Ausgabe des flag_change sollte aus Performance-gründen verzichtet werden !!!

plugin (mail_log): mail_log_fields

Information Beschreibung
Dokumentation Dovecot Configuration Manual - Plugins - Mail logger plugin
Defaultwert
mail_log_fields =
Neuer Wert
mail_log_fields = uid box msgid size vsize from
Konfiguration
# mail_log plugin provides more event logging for mail processes.
plugin {
  # Events to log. Also available: flag_change append
  # Tachtler
  # default: #mail_log_events = delete undelete expunge copy mailbox_delete mailbox_rename
  mail_log_events = delete undelete expunge save copy mailbox_create mailbox_delete
   mailbox_rename
  # Available fields: uid, box, msgid, from, subject, size, vsize, flags
  # size and vsize are available only for expunge and copy events.
  # Tachtler
  # default: #mail_log_fields = uid box msgid size
  mail_log_fields = uid box msgid size vsize from
}
Beschreibung Eine durch Leerzeichen getrennte Liste der zu protokollierenden Felder.

* uid
* box
* msgid
* size/Grösse (Nur für Expunge- und Copy-Ereignisse verfügbar.)
* vsize/Virtuelle Grösse (Nur für Expunge- und Copy-Ereignisse verfügbar.)
* flags
* from/Von
* subject/Betreff

:!: HINWEIS - Auf die Ausgabe des flags sollte aus Performance-gründen verzichtet werden !!!

:!: HINWEIS - Auf die Ausgabe des Subject/Betreffzeile sollte aus Datenschutzgründen verzichtet werden !!!

Neustart

Bevor der der dovecot-Daemon/Dienst neu gestartet werden soll, ist eine Überprüfung der korrekten Konfiguration durch nachfolgenden Befehl, zu empfehlen

doveconf -n

# 2.3.21.1 (d492236fa0): /etc/dovecot/dovecot.conf
# OS: Linux 6.6.72-1-lts x86_64
# Hostname: vml080.idmz.tachtler.net
auth_mechanisms = plain digest-md5 cram-md5 login
auth_verbose = yes
listen = 127.0.0.1, 10.0.0.80, ::1, fd00::10:10:0:0:80, 2001:db8::10:10:0:0:80
mail_location = maildir:~/Maildir
mail_plugins = " quota"
namespace inbox {
  inbox = yes
  location = 
  mailbox Drafts {
    auto = subscribe
    special_use = \Drafts
  }
  mailbox Junk {
    auto = subscribe
    special_use = \Junk
  }
  mailbox Sent {
    auto = subscribe
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    special_use = \Sent
  }
  mailbox Trash {
    auto = subscribe
    special_use = \Trash
  }
  prefix = INBOX/
  separator = /
  type = private
}
passdb {
  args = scheme=CRYPT username_format=%u /etc/dovecot/users
  driver = passwd-file
}
plugin {
  mail_log_events = delete undelete expunge save copy mailbox_create mailbox_delete mailbox_rename
  mail_log_fields = uid box msgid size vsize from
  quota = maildir:User quota
  quota_grace = 10%%
  quota_max_mail_size = 50M
  quota_rule = *:storage=1G
  quota_rule2 = INBOX/Trash:storage=+100M
  quota_status_nouser = DUNNO
  quota_status_overquota = 552 5.2.2 Mailbox is over quota
  quota_status_success = DUNNO
  quota_warning = storage=95%% quota-warning 95 %u
  quota_warning2 = storage=80%% quota-warning 80 %u
}
protocols = imap lmtp
service auth {
  inet_listener auth {
    address = 10.0.0.80, fd00::10:10:0:0:80
    port = 12345
  }
}
service lmtp {
  inet_listener lmtp {
    address = 10.0.0.80, fd00::10:10:0:0:80
    port = 24
    ssl = yes
  }
  user = vmail
}
service quota-status {
  client_limit = 1
  executable = quota-status -p postfix
  inet_listener {
    address = 10.0.0.80, fd00::10:10:0:0:80
    port = 12340
  }
}
service quota-warning {
  executable = script /usr/local/bin/quota-warning.sh
  unix_listener quota-warning {
    user = vmail
  }
  user = vmail
}
service stats {
  unix_listener stats-reader {
    user = vmail
  }
  unix_listener stats-writer {
    user = vmail
  }
}
ssl = required
ssl_cert = </etc/dovecot/ssl/certs/fullchain.pem
ssl_cipher_list = ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256
:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256
:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA
:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:DHE-DSS-AES128-SHA256:DHE-DSS-AES256-SHA
:AES128-GCM-SHA256:AES256-GCM-SHA384:!CAMELLIA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK
:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
ssl_cipher_suites = TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256
:TLS_AES_128_CCM_8_SHA256:TLS_AES_128_CCM_SHA256
ssl_dh = # hidden, use -P to show it
ssl_key = # hidden, use -P to show it
ssl_prefer_server_ciphers = yes
userdb {
  args = username_format=%u /etc/dovecot/users
  driver = passwd-file
}
verbose_proctitle = yes
protocol lmtp {
  auth_ssl_require_client_cert = yes
  ssl = required
  ssl_ca = </etc/dovecot/ssl/certs/server-lmtp-chain.pem
  ssl_require_crl = no
  ssl_verify_client_cert = yes
}
protocol imap {
  mail_plugins = " quota notify mail_log imap_quota"
}

:!: HINWEIS - Die Konfiguration der Parameter

  • ssl_cipher_list
  • ssl_cipher_suites

erfolgt in einer Zeile - OHNE - Zeilenumbrüche!

:!: HINWEIS - die Konfiguration des dovecot-Daemon/Dienst konnte korrekt gelesen werden, wenn die Konfiguration erscheint, was letztendlich zwar nicht bedeutet, das Sie auch korrekt ist, aber syntaktische Fehler ausschliesst !!!

Danach kann der dovecot-Server mit nachfolgendem Befehle neu gestartet werden:

# systemctl restart dovecot.service

Überprüfung erfolgreicher Neustart

Um zu Überprüfen, ob der Neustart des dovecot-Daemons/Dienstes erfolgreich durchgeführt wurden, kann nachfolgender Befehl genutzt werden:

# ss -tauben | grep dovecot
tcp   LISTEN 0      1000                   10.0.0.80:12345      0.0.0.0:*     ino:16554 sk:1001
 cgroup:/system.slice/dovecot.service <->
tcp   LISTEN 0      100                    10.0.0.80:12340      0.0.0.0:*     ino:16568 sk:1002
 cgroup:/system.slice/dovecot.service <->
tcp   LISTEN 0      100                    10.0.0.80:24         0.0.0.0:*     ino:16482 sk:1003
 cgroup:/system.slice/dovecot.service <->
tcp   LISTEN 0      100                    127.0.0.1:143        0.0.0.0:*     ino:16505 sk:1004
 cgroup:/system.slice/dovecot.service <->
tcp   LISTEN 0      100                    10.0.0.80:143        0.0.0.0:*     ino:16506 sk:1005
 cgroup:/system.slice/dovecot.service <->
tcp   LISTEN 0      100                    127.0.0.1:993        0.0.0.0:*     ino:16510 sk:1006
 cgroup:/system.slice/dovecot.service <->
tcp   LISTEN 0      100                    10.0.0.80:993        0.0.0.0:*     ino:16511 sk:1007
 cgroup:/system.slice/dovecot.service <->
tcp   LISTEN 0      100                        [::1]:993           [::]:*     ino:16512 sk:100a
 cgroup:/system.slice/dovecot.service v6only:1 <->
tcp   LISTEN 0      100         [fd00::10:10:0:0:80]:993           [::]:*     ino:16513 sk:100b
 cgroup:/system.slice/dovecot.service v6only:1 <->
tcp   LISTEN 0      100     [2001:db8::10:10:0:0:80]:143           [::]:*     ino:16509 sk:100c
 cgroup:/system.slice/dovecot.service v6only:1 <->
tcp   LISTEN 0      100         [fd00::10:10:0:0:80]:12340         [::]:*     ino:16569 sk:100d
 cgroup:/system.slice/dovecot.service v6only:1 <->
tcp   LISTEN 0      1000        [fd00::10:10:0:0:80]:12345         [::]:*     ino:16555 sk:100e
 cgroup:/system.slice/dovecot.service v6only:1 <->
tcp   LISTEN 0      100         [fd00::10:10:0:0:80]:24            [::]:*     ino:16483 sk:100f
 cgroup:/system.slice/dovecot.service v6only:1 <->
tcp   LISTEN 0      100     [2001:db8::10:10:0:0:80]:993           [::]:*     ino:16514 sk:1010
 cgroup:/system.slice/dovecot.service v6only:1 <->
tcp   LISTEN 0      100         [fd00::10:10:0:0:80]:143           [::]:*     ino:16508 sk:1011
 cgroup:/system.slice/dovecot.service v6only:1 <->
tcp   LISTEN 0      100                        [::1]:143           [::]:*     ino:16507 sk:1012
 cgroup:/system.slice/dovecot.service v6only:1 <->

oder auch dieser Befehl:

# ps auxwf | grep dovecot | grep -v grep
root        1723  0.0  0.2   8148  5248 ?        Ss   10:53   0:00 /usr/bin/dovecot -F
dovecot     1725  0.0  0.1   4424  2816 ?        S    10:53   0:00  \_ dovecot/anvil [0 connections]
root        1726  0.0  0.1   4560  2944 ?        S    10:53   0:00  \_ dovecot/log 
root        1727  0.0  0.2   7344  4736 ?        S    10:53   0:00  \_ dovecot/config

bzw. auch dieser Befehl:

# systemctl status dovecot.service 
● dovecot.service - Dovecot IMAP/POP3 email server
     Loaded: loaded (/usr/lib/systemd/system/dovecot.service; enabled; preset: >
     Active: active (running) since Wed 2025-02-12 19:10:23 CET; 1min 23s ago
 Invocation: 2d378761f9bc4a57934c39a42cf869b3
       Docs: man:dovecot(1)
             https://doc.dovecot.org/
   Main PID: 1723 (dovecot)
     Status: "v2.3.21.1 (d492236fa0) running"
      Tasks: 4 (limit: 2315)
     Memory: 3.6M (peak: 4M)
        CPU: 78ms
     CGroup: /system.slice/dovecot.service
             ├─1723 /usr/bin/dovecot -F
             ├─1725 "dovecot/anvil [0 connections]"
             ├─1726 "dovecot/log "
             └─1727 "dovecot/config "

Feb 12 19:10:23 server systemd[1]: Starting Dovecot IMAP/POP3 email server...
Feb 12 19:10:23 server dovecot[1723]: master: Dovecot v2.3.21.1 (d492236fa0) st>
Feb 12 19:10:23 server systemd[1]: Started Dovecot IMAP/POP3 email server.

Test

Mittels Einlieferung einer E-Mail kann mit herausgefunden werden, ob lokal erzeugte e-Mails auch an Dovecot: imap-tachtler.net über Port 24 und via TLS-Verschlüsselung - zugestellt werden kan, was ausnahmsweise mit nachfolgendem Befehl (und nicht mit telnet) durchgeführt werden soll z.B. überprüft werden, ob die entsprechenden Log-Felder im Log von Dovecot ersichtlich sind:

# echo "Test-E-Mail (mail_log)" | /usr/sbin/sendmail root

Nachfolgende die Log-Schreibung, welche im systemd-journald-Log ersichtlich ist und mit z.B. dem Befehl

# journalctl -u dovecot.service

zur Ansicht gebracht werden kann: (uid box msgid size vsize from)

Feb 21 17:44:25 server dovecot[879]: lmtp(42956): Connect from fd00::10:10:0:0:60
Feb 21 17:44:25 server dovecot[879]: lmtp(klaus@tachtler.net)<42956><T40GAskguGfMpwAAhuu2+w>:
 Mailbox created: INBOX
Feb 21 17:44:25 server dovecot[879]: lmtp(klaus@tachtler.net)<42956><T40GAskguGfMpwAAhuu2+w>:
 save: box=INBOX, uid=1, msgid=<20250221064424.BD45388@vml080.idmz.tachtler.net>, size=1153, vsize=1175,
 from=root@vml080.idmz.tachtler.net
Feb 21 17:44:25 server dovecot[879]: lmtp(klaus@tachtler.net)<42956><T40GAskguGfMpwAAhuu2+w>:
 msgid=<20250221064424.BD45388@vml080.idmz.tachtler.net>: saved mail to INBOX
Feb 21 17:44:25 server dovecot[879]: lmtp(42956): Disconnect from fd00::10:10:0:0:60:
 Logged out (state=READY)
Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
tachtler/dovecot_archlinux_-_mail-log-schreibung.txt · Zuletzt geändert: 2025/02/21 08:48 von klaus