Inhaltsverzeichnis
Dovecot ArchLinux - Mail-Log-Schreibung
|
---|
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.
Beschreibung | Externer Link |
---|---|
Homepage | Dovecot |
Dokumentation | https://doc.dovecot.org/2.3/ |
Mail logger | https://doc.dovecot.org/2.3/configuration_manual/plugins/mail_event_logging/ |
Logger Config | https://doc.dovecot.org/2.3/settings/plugin/mail-log-plugin/#plugin-mail-log |
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
|
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)