Inhaltsverzeichnis

Stand: August 2010

Motivation

Aufbau eines sicheren und hochperformanten IMAP-Mailservers mit folgenden Features:

derzeitiger Stand: dovecot-1.2

geplanter Umstieg auf die Version 2.0

Vorraussetzungen

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
reload dovecot nicht vergessen oder neustart!!

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
}
der Separator ist bei mir der Punkt!! In anderen Konfigurationen kann auch ein anderes Zeichen der Separator sein, zb /

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.