Inhaltsverzeichnis
Stand: August 2010
Motivation
Aufbau eines sicheren und hochperformanten IMAP-Mailservers mit folgenden Features:
- Anbindung postfix
- Sieve
derzeitiger Stand: dovecot-1.2
geplanter Umstieg auf die Version 2.0
Vorraussetzungen
- RedHat EL 4 (CentOs 4.7)
- gültige Zertifikate für pop3s und imaps
- postfix als MTA
Installation
ich möchte den mysql-driver in dovecot freischalten und brauche PAM, dazu installiere ich noch die devel-Paktete:
yum install mysql-devel pam-devel
dovecot-2.0 entpacken und im Verzeichnis:
./configure --with-mysql --with-ldap
als Ergebnis sollten diese Zeilen am Ende erscheinen:
SSL ............ : yes (OpenSSL) GSSAPI ......... : no passdbs ........ : static passwd passwd-file shadow pam checkpassword ldap sql > -bsdauth -sia -vpopmail userdbs ........ : static prefetch passwd passwd-file checkpassword ldap sql nss > -vpopmail SQL drivers .... : mysql > -pgsql -sqlite
make sudo make install
Konfiguration
Schritt 1 - Test mit lokalem Nutzer (pam und passwd) und imap/imaps
Ich teste zunächst mit einem lokalen Nutzer (in der passwd eingetragen) und einem imaps-Postfach. dovecot-2.0 starte ich zunächst auf den Ports 1143 und 1993 (siehe 10-master.conf). Im Thunderbird erstelle ich dazu ein neues imap-konto und gebe diese Ports in der Konfiguration an.
/usr/local/etc/dovecot/dovecot.conf
- Protocols we want to be serving. - protocols = imap pop3 lmtp protocols = imap - listen = *, :: listen = *
/usr/local/etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = no
/usr/local/etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:~/Maildir
/usr/local/etc/dovecot/conf.d/10-master.conf
service imap-login { inet_listener imap { port = 1143 } inet_listener imaps { port = 1993 ssl = yes }
das Zertifikat wird zunächst global bereitgestellt, später werden getrennte Zertifikate für pop3s und imaps zugewiesen (entfällt, wenn die Namen für den pop3-Server und den imap-Server bei den Clients gleich lautet, zB mailbox.fh-schmalkalden.de)
/usr/local/etc/dovecot/conf.d/10-ssl.conf
ssl = yes ssl_cert = </usr/local/etc/ssl/imap.pem ssl_key = </usr/local/etc/ssl/imap.pem
als Test kann auch dieses Kommando ausgeführt werden:
/usr/local/bin/doveconf -n
und diese Ausgabe sollte erscheinen:
disable_plaintext_auth = no listen = * mail_location = maildir:~/Maildir passdb { driver = pam } protocols = imap service imap-login { inet_listener imap { port = 1143 } inet_listener imaps { port = 1993 ssl = yes } } ssl_cert = </usr/local/etc/ssl/imap.pem ssl_key = </usr/local/etc/ssl/imap.pem userdb { driver = passwd }
test
Test mit Thunderbird und imaps: TEST OK
ich kopiere eine alte lokale Mailbox mit 2000 Emails in das neue Postfach TEST OK
Schritt 2 - Test neues Mailboxformat mdbox
ich habe als Mailbox-Format das Maildir eingestellt. Vorhandene Mailboxen müssen also alle in das neue mdbox-Format konvertiert werden. Das Tool „dsync“ konvertiert ein vorhandenens Maildir in das neue mdbox. Dazu wird vorher das mail_location-Attribut in der Konfig-datei geändert:
- mail_location = maildir:~/Maildir mail_location = mdbox:~/mdbox
dann kann dsync gestartet werden:
/usr/local/bin/dsync -u jens mirror maildir:~/Maildir dsync(jens): Fatal: Mail locations must use the same virtual mailbox hierarchy separator (specify separator for the default namespace)
wegen dieser Fehlermeldung lege ich einen Namespace mit diesen Einstellungen an:
10-mail.conf
namespace { separator = . inbox = yes }
und starte dsync neu:
/usr/local/bin/dsync -u jens mirror maildir:~/Maildir
Im Anschluß befindet sich im Homeverzeichnis zusätzlich zum Maildir ein neues Verzeichnis mdbox. Im Unterverzeichnis „storage“ befinden sich jetzt ca. 130 Dateien mit einer Größe von 2 bis 8 MB:
... -rw------- 1 jens jens 2.0M Aug 6 13:09 m.95 -rw------- 1 jens jens 2.0M Aug 6 13:09 m.96 -rw------- 1 jens jens 2.0M Aug 6 13:09 m.97 ...
Tests
Performance-Tests, Postfach als Maildir und mdbox, Maildir ca. 35000 einzelene Dateien, mdbox 680 Files bei gleicher Anzahl von E-Mails (ca. 35000)
Backup Postfach 35000 E-Mails, 900 MB mit rsync und ssh, festplatte zu festplatte
Maildir: 1:35 min mdbox: 1:30 min
Beim Backup über das Netzwerk ist zunächst kein Unterschied zu erkennen. Der Overhead bei sehr vielen Dateien (Maildir) wirkt sich hier kaum nachteilig aus.
15000 E-Mails von einem imap-Ordner in den anderen
keine Ergebnisse, Thunderbird hängt sich bei dieser Zahl von markierten E-Mails auf und reagiert nich mehr
neuer Test mit python und imaplib, 15000 E-Mails von einem Ordner in einen anderen, kaum Unterschiede bemerkbar, bei beiden Formaten sind die Nachrichten in 3-4 Sekunden kopiert
Im Moment sieht es so aus, als ob das neue Mailboxformat keine gravierenden Steigerungen in der Performance bringt. Zusätzlich zum Maildir-Format muß bei mdbox regelmäßig die Mailboxen bereinigt werden, das wird nächtlichst mit einem cronjob erledigt und doveadm punge -u user.