zurück zur Hauptseite | english

Kolab auf dem Server einrichten

Diese Anleitung basiert auf der Kolab Schnell-Installations-Anleitung (QIM). Die folgende Anleitung ist hauptsächlich auf RedHat 9 und unseren eigenen Linux Server ausgerichtet, daher empfehle ich bei Problemen, auf die offizielle Anleitung zurück zu greifen.

Es bestehen 2 Möglichkeiten: Entweder es hat jemand schon die RPMs für die gewünschte Linux Distribution (z.B. RedHat 9) vorbereitet, oder man muss diese RPMs selber zusammenstellen lassen.
Bitte auch die Seite zfos.org beachten, dort gibt es schon einige aktuelle fertige Pakete von Kolab.

Mein erstes Problem bei der Installation von Kolab war, dass die Wurzelpartition / zu klein war. Die Lösung bestand darin, ein Verzeichnis woanders zu erstellen, z.B. auf einer zusätzlichen Festplatte, und dann das Standard-Kolab-Verzeichnis darauf zu verweisen lassen:
mkdir /usr/local/kolab
ln -s /usr/local/kolab /kolab

Es ist evtl. auch nötig, das Verzeichnis /tmp auf z.B. /var/tmp verweisen zu lassen, falls Sie Kolab selber übersetzen lassen wollen und Ihre /tmp Partition zu klein ist.

Falls Sie Kolab auf einem zweiten OM-SLS Server auf dem Netzwerk installieren, muss die Samba-Einwahlmöglichkeit für die Benutzer abgeschaltet werden.

A. Kolab von Grund auf zusammenstellen:

Sie brauchen die aktuellsten Versionen der Dateien von der Kolab Download Seite.

Dieses Programmskript compile_install.sh kann alle Aufgaben für Sie erledigen. Es ist auf die aktuelle Version von OM-SLS 1.4 und Kolab 1.0 zugeschnitten. Aber es sollte ohne Probleme an Ihre spezielle Umgebung angepasst werden können.
Das Programmskript und andere spezielle Konfigurationsdateien können in diesem Archiv heruntergeladen werden. Diese Dateien müssen in demselben Verzeichnis entpackt werden, in dem Sie auch die heruntergeladenen Kolab-Dateien gespeichert haben. Ausserdem muss die erste Zeile des Installationsskripts compile_install.sh geändert werden, auf den Namen dieses Verzeichnisses. Das Skript muss als root ausgeführt werden.

Die folgenden Schritte beschreiben, was genau das Skript macht, und wie mit Fehlern/Problemen umgegangen wird.
  1. als Benutzer root:
    su
    sh ./openpkg-20030606-20030606.src.sh --prefix=/kolab --user=kolab \
    --group=kolab 2>&1 | tee kolab.log

    sh -x ./openpkg-20030606-20030606.ix86-linux2.4-kol.sh
  2. in der Datei /etc/init.d/kolab sollte folgender Text stehen:
    #!/bin/sh
    #
    # kolab -- startup/shutdown transfer script for /kolab OpenPKG hierarchy
    #
    [ ! -f /kolab/etc/rc.d/rc.kolab ] && exit 0
    case $1 in
    start ) exec /kolab/etc/rc.d/rc.kolab start ;;
    stop ) exec /kolab/etc/rc.d/rc.kolab stop ;;
    restart ) exec /kolab/etc/rc.d/rc.kolab restart ;;
    esac
  3. als Benutzer kolab werden die Quellpakete installiert:
    su - kolab
    export PATH=/kolab/bin:/kolab/sbin:$PATH
    rpm -ihv *.src.rpm
  4. Die folgenden Anweisungen müssen für alle Pakete ausgeführt werden, in der Reihenfolge, die in den Schnell-Installations-Anweisungen von Kolab vorgegeben ist. Werfen Sie auch einen Blick in das Skript, um zu sehen wie es alles zusammen funktioniert.

    Ich habe eine Funktion geschrieben, die dabei helfen soll, dauernd zwischen dem root und dem kolab Benutzer hin und herzuwechseln. Die Funktion erledigt das Übersetzen und die Installation eines Pakets:

    function compAndInstall()
    {
       # uebersetzt ein rpm aus dem Quellcode, als Benutzer kolab.
       # danach wird das neue rpm unter Benutzer root installiert
       PACKAGE=$1
       VERSION=$2
       DEFINE=$3
       cmd="export PATH=/kolab/bin:/kolab/sbin:$PATH; cd /kolab/RPM/SRC/"$PACKAGE"; "
       if [ -z "$3" ]
       then
           cmd=$cmd"rpm -bb "$PACKAGE".spec"
       else
           cmd=$cmd"rpm -ba "$PACKAGE".spec "$DEFINE
       fi
       su - kolab --command="$cmd"
       export PATH=/kolab/bin:/kolab/sbin:$PATH
       /kolab/bin/rpm -Uhv /kolab/RPM/PKG/$PACKAGE-$VERSION.ix86-linux2.4-kol.rpm
    }


    Im Installationsskript werden die verschiedenen Pakete folgendermaßen installiert:
    compAndInstall "make" "3.80-20030109"
    compAndInstall "gdbm" "1.8.3-20030213" "--define 'with_ndbm yes'"


    Falls der Apache nicht übersetzt werden kann, stellen Sie sicher, dass Sie beide im QIM beschriebenen Wege ausprobieren (alles auf einer Linie):
    compAndInstall "apache" "1.3.27-20030611" "--define 'with_mod_ssl yes' --define 'with_mod_dav yes' --define 'with_mod_auth_ldap yes' --define 'with_mod_php_openldap yes' --define 'with_mod_php_imap yes' --define 'with_mod_php yes' --define 'with_mod_php_gettext yes' --define 'with_gdbm yes' --define 'with_ndbm yes'"
    bzw.
    compAndInstall "apache" "1.3.27-20030611" "--define 'with_mod_ssl yes' --define 'with_mod_dav yes' --define 'with_mod_auth_ldap yes' --define 'with_mod_php_openldap yes' --define 'with_mod_php_imap yes' --define 'with_mod_php yes' --define 'with_mod_php_gettext yes' --define 'with_gdbm_ndbm yes'

B. Die bereitgestellten Kolab RPMs installieren:

Für diese Variante der Installation brauchen Sie Kolab RPM Pakete, die bereits jemand für Ihre Linux Distribution kompiliert hat. Sie haben die Endung *.kol.rpm.

Dieses Skript install.sh kann alle Arbeit für Sie erledigen. Es ist maßgeschneidert für die aktuelle Version von OM-SLS 1.4 und Kolab 1.0. Es sollte ohne Probleme an Ihr eigenes System angepasst werden können.
Sie brauchen außerdem die speziellen Konfigurationsdateien aus diesem Zip-Archiv. Entpacken Sie alle Dateien in das Verzeichnis, in dem Sie die heruntergeladenen RPM Pakete gespeichert haben, und bearbeiten Sie die erste Zeile im install.sh Skript und passen den Namen des Verzeichnisses an. Führen Sie dann das Skript als Benutzer root aus.

Das Skript sollte von alleine durchlaufen. Für mehr Informationen seien Sie auf die Schnellanleitung QIM verwiesen.

Die Installation abschließen

  1. Falls alles erfolgreich abgelaufen ist, wird Kolab am Ende der Installation geladen. Sie werden aufgefordert, einige Daten einzugeben.
    Der Rechnername (Hostname) wird normalerweise auf den bisherigen Rechnernamen gesetzt.
    KOLAB BOOTSTRAP

    Please enter Hostname [kolab.ict.om.org]:
    proceeding with Hostname kolab.ict.om.org
    Please enter your Maildomain [ict.om.org]:
    proceeding with Maildomain ict.om.org
    Generating default configuration:
    base_dn : dc=kolab,dc=d,dc=om,dc=org
    bind_dn : cn=manager,dc=kolab,dc=d,dc=om,dc=org
    Please choose a manager password [HKwcVTaTCFRc.]:blablabla
    bind_pw : blablabla
    done modifying /kolab/etc/kolab/kolab.conf

    IMPORTANT NOTE:
    use login=manager and passwd=blablabla when you log into the webinterface!
  2. Es gab bei mir Probleme mit den Zugriffsrechten. Siehe dazu auch die Diskussion auf der kroupware Mailingliste (englisch).
    Die Zugriffsrechte auf dem Verzeichnis (/kolab/etc/kolab) sollten so aussehen:
    drwxr-xr-x    2 kolab    kolab
    Um das zu erreichen, ist dieser Befehl einzugeben: chmod o+rx /kolab/etc/kolab

  3. Ich hatte Probleme mit schon aktiven Diensten auf dem Server.

    Hier ein paar Befehle, die bei solchen Problemen helfen können:

    Auf SLS gibt es schon einen Apache Webserver, der die Intranetseiten liefert. Ich habe dieses Programm erstmal komplett abgestellt. Das ist nur eine vorübergehende Lösung, und muss besser aufgelöst werden, sobald Kolab vollständig in OM SLS integriert wird.

  4. Eine andere Schwierigkeit ist die ipchains Firewall, ein Sicherheitsprogramm, das https, ftp und ldap Pakete nicht durchläßt. Sie sollten dieses Programm sehr sorgfältig konfigurieren.
    Für OM SLS habe ich eine Kopie der Datei /etc/om-firewall.d/S62.internal.local erzeugt:
    cp /etc/om-firewall.d/S62.internal.local /etc/om-firewall.d/S65.internal.kolab
    und aktivierte die Zeilen, die mit "https", "imap", "ldap" und "ftp" enden. Weiterhin fügte ich die Zeile für "ftp-data" hinzu.
    Danach muss die Firewall neu gestartet werden, durch /etc/init.d/om-firewall restart

  5. Da ich Probleme mit dem Lesen der Frei/Belegt Zeiten über https hatte, habe ich das Lesen vom FTP Server aktiviert, indem ich das "READ" aus dem "deny" Block in den "allow" Block verschoben habe.

    in /kolab/etc/kolab/proftpd.conf.template:
    <Directory /*>
        AllowOverwrite    on
        <Limit STOR
    READ>
            AllowAll
        </Limit>
        <Limit WRITE DIRS>
            IgnoreHidden  on
            DenyAll
        </Limit>
    </Directory>

    Kolab muss neu gestartet werden (/etc/init.d/kolab restart), und manchmal muss auch /kolab/sbin/proftpd ausgeführt werden, um die Veränderungen an der FTP Server Konfiguration zu aktivieren.

    Wenn Sie aus irgendwelchen Gründen die LDAP Authentifizierung abschalten wollen, die ansonsten mit dem Benutzer "freebusy" und dem Passwort "freebusy" funktioniert, können Sie anonymen FTP Zugang einrichten. Die folgenden Zeilen müssen deaktiviert werden:
    #LDAPServer            @@@ldap_ip@@@
    #LDAPDNinfo            "@@@php_dn@@@" "@@@php_pw@@@"
    #LDAPDoAuth            on "@@@base_dn@@@" "(uid=freebusy)"
    Jetzt muss anonyme Authentifizierung aktiviert werden, durch Hinzufügen dieser Zeilen an das Ende der Datei proftpd.conf.template:
    <Anonymous /kolab/var/kolab/www/freebusy>
            user kolab-n
            group kolab-n
            AnonRequirePassword off
            UserAlias     anonymous kolab-n
            RequireValidShell    off
            MaxClients    30
            <Directory /*>
            AllowOverwrite on
            <Limit STOR READ
    >
                #
    WRITE DIRS not required in the limit line
                AllowAll
            </Limit>
            </Directory>       
    </Anonymous>


  6. In der Umgebung des OM SLS brauchen wir den Postfix Mail Server nicht, weil dieser Dienst schon von OM SLS zur Verfügung gestellt wird.
    Ich habe Postfix daher in der Datei /kolab/etc/rc.d/rc.kolab deaktiviert:
    #    echo "starting postfix ..."
    #    /kolab/sbin/postfix start

    und
    #    echo "stopping postfix ..."
    #    /kolab/sbin/postfix stop


  7. Ein paar Hinweise wie man Fehler näher untersuchen kann, und besser testen kann:
zurück zur Hauptseite


compile_install.sh
# needs to be changed to the position of the downloaded files from erfrakon
kolabinstall=/home/timop/kolab

function compAndInstall()
{
# compiles an rpm from source, as user kolab.
# then installs that new rpm as user root
PACKAGE=$1
VERSION=$2
DEFINE=$3
cmd="export PATH=/kolab/bin:/kolab/sbin:$PATH; cd /kolab/RPM/SRC/"$PACKAGE"; "
if [ -z "$3" ]
then
cmd=$cmd"rpm -bb "$PACKAGE".spec"
else
cmd=$cmd"rpm -ba "$PACKAGE".spec "$DEFINE
fi
su - kolab --command="$cmd"
export PATH=/kolab/bin:/kolab/sbin:$PATH
/kolab/bin/rpm -Uhv /kolab/RPM/PKG/$PACKAGE-$VERSION.ix86-linux2.4-kol.rpm
}


# some preparation to have enough diskspace (our / partition is not big enough)
mkdir /usr/local/kolab
ln -s /usr/local/kolab /kolab
mv /tmp /usr/local/kolab/tmp
ln -s /usr/local/kolab/tmp/ /tmp

# bootstrap openpkg
ln -s $kolabinstall /kolabsrc
mkdir /kolab/install
cd /kolab/install
sh $kolabinstall/openpkg-20030606-20030606.src.sh --prefix=/kolab --user=kolab --group=kolab 2>&1 | tee kolab.log
sh -x ./openpkg-20030606-20030606.ix86-linux2.4-kol.sh

# install the src rpms
su - kolab --command="export PATH=/kolab/bin:/kolab/sbin:$PATH; cd /kolabsrc; rpm -ihv *.src.rpm"

# compile and install the required packages
compAndInstall "make" "3.80-20030109"
compAndInstall "patch" "2.5.9-20030520"
compAndInstall "binutils" "2.14-20030613"
compAndInstall "gcc" "3.3-20030614"
compAndInstall "fsl" "1.1.0-20030522"
compAndInstall "procmail" "3.22-20030330"
compAndInstall "zlib" "1.1.4-20030227"
compAndInstall "expat" "1.95.6-20030130"
compAndInstall "readline" "4.3-20020718"
compAndInstall "ncurses" "5.3.20030614-20030615"
compAndInstall "perl" "5.8.0-20030409"
compAndInstall "perl-openpkg" "20030515-20030515"
compAndInstall "openssl" "0.9.7b-20030530"
compAndInstall "perl-ds" "20030123-20030123"
compAndInstall "perl-time" "20030325-20030325"
compAndInstall "perl-xml" "20030614-20030614"
compAndInstall "perl-term" "20030411-20030411"
compAndInstall "perl-crypto" "20030309-20030309"
compAndInstall "perl-conv" "20030513-20030513"
compAndInstall "perl-ssl" "20030614-20030614"
compAndInstall "perl-sys" "20030612-20030612"
compAndInstall "perl-util" "20030610-20030610"
compAndInstall "perl-mail" "20030521-20030521"
compAndInstall "perl-net" "20030614-20030614"
compAndInstall "perl-www" "1.2.1-1.2.1"
compAndInstall "perl-ldap" "20030520-20030520"
compAndInstall "m4" "1.4o-20020206"
compAndInstall "bison" "1.35-20030604"
compAndInstall "sed" "4.0.7-20030411"
compAndInstall "libiconv" "1.9.1-20030529"
compAndInstall "gettext" "0.12.1-20030528"
compAndInstall "imap" "2002d-20030530"
compAndInstall "getopt" "20030307-20030609"
compAndInstall "flex" "2.5.4a-20030402"
compAndInstall "pcre" "4.3-20030530"
compAndInstall "db" "4.1.25.1-20030605"
compAndInstall "mm" "1.3.0-20030307"

compAndInstall "gdbm" "1.8.3-20030213" "--define 'with_ndbm yes'"
compAndInstall "openldap" "2.1.21-20030609" "--define 'with_sasl no'"
compAndInstall "sasl" "2.1.13-20030530_kolab" "--define 'with_ldap yes' --define 'with_login yes'"
compAndInstall "postfix" "2.0.12-20030617" "--define 'with_sasl yes' --define 'with_tls yes' --define 'with_ldap yes'"
compAndInstall "imapd" "2.1.14-20030707_kolab" "--define 'with_groupfile_hack yes' --define 'with_vhost_hack yes'"
#compAndInstall "apache" "1.3.27-20030611" "--define 'with_mod_ssl yes' --define 'with_mod_dav yes' --define 'with_mod_auth_ldap yes' --define 'with_mod_php_openldap yes' --define 'with_mod_php_imap yes' --define 'with_mod_php yes' --define 'with_mod_php_gettext yes' --define 'with_gdbm yes' --define 'with_ndbm yes'"
compAndInstall "apache" "1.3.27-20030611" "--define 'with_mod_ssl yes' --define 'with_mod_dav yes' --define 'with_mod_auth_ldap yes' --define 'with_mod_php_openldap yes' --define 'with_mod_php_imap yes' --define 'with_mod_php yes' --define 'with_mod_php_gettext yes' --define 'with_gdbm_ndbm yes'
compAndInstall "proftpd" "1.2.8-20030609" "--define 'with_ldap yes'"
compAndInstall "kolab" "1.0-1.0.12" " "

# clean up
rm /tmp
mv /usr/local/kolab/tmp /tmp
rm /kolabsrc
rm -Rf /kolab/install

/sbin/chkconfig httpd off
/sbin/service httpd stop

# copy some prepared config files
cp kolab.init /etc/init.d/kolab
chmod a+x /etc/init.d/kolab
cp S65.internal.kolab /etc/om-firewall.d
chmod u+x /etc/om-firewall.d/S65.internal.kolab
cp proftpd.conf.template /kolab/etc/kolab
cp kolab.rc /kolab/etc/rc.d
chmod o+rx /kolab/etc/kolab

/kolab/etc/kolab/kolab_bootstrap -b
/kolab/etc/rc.d/rc.kolab start

/etc/init.d/om-firewall restart
/etc/init.d/kolab restart


echo "The compiled packages are in /kolab/RPM/PKG/*kol.rpm"
echo "building and installing of kolab finished."


install.sh
# needs to be changed to the position of the compiled files from whereever you got them
kolabinstall=/home/timop/kolab

# some preparation to have enough diskspace (our / partition is not big enough)
mkdir /usr/local/kolab
ln -s /usr/local/kolab /kolab

# bootstrap openpkg
sh -x ./openpkg-20030606-20030606.ix86-linux2.4-kol.sh

# install the required packages
export PATH=/kolab/bin:/kolab/sbin:$PATH
/kolab/bin/rpm -Uhv make-*-kol.rpm
/kolab/bin/rpm -Uhv patch-*-kol.rpm
/kolab/bin/rpm -Uhv binutils-*-kol.rpm
/kolab/bin/rpm -Uhv gcc-*-kol.rpm
/kolab/bin/rpm -Uhv procmail-*-kol.rpm
/kolab/bin/rpm -Uhv zlib-*-kol.rpm
/kolab/bin/rpm -Uhv expat-*-kol.rpm
/kolab/bin/rpm -Uhv readline-*-kol.rpm
/kolab/bin/rpm -Uhv openssl-*-kol.rpm
/kolab/bin/rpm -Uhv perl-*-kol.rpm
#/kolab/bin/rpm -Uhv perl-openpkg*-kol.rpm
#/kolab/bin/rpm -Uhv perl-conv*-kol.rpm
#/kolab/bin/rpm -Uhv perl-ssl*-kol.rpm
#/kolab/bin/rpm -Uhv perl-ds*-kol.rpm
#/kolab/bin/rpm -Uhv perl-time*-kol.rpm
#/kolab/bin/rpm -Uhv perl-util*-kol.rpm
#/kolab/bin/rpm -Uhv perl-mail*-kol.rpm
#/kolab/bin/rpm -Uhv perl-net*-kol.rpm
#/kolab/bin/rpm -Uhv perl-term*-kol.rpm
#/kolab/bin/rpm -Uhv perl-sys*-kol.rpm
#/kolab/bin/rpm -Uhv perl-crypto*-kol.rpm
#/kolab/bin/rpm -Uhv perl-www*-kol.rpm
#/kolab/bin/rpm -Uhv perl-xml*-kol.rpm
#/kolab/bin/rpm -Uhv perl-ldap*-kol.rpm
/kolab/bin/rpm -Uhv m4-*-kol.rpm
/kolab/bin/rpm -Uhv bison-*-kol.rpm
/kolab/bin/rpm -Uhv sed-*-kol.rpm
/kolab/bin/rpm -Uhv libiconv-*-kol.rpm
/kolab/bin/rpm -Uhv gettext-*-kol.rpm
/kolab/bin/rpm -Uhv imap-*-kol.rpm
/kolab/bin/rpm -Uhv getopt-*-kol.rpm
/kolab/bin/rpm -Uhv flex-*-kol.rpm
/kolab/bin/rpm -Uhv pcre-*-kol.rpm
/kolab/bin/rpm -Uhv fsl-*-kol.rpm
/kolab/bin/rpm -Uhv gdbm-*-kol.rpm
/kolab/bin/rpm -Uhv db-*-kol.rpm
/kolab/bin/rpm -Uhv mm-*-kol.rpm
/kolab/bin/rpm -Uhv ncurses-*-kol.rpm
/kolab/bin/rpm -Uhv openldap*kol.rpm
/kolab/bin/rpm -Uhv sasl*kol.rpm
/kolab/bin/rpm -Uhv postfix*kol.rpm
/kolab/bin/rpm -Uhv imapd*kol.rpm
/kolab/bin/rpm -Uhv apache*kol.rpm
/kolab/bin/rpm -Uhv proftpd*kol.rpm
/kolab/bin/rpm -Uhv kolab*kol.rpm

/sbin/chkconfig httpd off
/sbin/service httpd stop

# copy some prepared config files
cp kolab.init /etc/init.d/kolab
chmod a+x /etc/init.d/kolab
cp S65.internal.kolab /etc/om-firewall.d
chmod u+x /etc/om-firewall.d/S65.internal.kolab
cp proftpd.conf.template /kolab/etc/kolab
cp kolab.rc /kolab/etc/rc.d
chmod o+rx /kolab/etc/kolab

/kolab/etc/kolab/kolab_bootstrap -b
/kolab/etc/rc.d/rc.kolab start

/etc/init.d/om-firewall restart
/etc/init.d/kolab restart

echo "installing of kolab finished."