[[Vorlage(Archiviert, "Der aktuelle Artikel ist: [:Dovecot 2:]")]] {{{#!vorlage Wissen [:Pakete_installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] [:Editor: Einen Editor öffnen] [:sudo: Root-Rechte] }}} [[Inhaltsverzeichnis(1)]] [[Bild(./dovecot_logo.gif, align=left)]] [http://www.dovecot.org/ Dovecot] {en} ist ein Open Source E-Mailserver für Linux, der die Protokolle IMAP und POP3 unterstützt. Seine Spezialität sind kleine Netzwerke (200 Mailboxen) bis hin zu großen Firmennetzwerken (über 1000 Mailboxen). Die Daten werden im mbox- bzw. Maildir-Format abgelegt und können so leicht migriert oder in E-Mail Clients genutzt werden, die lokal auf die Daten zugreifen. Des Weiteren müssen keine Benutzer angelegt werden. Jeder lokale Benutzer kann sich direkt auf dem Mailserver mit seinem Login/Passwort einloggen. Dieser Artikel beschreibt die Funktionalität von Dovecot 1.x. Der ab [:Precise:Ubuntu 12.04] vorhandene Nachfolger wird im Artikel [:Dovecot_2:] beschrieben. = Pakete installieren = Dovecot ist in drei Pakete aufgeteilt. Folgende Pakete müssen installiert [1] werden: {{{#!vorlage Paketinstallation dovecot-core dovecot-imapd, optional dovecot-pop3d, optional }}} Die Protokoll-Pakete sind optional: Wer Dovecot z.B. als reinen IMAP-Server nutzen möchte, braucht '''dovecot-pop3d''' nicht zu installieren; umgekehrt gilt natürlich dasselbe. = Konfigurieren = Dovecot wird über die Konfigurationsdatei '''/etc/dovecot/dovecot.conf''' konfiguriert. Diese muss mit einem Editor [3] mit Root-Rechten [4] geöffnet und vor dem ersten Start des Servers bearbeitet werden. == Protokolle == In den Standardeinstellungen sind die zu benutzenden Protokolle noch nicht eingetragen. Je nachdem, was installiert wurde, müssen hier {{{ # Protocols we want to be serving: # imap imaps pop3 pop3s protocols = imap imaps pop3 pop3s }}} die gewünschten Protokolle eingetragen werden. == SSL-Zertifikat == Möchte man auch die verschlüsselten Protokolle imaps bzw. pop3s nutzen, so benötigt man ein SSL-Zertifikat. Für den Privatanwender reicht es sicherlich, ein selbst generiertes Zertifikat zu verwenden. Dovecot nutzt standardmäßig das bei der Installation automatisch mittels des [http://dovecot.org/doc/mkcert.sh doc/mkcert.sh]-Scriptes erstellte Zertifikat, so dass eine weitere Konfiguration nicht nötig ist. Möchte man ein anderes Zertifikat verwenden, muss das Kommentarzeichen vor den Zeilen {{{ # ssl_cert_file = /etc/ssl/certs/dovecot.pem # ssl_key_file = /etc/ssl/private/dovecot.pem }}} entfernt werden und der Pfad zum SSL-Zertifikat und SSL-Schlüssel geändert werden, z.B.: {{{ # 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. ssl_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem ssl_key_file = /etc/ssl/private/ssl-cert-snakeoil.key }}} (siehe [:ssl-cert:]). == Einloggen mit Klartextpasswort == {{{#!vorlage Warnung Diese Option sollte nicht geändert werden, ist hier jedoch der Vollständigkeit halber aufgelistet. }}} Dovecot erlaubt in der Standardinstallation nicht, dass sich Benutzer ohne eine Verschlüsselung wie [wikipedia:Transport_Layer_Security:TLS] bzw. [wikipedia.org:Secure_Sockets_Layer:SSL] einloggen. Dadurch wird gewährleistet, dass das Passwort nie unverschlüsselt übertragen wird. Dies ist eine wichtige Sicherheitseinrichtung, weil ja das Login/Passwort identisch mit dem Login des ganzen Systems ist. Möchte jemand wider besserem Wissen unverschlüsselte Logins zulassen, so muss dies in der '''dovecot.conf''' aktiviert werden. {{{ # Disable LOGIN command and all other plaintext authentications unless # SSL/TLS is used (LOGINDISABLED capability). Note that 127.*.*.* and # IPv6 ::1 addresses are considered secure, this setting has no effect if # you connect from those addresses. disable_plaintext_auth = no }}} = Server starten = Nachdem der Server korrekt konfiguriert wurde, kann man ihn aus einem Terminal heraus [2] über den Befehl {{{#!vorlage Befehl sudo /etc/init.d/dovecot restart }}} bzw. ab Ubuntu 10.10 {{{#!vorlage Befehl sudo service dovecot restart }}} neu starten. Mehr zu dem Thema bei [:Dienste:]. = Mögliche Probleme = Es kann vorkommen, dass der POP3-Zugang augenscheinlich funktioniert, aber die Mailbox fälschlicherweise dauerhaft leer erscheint. Einträge folgender Art tauchen im Syslog auf: {{{ Dec 4 18:42:27 ubuntu-server dovecot: pop3-login: Login: user=, method=PLAIN, rip=192.168.2.2, lip=192.168.2.10, TLS Dec 4 18:42:27 ubuntu-server dovecot: child 6821 (pop3) returned error 89 Dec 4 18:52:27 ubuntu-server dovecot: pop3(abc): pop3_uidl_format setting is missing from config file }}} In diesem Fall muss die Zeile ''pop3_uidl_format'' in '''/etc/dovecot/dovecot.conf''' wie folgt geändert werden: {{{ pop3_uidl_format = %08Xu%08Xv }}} = Zusätzliche Funktionen = == Sieve: Mails auf dem Server filtern == Seit der in Ubuntu Edgy Eft 6.10 enthaltenen Version von Dovecot ist es möglich Mails schon auf dem Mailserver sortieren zu lassen. So kann man beispielsweise als SPAM markierte Nachrichten gleich in einem "Spam"-Ordner schieben lassen oder Mailinglisten in dafür bereitgestellte Ordner sortieren. Anwender, die über eine Webmail-Applikation oder verschiedene Mailprogrammen ihre E-Mails lesen, wissen den Komfort sicherlich zu schätzen, dass E-Mails automatisch sortiert werden, ohne dass man im jeweiligen Programm Filter einrichten muss. {{{#!vorlage Hinweis Im Folgenden werden viele Fachbegriffe wie LDA, MTA usw. verwendet. Es wird hier nicht näher auf diese Begriffe eingegangen, da das Verständnis über sie für die Umsetzung nicht relevant ist. Wer weiterführende Informationen sucht, findet unter [:Mailserver_Einführung:Mailserver Einführung] Grundwissen über die Funktionsweise eines Mailservers. }}} === Dovecot als LDA === Dovecot besitzt mit der Anwendung ``deliver`` einen eigenen LDA (Local Delivery Agent), der von einem im System vorhandenen MTA (Mail Transfer Agent) genutzt werden kann. Die Anleitung beschränkt sich auf [:Postfix:] als MTA. Hinweise zur Konfiguration weiterer MTA für den Einsatz mit `deliver` findet man im Dovecot-Wiki unter [http://wiki.dovecot.org/LDA LDA] {en} . Postfix muss nun gesagt werden, deliver zu nutzen. Dies geschieht in der Konfigurationsdatei von Postfix, '''/etc/postfix/main.cf''', über den Eintrag, {{{ mailbox_command = /usr/lib/dovecot/deliver }}} der an einer beliebigen Stelle eingefügt [3] werden kann. Damit Postfix diese Änderung berücksichtigt, muss Postfix seine Konfiguration nun neu einlesen: {{{#!vorlage Befehl sudo /etc/init.d/postfix reload }}} === Sieve aktivieren === Nun muss LDA in der Konfiguration von Dovecot aktiviert werden. Dazu muss man in der Konfigurationsdatei von Dovecot '''/etc/dovecot/dovecot.conf''' unter ``protocol lda`` Sieve aktivieren und die E-Mail-Adresse des ''"Postmasters"'', also der Adresse an die Mails weitergeleitet werden, die nicht zugestellt werden können, eintragen. Diese E-Mail-Adresse kann ein lokaler Benutzer des Systems oder eine „richtige“ E-Mail-Adresse sein. Vor Ubuntu 10.4 wurde das Plugin `cmusieve` anstatt `sieve` verwendet. {{{ protocol lda { # Address to use when sending rejection mails. postmaster_address = benutzername@localhost ... # Enabling Sieve plugin for server-side mail filtering mail_plugins = sieve } }}} Da der LDA ``deliver`` mit den Rechten des Benutzers ausgeführt wird, an den die Mail zugestellt wird, ist es nötig die Dateirechte der Datei '''/etc/dovecot/dovecot.conf''' zu ändern. Diese Datei darf standardmäßig nur von Root gelesen werden, deliver muss sie jedoch lesen können. Mittels {{{#!vorlage Befehl sudo chmod 644 /etc/dovecot/dovecot.conf }}} passt man die Rechte so an, dass jeder Benutzer die Datei lesen darf. Da in dieser Datei keine vertraulichen Informationen stehen, ist dies kein Problem. === Filterregeln definieren === Jeder Benutzer kann nun Sieve-Filterskripte in seinem [:Homeverzeichnis:] unter '''~/.dovecot.sieve''' anlegen. Sobald diese Datei angelegt wurde, wird sie von deliver beim Eintreffen einer E-Mail beachtet. Ein einfaches Skript würde beispielsweise so {{{ require "fileinto"; if header :contains "subject" ["beispiel"] { fileinto "beispielordner"; } else { # The rest goes into INBOX # default is "implicit keep", we do it explicitly here keep; } }}} aussehen. Hier würden E-Mails mit ''"beispiel"'' im Betreff in den Ordner ''"beispielordner"'' geschoben werden. Natürlich kann man deutlich komplexere Skripte erstellen. Beispiele und Informationen hierzu findet man im Dovecot Wiki unter [http://wiki.dovecot.org/LDA/Sieve LDA/Sieve] {en} oder auch unter [http://wiki.fastmail.fm/index.php?title=SieveExamples fastmail.fm] {en}, wobei hier sehr aufwändige Skripte zu finden sind. == Sieve-Probleme == === Fehler beim Starten von Dovecot unter Ubuntu Lucid Lynx 10.04 === Nach einem Upgrade auf Ubuntu Lucid Lynx 10.04 kommt es beim Start von Dovecot mit aktiviertem sieve zu folgendem Fehler: {{{#!vorlage Befehl sudo /etc/init.d/dovecot start }}} {{{ * Starting IMAP/POP3 mail server dovecot Error: Error in configuration file /etc/dovecot/dovecot.conf line 691: Unknown setting: sieve }}} Ursache: Ubuntu Lucid Lynx 10.04 enthält Dovecot 1.2.9 und damit wurde vom alten Plugin "cmusieve" auf das neue Plugin "sieve" gewechselt, welches Dovecot 1.2 oder neuer erfordert (siehe Dovecot Wiki unter [http://wiki.dovecot.org/LDA/Sieve LDA/Sieve] {en}) Abhilfe schaffen in diesem Fall folgende Änderungen in der '''/etc/dovecot/dovecot.conf''' (Backup der Original-'''dovecot.conf''' nicht vergessen): 1. cmusieve heißt jetzt sieve, also: {{{ # Enabling Sieve plugin for server-side mail filtering mail_plugins = sieve }}} 2. Der Hinweis auf den Ort der eigenen Filterdatei muss in die `plugin {}`-Sektion verschoben werden, also: Zuerst Auskommentieren der folgenden Zeilen in der Sektion `protocol managesieve {}` {{{ #sieve=~/.dovecot.sieve }}} und {{{ #sieve_storage=~/sieve }}} danach Einfügen der Zeile {{{ sieve=~/.dovecot.sieve }}} in der `plugin {}` - Sektion am Ende der '''dovecot.conf''': {{{ plugin { sieve=~/.dovecot.sieve [...] } }}} 3. Danach dovecot wieder wie folgt starten. {{{#!vorlage Befehl sudo /etc/init.d/dovecot start }}} = Links = * [http://wiki1.dovecot.org/ Dovecot-1.x-Wiki] {en} - ausführliche Dokumentation * [http://developer.gauner.org/ispmail-exim/ ISP Mail Server mit Exim 4, Dovecot, MySQL und SpamAssassin] {de} - Blogbeitrag, 02/2009 * [http://www.chmai.de/it/dovecot-authentifizierung-mit-ssl/ Dovecot-Authentifizierung mit SSL] {de} - Blogbeitrag, 05/2008 * [http://www.effinger.org/blog/2009/03/22/dovecot-exim-openldap-und-getmail-unter-ubuntu-1-openldap/ Dovecot, Exim, OpenLDAP und getmail unter Ubuntu – (1) OpenLDAP] {de} - Blogbeitrag, 03/2009 * [:Serverdienste:] {Übersicht} Übersichtsartikel * [https://skrilnetz.net/server-side-mail-filtering-with-horde-ingo-and-sieve/ Server side Mail Filtering with Horde – Ingo and Sieve] {en} # tag: Internet, Kommunikation, Netzwerk, Server, Email, IMAP, POP