Open Source im professionellen Einsatz

Installation

Als Basissystem dient für diesen Artikel eine Standardinstallation von Suse 9.0, die Schritte bis zum vollständigen Server sind aber leicht auf andere Versionen und Distributionen übertragbar. Suse Linux enthält die meisten Pakete bereits. Nur Postfix ist neu zu übersetzen, da die von Suse gelieferte Version keine MySQL-Datenbank unterstützt.

Im ersten Schritt installiert man die Datenbank. Zusätzlich sind auch die normalerweise nicht mitinstallierten Devel-Pakete nötig. Da die Datenbank unter anderem Nutzernamen und verschlüsselte Passwörter enthält, darf sie nur von »localhost« erreichbar sein. Hierzu dient der Parameter »--bind-address=127.0. 0.1« im Startskript »/etc/init.d/mysql« - nach dieser Änderung ist natürlich ein Neustart von MySQL fällig.

Auch OpenSSL[6] ist in normalen Distributionen enthalten. Cyrus-IMAP und Cyrus-SASL brauchen die Berkeley DB[7], und zwar mindestens Version 4.0. Diese schlichte Embedded-Datenbank, die viele Systemtools intern nutzen, gehört unter Linux zur Grundausstattung. Suse 9.0 liefert passende Versionen der drei Programme mit. Debian-Systeme enthalten oft noch eine ältere Berkeley DB - dann ist ein Update fällig. Cyrus-IMAP und Cyrus-SASL sind dann auch neu zu übersetzen, da sie genau jene Version der Berkeley DB erwarten, mit der sie kompiliert wurden.

Listings 1 und 2 zeigen die notwendigen Schritte. Wer die Programme selbst übersetzt, muss auch das System passend konfigurieren. Hierzu gehört, einen eigenen Benutzer »cyrus« anzulegen. Normalerweise haben Daemons eine UID unter 100, Suse-Systeme verwenden für »cyrus« standardmäßig die 96. Der User muss zur Gruppe »mail« gehören. Außerdem muss der Administrator noch ein entsprechendes Start- und Stopp-Skript in »/etc/init.d/« anlegen.

Listing 1: Kompilieren von Cyrus-SASL

01 tar -xvzf cyrus-sasl-2.1.18.tar.gz
02 cd cyrus-sasl-2.1.18
03 ./configure --enable-anon --enable-plain --enable-login --disable-krb4 --disable-otp --disable-cram --disable-digest --with-saslauthd=/var/run/saslauthd --with-pam=/lib/security --with-dblib=berkeley --with-bdb-libdir=/usr/local/bdb/lib --with-bdb-incdir=/usr/local/bdb/include --with-openssl=/usr/local/ssl --with-plugindir=/usr/local/lib/sasl2
04 su ; make && make install
05 mkdir -p /var/run/saslauthd
06 cd saslauthd
07 make testsaslauthd
08 cp testsaslauthd /usr/local/bin
09 echo /usr/local/lib/sasl2 >> /etc/ld.so.conf
10 ldconfig

Listing 2: Kompilieren von Cyrus-IMAP

01 tar -xvzf cyrus-imapd-2.2.3.tar.gz
02 cd cyrus-imapd-2.2.3
03 ./configure --with-sasl=/usr/local/lib --with-perl --with-auth=unix --with-dbdir=/usr/local/bdb --with-bdb-libdir=/usr/local/bdb/lib --with-bdb-incdir=/usr/local/bdb/include --with-openssl=/usr/local/ssl --without-ucdsnmp 
04 make depend
05 su ; make && make install
06 su - cyrus
07 /usr/local/cyrus-imapd-2.2.3/tools/mkimap

PAM (Pluggable Authentication Modules)[8] gehören heutzutage zum Standardumfang jeder Linux-Distribution. Es genügt, das MySQL-Modul[5] nachzuinstallieren oder zu kompilieren. Wer sein MySQL selbst übersetzt, muss unter Umständen im Makefile die Pfade anpassen. Pam_mysql kommt ohne Configure-Skript daher, sodass ein Aufruf von »make« genügt. Das fertige Modul kopiert der Administrator anschließend nach »/lib/security«. Eventuell muss er noch mit »ln -s /tmp/mysql.sock/ var/ lib/mysql/mysql.sock« einen Symlink für den MySQL-Socket anlegen.

Postfix ist mittlerweile in vielen Distributionen Standard-MTA, die notwendige MySQL-Anbindung fehlt jedoch in der Regel. Ob sie enthalten ist, zeigt der Befehl »postconf -m«. Fehlt die Angabe »mysql«, ist Postfix neu zu übersetzen. Da die meisten Paketverwaltungen zwingend einen MTA verlangen, sorgt man dafür, dass irgendein Postfix im System ist. Die neu kompilierte Version lässt sich bedenkenlos über die Paketversion installieren. Der Aufruf

make makefiles 'CCARGS=-DHAS_MYSQL -I/usr/include/mysql -DUSE_SASL_AUTH -I/usr/include/sasl' 'AUXLIBS=-L/usr/lib/mysql -lmysqlclient -lz -lm -lsasl2'

erzeugt die passenden Makefiles, ein »make«-Aufruf startet den Kompiliervorgang. »make install« stellt diverse Fragen. In der Regel ist der Defaultwert eine gute Wahl.

Wer möchte, konfiguriert Cyrus-IMAP komplett per Kommandozeile. Komfortabler geht es jedoch mit dem Webfrontend Web-cyradm[9]. Zum Installieren reicht es, das Paket auszupacken und an eine beliebige Stelle unterhalb des Docroot-Verzeichnisses des Webservers zu kopieren. Zusätzlich ist mit »touch /var/log/web-cyradm.log« eine Logdatei anzulegen und dem passenden User, zum Beispiel »nobody«, zuzuweisen.

Konfiguration

Sobald alle benötigten Programme installiert sind, beginnt die eigentliche Konfiguration. Im ersten Schritt legt der Admin die Datenbank an. Web-cyradm bringt dazu zwei SQL-Skripte mit. Das Skript »insertuser_mysql.sql« erzeugt die benötigten Nutzer für die Datenbank sowie die leere Datenbank. Vor dem Aufruf sind auf jeden Fall noch die Passwörter im Skript zu ändern. Dann folgt:

/usr/bin/mysql -u root -p < /srv/www/htdocs/web-cyradm/scripts/insertuser_mysql.sql

Das Skript »create_mysql.sql« erzeugt alle Tabellen innerhalb der Datenbank:

/usr/bin/mysql mail -u mailadmin -p < /srv/www/htdocs/web-cyradm/scripts/create_mysql.sql

Als Nächstes sind die Konfigurationseinstellungen für PAM in der Datei »/etc/ pam.d/imap« an der Reihe (siehe Listing 3). Wer die Authentifizierungsfunktion auch für die anderen Services nutzen will, kopiert die Datei anschließend dreimal:

cp /etc/pam.d/imap /etc/pam.d/pop
cp /etc/pam.d/imap /etc/pam.d/sieve
cp /etc/pam.d/imap /etc/pam.d/smtp

Listing 3: »/etc/pam.d/imap«

01 auth sufficient pam_mysql.so user=mailadmin passwd=geheim host=localhost db=mail table=accountuser usercolumn=username passwdcolumn=password crypt=1 logtable=log logmsgcolumn=msg logusercolumn=user loghostcolumn=host logpidcolumn=pid logtimecolumn=time
02 account required pam_mysql.so user=mailadmin passwd=geheim host=localhost db=mail table=accountuser usercolumn=username passwdcolumn=password crypt=1 logtable=log logmsgcolumn=msg logusercolumn=user loghostcolumn=host logpidcolumn=pid logtimecolumn=time

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