Inhaltsverzeichnis
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 große 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/ |
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:
Vorbereitungen
Bevor mit der Installation, Konfiguration und der Inbetriebnahme von Dovecot begonnen werden kann, soll hier kurz dargestellt werden, welche Art von Einsatz von Dovecot hier realisiert werden soll.
Vorbereitung - Einsatzzweck
Der nachfolgend beschrieben Einsatzzweck, soll einen Dovecot in eher kleinerer Ausführung darstellen, was jedoch nicht bedeutet, das die nachfolgend beschriebene Installation und Konfiguration, nicht auch für eine
- Anzahl von mehreren hundert Benutzern mit bis zu einem
- Datenvolumen von 3 TB Plattenspeicherplatz ermöglichen würde.
Grössere Installationen würden jedoch ein etwas anderes, aber nicht grundlegend anderes Vorgehen benötigen!
Vorbereitung - Mailbox-Format
Eine der Entscheidungen sollte sein, welches „Ablagesystem“ Mailbox-Format zum Einsatz kommen soll.
Grundsätzlich gibt es drei sehr bekannte und häufig benutzte „Ablagesysteme“ Mailbox-Formate:
- MailDir - siehe auch, externe Links Maildir, Wikipedia - Maildir
- ✔ jede e-Mail liegt in einer eigenen Datei direkt im Dateisystem
- ✔ robust, einfach wartbar da nur Ordnerstruktur im Dateisystem
- ✔ keine Datenbank im Hintergrund, keine Dataisystem-Locking-Mechanismen, NFS-fähig
- ✘ viele kleine Dateien, aufwendiger beim Backup (Sicherung) der Dateien
- ☛ Einsatz bis ca. 3 TB empfohlen
- (m)dbox - siehe auch, externer Link (m)dbox
- ✔ schnelleres Backup (Sicherung) da nur wenige Dateien
- ✔ Verwendung vin aktuelle zwei Speicherorten (ALT-Storage) möglich
- ✔ optimiertes Dovecot eigenes Format für grössere Installationen
- ✘ Verwendung einer eingebetteten, internen Datenbank (Wikipedia - Berkely DB) im Hintergrund
- ☛ Administration nur noch über
doveadm
-Befehle möglich = höheres „KnowHow“ erforderlich - ☛ bei der Sicherung (Backup) muss die Datenbank und die Abhängigkeit zu dieser berücksichtigt werden
- ☛ Einsatz ab ca. 3 TB empfohlen
Vorbereitung - Authentifizierung
Eine weitere der Entscheidungen sollte ebenfalls sein, wie sich die Benutzer authentifizieren sollen
Die Authentifizierung bei Dovecot wird als, und soll auch hier als
passdb
Konfiguration beschrieben werden.
Mögliche Verfahren sind hier:
- PAM (
/etc/passwd
) - passwd-file (
/etc/dovecot/users
) - für Benutzer ohne Login-shell
Möglichkeit - LDAP
- ActiveDirectory
- SQL
um nur einige zu nennen.
Eine weitere Überlegung sollte sein, wie die Kennung für eine Anmeldung an Dovecot aussehen soll.
Nachfolgende zwei Lösungswege sollten in die Überlegungen mit einbezogen werden, beide haben Vor- und Nachteile:
- Kennung = e-Mail-Adresse (localpart@domain)
- Kennung = username
Vorbereitung - Kontodatenablage
Eine weitere der Entscheidungen sollte ebenfalls sein, wo ggf. weitere Kontodaten / Benutzer-spezifische Einstellungen für Dovecot hinterlegt werden können.
Die Hinterlegung von Kontodaten / Benutzer-spezifische Einstellungen wird als, und soll auch hier als
userdb
Konfiguration beschrieben werden.
Mögliche Verfahren sind hier:
- passwd-file (
/etc/dovecot/users
) - für Benutzer ohne Login-shell
Möglichkeit - LDAP
- ActiveDirectory
- SQL
um nur einige zu nennen.
Beispiele für die Hinterlegung von Kontodaten / Benutzer-spezifische Einstellungen in Dovecot wären z.B.
- Benutzer-spezifische Quotas
- abweichende Login-Namen zur e-Mail-Adresse
- Pfadspezifikationen für die e-Mail-Verzeichnisse
Vorbereitung - IMAP-Namensraum
Der IMAP-Namensraum legt fest, welche der beiden Varianten der Darstellung von Ordnern im Hierarchiebaum anzuwenden ist. Die beiden Möglichkeiten sind.
- dürfen Ordner in der gleichen Hierarchieebene wie die INBOX vorhanden sein
- dürfen Ordner nur unterhalb der Hierarchieebene wie die INBOX vorhanden sein
Des weiteren ist festzulegen, welches Trennzeichnen für Trennung der einzelnen Hierarchien voneinander verwendet werden soll. Historisch bedingt ist das der Punkt (.). Oder sollte ggf., wenn Punkte z.B. in den e-Mail-Adressen erlaubt sind, dies der Schrägstrich (/) sein.
Vorbereitung - Ordner-Präfix
Des weiteren ist festzulegen, welcher Ordner-Präfix für Trennung der einzelnen Hierarchien voneinander verwendet werden soll. Historisch bedingt ist das der Punkt (.). Oder sollte ggf., wenn Punkte z.B. in den e-Mail-Adressen erlaubt sind, dies der Schrägstrich (/) sein.
Festzulegen ist also, welche der beiden nachfolgenden Varianten gewählt werden soll.
- INBOX, INBOX.Unterordner, INBOX.Unterordner.Unterordner
- INBOX, INBOX/Unterordner, INBOX/Unterordner/Unterordner
Installation
Zur Installation des Dovecot wird nachfolgendes Paket benötigt:
Mit nachfolgendem Befehl, wird das Pakete dovecot
installiert:
# pacman -S --noconfirm dovecot
Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit den Paket dovecot
installiert wurden:
# pacman -Qil dovecot
Installierte Benutzer
Folgender Benutzer wurde ebenfalls angelegt, was mit folgende Befehl überprüft werden kann:
# cat /etc/passwd | grep dove dovenull:x:74:74:Dovecot user for completely untrustworthy processes:/:/usr/bin/nologin dovecot:x:76:76:Dovecot user:/:/usr/bin/nologin
Desweiteren wurden auch folgende Gruppen angelegt, was mit folgendem Befehl überprüft werden kann:
# cat /etc/group | grep dove dovenull:x:74: dovecot:x:76:
Dienst/Deamon-Start einrichten
Um einen Dovecot, welcher als Dienst/Deamon als Hintergrundprozess läuft, auch nach einem Neustart des Servers zur Verfügung zu haben, soll der Dienst/Daemon mit dem Server mit gestartet werden, was mit nachfolgendem Befehl realisiert werden kann:
# systemctl enable dovecot.service Created symlink '/etc/systemd/system/multi-user.target.wants/dovecot.service' → '/usr/lib/systemd/system/dovecot.service'.
Eine Überprüfung, ob beim Neustart des Server der dovecot
-Dienst/Deamon wirklich mit gestartet wird, kann mit nachfolgendem Befehl erfolgen und sollte eine Anzeige, wie ebenfalls nachfolgend dargestellt ausgeben:
# systemctl list-unit-files --type=service | grep -e dovecot.service dovecot.service enabled disabled
bzw.
# systemctl is-enabled dovecot.service enabled
iptables/ip6tables Regeln
Damit der Dovecot auch erreichbar ist und nicht der Abruf von E-Mails via IMAP vom Paketfilter iptables
blockiert werden, müssen nachfolgende Regeln zum iptables
-Regelwerk hinzugefügt werden.
Um die aktuellen iptables
-Regeln erweitern zu können, sollten diese erst einmal aufgelistet werden, was mit nachfolgendem Befehl durchgeführt werden kann:
# iptables -L -nv --line-numbers Chain INPUT (policy DROP 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 1169 2101K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED 2 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 3 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 4 1 60 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 5 0 0 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 5 prefix "REC-INP Defend " 6 0 0 REJECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 reject-with tcp-reset 7 0 0 REJECT udp -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable 8 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-proto-unreachable Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination
Nachfolgende Befehle, fügen folgende iptables
-Regeln dem iptables
-Regelwerk nach der Position 4 hinzu, ohne das der Paketfilter angehalten werden muss:
-A INPUT -p tcp --dport 24 -j ACCEPT
-A INPUT -p tcp --dport 143 -j ACCEPT
-A INPUT -p tcp --dport 993 -j ACCEPT
-A INPUT -p tcp --dport 4190 -j ACCEPT
-A INPUT -p tcp --dport 12340 -j ACCEPT
-A INPUT -p tcp --dport 12345 -j ACCEPT
und hier die Befehle:
# iptables -I INPUT 5 -p tcp --dport 24 -j ACCEPT # iptables -I INPUT 6 -p tcp --dport 143 -j ACCEPT # iptables -I INPUT 7 -p tcp --dport 993 -j ACCEPT # iptables -I INPUT 8 -p tcp --dport 4190 -j ACCEPT # iptables -I INPUT 9 -p tcp --dport 12340 -j ACCEPT # iptables -I INPUT 9 -p tcp --dport 12345 -j ACCEPT
Ein erneute Abfrage des iptables
-Regelwerts, sollte dann nachfolgend dargestellte Ausgabe ergeben, was mit folgendem Befehl durchgeführt werden kann:
# iptables -L -nv --line-numbers Chain INPUT (policy DROP 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 1202 2103K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED 2 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 3 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 4 1 60 ACCEPT tcp -- * * 0.0.0.0/ 0.0.0.0/0 tcp dpt:22 5 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:24 6 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:143 7 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:993 8 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:4190 9 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:12340 10 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:12345 11 0 0 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 5 prefix "REC-INP Defend " 12 0 0 REJECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 reject-with tcp-reset 13 0 0 REJECT udp -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable 14 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-proto-unreachable Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination
Die neuen Zeilen sind an Position 5 (INPUT) bis Position 10 (INPUT) zu sehen, hier nachfolgend zur Verdeutlichung noch einmal dargestellt (nur relevanter Ausschnitt):
... 5 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:24 6 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:143 7 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:993 8 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:4190 9 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:12340 10 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:12345 ...
Um diese iptables
-Regel dauerhaft, auch nach einem Neustart des Server, weiterhin im iptables
-Regelwerk zu speichern, muss nachfolgend dargestellter Befehl abschliessend noch ausgeführt werden:
# /usr/sbin/iptables-save > /etc/iptables/iptables.rules
Nachfolgender Befehl kann dazu verwendet werden, um zu überprüfen, ob das iptables-Regelwerk auch korrekt gespeichert wurde:
# cat /etc/iptables/iptables.rules # Generated by iptables-save v1.8.10 on Sat May 04 07:29:23 2024 *filter :INPUT DROP [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m tcp --dport 24 -j ACCEPT -A INPUT -p tcp -m tcp --dport 143 -j ACCEPT -A INPUT -p tcp -m tcp --dport 993 -j ACCEPT -A INPUT -p tcp -m tcp --dport 4190 -j ACCEPT -A INPUT -p tcp -m tcp --dport 12340 -j ACCEPT -A INPUT -p tcp -m tcp --dport 12345 -j ACCEPT -A INPUT -j LOG --log-prefix "REC-INP Defend " --log-level 5 -A INPUT -p tcp -j REJECT --reject-with tcp-reset -A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable -A INPUT -j REJECT --reject-with icmp-proto-unreachable COMMIT # Completed on Sat May 04 07:29:23 2024 # Generated by iptables-save v1.8.10 on Sat May 04 07:29:23 2024 *nat :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] COMMIT # Completed on Sat May 04 07:29:23 2024 # Generated by iptables-save v1.8.10 on Sat May 04 07:29:23 2024 *mangle :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] COMMIT # Completed on Sat May 04 07:29:23 2024
Um die aktuellen ip6tables
-Regeln erweitern zu können, sollten diese erst einmal aufgelistet werden, was mit nachfolgendem Befehl durchgeführt werden kann:
# ip6tables -nvL --line-numbers Chain INPUT (policy DROP 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 0 0 ACCEPT all * * ::/0 ::/0 ctstate RELATED,ESTABLISHED 2 0 0 ACCEPT icmp * * ::/0 ::/0 3 0 0 ACCEPT all lo * ::/0 ::/0 4 0 0 ACCEPT tcp * * ::/0 ::/0 tcp dpt:22 5 0 0 LOG all * * ::/0 ::/0 LOG flags 0 level 5 prefix "REC-INP Defend " 6 0 0 REJECT tcp * * ::/0 ::/0 reject-with tcp-reset 7 0 0 REJECT udp * * ::/0 ::/0 reject-with icmp6-port-unreachable 8 0 0 REJECT all * * ::/0 ::/0 reject-with icmp6-addr-unreachable Chain FORWARD (policy DROP 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 0 0 LOG all * * ::/0 ::/0 LOG flags 0 level 5 prefix "REC-FWD Defend " 2 0 0 REJECT tcp * * ::/0 ::/0 reject-with tcp-reset 3 0 0 REJECT udp * * ::/0 ::/0 reject-with icmp6-port-unreachable 4 0 0 REJECT all * * ::/0 ::/0 reject-with icmp6-addr-unreachable Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination
Nachfolgende Befehle, fügen folgende ip6tables
-Regeln dem ip6tables
-Regelwerk nach der Position 4 hinzu, ohne das der Paketfilter angehalten werden muss:
-A INPUT -p tcp --dport 24 -j ACCEPT
-A INPUT -p tcp --dport 143 -j ACCEPT
-A INPUT -p tcp --dport 993 -j ACCEPT
-A INPUT -p tcp --dport 4190 -j ACCEPT
-A INPUT -p tcp --dport 12340 -j ACCEPT
-A INPUT -p tcp --dport 12345 -j ACCEPT
und hier die Befehle:
# ip6tables -I INPUT 5 -p tcp --dport 24 -j ACCEPT # ip6tables -I INPUT 6 -p tcp --dport 143 -j ACCEPT # ip6tables -I INPUT 7 -p tcp --dport 993 -j ACCEPT # ip6tables -I INPUT 8 -p tcp --dport 4190 -j ACCEPT # ip6tables -I INPUT 9 -p tcp --dport 12340 -j ACCEPT # ip6tables -I INPUT 9 -p tcp --dport 12345 -j ACCEPT
Ein erneute Abfrage des ip6tables
-Regelwerts, sollte dann nachfolgend dargestellte Ausgabe ergeben, was mit folgendem Befehl durchgeführt werden kann:
# ip6tables -nvL --line-numbers Chain INPUT (policy DROP 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 0 0 ACCEPT all * * ::/0 ::/0 ctstate RELATED,ESTABLISHED 2 0 0 ACCEPT icmp * * ::/0 ::/0 3 0 0 ACCEPT all lo * ::/0 ::/0 4 0 0 ACCEPT tcp * * ::/0 ::/0 tcp dpt:22 5 0 0 ACCEPT tcp * * ::/0 ::/0 tcp dpt:24 6 0 0 ACCEPT tcp * * ::/0 ::/0 tcp dpt:143 7 0 0 ACCEPT tcp * * ::/0 ::/0 tcp dpt:993 8 0 0 ACCEPT tcp * * ::/0 ::/0 tcp dpt:4190 9 0 0 ACCEPT tcp * * ::/0 ::/0 tcp dpt:12340 10 0 0 ACCEPT tcp * * ::/0 ::/0 tcp dpt:12345 11 0 0 LOG all * * ::/0 ::/0 LOG flags 0 level 5 prefix "REC-INP Defend " 12 0 0 REJECT tcp * * ::/0 ::/0 reject-with tcp-reset 13 0 0 REJECT udp * * ::/0 ::/0 reject-with icmp6-port-unreachable 14 0 0 REJECT all * * ::/0 ::/0 reject-with icmp6-addr-unreachable Chain FORWARD (policy DROP 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 0 0 LOG all * * ::/0 ::/0 LOG flags 0 level 5 prefix "REC-FWD Defend " 2 0 0 REJECT tcp * * ::/0 ::/0 reject-with tcp-reset 3 0 0 REJECT udp * * ::/0 ::/0 reject-with icmp6-port-unreachable 4 0 0 REJECT all * * ::/0 ::/0 reject-with icmp6-addr-unreachable Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination
Die neuen Zeilen sind an Position 5 (INPUT) bis Postition 10 (INTPUT) zu sehen, hier nachfolgend zur Verdeutlichung noch einmal dargestellt (nur relevanter Ausschnitt):
... 5 0 0 ACCEPT tcp * * ::/0 ::/0 tcp dpt:24 6 0 0 ACCEPT tcp * * ::/0 ::/0 tcp dpt:143 7 0 0 ACCEPT tcp * * ::/0 ::/0 tcp dpt:993 8 0 0 ACCEPT tcp * * ::/0 ::/0 tcp dpt:4190 9 0 0 ACCEPT tcp * * ::/0 ::/0 tcp dpt:12340 10 0 0 ACCEPT tcp * * ::/0 ::/0 tcp dpt:12345 ...
Um diese ip6tables
-Regel dauerhaft, auch nach einem Neustart des Server, weiterhin im ip6tables
-Regelwerk zu speichern, muss nachfolgend dargestellter Befehl abschließend noch ausgeführt werden:
# /usr/sbin/ip6tables-save > /etc/iptables/ip6tables.rules
Nachfolgender Befehl kann dazu verwendet werden, um zu überprüfen, ob das ip6tables
-Regelwerk auch korrekt gespeichert wurde:
# cat /etc/iptables/ip6tables.rules # Generated by iptables-save v1.8.10 on Sat May 04 07:29:53 2024 *mangle :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] COMMIT # Completed on Sat May 04 07:29:53 2024 # Generated by iptables-save v1.8.10 on Sat May 04 07:59:23 2024 *filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m tcp --dport 24 -j ACCEPT -A INPUT -p tcp -m tcp --dport 143 -j ACCEPT -A INPUT -p tcp -m tcp --dport 993 -j ACCEPT -A INPUT -p tcp -m tcp --dport 4190 -j ACCEPT -A INPUT -p tcp -m tcp --dport 12340 -j ACCEPT -A INPUT -p tcp -m tcp --dport 12345 -j ACCEPT -A INPUT -j LOG --log-prefix "REC-INP Defend " --log-level 5 -A INPUT -p tcp -j REJECT --reject-with tcp-reset -A INPUT -p udp -j REJECT --reject-with icmp6-port-unreachable -A INPUT -j REJECT --reject-with icmp6-addr-unreachable -A FORWARD -j LOG --log-prefix "REC-FWD Defend " --log-level 5 -A FORWARD -p tcp -j REJECT --reject-with tcp-reset -A FORWARD -p udp -j REJECT --reject-with icmp6-port-unreachable -A FORWARD -j REJECT --reject-with icmp6-addr-unreachable COMMIT # Completed on Sat May 04 07:29:53 2024 # Generated by iptables-save v1.8.10 on Sat May 04 07:59:23 2024 *nat :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] COMMIT # Completed on Sat May 04 07:29:53 2024
Konfigurationsdateien
Die Konfiguration von Dovecot findet in verschiedenen Dateien statt, welche alle in den Verzeichnissen
/etc/dovecot
/etc/dovecot/conf.d
hinterlegt werden müssen.
ACHTUNG - Nach der Installation sind KEINE Konfigurationsdateien vorhanden!
Woher die Konfigurationsdateien nach einer erfolgreichen Installation von Dovecot kopiert werden sollen, kann mit nachfolgendem Befehl ermittelt werden, welcher gewollt zu einer Fehlermeldung führt:
# doveconf -n | head -n1 doveconf: Fatal: open(/etc/dovecot/dovecot.conf) failed: No such file or directory (copy example configs from /usr/share/doc/dovecot/example-config/) # 2.3.21.1 (d492236fa0): /etc/dovecot/dovecot.conf
Anschliessend kann dann der gesamte Konfigurationsbaum mit nachfolgendem Befehl kopiert werden, so dass der Dovecot Server nun ein Standardkonfiguration besitzt:
# cp -ar /usr/share/doc/dovecot/example-config /etc/dovecot
Abschliessend kann mit nachfolgendem Befehl überprüft werden, ob nun die Konfigurationsdateien für Dovecot vorhanden sind, welche eine Ausgabe in etwa wie die nachfolgende zum Vorschein bringen sollte:
# ls -l /etc/dovecot/* -rw-r--r-- 1 root root 4333 Aug 14 18:58 /etc/dovecot/dovecot.conf -rw-r--r-- 1 root root 1507 Aug 14 18:58 /etc/dovecot/dovecot-dict-auth.conf.ext -rw-r--r-- 1 root root 522 Aug 14 18:58 /etc/dovecot/dovecot-dict-sql.conf.ext -rw-r--r-- 1 root root 5733 Aug 14 18:58 /etc/dovecot/dovecot-ldap.conf.ext -rw-r--r-- 1 root root 2183 Aug 14 18:58 /etc/dovecot/dovecot-oauth2.conf.ext -rw-r--r-- 1 root root 5824 Aug 14 18:58 /etc/dovecot/dovecot-sql.conf.ext /etc/dovecot/conf.d: total 128 -rw-r--r-- 1 root root 5248 Aug 14 18:58 10-auth.conf -rw-r--r-- 1 root root 1781 Aug 14 18:58 10-director.conf -rw-r--r-- 1 root root 3757 Aug 14 18:58 10-logging.conf -rw-r--r-- 1 root root 17770 Aug 14 18:58 10-mail.conf -rw-r--r-- 1 root root 3619 Aug 14 18:58 10-master.conf -rw-r--r-- 1 root root 1585 Aug 14 18:58 10-metrics.conf -rw-r--r-- 1 root root 3433 Aug 14 18:58 10-ssl.conf -rw-r--r-- 1 root root 1657 Aug 14 18:58 15-lda.conf -rw-r--r-- 1 root root 3111 Aug 14 18:58 15-mailboxes.conf -rw-r--r-- 1 root root 4520 Aug 14 18:58 20-imap.conf -rw-r--r-- 1 root root 1367 Aug 14 18:58 20-lmtp.conf -rw-r--r-- 1 root root 4066 Aug 14 18:58 20-pop3.conf -rw-r--r-- 1 root root 4299 Aug 14 18:58 20-submission.conf -rw-r--r-- 1 root root 676 Aug 14 18:58 90-acl.conf -rw-r--r-- 1 root root 292 Aug 14 18:58 90-plugin.conf -rw-r--r-- 1 root root 2596 Aug 14 18:58 90-quota.conf -rw-r--r-- 1 root root 499 Aug 14 18:58 auth-checkpassword.conf.ext -rw-r--r-- 1 root root 489 Aug 14 18:58 auth-deny.conf.ext -rw-r--r-- 1 root root 343 Aug 14 18:58 auth-dict.conf.ext -rw-r--r-- 1 root root 924 Aug 14 18:58 auth-ldap.conf.ext -rw-r--r-- 1 root root 561 Aug 14 18:58 auth-master.conf.ext -rw-r--r-- 1 root root 515 Aug 14 18:58 auth-passwdfile.conf.ext -rw-r--r-- 1 root root 788 Aug 14 18:58 auth-sql.conf.ext -rw-r--r-- 1 root root 611 Aug 14 18:58 auth-static.conf.ext -rw-r--r-- 1 root root 2182 Aug 14 18:58 auth-system.conf.ext
Konfiguration: Grundlagen
/usr/bin/doveconf
Ähnlich wie auch bei Postfix, gibt es bei Dovecot ein Werkzeug, mit dem die Konfiguration zur Anzeige gebracht werden kann:
/usr/bin/doveconf
.
Nachfolgende Befehle sollten zum Einsatz kommen:
doveconf -d
- Listet die default (Standard) Werte der Dovecot-Konfiguration aufdoveconf -n
- Listet die neuen bzw. zur Standardkonfiguration aktuell abweichend konfigurierten Werte der Dovecot-Konfiguration aufdoveconf -N
- Listet alle nicht Standard und zusätzlich alle explizit gesetzten Standard DovecotKonfigurationswerte aufdoveconf -m <MODUL>
- Listet die aktuelle Konfiguration, aber nur auf das angegeben Modul auf - z.B.: imap, imap-login, lmtpdoveconf -a
- Listet alle aktuellen - inklusive der Standard - konfigurierten Werte der Dovecot-Konfiguration auf
Eine aktuelle und vollständige Liste aller Optionen, bringt die man
-Page von /usr/bin/doveconf
mit, welche mit nachfolgendem Befehl zur Anzeige gebracht werden kann:
# man doveconf
Nach dem Ausführen der Befehls
doveconf -n
sollte eine Ausgabe, in etwa wie die nachfolgend gezeigte erscheinen:
# doveconf -n # 2.3.21.1 (d492236fa0): /etc/dovecot/dovecot.conf # OS: Linux 6.6.63-1-lts x86_64 # Hostname: vml080.idmz.tachtler.net namespace inbox { inbox = yes location = mailbox Drafts { special_use = \Drafts } mailbox Junk { special_use = \Junk } mailbox Sent { special_use = \Sent } mailbox "Sent Messages" { special_use = \Sent } mailbox Trash { special_use = \Trash } prefix = } passdb { driver = pam } ssl_cert = </etc/ssl/certs/dovecot.pem ssl_key = # hidden, use -P to show it userdb { driver = passwd }
Konfiguration: Basiskonfiguration
/etc/dovecot/dovecot.conf
Nachfolgend sollen die ersten grundlegenden Konfigurationen vorgenommen werden.
protocols
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/settings/core/#core_setting-protocols |
Defaultwert | protocols = imap pop3 lmtp |
Neuer Wert | protocols = imap lmtp |
Konfiguration | # Protocols we want to be serving. # Tachtler # default: #protocols = imap pop3 lmtp submission protocols = imap lmtp |
Beschreibung | Die Liste der Protokolle, die dieser Knoten unterstützt. Eine durch Leerzeichen getrennte Liste von Protokollen (die separat konfiguriert werden) als Wert. |
Ein der ersten Entscheidungen kann sein, welches Protokoll der Dovecot überhaupt zur Kommunikation mit dem Client anbieten soll.
Nachfolgend kann z.B. durch eine Änderung des Standard, hier z.B. das Protokoll pop3 - nicht mehr angeboten werden, was jedoch standardmässig der Fall ist.
listen
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/settings/core/#core_setting-listen |
Defaultwert | listen = *, :: |
Neuer Wert | listen = 127.0.0.1, 10.0.0.80, ::1, fd00::10:10:0:0:80, 2001:db8::10:10:0:0:80 |
Konfiguration | # A comma separated list of IPs or hosts where to listen in for connections. # "*" listens in all IPv4 interfaces, "::" listens in all IPv6 interfaces. # If you want to specify non-default ports or anything more complex, # edit conf.d/master.conf. # Tachtler # default: #listen = *, :: listen = 127.0.0.1, 10.0.0.80, ::1, fd00::10:10:0:0:80, 2001:db8::10:10:0:0:80 |
Beschreibung | Eine durch Kommata getrennte Liste von IP-Adressen oder Hostnamen, über die externe Netzwerkverbindungen abgewickelt werden sollen. * lauscht an allen IPv4-Schnittstellen, und :: lauscht an allen IPv6-Schnittstellen. |
verbose_proctitle
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/settings/core/#core_setting-verbose_proctitle |
Defaultwert | verbose_proctitle = no |
Neuer Wert | verbose_proctitle = yes |
Konfiguration | # Show more verbose process titles (in ps). Currently shows user name and # IP address. Useful for seeing who are actually using the IMAP processes # (eg. shared mailboxes or if same uid is used for multiple accounts). # Tachtler # default: #verbose_proctitle = no verbose_proctitle = yes |
Beschreibung | Wenn diese Option aktiviert ist, zeigt der Befehl ps ausführlichere Prozessdetails an, einschliesslich des Benutzernamens und der IP-Adresse des verbundenen Clients. Auf diese Weise lässt sich leichter erkennen, wer die IMAP-Prozesse tatsächlich nutzt. |
Nachfolgende Befehle demonstrieren die Anzeige eines bei Dovecot angemeldeten Benutzer, einmal - ohne und einmal mit - erweiterter Prozessliste und Übersicht.
ohne - erweiterter Prozessliste und Übersicht
# ps ax | grep dovecot/imap
mit - erweiterter Prozessliste und Übersicht
# ps ax | grep dovecot/imap
/etc/dovecot/conf.d/10-logging.conf
HINWEIS - Die nachfolgenden Parameter können während der INSTALLATION bei der Fehlersuche hilfreich sein, sollten jedoch in PRODUKTIVEN Umgebungen ggf. nicht gesetzt werden! |
---|
Zu beginn einer neuen Dovecot Installation, kann es hilfreich sein das Logging bzw. das Log Level so zu konfigurieren, dass ein erweitertes Logging erfolgt.
auth_verbose
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/settings/core/#core_setting-auth_verbose |
Defaultwert | auth_verbose = no |
Neuer Wert | auth_verbose = yes |
Konfiguration | # Log unsuccessful authentication attempts and the reasons why they failed. # Tachtler # default: #auth_verbose = no auth_verbose = yes |
Beschreibung | Neu in Version v2.2.24. Anpassung der Ausführlichkeit des Protokolls. Es werden erfolglose Authentifizierungsversuche und die Gründe für das Scheitern protokolliert. HINWEIS - Das explizite Setzen von auth_debug setzt diese Einstellung ausser Kraft! |
auth_verbose_passwords
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/settings/core/#core_setting-auth_verbose_passwords |
Defaultwert | auth_verbose_passwords = no |
Neuer Wert | KEIN neuer Wert! |
Beschreibung | Falls das Passwort nicht übereinstimmt, wird das versuchte Passwort protokolliert. es kann das protokollierte Kennwort auch auf n Zeichen gekürzt werden, indem :n anhängen (z.B. sha1:6 ). Verfügbare Transformationen: plain, yes = Klartextpasswort ausgeben (NICHT EMPFOHLEN) sha1 = Ausgabe des SHA1-verschlüsselten Passworts. |
auth_debug
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/settings/core/#core_setting-auth_debug |
Defaultwert | auth_debug = no |
Neuer Wert | KEIN neuer Wert! |
Beschreibung | Aktiviert die gesamte Debug-Protokollierung der Authentifizierung (aktiviert auch auth_verbose) . Passwörter werden als <hidden> protokolliert. |
Durch setzen des Konfigurationswertes wie nachfolgend beschrieben, werden erweiterte Informationen, wie z.B. geladene Module, zusätzlich mit protokolliert.
auth_debug_passwords
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/settings/core/#core_setting-auth_debug_passwords |
Defaultwert | auth_debug_passwords = no |
Neuer Wert | KEIN neuer Wert! |
Beschreibung | Mit dieser Einstellung wird die Ausführlichkeit der Protokollierung angepasst. Wenn Passwörter nicht übereinstimmen, werden die Passwörter und das verwendete Schema protokolliert, damit das Problem behoben werden kann. HINWEIS - Durch die Aktivierung dieser Einstellung wird auch auth_debug aktiviert. |
mail_debug
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/settings/core/#core_setting-mail_debug |
Defaultwert | mail_debug = no |
Neuer Wert | KEIN neuer Wert! |
Beschreibung | Mit dieser Einstellung wird die Ausführlichkeit der Protokollierung angepasst. Sie aktiviert das Debugging von Mail-Prozessen. Dies kann helfen, den Grund herauszufinden, wenn Dovecot bestimmte E-Mail-Nachrichten nicht findet. |
Durch setzen des Konfigurationswertes wie nachfolgend beschrieben, werden zusätzliche Informationen zum e-Mail-Prozess, wie z.B. Dovecot die e-Mail-Verzeichnisse des Benutzer ermittelt, zusätzlich mit protokolliert.
verbose_ssl
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/settings/core/#core_setting-verbose_ssl |
Defaultwert | verbose_ssl = no |
Neuer Wert | KEIN neuer Wert! |
Beschreibung | Wenn aktiviert, werden SSL-Fehler auf Protokollebene protokolliert. |
log_timestamp
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/settings/core/#core_setting-log_timestamp strftime(3) — Linux manual page |
Defaultwert | log_timestamp = "%b %d %H:%M:%S " |
Neuer Wert | KEIN neuer Wert! |
Beschreibung | Das Präfix für jede in die Protokolldatei geschriebene Zeile. %-Variablen sind im strftime(3)-Format. |
login_log_format_elements
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/settings/core/#core_setting-login_log_format_elements Dovecot Config File Syntax - Config Variables - Login variables |
Defaultwert | login_log_format_elements = user=<%u> method=%m rip=%r lip=%l mpid=%e %c session=<%{session}> |
Neuer Wert | KEIN neuer Wert! |
Beschreibung | Eine durch Leerzeichen getrennte Liste von Elementen der Login-Log-Formatierung. Elemente, die einen nicht leeren Wert haben, werden zu einer durch Komma getrennten Zeichenfolge zusammengefügt. Es können Dovecot Config File Syntax - Config Variables - Login variables verwendet werden. |
login_log_format
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/settings/core/#core_setting-login_log_format Dovecot Config File Syntax - Config Variables - Global variables |
Defaultwert | login_log_format = %$: %s |
Neuer Wert | KEIN neuer Wert! |
Beschreibung | Die Formatierung der Login-Log-Meldungen. %s = Die login_log_format_elements Zeichenkette %$ = Die LOG-Daten |
mail_log_prefix
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/settings/core/#core_setting-mail_log_prefix Dovecot Config File Syntax - Config Variables - Mail service user variables |
Defaultwert | mail_log_prefix = %s(%u)<%{pid}><%{session}>: |
Neuer Wert | KEIN neuer Wert! |
Beschreibung | Es kann hier ein Log-Präfix für Mailprozesse angeben werden. Es können Dovecot Config File Syntax - Config Variables - Mail service user variables verwendet werden. |
deliver_log_format
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/settings/core/#core_setting-deliver_log_format Dovecot Config File Syntax - Config Variables - Mail service user variables |
Defaultwert | deliver_log_format = msgid=%m: %$ |
Neuer Wert | KEIN neuer Wert! |
Beschreibung | Das zu verwendende Format für die Protokollierung von E-Mail-Zustellungen. Variablen, die für diese Einstellung verwendet werden können: %$ = Status der Zustellung der E-Mail (e.g., saved to INBOX ) %{msgid}, %m = Message-ID %{subject}, %s = Betreff %{from}, %f = E-Mail-Adresse des Absenders %{from_envelope}, %e = SMTP E-Mail-Adresse des Absenders aus dem ENVELOPE %{size}, %p = physische Grösse der E-Mail %{vsize}, %w = virtuelle Grösse der E-Mail %{to_envelope} = E-Mail-Adresse des Empfängers aus dem ENVELOPE %{delivery_time} = Anzahl der Millisekunden bis zur Zustellung der E-Mail %{session_time} = LMTP-Sitzungsdauer, ohne %{delivery_time} %{storage_id} = Backend-spezifische ID für E-Mail, z.B. Maildir -Dateiname |
/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_location
Durch setzen des Konfigurationswertes wie nachfolgend beschrieben, werden zwei Parameter bestimmt.
- Welche Art von „Ablagesystem“ Mailbox-Format verwendet werden soll
- Wo die e-Mail (Postfächer) im Dateisystem abgelegt werden sollen
Welche Arten von „Ablagesystem“ Mailbox-Format es gibt, kann unter nachfolgendem internen Link nachgelesen werden:
HINWEIS - Hier soll das „Ablagesystem“ bzw. der Mailbox-Format Maildir verwendet werden!
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/settings/core/#core_setting-mail_location Dovecot Config File Syntax - Config Variables - Mail user variables |
Defaultwert | mail_location = |
Neuer Wert | mail_location = maildir:~/Maildir |
Konfiguration | # Location for users' mailboxes. The default is empty, which means that Dovecot # tries to find the mailboxes automatically. This won't work if the user # doesn't yet have any mail, so you should explicitly tell Dovecot the full # location. # # If you're using mbox, giving a path to the INBOX file (eg. /var/mail/%u) # isn't enough. You'll also need to tell Dovecot where the other mailboxes are # kept. This is called the "root mail directory", and it must be the first # path given in the mail_location setting. # # There are a few special variables you can use, eg.: # # %u - username # %n - user part in user@domain, same as %u if there's no domain # %d - domain part in user@domain, empty if there's no domain # %h - home directory # # See doc/wiki/Variables.txt for full list. Some examples: # # mail_location = maildir:~/Maildir # mail_location = mbox:~/mail:INBOX=/var/mail/%u # mail_location = mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/%n # # <doc/wiki/MailLocation.txt> # # Tachtler # default: #mail_location = mail_location = maildir:~/Maildir |
Beschreibung | Diese Einstellung gibt den Speicherort für die Mailboxen der Benutzer an. Bei einem leeren Wert versucht Dovecot, die Postfächer automatisch zu finden (in ~/Maildir , /var/mail/username , ~/mail und ~/Mail , in dieser Reihenfolge). Die automatische Erkennung schlägt jedoch häufig bei Benutzern fehl, deren Mail-Verzeichnis noch nicht erstellt wurde, so dass hier, wenn möglich, den vollständigen Speicherort angeben werden sollte. Dovecot Config File Syntax - Config Variables - Mail user variables können verwendet werden. Siehe auch: Dovecot Configuration Manual - Mail Location Settings |
WICHTIG - Die Definition ~/ in mail_location = maildir:~/Maildir
bedeutet nicht, das hier ein vorhandenes home
-Verzeichnis eines existierenden Benutzer verwendet werden muss!
HINWEIS - Die Angabe ~/ bedeutet vielmehr, dass hier eine Angabe erfolgt bei der unterhalb dieser Angabe dann der Ordner Maildir
angelegt wird!
HINWEIS - Das home
-Verzeichnis bei virtuellen Benutzer, welche keine Login-shell
haben, kann z.B. in einer separaten Datei passwd-file oder z.B. auch im SQL definiert werden.
Erklärung:
mail_location = maildir:~/Maildir
Wert | Beschreibung |
---|---|
maildir: | Das verwendete Mailbox-Format ist das Maildir-Format |
~ | Dynamischer Pfad-Teil zum Dateisystem zum home -Verzeichnis |
/Maildir | Pfad-Trenner und Ordnername unter dem die Maildir-Struktur angelegt wird |
Beispiel: Hinter der Angabe ~/ könnte sich z.B. nachfolgende Definition pro Benutzer verbergen:
/srv/vmail/%Ld/%Ln
- localpart@domain =/srv/vmail/domain/localpart
/srv/vmail/%Lu
- user123 =/srv/vmail/user123
Erklärung Nachfolgende Erklärungen zu oben gezeigtem Beispiel:
Wert | Beschreibung |
---|---|
/%Lu | Pfad-Trenner und variabler Pfad-Teil in Kleinschrift umgewandelter unername - z.B. user1234 oder auch locapart@domain sein |
/%Ld | Pfad-Trenner und variabler Pfad-Teil in Kleinschrift umgewandelter domain-Teil aus locapart@domain |
/%Ln | Pfad-Trenner und variabler Pfad-Teil in Kleinschrift umgewandelter localpart-Teil aus locapart@domain |
namespace inbox
Nachfolgende Definitionen stellt die Konfiguration für die INBOX der Benutzers dar.
namespace inbox: type
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/configuration_manual/namespace/#core_setting-namespace/type Dovecot Configuration Manual - Namespaces |
Defaultwert | type = private |
Neuer Wert | type = private |
Konfiguration | # If you need to set multiple mailbox locations or want to change default # namespace settings, you can do it by defining namespace sections. # # You can have private, shared and public namespaces. Private namespaces # are for user's personal mails. Shared namespaces are for accessing other # users' mailboxes that have been shared. Public namespaces are for shared # mailboxes that are managed by sysadmin. If you create any shared or public # namespaces you'll typically want to enable ACL plugin also, otherwise all # users can access all the shared mailboxes, assuming they have permissions # on filesystem level to do so. namespace inbox { # Namespace type: private, shared or public # Tachtler # default: #type = private type = private |
Beschreibung | Der Namensraumtyp. |
Der Standardwert ist hier auf private gesetzt. Nachfolgende Werte sind hier möglich
- private = nur für den Benutzer ersichtlich
- shared = ersichtlich für Benutzer, welche die entsprechenden Rechte (acl) freigegeben bzw. erhalten haben
- public = wie shared, jedoch obliegt hier die Verwaltung keinem Benutzer, sondern dem System Administrator
WICHTIG - Der hier gesetzte Standardwert type = private
sollte beibehalten werden, da dies die persönliche mailbox
(Postfach) des Benutzers darstellt und diese auch „privat“ bleiben sollte!
HINWEIS - Der Wert soll hier explizit gesetzt werden!
namespace inbox: separator
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/configuration_manual/namespace/#core_setting-namespace/separator Dovecot Configuration Manual - Namespaces |
Defaultwert | separator = . |
Neuer Wert | separator = / |
Konfiguration | # Hierarchy separator to use. You should use the same separator for all # namespaces or some clients get confused. '/' is usually a good one. # The default however depends on the underlying mail storage format. # Tachtler # default: #separator = separator = / |
Beschreibung | Gibt das Hierarchietrennzeichen für den Namensraum an. Das Trennzeichen ist ein einzelnes Zeichen, das sonst nicht in Ordnernamen verwendet werden kann. Die gebräuchlichsten Trennzeichen sind . (Punkt) und / (Schrägstrich), aber es können auch andere Trennzeichen verwendet werden. Zum Beispiel ist ^ in normalen Ordnernamen seltener zu finden. Es wird empfohlen, das Feld leer zu lassen und den Standardwert zu akzeptieren. |
WICHTIG - Das Trennzeichen für die Hierarchieebenen sollte für alle namespaces
gleich sein und nicht unterschiedlich vergeben werden. Hier soll der Schrägstrich (/) verwendet werden!
HINWEIS - Der Grund für die Wahl des /
(Schrägstrich) als separator
liegt darin, das ein Punkt im Benutzername auftreten könnte und spätestens bei shared mailboxes
zu einem sehr unschönen Verhalten führen könnte!
namespace inbox: prefix
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/configuration_manual/namespace/#core_setting-namespace/prefix Dovecot Configuration Manual - Namespaces Dovecot Config File Syntax - Config Variables - Mail user variables |
Defaultwert | prefix |
Neuer Wert | prefix = INBOX/ |
Konfiguration | # Prefix required to access this namespace. This needs to be different for # all namespaces. For example "Public/". # Tachtler # default: #prefix = prefix = INBOX/ |
Beschreibung | Gibt das Präfix für den Namespace an. HINWEIS - Muss mit dem Hierarchietrennzeichen enden! Dovecot Config File Syntax - Config Variables - Mail user variables können verwendet werden. |
HINWEIS - Dies sollte für jeden namespace
unterschiedlich vergeben werden.
namespace inbox: location
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/configuration_manual/namespace/#core_setting-namespace/location Dovecot Configuration Manual - Namespaces Dovecot Config File Syntax - Config Variables - Mail user variables |
Defaultwert | location = mail_location |
Neuer Wert | KEIN neuer Wert! |
Beschreibung | Gibt Treiber und Parameter für die physische Speicherung von Postfächern an. Es ermöglicht ein Überschreiben der mail_location -Einstellung für einen Namensraum. Dovecot Config File Syntax - Config Variables - Mail user variables können verwendet werden. |
HINWEIS - Die Angabe in einem namespace
überschreibt die Angabe mail_location
, welche ausserhalb der jeweiligen namespace
Definition bereits „global“ gesetzt wurde. Dies sollte jedoch auf dem Standardwert belassen werden!
namespace inbox: inbox
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/configuration_manual/namespace/#core_setting-namespace/inbox Dovecot Configuration Manual - Namespaces |
Defaultwert | inbox = no |
Neuer Wert | inbox = yes |
Konfiguration | # There can be only one INBOX, and this setting defines which namespace # has it. inbox = yes |
Beschreibung | Wenn ja, wird dieser Namensraum als derjenige angesehen, der den Ordner INBOX enthält. Es kann nur ein solcher namespace definiert werden. |
Diese Definition darf nur in einem namespace
gesetzt werden, da nur ein namespace
für die jeweilige INBOX des Benutzers zeichnen kann. Das es sich hier um den namespace inbox
handelt, sollte hier der Wert gesetzt bzw. auf der bereits durchgeführten Konfiguration belassen werden.
namespace inbox: hidden
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/configuration_manual/namespace/#core_setting-namespace/hidden Dovecot Configuration Manual - Namespaces |
Defaultwert | hidden = no |
Neuer Wert | KEIN neuer Wert! |
Konfiguration | # If namespace is hidden, it's not advertised to clients via NAMESPACE # extension. You'll most likely also want to set list=no. This is mostly # useful when converting from another server with different namespaces which # you want to deprecate but still keep working. For example you can create # hidden namespaces with prefixes "~/mail/", "~%u/mail/" and "mail/". #hidden = no |
Beschreibung | Wenn ja, wird der Namensraum vor dem IMAP-Befehl NAMESPACE verborgen. |
Siehe auch | Dovecot ArchLinux - /etc/dovecot/conf.d/10-mail.conf - namespace inbox: list |
namespace inbox: list
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/configuration_manual/namespace/#core_setting-namespace/list Dovecot Configuration Manual - Namespaces |
Defaultwert | list = yes |
Neuer Wert | KEIN neuer Wert! |
Konfiguration | # Show the mailboxes under this namespace with LIST command. This makes the # namespace visible for clients that don't support NAMESPACE extension. # "children" value lists child mailboxes, but hides the namespace prefix. #list = yes |
Beschreibung | Diesen namespace in die LIST-Ausgabe einbeziehen, wenn die übergeordneten Ordner aufgelistet werden. |
Siehe auch | Dovecot ArchLinux - /etc/dovecot/conf.d/10-mail.conf - namespace inbox: hidden |
Mögliche Optionen sind
children
- Die Liste der Namensraum-Präfixe wird nur aufgelistet, wenn es untergeordnete Postfächer gibtno
- Namensraum und Postfächer werden nicht aufgelistet, es sei denn, es werden explizit Postfächer unter dem Namensraum-Präfix angefordertyes
- Namensraum und Postfächer werden immer aufgelistet
HINWEIS - Diese Definition kann dazu verwendet werden, ganze namespaces
vor einem client
zu verstecken und ist ähnlich wie die Definition hidden
, für Clients, die die namespace
Erweiterung nicht interpretieren bzw. nicht verstehen.
namespace inbox: subscriptions
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/configuration_manual/namespace/#core_setting-namespace/subscriptions Dovecot Configuration Manual - Namespaces Dovecot Config File Syntax - Config Variables - Mail user variables |
Defaultwert | subscriptions = yes |
Neuer Wert | KEIN neuer Wert! |
Konfiguration | # Namespace handles its own subscriptions. If set to "no", the parent # namespace handles them (empty prefix should always have this as "yes") #subscriptions = yes |
Beschreibung | Ob Abonnements in diesem Namespace gespeichert werden. Bei gemeinsam genutzten Namespaces ist dies normalerweise nein, so dass die Abonnements der gemeinsam genutzten Ordner in der primären Abonnementdatei des Benutzers gespeichert werden. Wenn nein, werden die Abonnements im ersten übergeordneten Namespace (basierend auf dem Präfix) gespeichert, für den diese Einstellung aktiviert ist. Beispiel: Wenn diese Einstellung für einen Namespace mit prefix=foo/bar/ auf no gesetzt ist, prüft Dovecot zunächst, ob es einen prefix=foo/-Namespace mit subscriptions=yes und dann einen Namespace mit einem leeren Präfix gibt. Wenn keiner von beiden gefunden wird, wird ein Fehler ausgegeben. |
/etc/dovecot/conf.d/10-master.conf
Damit Dovecot auch auf Anfragen von z.B. Postfix über das Protokoll lmtp
, wie hier beschrieben
erreichbar ist, sind nachfolgende Einstellungen in der Konfigurationsdatei
- /etc/dovecot/conf.d/10-master.conf
durchzuführen.
service lmtp
Es gibt zwei Möglichkeiten, wie Dovecot lmtp
anbieten kann,
- unix-Socket - wenn der MTA z.B. Postfix und MDA Dovecot auf ein und dem selben Servern sind.
Hier soll die ein Anbindung via TCP/IP-Verbindung erfolgen, was durch nachfolgende Einstellungen erreicht werden kann.
In der nachfolgend gezeigten Konfiguration lauscht der Dovecot auf
- internen IP-Adressen, welche nicht aus dem Internet erreichbar sein sollten, auf
- Port 24, der den Port für
lmtp
(Priv-mail: Private E-Mail-Systeme) darstellt.
service lmtp: inet_listener
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/configuration_manual/service_configuration/#inet-listeners Dovecot Configuration Manual - Service Configuration - inet-listeners |
Defaultwert | inet_listener |
Neuer Wert | inet_listener lmtp |
Konfiguration | service lmtp { unix_listener lmtp { #mode = 0666 } # Create inet listener only if you can't use the above UNIX socket # Tachtler # default: #inet_listener lmtp { inet_listener lmtp { # Avoid making LMTP visible for the entire internet # Tachtler # default: #address = address = 10.0.0.80, fd00::10:10:0:0:80 # Tachtler # default: #port = port = 24 # Tachtler # default: #} } # Tachtler - NEW - user = vmail } |
Beschreibung | Definiert einen Listener vom Typ: inet_listsners . |
service lmtp: address
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/configuration_manual/service_configuration/#address Dovecot Configuration Manual - Service Configuration - inet-listeners |
Defaultwert | address = |
Neuer Wert | address = 10.0.0.80, fd00::10:10:0:0:80 |
Konfiguration | service lmtp { unix_listener lmtp { #mode = 0666 } # Create inet listener only if you can't use the above UNIX socket # Tachtler # default: #inet_listener lmtp { inet_listener lmtp { # Avoid making LMTP visible for the entire internet # Tachtler # default: #address = address = 10.0.0.80, fd00::10:10:0:0:80 # Tachtler # default: #port = port = 24 # Tachtler # default: #} } # Tachtler - NEW - user = vmail } |
Beschreibung | Durch Leerzeichen getrennte Liste von IP-Adressen/Hostnamen, die abgehört werden sollen. * bedeutet alle IPv4-Adressen, :: bedeutet alle IPv6-Adressen. Standardmässig wird die Einstellung listen verwendet. |
service lmtp: port
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/configuration_manual/service_configuration/#port Dovecot Configuration Manual - Service Configuration - inet-listeners |
Defaultwert | port = |
Neuer Wert | port = 24 |
Konfiguration | service lmtp { unix_listener lmtp { #mode = 0666 } # Create inet listener only if you can't use the above UNIX socket # Tachtler # default: #inet_listener lmtp { inet_listener lmtp { # Avoid making LMTP visible for the entire internet # Tachtler # default: #address = address = 10.0.0.80, fd00::10:10:0:0:80 # Tachtler # default: #port = port = 24 # Tachtler # default: #} } # Tachtler - NEW - user = vmail } |
Beschreibung | Nummer des Ports, der abgehört werden soll. 0 schaltet den Listener aus. |
service lmtp: user
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/configuration_manual/service_configuration/#user Dovecot Configuration Manual - Service Configuration - inet-listeners |
Defaultwert | user = |
Neuer Wert | user = vmail |
Konfiguration | service lmtp { unix_listener lmtp { #mode = 0666 } # Create inet listener only if you can't use the above UNIX socket # Tachtler # default: #inet_listener lmtp { inet_listener lmtp { # Avoid making LMTP visible for the entire internet # Tachtler # default: #address = address = 10.0.0.80, fd00::10:10:0:0:80 # Tachtler # default: #port = port = 24 # Tachtler # default: #} } # Tachtler - NEW - user = vmail } |
Beschreibung | Grundsätzlich muss der LMTP-Prozess als Benutzer: root laufen und darf nur vorübergehend Rechte an Benutzer abgeben. Andernfalls könnte er keine Postzustellungen an mehr als einen Benutzer mit unterschiedlicher UID verarbeiten. Wenn allerdings nur eine einzige globale UID/GID verwendet wird, kann die Sicherheit erhöhen werden, indem der lmtp-Prozesse als diesen Benutzer ausgeführt wird. |
Konfiguration: Autocreate Mailboxes
Unter Dovecot besteht die Möglichkeit Postfächer (Mailboxes) und auch Ordner (Folder) bei der allerersten Anmeldung eines Benutzer automatisiert von Dovecot anlegen zu lassen.
Hier gibt es drei verschiedene Gestaltungsmöglichkeiten:
Einstellung | Beschreibung |
---|---|
auto=no | Es wird kein Postfach (Mailbox) / Ordner (Folder) angelegt |
auto=create | Es wird ein Postfach (Mailbox) / Ordner (Folder) beim ersten Zugriff darauf angelegt, aber es erfolgt kein Abonnement. |
auto=subscribe | Es wird ein Postfach (Mailbox) / Ordner (Folder) bei der ersten Anmeldung angelegt und es erfolgt ein Abonnement. |
Konfiguration: Autocreate Mailboxes
Unter Dovecot besteht die Möglichkeit Postfächer (Mailboxes) und auch Ordner (Folder) bei der allerersten Anmeldung eines Benutzer automatisiert von Dovecot anlegen zu lassen.
Hier gibt es drei verschiedene Gestaltungsmöglichkeiten:
Einstellung | Beschreibung |
---|---|
auto=no | Es wird kein Postfach (Mailbox) / Ordner (Folder) angelegt |
auto=create | Es wird ein Postfach (Mailbox) / Ordner (Folder) beim ersten Zugriff darauf angelegt, aber es erfolgt kein Abonnement. |
auto=subscribe | Es wird ein Postfach (Mailbox) / Ordner (Folder) bei der ersten Anmeldung angelegt und es erfolgt ein Abonnement. |
/etc/dovecot/conf.d/15-mailboxes.conf
In dieser Konfigurationsdatei werden die Einstellungen für die Postfächer (Mailboxes) durchgeführt.
Nachfolgend sollen das Postfach (Mailbox) und die nachfolgend genannten Ordner (Folder) automatisch angelegt und diese sollen ebenfalls gleich automatisch abonniert werden.
Drafts
(Entwürfe)Sent
(Gesendet)Trash
(Papierkorb)Junk
(ggf. Spam)
Dazu können die bereits in der Konfigurationsdatei enthaltenen Einstellungen, wie nachfolgend dargestellt, angepasst werden:
(Komplette Konfigurationsdatei)
## ## Mailbox definitions ## # Each mailbox is specified in a separate mailbox section. The section name # specifies the mailbox name. If it has spaces, you can put the name # "in quotes". These sections can contain the following mailbox settings: # # auto: # Indicates whether the mailbox with this name is automatically created # implicitly when it is first accessed. The user can also be automatically # subscribed to the mailbox after creation. The following values are # defined for this setting: # # no - Never created automatically. # create - Automatically created, but no automatic subscription. # subscribe - Automatically created and subscribed. # # special_use: # A space-separated list of SPECIAL-USE flags (RFC 6154) to use for the # mailbox. There are no validity checks, so you could specify anything # you want in here, but it's not a good idea to use flags other than the # standard ones specified in the RFC: # # \All - This (virtual) mailbox presents all messages in the # user's message store. # \Archive - This mailbox is used to archive messages. # \Drafts - This mailbox is used to hold draft messages. # \Flagged - This (virtual) mailbox presents all messages in the # user's message store marked with the IMAP \Flagged flag. # \Important - This (virtual) mailbox presents all messages in the # user's message store deemed important to user. # \Junk - This mailbox is where messages deemed to be junk mail # are held. # \Sent - This mailbox is used to hold copies of messages that # have been sent. # \Trash - This mailbox is used to hold messages that have been # deleted. # # comment: # Defines a default comment or note associated with the mailbox. This # value is accessible through the IMAP METADATA mailbox entries # "/shared/comment" and "/private/comment". Users with sufficient # privileges can override the default value for entries with a custom # value. # NOTE: Assumes "namespace inbox" has been defined in 10-mail.conf. namespace inbox { # These mailboxes are widely used and could perhaps be created automatically: mailbox Drafts { special_use = \Drafts # Tachtler auto = subscribe } mailbox Junk { special_use = \Junk # Tachtler auto = subscribe } mailbox Trash { special_use = \Trash # Tachtler auto = subscribe } # For \Sent mailboxes there are two widely used names. We'll mark both of # them as \Sent. User typically deletes one of them if duplicates are created. mailbox Sent { special_use = \Sent # Tachtler auto = subscribe } mailbox "Sent Messages" { special_use = \Sent } # If you have a virtual "All messages" mailbox: #mailbox virtual/All { # special_use = \All # comment = All my messages #} # If you have a virtual "Flagged" mailbox: #mailbox virtual/Flagged { # special_use = \Flagged # comment = All my flagged messages #} # If you have a virtual "Important" mailbox: #mailbox virtual/Important { # special_use = \Important # comment = All my important messages #} }
auto
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/configuration_manual/namespace/#core_setting-namespace/mailbox/auto |
Defaultwert | auto = |
Neuer Wert | auto = subscribe |
Konfiguration | namespace inbox { # These mailboxes are widely used and could perhaps be created automatically: mailbox Drafts { special_use = \Drafts # Tachtler auto = subscribe } mailbox Junk { special_use = \Junk # Tachtler auto = subscribe } mailbox Trash { special_use = \Trash # Tachtler auto = subscribe } # For \Sent mailboxes there are two widely used names. We'll mark both of # them as \Sent. User typically deletes one of them if duplicates are created. mailbox Sent { special_use = \Sent # Tachtler auto = subscribe } mailbox "Sent Messages" { special_use = \Sent } } |
Beschreibung | Automatisch erstellte Postfächer werden nur beim ersten Zugriff auf die Festplatte erstellt. Die automatisch abonnierten Postfächer werden nicht in die Abonnementdatei geschrieben, es sei denn, der Befehl SUBSCRIBE wird ausdrücklich für sie verwendet. |
HINWEIS - Es wird bei jedem Postfach (Mailboxes) / Ordner (Folder) hinzugefügt, ausser bei
mailbox "Sent Messages" { special_use = \Sent }
da dies nur eine synonym für den Ordner (Folder) /Sent
ist, und dieser sonst doppelt abonniert werden würde!
HINWEIS - Falls Namen mit Leerzeichen vergeben werden sollen, müssen diese in Anführungszeichen eingeschlossen werden!
HINWEIS - Die so definierten Postfächer (Mailboxes) / Ordner (Folder) sind angelegt und abonniert, jedoch werden diese physisch im Dateisystem, erst mit dem ersten Zugriff angelegt !
Konfiguration: Authentifizierung
Die gebräuchlichen Authentifizierungsmöglichkeiten wurden bereits erwähnt und sind unter nachfolgenden internen Links nochmals aufgelistet:
Authentifizierungsabfragen
Zu einer erfolgreichen Authentifizierung gehören zwei Bestandteile, welche nachfolgend aufgeführt sind:
- passdb - Benutzername und Passwort
- userdb - UID (Benutzerkennung), GID (Gruppenkennung) und HOME-Verzeichnis, EXTRAS-Daten
des angemeldeten Benutzers
Dovecot verwendet die passdb-Abfrage (lookup) um Benutzername und Passwort zu überprüfen, was immer nur bei einer Anmeldung erforderlich ist.
Dovecot verwendet die userdb-Abfrage (lookup) um UID, GID, HOME und EXTRAS für den angemeldeten Benutzer zu bestimmen, was bei vielen Aktionen erfolgt, z.B.
- nach der erfolgreichen Anmeldung
- Einlieferung einer neuen e-Mail
- uvm.
Dabei besteht durchaus die Möglichkeit, das Dovecot die passdb-Abfrage und die userdb-Abfrage gegen verschiedene Quellen durchführt - z.B.
- passdb-Abfrage (lookup) gegen
/etc/passwd-file
z.B. (/etc/dovecot/userdb) - userdb-Abfrage (lookup) gegen LDAP
HINWEIS - Dies ist möglich, muss jedoch nicht so sein und ist auch nicht empfohlen !
Authentifizierungsquellen
Dovecot bringt in der Konfigurationsdatei
/etc/dovecot/conf.d/10-auth.conf
ganz am Ende der Konfigurationsdatei vorbereitete include
-Dateien mit, welche für die verschiedenen Authentifizierungsquellen bereits grundlegend vorkonfiguriert sind und nur um entsprechend zwingende Angaben ergänzt werden müssen. Nachfolgend eine Aufstellung:
(Nur relevanter Ausschnitt):
... !include auth-system.conf.ext #!include auth-sql.conf.ext #!include auth-ldap.conf.ext #!include auth-passwdfile.conf.ext #!include auth-checkpassword.conf.ext #!include auth-static.conf.ext
Hier nur die vier gebräuchlichsten in einer Übersicht:
inlcude-Datei | Authentifizierungsquelle | Beschreibung |
---|---|---|
auth-system.conf.ext | /etc/passwd & /etc/shadow | Benutzer mit shell -Zugriff |
auth-sql.conf.ext | SQL-Datenbank | Benutzer in einer Datenbank |
auth-ldap.conf.ext | LDAP | Benutzer in LDAP |
auth-passwdfile.conf.ext | /etc/dovecot/users | Benutzer in einer Datei |
Konfiguration: Authentifizierungsbenutzer
Wie bereits bei der Darstellung der Authentifizierungsabfragen, was unter nachfolgendem internen Link nachgelesen werden kann
sind einige Angaben notwendig, um den Benutzer zu authentifizieren.
Um die Verwaltung in Dovecot zu vereinfachen, soll ein Dummy-Benutzer genutzt werden, unter dessen Rechten die Verwaltung der e-Mail-Postfächer (Mailboxen) in Dovecot und im Dateisystem, durchgeführt werden kann.
Vorteile hierfür sind nachfolgende, um nur einige zu nennen:
- Gleiche UID und GID bieten einfachere Verwaltung durch den Dovecot-Administrator (Skripte, Backup usw.)
- Geteilte Ordner (shared Folder) sind bei unterschiedlichen UID und GID nur sehr schwer oder kaum zu realisieren
- Es können nicht mehr als 65.535 Benutzerkonten angelegt werden
Konfiguration: Authentifizierungsbenutzer - GID Gruppen-ID
Nach der Installation von Dovecot existiert KEINE Gruppe und KEIN Benutzer mit den
- GID und dem hohen Wert
10000
und dem - Gruppennamen -
vmail
(virtual user mail),
damit sich diese von allen anderen abhebt und ggf. auch unter anderen Linux-Distributionen nicht mit anderen GID's kollidiert.
Zur Erstellung einer Gruppe mit mit den oben genannten Parametern, kann nachfolgender Befehl verwendet werden:
# groupadd -f -g 10000 vmail
Zur Überprüfung der bereits existierenden Gruppe, kann nachfolgender Befehl verwendet werden:
# cat /etc/group | grep 10000 vmail:x:10000:
Konfiguration: Authentifizierungsbenutzer - UID Benutzer-ID
Nach der Installation von Dovecot existiert KEINE Gruppe und KEIN Benutzer mit dem
- Kommentar: Dovecot vmail user, mit der
- UID:
10000
und ebenfalls mit einem hohen Wert, dessen - GID:
10000
ist, mit dem - Home-Verzeichnis:
/
und der - Login-shell:
/usr/bin/nologin
und dem - Benutzernamen -
vmail
,
damit sich diese von allen anderen abhebt und ggf. auch unter anderen Linux-Distributionen nicht mit anderen UID's kollidiert.
Zur Erstellung eines Benutzers mit mit den oben genannten Parametern, kann nachfolgender Befehl verwendet werden:
# useradd -c 'Dovecot vmail user' -g 10000 -M -N -u 10000 -s /usr/bin/nologin vmail
Zur Überprüfung ob die Erstellung des neuen Benutzers erfolgreich war, kann nachfolgender Befehl verwendet werden:
# cat /etc/passwd | grep 10000 vmail:x:10000:10000:Dovecot vmail user:/home/vmail:/usr/bin/nologin
Konfiguration: Authentifizierungsbenutzer - /srv/vmail
Bei Verwendung eines Dummy-Benutzers - vmail
-, muss ein Verzeichnis in dem die (Postfächer) und die e-Mails der einzelnen Benutzer abgelegt werden können angelegt werden. Dies kann mit nachfolgendem Befehl unter nachfolgendem Verzeichnis erstellt werden:
# mkdir /srv/vmail
WICHTIG - Bei Verwendung eines Dummy-Benutzers - vmail
-, muss auch das Verzeichnis in dem die (Postfächer) und die e-Mails der einzelnen Benutzer abgelegt werden, dem Dummy-Benutzer als Eigentümer des Verzeichnisses gehören, was mit nachfolgendem Befehl für das Verzeichnis
/srv/vmail
durchgeführt werden soll:
# chown -R vmail:vmail /srv/vmail
Auch die Zugriffsrechte müssen mit nachfolgendem Befehl entsprechende gesetzt werden, falls dies nicht ebenfalls schon so ist, was mit nachfolgendem Befehl durchgeführt werden kann:
# chmod -R 770 /srv/vmail
Zur Überprüfung ob die Rechte des Dummy-Benutzers als Eigentümer richtig gesetzte sind, kann nachfolgender Befehl verwendet werden:
# ls -ld /srv/vmail drwxrwx--- 2 vmail vmail 6 Oct 27 13:15 /srv/vmail
Konfiguration: Authentifizierungsmethoden
Nachfolgende Authentifizierungsmethoden stellen die meist verwendeten Methoden dar:
plain
= Passwortübermittlung im Klartext, Speicherung Verschlüsselt möglichlogin
= Passwortübermittlung im Klartext, Speicherung Verschlüsselt möglichcram-md5
= Passwortübermittlung Verschlüsselt, Speicherung im Klartext notwendig !digest-md5
Passwortübermittlung Verschlüsselt, Speicherung im Klartext notwendig !
Konfiguration: Authentifizierungsmethoden - plain/login
Die Übertragungsmethoden plain/login übermitteln den Benutzernamen und das Passwort quasi im Klartext (bas64
-encoded). Ein Einsatz sollte daher nur in verschlüsselten Verbindungen SSL/TLS, oder vertrauenswürdigen Netzen, wenn überhaupt, zum Einsatz kommen.
Der Unterschied zwischen plain und login ist, das
- plain = RFC 4616 konform ist und
- login = Microsoft, eine nicht RFC-Konforme Implementierung
darstellt.
Konfiguration: Authentifizierungsmethoden - cram-md5/digest-md5
Aktuell ist das Abhören der Übertragung des Benutzernamens und des Passwortes nahezu unmöglich, da bei der Übertragung ein individueller Sitzungsschlüssel zum Einsatz kommt. Mit Hilfe dieses individuellen Sitzungsschlüssels, können Server und Client, jeweils für sich das Passwort berechnen, der ebenfalls nur jeweils einmalig für eine Sitzung identisch ist.
WICHITG - Da Server und Client jeweils das Passwort errechnen können müssen, ist es
- erforderlich, das Server und Client, das Passwort im Klartext kennen!
HINWEIS - Das bedeutet, dass beim Einsatz von cram-md5/digest-md5 das
- Passwort des Benutzers im Klartext gespeichert werden muss!
Konfiguration: Authentifizierung - passwd-file
Standardmässig würde Dovecot den Authentifikationsmechanismus /etc/passwd
& /etc/shadow
wie in der Konfigurationsdatei
/etc/dovecot/conf.d/auth-system.conf.ext
beschrieben benutzen.
Deshalb ist /etc/passwd
& /etc/shadow
aus nachfolgenden Gründen jedoch sehr unpraktisch
- Jeder Benutzer muss unter Linux angelegt werden (
/etc/passwd
&/etc/shadow
)-Einträge - Keine Hinterlegung von personalisierten Einstellungen möglich, wie z.B.
quotas
- Keine E-Mail-Adressen als Login-Kennung möglich
- Keine Klartextpasswörter für sichere Anmeldung wie z.B. mit cram-md5 möglich
Um passwd-file als Authentifizierungsmöglichkeit nutzen zu können, sind nachfolgende Änderungen notwendig.
/etc/dovecot/conf.d/10-auth.conf
In dieser Konfigurationsdatei werden die Parameter für die Authentifizierung festgelegt.
disable_plaintext_auth
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/settings/core/#core_setting-disable_plaintext_auth Dovecot SSL Configuration |
Defaultwert | disable_plaintext_auth = yes |
Temporär | disable_plaintext_auth = no |
Konfiguration | # Disable LOGIN command and all other plaintext authentications unless # SSL/TLS is used (LOGINDISABLED capability). Note that if the remote IP # matches the local IP (ie. you're connecting from the same computer), the # connection is considered secure and plaintext authentication is allowed. # See also ssl=required setting. # Tachtler # default: #disable_plaintext_auth = yes disable_plaintext_auth = no |
Beschreibung | Wenn ja, werden der LOGIN-Befehl und alle anderen Klartext-Authentifizierungen deaktiviert, es sei denn, SSL/TLS wird verwendet (LOGINDISABLED-Fähigkeit) oder die Verbindung ist „gesichert“: ¹ Client IP ist in login_trusted_networks ² Die Client-IP ist von localhost und kommt nicht vom HAProxy-Listener Siehe Dovecot SSL Configuration für eine detailliertere Erklärung, wie diese Einstellung mit der SSL-Einstellung interagiert. |
Siehe auch | Dovecot ArchLinux - Konfiguration: Authentifizierungsmethoden - /etc/dovecot/conf.d/10-auth.conf - auth_mechanisms Dovecot ArchLinux - Konfiguration: Authentifizierungsmethoden - /etc/dovecot/conf.d/10-ssl.conf - ssl |
Diese Definition erlaubt oder verbietet den Zugriff von Rechnern, außer localhost
, das Anmelden mit den Methoden
- plain
- login
wenn, keine SSL/TLS-verschlüsselte Verbindung genutzt wird.
HINWEIS - Solange noch keine SSL/TLS-Konfiguration statt gefunden hat, kann zum testen auch das Anmelden an Dovecot mit oben genannten Methoden, auch bei einer nicht SSL/TLS-verschlüsselten Verbindung temporär erlaubt werden, von anderen Rechnern zuzugreifen.
auth_username_format
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/settings/core/#core_setting-auth_username_format Dovecot Configuration Manual - Config Variables |
Defaultwert | auth_username_format = %Lu |
Neuer Wert | KEIN neuer Wert! |
Konfiguration | # Username formatting before it's looked up from databases. You can use # the standard variables here, eg. %Lu would lowercase the username, %n would # drop away the domain if it was given, or "%n-AT-%d" would change the '@' into # "-AT-". This translation is done after auth_username_translation changes. # Tachtler # default: # auth_username_format = %Lu auth_username_format = %Lu |
Beschreibung | Formatierung des Benutzernamens vor der Abfrage der Autorisierungsdatenbank. |
HINWEIS - Egal wie der Anmeldename des Benutzer aussieht, E-Mail-Adresse oder Benutzerkennung, es sollte hier nachfolgende Standardeinstellung beibehalten werden.
Erklärung:
Parameter | Beispiel | Bedeutung |
---|---|---|
%Lu | user@example.com | Verweist auf die in Kleinschrift umgewandelte, vollständige e-Mail-Adresse (localpart@domain) oder Benutzerkennung (username) |
%Ln | user | Verweist auf den in Kleinschrift umgewandelten, localpart der e-Mail-Adresse (localpart@domain) |
WICHTIG - Es sollte immer mit kompletten E-Mail-Adressen (localpart@localdomain.tld) gearbeitet werden.
- Es sollte somit immer →
%Lu
← genutzt werden !!!
Die Benutzerkennung sollte nur zur Authentifizierung mit Benutzername und Passwort dienen. Weitere Abfragen von Dovecot zur Ermittlung der Kontodaten, können dann auf eine gespeicherte E-Mail-Adresse zurückgreifen.
auth_mechanisms
Wie bereits dargelegt und unter nachfolgendem internen Link nachzulesen ist, die Unterschiede zwischen den verschiedenen Authentifizierungsmethoden
Nachfolgende Änderung fügt zu der standardmässigen bereits bestehenden Authentifizierungsmethode plain
noch die Authentifizierungsmethoden cram-md5
, digest-md5
und login
hinzu:
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/settings/core/#core_setting-auth_mechanisms Dovecot SSL Configuration |
Defaultwert | auth_mechanisms = plain |
Neuer Wert | auth_mechanisms = plain digest-md5 cram-md5 login |
Konfiguration | # Space separated list of wanted authentication mechanisms: # plain login digest-md5 cram-md5 ntlm rpa apop anonymous gssapi otp # gss-spnego # NOTE: See also disable_plaintext_auth setting. # Tachtler # default: auth_mechanisms = plain auth_mechanisms = plain digest-md5 cram-md5 login |
Beschreibung | Hier kann durch Leerzeichen getrennt, eine Liste der Authentifizierungsmechanismen angegeben werden. Mögliche Werte plain login digest-md5 cram-md5 ntlm rpa apop anonymous gssapi otp skey gss-spnego |
Siehe auch | Dovecot ArchLinux - Konfiguration: Authentifizierungsmethoden - /etc/dovecot/conf.d/10-auth.conf - disable_plaintext_auth |
!include auth-passwdfile.conf.ext
Dovecot bringt in der Konfigurationsdatei
/etc/dovecot/conf.d/10-auth.conf
ganz am Ende der Konfigurationsdatei vorbereitete include
-Dateien mit, welche für die verschiedenen Authentifizierungsquellen bereits grundlegend vorkonfiguriert sind und nur nun angepasst werden müssen.
Hier muss der Eintrag
!include auth-system.conf.ext
auskommentiert werden, und der Eintrag
#!include auth-passwdfile.conf.ext
aktiviert werden
Vorher (Standard): (Nur relevanter Ausschnitt):
## ## Password and user databases ## # # Password database is used to verify user's password (and nothing more). # You can have multiple passdbs and userdbs. This is useful if you want to # allow both system users (/etc/passwd) and virtual users to login without # duplicating the system users into virtual database. # # <doc/wiki/PasswordDatabase.txt> # # User database specifies where mails are located and what user/group IDs # own them. For single-UID configuration use "static" userdb. # # <doc/wiki/UserDatabase.txt> #!include auth-deny.conf.ext #!include auth-master.conf.ext !include auth-system.conf.ext #!include auth-sql.conf.ext #!include auth-ldap.conf.ext #!include auth-passwdfile.conf.ext #!include auth-checkpassword.conf.ext #!include auth-static.conf.ext
Nachher: (Nur relevanter Ausschnitt):
## ## Password and user databases ## # # Password database is used to verify user's password (and nothing more). # You can have multiple passdbs and userdbs. This is useful if you want to # allow both system users (/etc/passwd) and virtual users to login without # duplicating the system users into virtual database. # # <doc/wiki/PasswordDatabase.txt> # # User database specifies where mails are located and what user/group IDs # own them. For single-UID configuration use "static" userdb. # # <doc/wiki/UserDatabase.txt> #!include auth-deny.conf.ext #!include auth-master.conf.ext # Tachtler # default: !include auth-system.conf.ext #!include auth-system.conf.ext #!include auth-sql.conf.ext #!include auth-ldap.conf.ext # Tachtler # default: #!include auth-passwdfile.conf.ext !include auth-passwdfile.conf.ext #!include auth-checkpassword.conf.ext #!include auth-static.conf.ext
/etc/dovecot/conf.d/10-ssl.conf
In dieser Konfigurationsdatei werden die Parameter für die Verschlüsselung SSL/TLS festgelegt.
ssl
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/settings/core/#core_setting-ssl Dovecot SSL Configuration |
Defaultwert | ssl = yes |
Temporär | ssl = no |
Konfiguration | # SSL/TLS support: yes, no, required. <doc/wiki/SSL.txt> # Tachtler # default: #ssl = yes ssl = no |
Beschreibung | Die Stufe der SSL-Unterstützung. Diese Einstellung wirkt sich sowohl auf die impliziten SSL-Ports als auch auf die STARTTLS-Befehle aus. Optionen: no = SSL/TLS ist vollständig deaktiviert. yes = SSL/TLS ist aktiviert, aber nicht unbedingt für clients erforderlich. required = SSL/TLS ist für alle imap -, pop3 -, managesieve - und submission -Protokoll-client-Verbindungen erforderlich. Dies unterscheidet sich von disable_plaintext_auth dadurch, dass auch Nicht-Plaintext-Authentifizierungsmechanismen ohne SSL/TLS nicht erlaubt sind. Zu beachten ist, dass SSL für „gesicherte“ Verbindungen immer noch nicht erforderlich ist, wenn: ¹ Client-IP ist in login_trusted_networks ² Die Client-IP ist von localhost und kommt nicht vom HAProxy-Listener Siehe auch Dovecot SSL Configuration |
Siehe auch | Dovecot ArchLinux - Konfiguration: Authentifizierungsmethoden - /etc/dovecot/conf.d/10-auth.conf - disable_plaintext_auth Dovecot ArchLinux - Konfiguration: Authentifizierungsmethoden - /etc/dovecot/conf.d/10-ssl.conf - ssl Dovecot ArchLinux - Konfiguration: Authentifizierungsmethoden - /etc/dovecot/conf.d/10-ssl.conf - ssl_cert Dovecot ArchLinux - Konfiguration: Authentifizierungsmethoden - /etc/dovecot/conf.d/10-ssl.conf - ssl_key |
Der Standardwert ist auf yes gesetzt. Nachfolgende Werte sind hier möglich
- no = SSL/TLS ist vollständig deaktiviert
- yes = SSL/TLS ist aktiviert, aber nicht unbedingt für clients zwingednd
- required = SSL/TLS ist für alle
imap
-,pop3
-,managesieve
- undsubmission
-Protokoll-client-Verbindungen zwingend vorgeschrieben
Diese Definition aktiviert, deaktiviert und erzwingt den Zugriff von Rechnern, auser localhost
, zur Verwendung einer SSL/TLS-verschlüsselte Verbindung.
HINWEIS - Solange noch keine SSL/TLS-Konfiguration statt gefunden hat, kann zum testen auch das Anmelden an Dovecot mit oben genannten Methoden, auch bei einer nicht SSL/TLS-verschlüsselten Verbindung temporär erlaubt werden, von anderen Rechnern zuzugreifen.
ssl_cert
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/settings/core/#core_setting-ssl_cert Dovecot SSL Configuration |
Defaultwert | ssl_cert = </etc/ssl/certs/dovecot.pem |
Temporär | ssl_cert = |
Konfiguration | # PEM encoded X.509 SSL/TLS certificate and private key. They're opened before # dropping root privileges, so keep the key file unreadable by anyone but # root. Included doc/mkcert.sh can be used to easily generate self-signed # certificate, just make sure to update the domains in dovecot-openssl.cnf # Tachtler # default: ssl_cert = </etc/ssl/certs/dovecot.pem ssl_cert = # Tachtler # default: ssl_key = </etc/ssl/private/dovecot.pem ssl_key = |
Beschreibung | Das PEM-kodierte X.509 SSL/TLS-Zertifikat, das für eingehende imap/pop3/etc .-client-Verbindungen vorgelegt wird. Der ssl_key wird auch für das private Zertifikat benötigt. Beispiel: ssl_cert = </etc/ssl/private/dovecot.crt ssl_key = </etc/ssl/private/dovecot.key
|
Siehe auch | Dovecot ArchLinux - Konfiguration: Authentifizierungsmethoden - /etc/dovecot/conf.d/10-ssl.conf - ssl Dovecot ArchLinux - Konfiguration: Authentifizierungsmethoden - /etc/dovecot/conf.d/10-ssl.conf - ssl_key |
ssl_key
Information | Beschreibung |
---|---|
Dokumentation | https://doc.dovecot.org/2.3/settings/core/#core_setting-ssl_key Dovecot SSL Configuration |
Defaultwert | ssl_key = </etc/ssl/private/dovecot.pem |
Temporär | ssl_key = |
Konfiguration | # PEM encoded X.509 SSL/TLS certificate and private key. They're opened before # dropping root privileges, so keep the key file unreadable by anyone but # root. Included doc/mkcert.sh can be used to easily generate self-signed # certificate, just make sure to update the domains in dovecot-openssl.cnf # Tachtler # default: ssl_cert = </etc/ssl/certs/dovecot.pem ssl_cert = # Tachtler # default: ssl_key = </etc/ssl/private/dovecot.pem ssl_key = |
Beschreibung | Der PEM-kodierte X.509 SSL/TLS private Schlüssel für ssl_cert . Beispiel: ssl_cert = </etc/ssl/private/dovecot.crt ssl_key = </etc/ssl/private/dovecot.key
|
Siehe auch | Dovecot ArchLinux - Konfiguration: Authentifizierungsmethoden - /etc/dovecot/conf.d/10-ssl.conf - ssl Dovecot ArchLinux - Konfiguration: Authentifizierungsmethoden - /etc/dovecot/conf.d/10-ssl.conf - ssl_cert |
/etc/dovecot/users
Um passwd-file als Authentifizierungsmöglichkeit nutzen zu können, müssen die virtuellen Benutzer in einer Datei gespeichert werden. Dazu soll eine Datei mit nachfolgendem Pfad und Namen
/etc/dovecot/users
mit nachfolgendem Befehl angelegt werden.
# vim /etc/dovecot/users
Der Inhalt der Datei /etc/dovecot/users
muss mindestens nachfolgenden Aufbau haben, wobei die Felder
- <(gecos)>
- <shell>
- <extra_fields>
nicht vorhanden sein müssen und ggf. (außer <extra_fields> am Ende der Zeile) mit ::
, leer gelassen werden können!
<username>:{CODIERUNG}<password>:<uid>:<gid>:<realname>:<home>:<(gecos)>:<extra_fields>
Beispiel:
klaus@tachtler.net:{PLAIN}geheim:10000:10000::/srv/vmail/tachtler.net/klaus:: petra@tachtler.net:{PLAIN}geheim:10000:10000::/srv/vmail/tachtler.net/petra::
Abschliessend sollten noch die Besitzrechte und die Dateirechte von /etc/dovecot/users
mit nachfolgenden Befehlen angepasst werden.
Besitzrechte:
# chown root.dovecot /etc/dovecot/users
Dateirechte:
# chmod 640 /etc/dovecot/users
Zur Überprüfung ob die Besitzrechte und die Dateirechte der Konfigurationsdatei /etc/dovecot/users
richtig gesetzte sind, kann nachfolgender Befehl verwendet werden:
# ls -l /etc/dovecot/users -rw-r----- 1 root dovecot 156 Dec 15 18:34 /etc/dovecot/users
/etc/dovecot/conf.d/auth-passwdfile.conf.ext
HINWEIS - Es sind keine Anpassungen notwendig !!!
In der Konfigurationsdatei
/etc/dovecot/conf.d/auth-passwdfile.conf.ext
sind nun die Einstellungen enthalten, die Dovecot zur Authentifizierung benötigt.
- passdb {…} - zur Verifizierung von Benutzername und Passwort
- userdb {…} - enthält weitere Parameter zum Benutzer
(Vollständige Konfigurationsdatei)
# Authentication for passwd-file users. Included from 10-auth.conf. # # passwd-like file with specified location. # <doc/wiki/AuthDatabase.PasswdFile.txt> passdb { driver = passwd-file args = scheme=CRYPT username_format=%u /etc/dovecot/users } userdb { driver = passwd-file args = username_format=%u /etc/dovecot/users # Default fields that can be overridden by passwd-file #default_fields = quota_rule=*:storage=1G # Override fields from passwd-file #override_fields = home=/home/virtual/%u }
Erster Start
Bevor der der dovecot
-Daemon/Dienst zum ersten mal gestartet werden soll, ist eine Überprüfung der korrekten Konfiguration durch nachfolgenden Befehl, zu empfehlen
doveconf -n
# doveconf -n # 2.3.21.1 (d492236fa0): /etc/dovecot/dovecot.conf # OS: Linux 6.6.63-1-lts x86_64 # Hostname: vml080.idmz.tachtler.net auth_mechanisms = plain digest-md5 cram-md5 login auth_verbose = yes disable_plaintext_auth = no 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 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 } protocols = imap lmtp service lmtp { inet_listener lmtp { address = 10.0.0.80, fd00::10:10:0:0:80 port = 24 } user = vmail } ssl = no userdb { args = username_format=%u /etc/dovecot/users driver = passwd-file } verbose_proctitle = yes
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 gestartet werden:
# systemctl start dovecot.service
Überprüfung erfolgreicher Start
Um zu Überprüfen, ob der Start des dovecot
-Daemons/Dienstes erfolgreich durchgeführt wurden, kann nachfolgender Befehl genutzt werden:
# ss -tauben | grep dovecot tcp LISTEN 0 100 127.0.0.1:143 0.0.0.0:* ino:25845 sk:4 cgroup:/system.slice/dovecot.service <-> tcp LISTEN 0 100 10.0.0.80:143 0.0.0.0:* ino:25846 sk:5 cgroup:/system.slice/dovecot.service <-> tcp LISTEN 0 100 10.0.0.80:24 0.0.0.0:* ino:25834 sk:6 cgroup:/system.slice/dovecot.service <-> tcp LISTEN 0 100 [fd00::10:10:0:0:80]:143 [::]:* ino:25848 sk:8 cgroup:/system.slice/dovecot.service v6only:1 <-> tcp LISTEN 0 100 [2001:db8::10:10:0:0:80]:143 [::]:* ino:25849 sk:9 cgroup:/system.slice/dovecot.service v6only:1 <-> tcp LISTEN 0 100 [fd00::10:10:0:0:80]:24 [::]:* ino:25835 sk:a cgroup:/system.slice/dovecot.service v6only:1 <-> tcp LISTEN 0 100 [::1]:143 [::]:* ino:25847 sk:e cgroup:/system.slice/dovecot.service v6only:1 <->
oder auch dieser Befehl:
# ps auxwf | grep dovecot | grep -v grep root 3794 0.0 0.2 7916 5248 ? Ss 18:56 0:00 /usr/bin/dovecot -F dovecot 3795 0.0 0.1 4424 2688 ? S 18:56 0:00 \_ dovecot/anvil [0 connections] root 3796 0.0 0.1 4560 2944 ? S 18:56 0:00 \_ dovecot/log root 3797 0.0 0.2 7328 4864 ? S 18:56 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 Sun 2024-12-15 18:56:51 CET; 12min ago Invocation: 3d47f63f6bab4354a827c89037922a5b Docs: man:dovecot(1) https://doc.dovecot.org/ Main PID: 3794 (dovecot) Status: "v2.3.21.1 (d492236fa0) running" Tasks: 4 (limit: 2315) Memory: 3.7M (peak: 3.9M) CPU: 53ms CGroup: /system.slice/dovecot.service ├─3794 /usr/bin/dovecot -F ├─3795 "dovecot/anvil [0 connections]" ├─3796 "dovecot/log " └─3797 "dovecot/config " Dec 15 18:56:51 server systemd[1]: Starting Dovecot IMAP/POP3 email server... Dec 15 18:56:51 server dovecot[3794]: master: Dovecot v2.3.21.1 (d492236fa0) st> Dec 15 18:56:51 server systemd[1]: Started Dovecot IMAP/POP3 email server..
Login-Test mit doveadm
Um zu Überprüfen, ob eine Anmeldung als Benutzer möglich ist, kann nachfolgender Befehl genutzt werden:
# doveadm auth test klaus@tachtler.net Password: passdb: klaus@tachtler.net auth succeeded extra fields: user=klaus@tachtler.net
Dies würde nachfolgende Einträge in der systemd-journald-LOG wenn die Log-Ausgabe wie in den nachfolgenden internen Links beschrieben
jeweils auf
yes
gesetzt wurden:
(Nur relevanter Ausschnitt):
# journalctl -u dovecot Dec 15 19:28:39 server dovecot[4217]: auth: Debug: Loading modules from directory: /usr/lib/dovecot/modules/auth Dec 15 19:28:39 server dovecot[4217]: auth: Debug: Module loaded: /usr/lib/dovecot/modules/auth/lib20_auth_var_expand_crypt.so Dec 15 19:28:39 server dovecot[4217]: auth: Debug: Read auth token secret from /run/dovecot/auth-token-secret.dat Dec 15 19:28:39 server dovecot[4217]: auth: Debug: passwd-file /etc/dovecot/users:Read 2 users in 0 secs Dec 15 19:28:39 server dovecot[4217]: auth: Debug: auth client connected (pid=0) Dec 15 19:28:39 server dovecot[4217]: auth: Debug: client in: AUTH 1 PLAIN service=doveadm debug resp=a2xhdXNAdGFjaHRsZXIubmV0AGtsYXVzQHRhY2h0bGVyLm5ldABnZWhlaW0= (previous base64 data may contain sensitive data) Dec 15 19:28:39 server dovecot[4217]: auth: Debug: passwd-file(klaus@tachtler.net): Performing passdb lookup Dec 15 19:28:39 server dovecot[4217]: auth: Debug: passwd-file(klaus@tachtler.net): lookup: user=klaus@tachtler.net file=/etc/dovecot/users Dec 15 19:28:39 server dovecot[4217]: auth: Debug: passwd-file(klaus@tachtler.net): Finished passdb lookup Dec 15 19:28:39 server dovecot[4217]: auth: Debug: auth(klaus@tachtler.net): Auth request finished Dec 15 19:28:39 server dovecot[4217]: auth: Debug: client passdb out: OK 1 user=klaus@tachtler.net
Um auch die Authentifizierungsdaten, welche in oben gezeigter Ausgabe base64
-kodiert sind, dekodieren zu können, um diese ebenfalls sichtbar verifizieren zu können, kann nachfolgender Befehl genutzt werden, welcher dann auch nachfolgende Ausgabe erzeugen sollte:
# echo a2xhdXNAdGFjaHRsZXIubmV0AGtsYXVzQHRhY2h0bGVyLm5ldABnZWhlaW0= | base64 --decode klaus@tachtler.netklaus@tachtler.netgeheim
Um zu Überprüfen, ob eine Anmeldung als Benutzer möglich ist, kann nachfolgender Befehl genutzt werden
(durch Eingabe eines falschen Passworts):
# doveadm auth test klaus@tachtler.net Password: passdb: klaus@tachtler.net auth failed extra fields: user=klaus@tachtler.net
Dies würde nachfolgende Einträge zusätzlich in der systemd-journald-LOG wenn die Log-Ausgabe erzeugen:
(Nur relevanter Ausschnitt):
Dec 15 19:45:55 server dovecot[4563]: auth: Debug: Loading modules from directory: /usr/lib/dovecot/modules/auth Dec 15 19:45:55 server dovecot[4563]: auth: Debug: Module loaded: /usr/lib/dovecot/modules/auth/lib20_auth_var_expand_crypt.so Dec 15 19:45:55 server dovecot[4563]: auth: Debug: Read auth token secret from /run/dovecot/auth-token-secret.dat Dec 15 19:45:55 server dovecot[4563]: auth: Debug: passwd-file /etc/dovecot/users:Read 2 users in 0 secs Dec 15 19:45:55 server dovecot[4563]: auth: Debug: auth client connected (pid=0) Dec 15 19:45:55 server dovecot[4563]: auth: Debug: client in: AUTH 1 PLAIN service=doveadm debug resp=a2xhdXNAdGFjaHRsZXIubmV0AGtsYXVzQHRhY2h0bGVyLm5ldAB0ZXN0 (previous base64 data may contain sensitive data) Dec 15 19:45:55 server dovecot[4563]: auth: Debug: passwd-file(klaus@tachtler.net): Performing passdb lookup Dec 15 19:45:55 server dovecot[4563]: auth: Debug: passwd-file(klaus@tachtler.net): lookup: user=klaus@tachtler.net file=/etc/dovecot/users Dec 15 19:45:55 server dovecot[4563]: auth: passwd-file(klaus@tachtler.net): Password mismatch (given password: test) Dec 15 19:45:55 server dovecot[4563]: auth: Debug: passwd-file(klaus@tachtler.net): PLAIN(test) != 'geheim' Dec 15 19:45:55 server dovecot[4563]: auth: Debug: passwd-file(klaus@tachtler.net): Finished passdb lookup Dec 15 19:45:55 server dovecot[4563]: auth: Debug: auth(klaus@tachtler.net): Auth request finished Dec 15 19:45:57 server dovecot[4563]: auth: Debug: client passdb out: FAIL 1 user=klaus@tachtler.net
ACHTUNG - Nachfolgende systemd-journald-LOG-Ausgabe-Zeile ist dabei besonders zu beachten:
Dec 15 19:45:55 server dovecot[4563]: auth: Debug: passwd-file(klaus@tachtler.net): PLAIN(test) != 'geheim'
Login-Test mit telnet
Um zu Überprüfen, ob eine Anmeldung als Benutzer von einem entfernten Rechner möglich ist, kann nachfolgender Befehl genutzt werden:
# telnet 10.0.0.80 143 Trying 10.0.0.80... Connected to 10.0.0.80. Escape character is '^]'. * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ AUTH=PLAIN AUTH=DIGEST-MD5 AUTH=CRAM-MD5 AUTH=LOGIN] Dovecot ready. a1 login klaus@tachtler.net geheim a1 OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS BINARY MOVE SNIPPET=FUZZY PREVIEW=FUZZY PREVIEW STATUS=SIZE SAVEDATE LITERAL+ NOTIFY SPECIAL-USE] Logged in a2 list "" "*" * LIST (\HasChildren) "/" INBOX * LIST (\HasNoChildren \Drafts) "/" INBOX/Drafts * LIST (\HasNoChildren \Junk) "/" INBOX/Junk * LIST (\HasNoChildren \Trash) "/" INBOX/Trash * LIST (\HasNoChildren \Sent) "/" INBOX/Sent a2 OK List completed (0.025 + 0.000 + 0.024 secs). a3 logout * BYE Logging out a3 OK Logout completed (0.001 + 0.000 secs). Connection closed by foreign host.
Erforderliche Benutzereingaben:
telnet 10.0.0.80 143
a1 login klaus@tachtler.net geheim
a2 list "" "*"
a3 logout
Nach dem Auflisten des (Postfaches), des Benutzers, würde auch das home
-Verzeichnis des Benutzers im Dateisystem angelegt werden, falls dies noch nicht geschehen sein sollte.
Dies kann mit nachfolgendem Befehl überprüft werden:
# ls -l /srv/vmail/* total 0 drwx------ 3 vmail vmail 21 Dec 15 19:59 klaus
Unterhalb von /srv/vmail/klaus
, sollte dann das Maildir
-Verzeichnis entstanden sein, was mit nachfolgendem Befehl überprüft werden kann:
# ls -l /srv/vmail/tachtler.net/klaus/ total 0 drwx------ 2 vmail vmail 36 Dec 15 19:59 Maildir
bzw.
# ls -l /srv/vmail/tachtler.net/klaus/* total 4 -rw------- 1 vmail vmail 80 Dec 15 19:59 dovecot.list.index.log
Ausgabe Benutzerdaten
Mit nachfolgendem Befehl, gibt Dovecot eine Liste aller ihm bekannten Benutzer aus:
# doveadm user '*' klaus@tachtler.net petra@tachtler.net
Um zu Überprüfen, welche Benutzerdaten Dovecot bekannt sind, kann nachfolgender Befehl genutzt werden:
# doveadm user klaus@tachtler.net field value uid 10000 gid 10000 home /srv/vmail/tachtler.net/klaus mail maildir:~/Maildir
Weiterführende Konfigurationen
Unter nachfolgenden internen Links, werden weiterführende Konfiguration durchgeführt
Dovecot ArchLinux - SSL/TLS
- Interner Link zu: Dovecot ArchLinux - SSL/TLS
Dovecot ArchLinux - SASL
- Interner Link zu: Dovecot ArchLinux - SASL
Dovecot ArchLinux - Quotas
- Interner Link zu: Dovecot ArchLinux - Quotas
- Hier geht es weiter … / To be continued …