Open Source im professionellen Einsatz

Cyrus-IMAP

Zur Konfiguration von Cyrus-IMAP dient die Datei »/etc/imapd.conf« (siehe Listing 6). Die Zeile 4 ist auskommentiert, um zu verhindern, dass Admins sich von außen einloggen. Um lokalen Admin-Zugriff zu erlauben, legt man eine gleichlautende Datei »/etc /imapd-local.conf« zusätzlich an und entfernt darin das Kommentarzeichen in Zeile 4. In Zeile 8 muss der vollständige Hostname des Servers stehen.

Listing 6: »/etc/imapd.conf«

01 postmaster: postmaster
02 configdirectory: /var/lib/imap
03 partition-default: /var/spool/imap
04 # admins: cyrus # no admins!
05 allowanonymouslogin: no
06 allowplaintext: yes
07 sasl_mech_list: PLAIN
08 servername: test-server.tld
09 autocreatequota: 10000
10 reject8bit: no
11 quotawarn: 90
12 timeout: 30
13 poptimeout: 10
14 dracinterval: 0
15 drachost: localhost
16 sasl_pwcheck_method: saslauthd
17 sievedir: /usr/sieve
18 sendmail: /usr/sbin/sendmail
19 sieve_maxscriptsize: 32
20 sieve_maxscripts: 5
21 # unixhierarchysep: yes

Zeile 21 legt fest, auf welche Art Cyrus die Benutzernamen bilden soll. Ist die Zeile auskommentiert oder der Wert auf »no« gesetzt, nummeriert es die User einfach durch. Alternativ lassen sich die Namen aber auch nach dem Schema »user.domain.tld« zusammensetzen. Soll später ein Webmail-Frontend wie Squirrelmail[11] zum Einsatz kommen, darf der Wert nicht auf »yes« stehen. Andernfalls kann Squirrelmail verschiedene Mailordner nicht anlegen.

Für die TLS/SSL-Verschlüsselung legt der Admin als Nächstes ein Zertifikat an (Listing 7). Das ist allerdings von keiner anerkannten Zertifizierungsstelle unterzeichnet. Manche Mailclients zeigen daher eine Warnung an, die man jedoch ignorieren kann. Das Zertifikat dient ja nicht zur Identifizierung des Servers, sondern zur Verschlüsselung. Wer möchte, kann aber auch den Fingerprint des Zertifikats auf seiner Website veröffentlichen, damit die Benutzer es überprüfen können.

Listing 7: Anlegen eines OpenSSL-Zertifikats

01 openssl req -new -nodes -out req.pem -keyout key.pem
02 openssl rsa -in key.pem -out new.key.pem
03 openssl x509 -in req.pem -out ca-cert -req -signkey new.key.pem -days 999
04 mkdir /var/lib/imap
05 mv new.key.pem /var/lib/imap/server.pem
06 cat ca-cert >> /var/lib/imap/server.pem
07 chown cyrus:mail /var/lib/imap/server.pem
08 chmod 600 /var/lib/imap/server.pem
09 echo tls_ca_file: /var/lib/imap/server.pem >> /etc/imapd.conf
10 echo tls_cert_file: /var/lib/imap/server.pem >> /etc/imapd.conf
11 echo tls_key_file: /var/lib/imap/server.pem >> /etc/imapd.conf

Die Datei »/etc/cyrus.conf« steuert den Master-Prozess von Cyrus. Sie legt fest, in welchen Situationen der IMAP-Daemon welche Konfigurationsdatei verwenden soll. Hier erfolgt auch die erwähnte Unterscheidung zwischen lokalem Zugriff, der auch dem Admin-User »cyrus« erlaubt ist, und dem Zugriff von außen. In Listing 8 muss die IP-Adresse 192.168.0.1 durch die externe IP-Adresse des Servers ersetzt werden. Außerdem ist wichtig, dass die Zeile »lmtpunix« den richtigen Pfad enthält.

Nun kann der Admin den SASL- und IMAP-Daemon starten. Mit dem Befehl

saslpasswd2 -c cyrus

legt er den ersten IMAP-Nutzer an, den Web-cyradm später beim Zugriff auf Cyrus-IMAP verwendet. Bei der Passwortanfrage »saslpasswd2« sollte er das gleiche Passwort angeben, das er vorher in der letzten Zeile von »create_mysql.sql« eingetragen hat. Mit dem Aufruf von »cyradm« lässt sich das Passwort auch gleich ausprobieren. »cyradm« authentifiziert gegen den SASL- und IMAP-Daemon, die also beide laufen müssen:

cyradm --user cyrus --server localhost --auth plain 
IMAP Password: 
localhost>

Im letzten Konfigurationsschritt richtet der Administrator Web-cyradm ein. In dem Unterverzeichnis »config« von Web-cyradm liegt bereits eine allgemeine Konfigurationsdatei »conf.php.dist«, die er in »conf.php« umbenennt. In ihr legt er jetzt die Angaben für das Einloggen beim Cyrus-IMAP-Server fest. Zurzeit kann Web-cyradm nicht über eine verschlüsselte Verbindung auf den IMAP-Server zugreifen. Wenn beide Systeme aber auf demselben Server laufen, ist dies kein Problem mehr. Anschließend wird die Datenbankverbindung in der Datei angegeben.

Web-cyradm bietet über die Variable »$CRYPT« mehrere Möglichkeiten der Passwortverschlüsselung. Der sinnvollste Wert hierfür ist »crypt«. Dann verwendet Web-cyradm die gleiche Verschlüsselung wie das Shadow-Passwortsystem. Als Letztes bestimmt der Administrator, wie Web-cyradm die Nutzernamen vergeben soll. Wer bei der Einrichtung der »/etc/imapd.conf« den Wert »unixhierarchysep« auf »yes« gesetzt hat, sollte nun die Variable »DOMAIN_AS_PREFIX« auf »1« setzen.

Listing 8: »/etc/cyrus.conf«

01 START {
02   # do not delete this entry!
03   recover       cmd="ctl_cyrusdb -r"
04 }
05 # UNIX sockets start with a slash and are put into /var/lib/imap/socket
06 SERVICES {
07   # add or remove based on preferences
08   imap          cmd="imapd" listen="192.168.0.1:imap" prefork=0
09   imaplocal     cmd="imapd -C /etc/imapd-local.conf" listen="127.0.0.1:imap"
10 prefork=0
11   imaps         cmd="imapd -s" listen="192.168.0.1:imaps" prefork=0
12   imapslocal    cmd="imapd -C /etc/imapd-local.conf" listen="127.0.0.1:imaps"
13 prefork=0
14   pop3          cmd="pop3d" listen="pop3" prefork=0
15   pop3s         cmd="pop3d -s" listen="pop3s" prefork=0
16   sieve         cmd="timsieved" listen="192.168.0.1:sieve" prefork=0
17   sievelocal    cmd="timsieved -C /etc/imapd-local.conf listen="127.0.0.1:sieve"
18 prefork=0
19   # at least one LMTP is required for delivery
20   lmtpunix      cmd="lmtpd" listen="/var/lib/imap/socket/lmtp" prefork=0
21 }
22 EVENTS {
23   # this is required
24   checkpoint    cmd="ctl_cyrusdb -c" period=30
25   # this is only necessary if using duplicate delivery suppression
26   delprune      cmd="ctl_deliver -E 3" period=1440
27   # this is only necessary if caching TLS sessions
28   tlsprune      cmd="tls_prune" period=1440
29 }

Los geht's

Die Konfiguration ist abgeschlossen, nun lassen sich MySQL, Apache, Postfix, Cyrus-IMAP und der SASL-Daemon über die Skripte in »/etc/init.d« starten. Der Befehl »netstat -an | grep LISTEN« prüft, ob sie korrekt laufen. Die Ports, 25, 80, 110, 143, 993 und 995 sollten von außen erreichbar sein, Port 3306 dagegen möglichst nur vom Server selbst, also über 127.0.0.1. Sieht alles gut aus, startet der Admin als Nächstes einen Browser und ruft die Web-cyradm-Einstiegsseite auf. Dort loggt er sich als »admin« mit dem zuvor in »create_mysql .sql« gesetzten Passwort ein.

Anschließend lassen sich hier nach Belieben Domains und zugehörige E-Mail-Adressen konfigurieren (Abbildung 2 und 3). Auch für die Weiterleitungen ist Web-cyradm zuständig. Beim Anlegen der Domains ist darauf zu achten, dass diese auch tatsächlich zu dem jeweiligen Server gehören. Wer nur testen will, trägt die Domains kurzfristig in »/etc/ hosts« ein, damit eventuelle Testmails nichts nach draußen gelangen.

Wer den Wartungsaufwand für den Admin so gering wie möglich halten möchte, richtet weitere so genannte Domain-Administratoren ein: Diese dürfen eine oder mehrere Domains komplett verwalten, aber keine neuen Domains und User einrichten.

Abbildung 2: Der Dialog für die Einrichtung einer neuen Domain. Das Frontend Web-cyradm macht es möglich, Domains komfortabel zu verwalten.

Abbildung 2: Der Dialog für die Einrichtung einer neuen Domain. Das Frontend Web-cyradm macht es möglich, Domains komfortabel zu verwalten.

Abbildung 3: Per Browser lassen sich in Web-cyradm bequem neue Mailaccounts einrichten.

Abbildung 3: Per Browser lassen sich in Web-cyradm bequem neue Mailaccounts einrichten.

Diesen Artikel als PDF kaufen

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook