====== Dovecot ====== Dovecot (englisch ‚Taubenschlag‘) ist ein Mailserver, der die Netzwerkprotokolle [[netzwerke:IMAP]] und [[netzwerke:POP3]] unterstützt. Die Software steht unter Open Source-Lizenzen und läuft unter UNIX, BSD und unioxiden Systemen wie [[linux: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: * [[netzwerke:IMAP]]4rev1 * THREAD-, IDLE- und SORT-Erweiterung * [[netzwerke:POP3]] * LMTP als Protokoll zur E-Mail Zustellung * [[Sieve]] * [[netzwerke:SSL und TLS|TLS/SSL]] * [[netzwerke:IPv6]] * Maildir++ Quota * [[server:Postfix]] und [[server:Exim]] (ab Version 4) können sich an dem Backend von Dovecot authentifizieren Quelle: [[wpde>dovecot|Wikipedia]]. ===== Links ===== * [[http://www.dovecot.org/|Dovecot]] * [[http://holl.co.at/howto-email/#a2.2.1|Konfiguration Dovecot]] * [[http://wiki.ubuntuusers.de/Dovecot|Dovecot @ubuntuusers]] * [[http://en.gentoo-wiki.com/wiki/Mail_server_using_Postfix_and_Dovecot|Mail server using Postfix and Dovecot]] * [[http://shop.dovecot.fi/|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 [[http://wiki2.dovecot.org/Tools/Doveadm/Pw|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 ==== * [[https://www.heinlein-support.de/blog/kein-dovecot-director-mehr-dovecot-30]] * [[https://www.heinlein-support.de/blog/kein-dovecot-director-mehr-dovecot-30-teil-2]] * [[https://doc.dovecot.org/3.0/admin_manual/cluster/|neues clustering in dovecot 3.0 pro]] ===== 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-[[http://wiki2.dovecot.org/LoginProcess|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: * http://www.synology-wiki.de/index.php/Abwesenheitsmeldungen_mit_dovecot-sieve vorher bei Postfix: * [[http://www.remofritzsche.com/projects/goldfish/|goldfish]] * Shellscripten wie * [[http://nefaria.com/project_index/autoresponse/|autoresponse]] (Anleitung siehe auch: [[http://www.howtoforge.com/how-to-set-up-a-postfix-autoresponder-with-autoresponse|How To Set Up A Postfix Autoresponder With Autoresponse]]) * oder [[http://www.synology-wiki.de/index.php/Abwesenheitsmeldungen_mit_postfix|diesem hier]] *[[ http://www.linuxmail.info/postfix-vacation-autoresponder/|Postfix Vacation Autoresponder]] * ... ==== 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 mit ''dovecotpw -s SHA1''):admin:{SHA1}qUqP5cyxm6YcTAhz05Hph5gvu9M= - **[[http://wiki1.dovecot.org/PostLoginScripting|Post-login-Scripting]] einrichten**, nimmt aus Sicht der ACLs der Master-User die Identität des Benutzers an ((alternativ kann durch ACL-Regeln für den master-Benutzer Zugriff erlaubt werden)): - **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: * [[http://wiki1.dovecot.org/Authentication/MasterUsers|MasterUsers]] * [[http://wiki1.dovecot.org/PostLoginScripting|PostLoginScripting]] * [[http://old.nabble.com/Problems-with-masteruser-td28178359.html|Problems with masteruser]] * [[http://wiki1.dovecot.org/ACL|ACLs]] ===== Backup ===== [[https://dokuwiki.tachtler.net/doku.php?id=tachtler:dovecot_backup_-_skript|Dovecot Backup - Skript]] ===== 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: * [[http://www.dovecot.org/list/dovecot/2010-May/049258.html|dovecot-mailingliste]] [[http://comments.gmane.org/gmane.mail.imap.dovecot/43127|mit mehr Übersicht]] * [[http://wiki.dovecot.org/LDA/Postfix|LDA]] * [[http://www.postfix.org/pipe.8.html|Postfix Pipe]] ==== 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.