Dovecot
Dovecot (englisch ‚Taubenschlag‘) ist ein Mailserver, der die Netzwerkprotokolle IMAP und POP3 unterstützt.
Die Software steht unter Open Source-Lizenzen und läuft unter UNIX, BSD und unioxiden Systemen wie Linux.
Der Server kann mit den Mailboxformaten maildir und mbox umgehen und ist dazu vollständig kompatibel zum Courier-Server und UW-IMAP. Seit der Version 1.0a4 ist außerdem ein dovecot eigenes Format namens dbox in Bearbeitung, welches für Hochleistungsanwendungen gedacht ist. Bis zum jetzigen Zeitpunkt bietet dbox jedoch keine ausgereifte Kompatibilität zu anderen Mailclients oder MTAs.
Apple nutzt Dovecot im Mac OS X Server der Generation 10.6 als Nachfolger von Cyrus.
Dovecot unterstützt unter anderem folgende Merkmale:
- IMAP4rev1
- THREAD-, IDLE- und SORT-Erweiterung
- LMTP als Protokoll zur E-Mail Zustellung
- Maildir++ Quota
Quelle: Wikipedia.
Links
- Dovecot-Shop (z.B. Zugang zu den Enterprise-Paketen)
Konfiguration
Neue Konfiguration erzeugen:
doveconf -Pn > dovecot-new-2.3.conf
Ab Version 2.3.x:
# alt: #ssl_protocols = !SSLv3 # neu: ssl_min_protocol = TLSv1.2
Ab Version 2.x wird doveadm-pw statt dovecotpw benutzt.
→ Alle nicht standardmäßig vorbelegten Einstellungen anzeigen:
dovecot -n
dovecot mit ipv6
# listen v4 + v6: listen= *, [::] # v6only: # listen=[::] # v4only: # listen = *
dovecot 3.0
Administration mit doveadm
Beispiel: Für Benutzer „jane“ Nachrichten aus der INBOX in den Ordner „Archive/2011/09“ einsortieren:
doveadm move -u jane Archive/2011/09 mailbox INBOX BEFORE 2011-10-01 SINCE 01-Sep-2011
sieve testen
sieve-filter -v -C -u $user@$domain /home/vmail/$domain/$user/.dovecot.sieve INBOX
https://blog.bastelfreak.de/2020/08/dovecot-apply-sieve-filter-to-existing-emails/
Login-Einschränkungen
- Auf Netze/IPs beschränke: http://wiki.dovecot.org/PasswordDatabase/ExtraFields/AllowNets
- ACLS Post-Login prüfen: http://wiki2.dovecot.org/PostLoginScripting
- Benutzer sperren (user.deny)
Fatal: postmaster_address setting not given
protocol lda { # prevent errors: deliver(user@host): Fatal: postmaster_address setting not given" postmaster_address = postmaster@host.tld }
Abwesenheitsmeldungen
Abwesenheitsmeldungen wie Urlaubsbenachrichtigungen lassen sich auf mehrere Arten realisieren:
Mit dovecot-sieve bzw. vacation:
vorher bei Postfix:
- Shellscripten wie
- autoresponse (Anleitung siehe auch: How To Set Up A Postfix Autoresponder With Autoresponse)
- oder diesem hier
- …
master-User
Für die Unterstützung von Benutzer durch einen Adminstrator ist es oft nützlich das Postfach aus Sicht des Benutzers zu betrachten. Da man das Passwort nicht hat bzw. auch nicht wissen sollte gibt es die master-Benutzer.
Im Beispiel vergibt man ein Passwort für „masteruser“ und hängt diesen Benutzername an den eigentlichen Benuzternamen mit dem Trenner „*“ ran. Der Benutzername „user@domain.tld“ wird also zu user@domain.tld*masteruser erweitert, das Passwort ist dann das hinterlegte Masterpasswort.
- Master-Benutzerpasswort in der Datei
/etc/dovecot/masteruserdb
hinterlegen: Für das Passwort „test“ hätte also der Benutzer „masteruser“ diesen Eintrag in der Datei (erzeugt mitdovecotpw -s SHA1
):admin:{SHA1}qUqP5cyxm6YcTAhz05Hph5gvu9M=
- Post-login-Scripting einrichten, nimmt aus Sicht der ACLs der Master-User die Identität des Benutzers an 1):
- IMAP-Script, abspeichern unter beliebigem Namen (den benutzten Namen unter gegen „Path.to.IMAP-Script“ ersetzen; ggf. Pfad
/usr/lib/dovecot/imap
anpassen):#!/bin/sh # Debug: # set > /tmp/dovecot-environment.before.$USER export MASTER_USER="$USER" # Debug: # set > /tmp/dovecot-environment.after.$USER exec /usr/lib/dovecot/imap "$@"
- POP3-Script, abspeichern unter beliebigem Namen (den benutzten Namen unter gegen „Path.to.POP3-Script“ ersetzen; ggf. Pfad
/usr/lib/dovecot/pop3
anpassen):#!/bin/sh # Debug: # set > /tmp/dovecot-environment.before.$USER export MASTER_USER="$USER" # Debug: # set > /tmp/dovecot-environment.after.$USER exec /usr/lib/dovecot/pop3 "$@"
- Einträge in der
dovecot.conf
:# separator for master-users, example: "login_user*master_user -> user@domain.tld*masteruser auth_master_user_separator=* auth default { # master users for Support-puposes passdb passwd-file { args = /etc/dovecot/masteruserdb master = yes pass = yes } } # Pfad zum Post-login-Script (vor dem Login aufrufen lassen, führt danach das imap/pop3-Programm aus): protocol imap { # needed for master-user-login (master-user takes acls of the user) mail_executable = Path.to.IMAP-Script } protocol pop3 { # needed for master-user-login (master-user takes acls of the user) mail_executable = Path.to.POP3-Script }
Weitere Infos:
Backup
Fehlerbehebung
warning: pipe flag `D' requires dovecot_destination_recipient_limit = 1
Diese Fehlermeldung erscheint im Log von Dovecot:
warning: pipe flag `D' requires dovecot_destination_recipient_limit = 1
Der Grund ist der Eintrag in der /etc/postfix/master.cf
:
# Mails per Dovecot-Deliver ausliefern -- maximal 50 Mails zeitgleich dovecot unix - n n - 50 pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -c /etc/dovecot/dovecot.conf -f ${sender} -d ${user}@${nexthop}
Das flag „D“ bei „flags=DRhu“ erzwingt das Postfix nur ein Empfänger pro (Pipe-) Verbindung übergibt. Kommt eine mail mit mehreren Empfänger (für die alle dovecot zuständig ist) dann kommt diese Fehlermeldung und mails werden nicht an alle Empfänger zugestellt.
Lösung sind diese Zeilen, entscheidend ist „dovecot_destination_recipient_limit = 1
“:
virtual_transport = dovecot # enable "dovecot_destination_recipient_limit = 1" to prevent this warning: # "warning: pipe flag `D' requires dovecot_destination_recipient_limit = 1" # multiple recipients (to dovecot) in one mail won't work if not activated! dovecot_destination_recipient_limit = 1
Weitere Infos siehe hier:
Error: net_connect_unix(/var/run/dovecot/stats-writer) failed: Permission denied))
# needed since deb10/buster:("Error: net_connect_unix(/var/run/dovecot/stats-writer) failed: Permission de)") service stats { unix_listener stats-reader { user = vmail group = vmail mode = 0660 } unix_listener stats-writer { user = vmail group = vmail mode = 0660 } }
Der Aufruf zum Passworthash erzeugen ( doveadm pw -s SSHA256
) will leider auch Zugriff auf den stats-writer, das lässt sich aber überschreiben:
doveadm -o stats_writer_socket_path= pw -s SSHA256
so dass auch ein unprivilegiertes Programm (ohne Mailzugriff) Hashes erzeugen lassen kann.