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:
Quelle: Wikipedia.
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
# listen v4 + v6: listen= *, [::] # v6only: # listen=[::] # v4only: # listen = *
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-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/
protocol lda { # prevent errors: deliver(user@host): Fatal: postmaster_address setting not given" postmaster_address = postmaster@host.tld }
Abwesenheitsmeldungen wie Urlaubsbenachrichtigungen lassen sich auf mehrere Arten realisieren:
Mit dovecot-sieve bzw. vacation:
vorher bei Postfix:
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.
/etc/dovecot/masteruserdb
hinterlegen: Für das Passwort „test“ hätte also der Benutzer „masteruser“ diesen Eintrag in der Datei (erzeugt mit dovecotpw -s SHA1
):admin:{SHA1}qUqP5cyxm6YcTAhz05Hph5gvu9M=
/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 "$@"
/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 "$@"
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:
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:
# 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.