Login
Login-Name Passwort


 
Newsletter
Werbung

Mo, 31. Mai 2004, 00:00

Der IMAP-Server Dovecot

Vorwort

In einer freien Minute kurz vor Mitternacht kam ich auf die Idee, meinen bisherigen IMAP-Server uw-imapd durch dovecot zu ersetzen, der als sicherer und performanter Server angepriesen wurde. Dovecot steht unter der GPL.

Installation

(x)inetd

Die Installation gestaltete sich überraschend einfach. Zuerst beendete ich meinen Mailclient, so daß kein imapd mehr am Laufen war. Dann änderte ich die Konfiguration von xinetd, so daß kein IMAP-Server mehr über xinetd gestartet wurde, denn dovecot läuft permanent und benötigt keinen (x)inetd. Danach stoppte ich xinetd und startete ihn neu. Nun herrschte auf den Ports 143 (imap2) und 993 (imaps) Ruhe, wie man mit netstat -tn am besten prüft.

Paket einspielen

Nun war es möglich, uw-imapd zu deinstallieren und dovecot zu installieren. Unter Debian genügt dazu der einzelne Befehl apt-get install dovecot-imapd. Die Installation versucht dovecot gleich zu starten; falls dies erfolgreich war (und das sollte es eigentlich), stoppen wir ihn via /etc/init.d/dovecot stop gleich wieder, um uns die Bescherung erst einmal näher anzusehen.

Mit Zertifikat

Dovecot kann sowohl IMAP4 als auch POP3 sowohl verschlüsselt über TLS als auch unverschlüsselt servieren. An POP3 hatte ich kein Interesse, und IMAP wollte ich nach Möglichkeit verschlüsselt machen. Dazu benötigt man ein Server-Zertifikat. Das Debian-Paket liefert bereits eines mit, mit dem man sofort loslegen kann, doch da ich logischerweise ein von mir signiertes Zertifikat haben wollte, mußte ich mir selbst eines erstellen. Dazu liefert dovecot in den Quellen eine Beispiel-Konfigurationsdatei mit, in den Binärpaketen ist diese jedoch nicht unbedingt enthalten. Ich will an dieser Stelle auch nicht auf die Erstellung des Zertifikats eingehen. Am einfachsten hat man es, wenn man bereits eine eigene Certification Authority hat. Dann benutzt man einfach diese, um sich ein neues Zertifikat zu erzeugen. Ich habe bei mir das webbasierte Elyca installiert. Es war eine Sache von Sekunden, ein Zertifikat zu erzeugen und zu exportieren.

Das Zertifikat besteht aus zwei Dateien, die beide im PEM-Format vorliegen müssen. Das eine ist das Zertifikat bzw. der öffentliche Schlüssel, der nach /etc/ssl/certs/dovecot.pem kopiert wird. Das andere ist der private Schlüssel, der nach /etc/ssl/private/dovecot.pem kopiert wird. Der private Schlüssel sollte nur für Root lesbar sein (Permissions 0600). Er darf nicht durch ein Paßwort geschützt sein, außer Sie haben Lust, bei jedem Serverstart das Paßwort einzugeben.

Die Konfigurationsdatei

Nach einem kurzen Blick auf die Dokumentation war klar, daß jetzt nur noch die Konfiguration in /etc/dovecot.conf fehlte. Ich ging die Datei durch, löschte Einträge heraus, die mir unnötig schienen, und behielt eine relativ übersichtliche Datei übrig. Sie ist im folgenden Listing wiedergegeben (Download: dovecot.conf).

# Protocols we want to be serving:
# imap imaps pop3 pop3s
protocols = imap imaps
# IP or host address where to listen in for connections. It's not currently
# possible to specify multiple addresses. "*" listens in all IPv4 interfaces.
# "[::]" listens in all IPv6 interfaces, but may also listen in all IPv4
# interfaces depending on the operating system. You can specify ports with
# "host:port".
#imap_listen = *
ssl_cert_file = /etc/ssl/certs/dovecot.pem
ssl_key_file = /etc/ssl/private/dovecot.pem
# How often to regenerate the SSL parameters file. Generation is quite CPU
# intensive operation. The value is in hours, 0 disables regeneration
# entirely.
ssl_parameters_regenerate = 0
# Disable LOGIN command and all other plaintext authentications unless
# SSL/TLS is used (LOGINDISABLED capability)
#disable_plaintext_auth = no
login = imap
#login = pop3
# Allow full filesystem access to clients. There's no access checks other than
# what the operating system does for the active UID/GID. It works with both
# maildir and mboxes, allowing you to prefix mailboxes names with eg. /path/
# or ~user/.
#mail_full_filesystem_access = no
mbox_locks = fcntl
##
## Authentication processes
##
# You can have multiple processes; each time "auth = xx" is seen, a new
# process definition is started. The point of multiple processes is to be
# able to set stricter permissions to others. For example, plain/PAM
# authentication requires roots, but if you also use digest-md5 authentication
# for some users, you can authenticate them without any privileges in a
# separate auth process. Just remember that only one auth process is asked
# for the password, so you can't have different passwords with different
# processes (unless they have different auth methods, and you're ok with
# having different password for each method).
# Authentication process name.
auth = default
# Space separated list of wanted authentication mechanisms:
# plain digest-md5 anonymous
auth_mechanisms = plain
# Where user database is kept:
# passwd: /etc/passwd or similiar, using getpwnam()
# passwd-file <path>: passwd-like file with specified location
# static uid=<uid> gid=<gid> home=<dir template>: static settings
# vpopmail: vpopmail library
# ldap <config path>: LDAP, see /etc/dovecot-ldap.conf
# pgsql <config path>: a PostgreSQL database, see /etc/dovecot-pgsql.conf
auth_userdb = passwd
auth_passdb = pam

Das Wesentliche daran ist die Authentisierung via PAM. Ferner verwende ich weiterhin das mbox-Format für die Mails. Vielleicht stelle ich einmal um, wenn ich ein Konvertierungstool finde.

Authentisierung mit PAM

Nun bleibt nur noch eines zu tun, nämlich die passende PAM-Konfigurationsdatei zu erstellen oder anzupassen. Bei mir wurde bereits eine Konfigurationsdatei mit installiert, die mir jedoch nicht paßte. Da ich einen LDAP-Server zur Authentikation verwende, erstellte ich mir eine Datei /etc/pam.d/dovecot mit folgendem Inhalt, ohne groß nachzudenken:

auth sufficient pam_ldap.so
auth required pam_unix.so try_first_pass shadow
account sufficient pam_ldap.so
account required pam_unix.so shadow
session sufficient pam_ldap.so
session required pam_unix.so shadow
password sufficient pam_ldap.so
password required pam_unix.so nullok min=5 max=16 use_first_pass shadow
Kommentare (Insgesamt: 0 || Kommentieren )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung