HOWTO: Open Xchange installieren am Beispiel Ubuntu 6.06 LTS Dapper Drake

maetzchen

Registered User
(HOWTO-Version: 20060829-1050)

+++ ACHTUNG +++
Ins HOWTO hatte sich bei den Punkten 21-22 ein kleiner aber fataler (Tipp-)Fehler eingeschlichen, der zum bei Open-Xchange gefürchteten Fehler "ERROR: Authentification failed" geführt hat. Das wurde nun korrigiert.

Dafür habe ich das HOWTO auch noch mal mit Debian Sarge 3.1r2 getestet. Funktioniert alles einwandfrei!
Einzige Unterschiede: Die PostgreSQL-Konfiguration liegt nicht ganz so verschachtelt in /etc, die init.d-Scripts heißen etwas anders und Konfigurationsdateien haben teilweise anderen default Inhalt...



Hallo zusammen,

Hier nun das angekündigte zweite HOWTO, wie man Open Xchange, kurz: OX, installiert.

Dieses HOWTO setzt auf mein Ubuntu 6.06 LTS Dapper Drake-HOWTO auf, zu finden unter https://serversupportforum.de/threa...uf-vserver-oder-rootds-oder-root-server.9548/ , d.h. klappt damit auf also auf jeden Fall.

Prinzipiell funktioniert die hier beschriebene Vorgehensweise aber mit jeder x-beliebigen Distribution. Neben Debian (stable und testing) bzw. Ubuntu (5.10 und 6.06) hab ichs auch mal auf einer SuSE installiert, 9.0 glaub ich, aber das war etwas frickelig. Ohne jetzt einen Flamewar auszulösen: für Debian/Ubuntu spricht nun mal das genial einfache Paket-Management. :)
Wer jedoch zuerst die gleichen Voraussetzungen (Compiler, PostgreSQL, LDAP, ...) auf seiner Distribution schafft, sollte in der Lage sein, mit dem Rest dieses HOWTOs auch auf seinem Lieblings-Linux in den Genuss von OX zu kommen (Details wie Pfade könnten natürlich abweichen...).

---

Technische Voraussetzung für die Installation ist ein stabil laufendes Linux, idealerweise dieses hier. :)

Voraussetzung an euch: Geduld und Genauigkeit, die OX-Installation ist nicht ganz einfach und erfahrungsgemäß: SEHR EMPFINDLICH!

Die Installation umfasst folgende Schritte:

  • Vorbereitung
  • Software herunterladen
  • Java installieren
  • Apache Ant installieren
  • zlib installieren
  • JARs installieren
  • OpenSSL installieren
  • Apache installieren
  • SSL-Zertifikat erstellen
  • Apache konfigurieren
  • Apache Tomcat Connector installieren
  • Apache Tomcat Connector konfigurieren
  • Apache Tomcat installieren
  • Open Xchange installieren
  • Open Xchange konfigurieren
  • Apache Tomcat konfigurieren (1)
  • Zenith Iconset installieren
  • PostgreSQL konfigurieren
  • Datenbank aufsetzen
  • LDAP konfigurieren
  • LDAP aufsetzen
  • OX-Benutzer einrichten
  • Apache Tomcat konfigurieren (2)
  • OX starten...
  • Einloggen
  • OX automatisch beim Booten starten
  • Fertig

Dieses HOWTO installiert für OX einen eigenen Apache 2 mit SSL und einen eigenen Tomcat 5. Von Debian werden lediglich LDAP und PostgreSQL verwendet. Das macht es einfacher, OX (und SSL) optimal zu konfigurieren.
Solltet ihr schon einen eigenen Apache laufen haben, ist das also absolut kein Problem.
Allerdings wird davon ausgegangen, dass PostgreSQL und LDAP erst mal für nichts anderes verwendet werden, als OX. Falls etwas schon im produktiven Einsatz sein sollte, müsst ihr bei den entsprechenden Schritten nach euren Vorstellungen vorgehen, damit nichts durcheinander kommt.

Wir beginnen direkt im normalen Server-Betrieb mit einem frischen SSH-Login und root-Rechten.


1. Vorbereitung

Zuerst müssen ein paar Pakete installiert werden. Unter Debian bzw. Ubuntu geht das recht einfach mit apt-get. Den folgenden Code (das ist ein einziger Befehl) einfach komplett am Prompt absetzen:

Code:
apt-get install -y \
postgresql \
slapd \
db4.2-util \
ldap-utils \
libc-dev \
g++ \
make \
unzip \
libauthen-sasl-perl \
libconvert-asn1-perl \
libio-socket-ssl-perl \
libnet-ldap-perl \
libnet-ssleay-perl \
libxml-namespacesupport-perl \
libxml-sax-perl

Hinweis: Beim Konfigurieren der Pakete könnt ihr ruhig überall direkt ENTER drücken und damit die defaults übernehmen. Die genaue Konfiguration findet nämlich später statt.

Da bei der Installation der Pakete PostgreSQL und LDAP automatisch gestartet werden, müssen die beiden erst wieder beendet werden, mit:

Code:
/etc/init.d/postgresql-7.4 stop
/etc/init.d/slapd stop

Nun müssen wir noch die Umgebung (Environment) aktualisieren, also:

Code:
nano -w /etc/profile

Ans Dateiende hängt ihr dann folgende Zeilen:

Code:
JAVA_HOME="/opt/java"
CATALINA_HOME="/opt/tomcat"
TOMCAT_HOME=$CATALINA_HOME
ANT_HOME="/usr/local/ant"
OX_HOME="/opt/openxchange"
PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin:$ANT_HOME/bin:$OX_HOME/sbin:$OX_HOME/bin
export JAVA_HOME CATALINA_HOME TOMCAT_HOME ANT_HOME OX_HOME PATH

Dann speichern und den Editor verlassen.

Damit das neue Environment sogleich gültig wird:

Code:
source /etc/profile

(Der Befehl erzeugt keinen Output)


2. Software herunterladen

Jetzt muss eine Menge Software heruntergeladen werden.

Dazu legen wir uns ein Verzeichnis an, in das alle Downloads hineinkommen:

Code:
mkdir -p /root/software/ox
cd /root/software/ox

Hinweis: Alles bis auf die Downloads von Sun lassen sich direkt auf den Server mit wget runterladen. Die Sun-Downloads müssen per Browser runtergeladen werden, weil Sun Sessions verwendet. Dazu könnt ihr entweder w3m verwenden (textbasierter Browser) oder es zuerst bei euch lokal runterladen und dann z.B. mit scp (oder: WinSCP, WinSCP :: Download) auf euren Server hochladen.

Folgende Software wird benötigt:

Sun Java JDK 5.0 Update 7 (self-extracting file)
Java SE Downloads
jdk-1_5_0_07-linux-i586.bin

Apache HTTP Server 2.0.59 (source)
Download - The Apache HTTP Server Project
httpd-2.0.59.tar.gz

Apache Ant 1.6.5 (binary)
Apache Ant - Binary Distributions
apache-ant-1.6.5-bin.tar.gz

Apache Tomcat 5.0.30 (core binary)
Apache Tomcat - Apache Tomcat 5 Downloads
jakarta-tomcat-5.0.30.tar.gz
Achtung: nicht Version 5.5.x verwenden!

Apache Tomcat Connector 1.2.18 (source)
The Apache Tomcat Connector - Documentation Index
tomcat-connectors-1.2.18-src.tar.gz

zlib 1.2.3 (source)
zlib Home Site
zlib-1.2.3.tar.gz

PostgreSQL JDBC Driver 7.4 Build 216/JDBC 3
Download
pg74.216.jdbc3.jar

Nachtrag: Habe im OX-Forum gelesen, dass Build 215 stabiler laufen soll. Diese kann man herunterladen, indem man in der Download-URL die 216 einfach durch 215 ersetzt.

JavaMail API 1.4
JavaMail API
javamail-1_4.zip

JavaBeans(TM) Activation Framework 1.1
JavaBeans Activation Framework
jaf-1_1-fr.zip

JDOM 1.0 (binary)
Index of /dist/binary
jdom-1.0.tar.gz

Open-Xchange 0.8.2-1 (Convenience Pack)
OPEN-XCHANGE : The Collaboration and Integration Server Environment
open-xchange-0.8.2-1.tar.gz

Open-Xchange Zenith Iconset 0.1
OPEN-XCHANGE : The Collaboration and Integration Server Environment
ox_zenith_iconset-0.1.tar.gz

OpenSSL 0.9.8b (source)
OpenSSL: Source, Tarballs
openssl-0.9.8b.tar.gz


Wenn schließlich alles am richtigen Ort ist, sind das insgesamt 13 Dateien im Verzeichnis /root/software/ox.

Als nächsten installieren wir die Software.

Hinweis: Bei den Befehlen immer kucken, ob die Dateinamen noch die gleichen sind, da die Versionsnummern darin enthalten sind. Falls ihr eine neuere Version eines Downloads habt, die Befehle bitte entsprechend anpassen.


3. Java installieren

Zuerst wird Java installiert - und das ist denkbar einfach:

Code:
cd /root/software/ox
chmod +x jdk-1_5_0_07-linux-i586.bin
./jdk-1_5_0_07-linux-i586.bin

Tipp: Bei der Java-Lizenz einfach q eingeben, dann kann man gleich mit yes bestätigen und Java entpackt... :p

Wir verschieben Java nach /opt und legen einen Symlink an:

Code:
mv jdk1.5.0_07 /opt
cd /opt
ln -s jdk1.5.0_07 java
cd /root/software/ox

Fertig, Java ist installiert.


4. Apache Ant installieren

Nun installieren wir Apache Ant. Auch das ist nicht schwer. Einfach entpacken :rolleyes: :

Code:
tar zxvf apache-ant-1.6.5-bin.tar.gz

Auch Ant verschieben wir - nach /usr/local - und legen einen Symlink an:

Code:
mv apache-ant-1.6.5 /usr/local
cd /usr/local
ln -s apache-ant-1.6.5 ant
cd /root/software/ox


5. zlib installieren

Als nächsten ist die zlib dran. Die entpacken, kompilieren und installieren wir, mit:

Code:
tar zxvf zlib-1.2.3.tar.gz
cd zlib-1.2.3
./configure
make
make install
cd ..

Schon fertig.


6. JARs installieren

OX benötigt einige Java-Komponenten. Diese entpacken wir und kopieren sie alle nach /usr/local/lib:

Code:
cp pg74.216.jdbc3.jar /usr/local/lib/pgsql.jar

unzip javamail-1_4.zip
cp javamail-1.4/mail.jar /usr/local/lib

unzip jaf-1_1-fr.zip
cp jaf-1.1/activation.jar /usr/local/lib

tar zxvf jdom-1.0.tar.gz
cp jdom-1.0/build/jdom.jar /usr/local/lib

tar zxvf jakarta-tomcat-5.0.30.tar.gz
cp jakarta-tomcat-5.0.30/common/lib/servlet-api.jar /usr/local/lib

Wichtig: Der PostgreSQL JDBC Driver wird in pgsql.jar umbenannt.

Nun am besten in /usr/local/lib kontrollieren, ob sich wirklich alle folgenden JARs darin befinden:

Code:
activation.jar
jdom.jar
mail.jar
pgsql.jar
servlet-api.jar

Ja? Wunderbar! ;)


7. OpenSSL installieren

OpenSSL benötigen wir, damit wir die Oberfläche von OX im Browser auch schön sicher über SSL erreichen.

Also:

Code:
cd /root/software/ox
tar zxvf openssl-0.9.8b.tar.gz
cd openssl-0.9.8b

OpenSSL hat Schwierigkeiten auf x64 zu kompilieren. Um x86 (linux-elf) zu erzwingen ist ein kleiner Tweak notwendig:

Code:
nano -w Configure

Dann Ausschau halten nach:

Code:
print "Configuring for $target\n";

Das dürfte so um Zeile 858 sein. Und diese Stelle so anpassen:

Code:
$target = "linux-elf";
print "Configuring for $target\n";

Nun können wir kompilieren und installieren, mit:

Code:
./config --prefix=/usr/local --openssldir=/usr/local/openssl
make
make install
cd ..

Voila, OpenSSL ist installiert.


8. Apache installieren

Als nächstes installieren wir Apache:

Code:
tar zxvf httpd-2.0.59.tar.gz
cd httpd-2.0.59

Folgender Code ist ein Befehl:

Code:
./configure \
--prefix=/usr/local/apache2 \
--enable-deflate \
--enable-proxy \
--enable-ssl \
--enable-vhost-alias \
--enable-rewrite \
--enable-so \
--with-ssl=/usr/local/openssl \
--with-mpm=prefork

Und schließlich kompilieren und installieren, mit:

Code:
make
make install
cd ..

Wunderbar, Apache ist installiert.


9. SSL-Zertifikat erstellen

Als nächstes erstellen wir ein SSL-Zertifikat für den Apache:

Code:
cd /usr/local/apache2/conf
mkdir ssl.crt
mkdir ssl.key
openssl req -new -x509 -nodes -out server.crt -keyout server.key -days 365

Damit legen wir ein SSL-Zertifikat an, das 365 Tage gültig ist. Danach sollte das Zertifikat aktualisiert werden, sonst motzt der Browser (falls er es nicht sowieso tut, weil das Zertifikat natürlich nicht offiziell beglaubigt ist).

Wichtig: Bei Common Name müsst ihr den Namen eingeben, unter dem ihr später den OX über den Browser erreichen wollt, also entweder direkt die IP-Adresse des Servers oder die URL, die ihr später verwendet, z.B. ox.server.de.

Nun noch die Symlinks anlegen, damit der Apache das SSL-Zertifikat auch findet:

Code:
ln -s ../server.crt ssl.crt
ln -s ../server.key ssl.key


10. Apache konfigurieren

Nun müssen wir im Apache ein paar Kleinigkeiten konfigurieren.

In der Datei httpd.conf stellen wir ein, dass der Apache nicht mehr auf Port 80 lauscht. Wir verwenden diesen Apache ja ausschließlich für SSL, also:

Code:
nano -w httpd.conf

Nun suchen nach:

Code:
Listen 80

...und ändern in:

Code:
#Listen 80

Außerdem suchen nach:

Code:
#NameVirtualHost *:80

...und ändern in:

Code:
NameVirtualHost *

Dann speichern und den Editor verlassen.

Nun noch ein paar SSL-Einstellungen, also:

Code:
nano -w ssl.conf

Nun suchen nach:

Code:
<VirtualHost _default_:443>

#   General setup for the virtual host
DocumentRoot "/usr/local/apache2/htdocs"
ServerName www.example.com:443

Ihr braucht nun die IP-Adresse eures Servers und/oder die URL, unter der ihr den OX dann im Brower ansprechen wollt (die ihr eben auch schon beim Erstellen des SSL-Zertifikats als Common Name angegeben habt).

Angenommen eure IP-Adresse lautet 10.0.0.1 und die URL lautet ox.server.de, dann müsstet ihr den Abschnitt ändern in:

Code:
<VirtualHost *>

#   General setup for the virtual host
DocumentRoot "/usr/local/apache2/htdocs"
ServerName ox.server.de
ServerAlias 10.0.0.1

Schließlich speichern und den Editor verlassen.

Hinweis: Natürlich kann man den Apache noch etwas besser konfigurieren, aber das überlasse ich euch. Die hier genannten Einstellungen sind nur die absolut grundlegenden, damit OX läuft, prinzipiell lassen sich aber noch eine Menge anderer Dinge einstellen, um den Apache zu tunen und natürlich: abzusichern.


11. Apache Tomcat Connector installieren

Als nächstes Installieren wir den Apache Tomcat Connector, also:

Code:
cd /root/software/ox
tar zxvf tomcat-connectors-1.2.18-src.tar.gz
cd tomcat-connectors-1.2.18-src/native
./configure --with-apxs=/usr/local/apache2/bin/apxs
make
make install

Fertig.


12. Apache Tomcat Connector konfigurieren

Nun müssen wir den Apache Tomcat Connector konfigurieren, also:

Code:
cd /usr/local/apache2/conf
nano -w httpd.conf

Nun suchen wir nach:

Code:
#
# Dynamic Shared Object (DSO) Support
#
# To be able to use the functionality of a module which was built as a DSO you
# have to place corresponding `LoadModule' lines at this location so the
# directives contained in it are actually available _before_ they are used.
# Statically compiled modules (those listed by `httpd -l') do not need
# to be loaded here.
#
# Example:
# LoadModule foo_module modules/mod_foo.so
#

...und ändern den Block wie folgt ab, indem wir eine Zeile hinzufügen:

Code:
.
.
.
#
# Example:
# LoadModule foo_module modules/mod_foo.so
#
LoadModule jk_module modules/mod_jk.so

Ans Ende der Datei hängen wir noch folgende Zeilen:

Code:
<IfModule mod_jk.c>
JkWorkersFile /usr/local/apache2/conf/workers.properties
JkLogFile /usr/local/apache2/logs/mod_jk.log
JkLogLevel warn
JkMount /*.jsp localhost
JkMount /servlet/* localhost
JkMount /umin/* localhost
</IfModule>

Speichern und Editor schließen.

Nun legen wir noch eine workers-Datei an, also:

Code:
nano -w workers.properties

Die Datei erhält folgenden Inhalt:

Code:
worker.list=localhost
worker.localhost.type=ajp13
worker.localhost.host=localhost
worker.localhost.port=8009
workers.java_home=/opt/java
workers.tomcat_home=/opt/tomcat

Fertig, der Apache Tomcat Connector ist konfiguriert.


13. Apache Tomcat installieren

Die Tomcat installation ist denkbar einfach.

Verschieben:

Code:
cd /root/software/ox
mv jakarta-tomcat-5.0.30 /opt

Und einen Symlink anlegen:

Code:
cd /opt
ln -s jakarta-tomcat-5.0.30 tomcat

Fertig.


14. Open Xchange installieren

Worum gings eigentlich? Achja, wir wollten OX installieren :) - also tun wir dies.

Code:
cd /root/software/ox
tar zxvf open-xchange-0.8.2.tar.gz
cd open-xchange-0.8.2

Folgende Überlegung müsst ihr vorher anstellen: Welchen Basisnamen soll der LDAP-Server haben?

Bei meinen HOWTOs rede ich immer vom server.de. Um das ganze auf euren Namen zu münzen, müsst ihr den folgenden configure-Befehl anpassen. Das betrifft die Option --with-domain, vor allem aber Daten im Zusammenhang mit der LDAP-Konfiguration. Ohne hier näher auf die Struktur eines LDAP-Servers einzugehen, es geht um den Teil dc=server,dc=de. Wenn euer Server zum Beispiel lalala.com heißt, müsst ihr die Angaben entsprechend mit dc=lalala,dc=com anpassen.

Auch Gedanken kann man sich über seinen "Organisationsnamen" machen, angegeben mit dem Schalter --with-organization. Dort könnt ihr eigentlich eingeben was ihr wollt, ich verwende meistens den Domainnamen selbst. Was sonst?

Das ergibt dann folgenden einen Befehl:

Code:
./configure \
--prefix=/opt/openxchange \
--enable-webdav \
--enable-doc \
--with-mailjar=/usr/local/lib/mail.jar \
--with-activationjar=/usr/local/lib/activation.jar \
--with-jdomjar=/usr/local/lib/jdom.jar \
--with-jsdkjar=/usr/local/lib/servlet-api.jar \
--with-jdbcjar=/usr/local/lib/pgsql.jar \
--with-dbname=openxchange \
--with-dbuser=openxchange \
--with-dbpass=secret \
--with-runuid=nobody \
--with-rungid=nogroup \
--with-domain=server.de \
--with-organization="server.de" \
--with-basedn=dc=server,dc=de \
--with-rootdn=cn=admin,dc=server,dc=de \
--with-rootpw=secret \
--with-htdocsdir=/usr/local/apache2/htdocs \
--with-cgibindir=/usr/local/apache2/cgi-bin

Nach dem configure-Befehl wird OX compiliert und installiert, mit:

Code:
make
make install


15. Open Xchange konfigurieren

Nun müssen wir OX noch konfigurieren...

Zuerst einmal müssen folgende Befehle ausgeführt werden - hier reicht ein Copy&Paste:

Code:
mkdir -p /opt/tomcat/webapps/servlet/WEB-INF/classes
mkdir /opt/tomcat/webapps/servlet/WEB-INF/lib

cp /opt/openxchange/share/servlets/*.class /opt/tomcat/webapps/servlet/WEB-INF/classes
cp ~/software/ox/open-xchange-*/system/servlet/web.xml /opt/tomcat/webapps/servlet/WEB-INF
cp /opt/openxchange/lib/*.jar /opt/tomcat/webapps/servlet/WEB-INF/lib
cp /usr/local/lib/mail.jar /opt/tomcat/webapps/servlet/WEB-INF/lib
cp /usr/local/lib/activation.jar /opt/tomcat/webapps/servlet/WEB-INF/lib
cp /usr/local/lib/jdom.jar /opt/tomcat/webapps/servlet/WEB-INF/lib
cp /usr/local/lib/pgsql.jar /opt/tomcat/webapps/servlet/WEB-INF/lib
cp /opt/openxchange/lib/umin.war /opt/tomcat/webapps

ln -s /etc/ldap/ldap.conf /opt/openxchange/etc/groupware/ldap.conf
ln -s /etc/ldap/ldap.conf /opt/openxchange/etc/webmail/ldap.conf

Fertig.


16. Apache Tomcat konfigurieren (1)

Nun muss an Tomcat noch etwas gefeilt werden, dazu:

Code:
nano -w /opt/tomcat/bin/catalina.sh

Gleich am Dateianfang sind nach dem längeren Kommentar zwei Zeilen einzufügen. Also wird aus:

Code:
.
.
.
#
#   CATALINA_PID    (Optional) Path of the file which should contains the pid 
#                   of catalina startup java process, when start (fork) is used
#
# $Id: catalina.sh,v 1.13.2.2 2004/11/17 20:06:34 yoavs Exp $
# -----------------------------------------------------------------------------

# OS specific support.  $var _must_ be set to either true or false.
cygwin=false
os400=false
case "`uname`" in
.
.
.

ein:

Code:
.
.
.
#
# $Id: catalina.sh,v 1.13.2.2 2004/11/17 20:06:34 yoavs Exp $
# -----------------------------------------------------------------------------

JAVA_HOME="/opt/java"
JAVA_OPTS="-Dopenexchange.propfile=/opt/openxchange/etc/groupware/system.properties"

# OS specific support.  $var _must_ be set to either true or false.
cygwin=false
os400=false
case "`uname`" in
.
.
.

Dann speichern und den Editor verlassen.

Außerdem:

Code:
nano -w /opt/tomcat/conf/tomcat-users.xml

Aus:

Code:
<tomcat-users>
  <user name="tomcat" password="tomcat" roles="tomcat" />
  <user name="role1"  password="tomcat" roles="role1"  />
  <user name="both"   password="tomcat" roles="tomcat,role1" />
</tomcat-users>

Wird:

Code:
<tomcat-users>
  <user name="tomcat" password="tomcat" roles="tomcat" />
  <user name="role1"  password="tomcat" roles="role1"  />
  <user name="both"   password="tomcat" roles="tomcat,role1" />
  <user name="admin"  password="secret" roles="manager" />
</tomcat-users>

...und schließlich speichern und den Editor beenden.

Fertig.


17. Zenith Iconset installieren

Die Standard-Icons von OX sind richtig schön hässlich... Also:

Code:
cd /root/software/ox
tar zvxf ox_zenith_iconset-0.1.tar.gz
cd ox_zenith_iconset/top
cp * /usr/local/apache2/htdocs/cfintranet/images/top/DE
cp * /usr/local/apache2/htdocs/cfintranet/images/top/EN

Fertig.


18. PostgreSQL konfigurieren

Als nächsten konfigurieren wir PostgeSQL, also:

Code:
nano -w /etc/postgresql/7.4/main/postgresql.conf

Aus:

Code:
#tcpip_socket = false

Wird:

Code:
tcpip_socket = true

Speicher und Editor verlassen.

Außerdem:

Code:
nano -w /etc/postgresql/7.4/main/pg_hba.conf

Im untersten Block werden alle Einstellungen auskommentiert, also wird:

Code:
local   all         all                                             ident sameuser
# IPv4-style local connections:
host    all         all         127.0.0.1         255.255.255.255   md5
# IPv6-style local connections:
host    all         all         ::1               ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff        md5

zu:

Code:
#local   all         all                                             ident sameuser
# IPv4-style local connections:
#host    all         all         127.0.0.1         255.255.255.255   md5
# IPv6-style local connections:
#host    all         all         ::1               ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff        md5

Ans Dateiende hängen wir dann folgende zwei Zeilen:

Code:
local   all     all                                     trust
host    all     all     127.0.0.1       255.255.255.255 trust

Schließlich speichern und den Editor verlassen. Fertig.

Nun starten wir PostgreSQL, mit:

Code:
/etc/init.d/postgresql-7.4 start


19. Datenbank aufsetzen

Nun setzen wir die PostgreSQL-Datenbank für OX auf, also:

Code:
/bin/su - postgres
createuser --no-adduser --createdb --pwprompt openxchange
    Passwort "secret"
createdb -E UTF-8 -U openxchange openxchange
psql -U openxchange openxchange < /opt/openxchange/share/init_database.sql
exit
dbinit_ox


20. LDAP konfigurieren

Jetzt richten wir den LDAP-Server ein, also:

Code:
nano -w /etc/ldap/slapd.conf

Folgende Änderungen müssen gemacht werden:

Suchen:

Code:
include         /etc/ldap/schema/core.schema
include         /etc/ldap/schema/cosine.schema
include         /etc/ldap/schema/nis.schema
include         /etc/ldap/schema/inetorgperson.schema

Erweitern um eine Zeile zu:

Code:
include         /etc/ldap/schema/core.schema
include         /etc/ldap/schema/cosine.schema
include         /etc/ldap/schema/nis.schema
include         /etc/ldap/schema/inetorgperson.schema
include         /opt/openxchange/share/openxchange.schema

Weiter unten wird das Suffix der ersten LDAP-Datenbank gesetzt, also z.B.:

Code:
# The base of your directory in database #1
suffix          "dc=server,dc=de"

Unter:

Code:
# Indexing options for database #1
index           objectClass eq

...kommen zwei Zeilen hinzu, also wird daraus:

Code:
# Indexing options for database #1
index           objectClass eq

rootdn "cn=admin,dc=server,dc=de"
rootpw secret

Schließlich wird noch ein längerer Block auskommentiert und wird damit zu:

Code:
# Ensure read access to the base for things like
# supportedSASLMechanisms.  Without this you may
# have problems with SASL not knowing what
# mechanisms are available and the like.
# Note that this is covered by the 'access to *'
# ACL below too but if you change that as people
# are wont to do you'll still need this if you
# want SASL (and possible other things) to work
# happily.
#access to dn.base="" by * read

# The admin dn has full write access, everyone else
# can read everything.
#access to *
#        by dn="cn=admin,dc=de" write
#        by * read

Ans Dateiende kommt dann noch folgender Teil:

Code:
access to *
        by dn="cn=admin,dc=server,dc=de" write
        by dn="uid=USERNAME,ou=Users,ou=OxObjects,dc=server,dc=de" write
        by * read

Schließlich speichern und den Editor beenden.

Als nächsten müssen wir noch die zweite LDAP-Konfigurationdatei bearbeiten, also:

Code:
nano -w /etc/ldap/ldap.conf

Der Block:

Code:
#BASE   dc=example, dc=com
#URI    ldap://ldap.example.com ldap://ldap-master.example.com:666

...wird um zwei Zeilen erweitert und somit zu:


Code:
#BASE   dc=example, dc=com
#URI    ldap://ldap.example.com ldap://ldap-master.example.com:666
BASE dc=server,dc=de
HOST localhost

Speicher und den Editor verlassen. Fertig.


21. LDAP aufsetzen

Schließlich muss LDAP initialisiert werden.

Wie am Anfang dieses HOWTOs geschrieben, es wird davon ausgegangen, dass der LDAP-Server für nichts anderes verwendet wird als OX, also wird er erst mal platt gemacht, es kann nämlich sein, dass die Vorkonfiguration von Debian hier ein wenig in die Quere kommt, also:

Code:
cd /var/lib/ldap
rm *

Nun starten wir LDAP, beenden es aber gleich wieder:

Code:
/etc/init.d/slapd start
/etc/init.d/slapd stop

Nun wird der LDAP-Server mit den OX-Daten initialisiert, mit:

Code:
slapadd -l /opt/openxchange/share/init_ldap.ldif

Schließlich starten wir LDAP, mit:

Code:
/etc/init.d/slapd start

Voila, fertig ist der LDAP-Server.


22. OX-Benutzer einrichten

Nun wird es ernst, wir richten einen OX-Benutzer ein... :)

In diesem Beispiel richte ich mich einfach mal ein:

Code:
adduser_ox \
--username="mpath" \
--passwd=passwort \
--name="Matthias" \
--sname="Path" \
--maildomain=server.de \
--lang=DE \
--ox_timezone="Europe/Berlin"

Solltet ihr im OX mit Gruppen arbeiten wollen, hier noch das Beispiel mit der Gruppe Team 1:

Gruppe anlegen, mit:

Code:
addgroup_ox --group="Team 1"

Und den Benutzer mpath zur Gruppe Team 1 hinzufügen, mit:

Code:
addusertogroup_ox --user=mpath --group="Team 1"

Schließlich müsst ihr bei jedem neuen User LDAP anpassen, also:

Code:
nano -w /etc/ldap/slapd.conf

Am Ende haben wir dazu bereits eine Dummy-Zeile eingefügt, nämlich:

Code:
       by dn="uid=USERNAME,ou=Users,ou=OxObjects,dc=server,dc=de" write

Dort ersetzen wir den Platzhalter USERNAME durch den soeben angelegten Benutzernamen. Das ergibt also insgesamt:

Code:
access to *
        by dn="cn=admin,dc=server,dc=de" write
        by dn="uid=mpath,ou=Users,ou=OxObjects,dc=server,dc=de" write
        by * read

Speicher und den Editor verlassen.

Wichtig: Eine solche Zeile müsst ihr immer einfügen, wenn ihr einen neuen Benutzer für OX anlegt.


23. Apache Tomcat konfigurieren (2)

Nun noch ein kleiner Schritt um Tomcat ein wenig abzusichern:

Code:
chown -R nobody:nogroup /opt/jakarta-tomcat-*
chown -R nobody:nogroup /opt/tomcat


24. OX starten...

PostgreSQL und LDAP sollten bereits laufen. Nun starten wir "nur" noch OX, mit:

Code:
/opt/tomcat/bin/catalina.sh start
/opt/openxchange/etc/init.d/openexchange start
/usr/local/apache2/bin/apachectl -D SSL -k start

Sooo, das wars.


25. Einloggen

Nun wird es *** spannend ***...

Nun solltet ihr euch in OX einloggen können, die Adresse müsst ihr auf euren Server hin ummünzen, aber sie hat folgenden Aufbau:

Code:
https://ox.server.de/cgi-bin/login.pl

Uuund? Solltet ihr alles genauestens beachtet haben, könnt ihr euch in euren frisch gebackenen OX einloggen können. :)

Gratulation!!! - Und viel Spaß!


26. OX automatisch beim Booten starten

Wenn ihr OX automatisch beim Booten starten wollt, legt ihr am besten ein Start-Script an, unter Debian:

Code:
nano -w /etc/init.d/ox

Folgendes muss in die Datei:

Code:
#!/bin/sh
/opt/tomcat/bin/catalina.sh start
/opt/openxchange/etc/init.d/openexchange start
/usr/local/apache2/bin/apachectl -D SSL -k start

Speichern und den Editor beenden.

Nun noch ausführbar machen und verlinken:

Code:
chmod +x /etc/init.d/ox
cd /etc/rc2.d
ln -s ../init.d/ox S99ox

Hinweis: Falls ihr euch per default in einem anderen Runlevel befindet (einfach runlevel eingeben, dann seht ihr es), müsst ihr ggf. zuvor in ein anderes Verzeichnis wechseln. Bei Runlevel 3 zum Beispiel mit cd /etc/rc3.d.

Fertig!


27. Fertig

Sooooo, das wars. Im besten Fall läuft nun OX auf eurer Kiste.

Sollte ich etwas vergessen haben, über Feedback freue ich mich natürlich, Verbesserungsvorschläge oder Fehler (ohje...) überarbeite ich sehr gern. Vielleicht postet ihr aber auch die ein oder andere Erfolgsmeldung... :)

Falls ihr noch den erstklassigen Webmailer von OX nutzen wollt, benötigt ihr einen laufenden IMAP-Server. Das würde ich dann im nächsten HOWTO erklären, das wäre dann nämlich:

  • Installation von Postfix, IMAP über SSL, SpamAssassin und AMaViS auf diesem System


Viel Spaß und Erfolg mit/bei der Installation!
 
Last edited by a moderator:
Wow!
Vielen Dank für das HowTo. Super dass du dir soviel Arbeit gemacht hast und so detailiert beschrieben hast wie die Installation von OX funktioniert!
 
Erstmal Danke! fürs HowTo. Alles sehr ausführlich und verständlich beschrieben.

Habs mal auf nem frischen minimal Sarge ausprobiert nur leider kann ich mich mit keinem User in OX einloggen (ERROR: Authentication failed).

Haste vielleicht noch nen kleinen Tip für mich ?
 
zu TheSandman:

Dieser Fehler tritt eigentlich nur dann auf, wenn etwas in Sachen LDAP nicht korrekt funktioniert.

Zwei Möglichkeiten:

Erste: Da du "Debian" schreibst, schwebt mir was: Ich habe Debian mal über debootstrap installiert, nur leider hat diese Installation einen "Bug". Selbst wenn du explizit "sarge" angibst, wird ein "testing"-Debian installiert - auch dann, wenn du debootstrap definitiv aus dem stable-Zweig nimmst.
Denn: LDAP unter Debian/testing funktioniert nicht korrekt! (zumindest war das bei meinem letzten Test so - ca. 2-3 Wochen her; deswegen ja Ubuntu... :) ).

Leider weiß ich die Version nicht mehr genau, aber das Problem war, dass sich LDAP kurz nach dem Starten gleich wieder beendete. Keine Ahnung, wieso... :(

Beende LDAP doch mal und starte es dann neu. Und danach schau mal, ob LDAP auch tatsächlich läuft, zum Beispiel mit einem netstat -a | grep ldap bzw. netstat -a | grep 389.

Kommt nicht so etwas wie

Code:
tcp        0      0 *:ldap                  *:*                     LISTEN

bzw.

Code:
tcp        0      0 *:389                  *:*                     LISTEN

ist das genau dieser Fehler. Da müsste dann ein apt-get-Spezialist ran, wie man unter Debian die Installation einer bestimmten LDAP-Version, nämlich die aus Debian/stable, erzwingt - ohne komplett sein ganzes APT-System umzuwerfen...

Zweite Möglichkeit: Eventuell hast du den Basename im LDAP nicht konsequent auf deine Bedürfnisse umgemünzt. Bitte nochmal genauestens überprüfen, ob der Base-Name im LDAP wirklich überall korrekt gesetzt ist.

Nehmen wir an, deine Basis im LDAP soll heißen mein.ox, dann musst du überall, wo im HOWTO die Rede von dc=server,dc=de ist, das durch dc=mein,dc=ox ersetzen!

Das betrifft vor allem den configure-Befehl bei OX (Punkt 14), aber auch die gesamte Konfiguration des LDAP (Punkt 20).

Vielleicht ist meine Beschreibung da auch etwas schlecht, nur leider war das HOWTO als Posting zu groß (maximal 30.000 Zeichen :( ). Deswegen hier noch mal Musterbeispiele von für dc=server,dc=de konfigurierten LDAP-Dateien:

/etc/ldap/slapd.conf:
Code:
# This is the main slapd configuration file. See slapd.conf(5) for more
# info on the configuration options.

#######################################################################
# Global Directives:

# Features to permit
#allow bind_v2

# Schema and objectClass definitions
include         /etc/ldap/schema/core.schema
include         /etc/ldap/schema/cosine.schema
include         /etc/ldap/schema/nis.schema
include         /etc/ldap/schema/inetorgperson.schema
include         /opt/openxchange/share/openxchange.schema

# Schema check allows for forcing entries to
# match schemas for their objectClasses's
schemacheck     on

# Where the pid file is put. The init.d script
# will not stop the server if you change this.
pidfile         /var/run/slapd/slapd.pid

# List of arguments that were passed to the server
argsfile        /var/run/slapd.args

# Read slapd.conf(5) for possible values
loglevel        0

# Where the dynamically loaded modules are stored
modulepath      /usr/lib/ldap
moduleload      back_bdb

#######################################################################
# SSL:
# Uncomment the following lines to enable SSL and use the default
# snakeoil certificates.
#TLSCertificateFile      /etc/ssl/certs/ssl-cert-snakeoil.pem
#TLSCertificateKeyFile   /etc/ssl/private/ssl-cert-snakeoil.key

#######################################################################
# Specific Backend Directives for bdb:
# Backend specific directives apply to this backend until another
# 'backend' directive occurs
backend         bdb
checkpoint 512 30

#######################################################################
# Specific Backend Directives for 'other':
# Backend specific directives apply to this backend until another
# 'backend' directive occurs
#backend                <other>

#######################################################################
# Specific Directives for database #1, of type bdb:
# Database specific directives apply to this databasse until another
# 'database' directive occurs
database        bdb

# The base of your directory in database #1
suffix          "dc=server,dc=de"

# Where the database file are physically stored for database #1
directory       "/var/lib/ldap"

# Indexing options for database #1
index           objectClass eq

rootdn  "cn=admin,dc=server,dc=de"
rootpw  secret

# Save the time that the entry gets modified, for database #1
lastmod         on

# Where to store the replica logs for database #1
# replogfile    /var/lib/ldap/replog

# The userPassword by default can be changed
# by the entry owning it if they are authenticated.
# Others should not be able to see it, except the
# admin entry below
# These access lines apply to database #1 only
access to attrs=userPassword
        by dn="cn=admin,dc=server,dc=de" write
        by anonymous auth
        by self write
        by * none

# Ensure read access to the base for things like
# supportedSASLMechanisms.  Without this you may
# have problems with SASL not knowing what
# mechanisms are available and the like.
# Note that this is covered by the 'access to *'
# ACL below too but if you change that as people
# are wont to do you'll still need this if you
# want SASL (and possible other things) to work 
# happily.
#access to dn.base="" by * read

# The admin dn has full write access, everyone else
# can read everything.
#access to *
#        by dn="cn=admin,dc=server,dc=de" write
#        by * read

# For Netscape Roaming support, each user gets a roaming
# profile for which they have write access to
#access to dn=".*,ou=Roaming,o=morsnet"
#        by dn="cn=admin,dc=server,dc=de" write
#        by dnattr=owner write

#######################################################################
# Specific Directives for database #2, of type 'other' (can be bdb too):
# Database specific directives apply to this databasse until another
# 'database' directive occurs
#database        <other>

# The base of your directory for database #2
#suffix         "dc=debian,dc=org"

access to *
        by dn="cn=admin,dc=server,dc=de" write
#        by dn="uid=USERNAME,ou=Users,ou=OxObjects,dc=server,dc=de" write
        by dn="uid=mpath,ou=Users,ou=OxObjects,dc=server,dc=de" write
        by * read

...und...

/etc/ldap/ldap.conf
Code:
# $OpenLDAP: pkg/ldap/libraries/libldap/ldap.conf,v 1.9 2000/09/04 19:57:01 kurt Exp $
#
# LDAP Defaults
#

# See ldap.conf(5) for details
# This file should be world readable but not world writable.

#BASE   dc=example, dc=com
#URI    ldap://ldap.example.com ldap://ldap-master.example.com:666
BASE    dc=server,dc=de
HOST    localhost

#SIZELIMIT      12
#TIMELIMIT      15
#DEREF          never

Falls du nicht genau weißt, wo der Fehler aufgetreten ist, machste am besten einige Schritte rückgängig:

Setze die PostgreSQL-Datenbank zurück mit:

Code:
/bin/su - postgres
dropdb openxchange
dropuser openxchange
exit

...und führe die Schritte 14, 15 und alles ab incl. Schritt 19 noch einmal gewissenhaft aus.

Wie gesagt, die OX-Installation ist super-empfindlich - leider. Das ist halt dann doch der "Preis" für die GPL-Version. :)


Viel Erfolg!
 
zu son:

Du willst also ein un-HOWTO... ;)

Also eigentlich ist das mehr oder weniger einfach: Lösche alle kopierten/installierten Dateien bzw. die angelegten Symlinks, also u.a.:

  • lösche Java, Tomcat und OX in /opt
  • lösche Apache und Apache Ant in /usr/local
  • lösche die JARs in /usr/local/lib
  • stoppe LDAP und lösche den Inhalt in /var/lib/ldap
  • lösche alle entpackten Verzeichnisse in /root/software/ox
  • mache Änderungen an den Dateien /etc/profile, /etc/postgresql/7.4/main/postgresql.conf, /etc/postgresql/7.4/main/pg_hba.conf, /etc/ldap/slapd.conf und /etc/ldap/ldap.conf rückgängig

Außerdem entfernst du noch die PostgreSQL-Datenbank mit:

Code:
/bin/su - postgres
dropdb openxchange
dropuser openxchange
exit

Ich glaube das wars...


Wichtig ist vielleicht noch die Ansage: Die Befehle im HOWTO sind (bis auf Punkt 15) nicht pauschal zum Copy&Paste gedacht. Bitte vorher einen Blick in die Befehle werfen, was ihr für eure Konfiguration anpassen müsst. Es geht ja auch darum ungefähr zu verstehen was man macht... :)

Sonst hätte ich auch ein Bash-Script posten können... :D

Übrigens hab ich das wirklich mal versucht, aber die Installation ist so komplex, das hat leider nicht so ganz hingehauen. Freiwillige vor!!! :p
 
Last edited by a moderator:
@Son

Habe dir im OX Forum darauf geantwortet.

Aber der Vollständigkeitshalber hier auch:

Schau mal unter /$OXHOME/var/log nach, dort werden i.d.R. Logfiles geschrieben . Ich schätze mal, SessionD wird nicht laufen, kannst überprüfen, indem /etc/init.d/tomcat start und anschließend mit stop. Tauchen Fehler auf, danach mal in das Logfile schauen, s.o.

Im Logfile könnte sowas wie "can´t allocate enough memory" oder ähnlich stehen. Wenn das so ist, musst du definitiv Änderungen im Java vornehmen (auf virtuellen Server in dessen Configs umstellen).
Aber selbst wenn es anschließend funktionieren sollte, glaube ich nicht dass besonders glücklich mit OX wirst...
 
@maetzchen

Ist nen reines Sarge, also nicht über debstrap installiert.

Code:
lsof -i |grep ldap
slapd     2004     root    6u  IPv6   4131       TCP *:ldap (LISTEN)
slapd     2004     root    7u  IPv4   4132       TCP *:ldap (LISTEN)

Die Installation einer bestimmten LDAP-Version kannst du mithilfe von "apt-pinning" erreichen - aber das ist ja nicht das Thema.


Überall richtigen Basename eingetragen, die Configs überprüft, Schritte nochmal einzeln ausgeführt jedoch leider keine Besserung! Leider immer noch Fehler bei der Authentifizierung !
 
@Son

Habe dir im OX Forum darauf geantwortet.

Hi, Danke Dir... also sessiond läuft. Tomcat und alles andere hab ich natuerlich mal neugestartet. Bin die nächsten Tage geschäftlich unterwegs - werde es mir dann aber anschauen. btw. nix vserver *pff* hab nen root, aber darauf soll es gar nicht laufen :) Das ist meine Kiste hier @home. Ist zwar mit Kanonen auf Spatzen aber ich hab hier 4 rechner und will imap und so ne groupware wäre schon was feines... wenn es nicht klappen sollte (ohne grösseren aufwand) dann wird es halt imap + fetchmail und konsorten und n standard client... evtl. noch squirrel.

danke für das un-howto :D

Gruss
Son
 
Last edited by a moderator:
@TheSandman:

Hab jetzt noch mal all meine Notizen mit dem HOWTO verglichen, aber ich habe definitiv keinen Schritt vergessen. Das HOWTO is also vollständig. :D

Deswegen hab ich leider auch keine Antwort auf dein Problem. Was du höchstens mal probieren könntest, ist direkt an den LDAP-Server gehen und kucken, ob alles passt.

Unter Windows gibts dazu das kostenfreie LDAP Admin, zu bekommen unter LDAP Admin: Overview .

Das installierst du und connectierst zu deinem LDAP-Server mit folgenden Angaben:

LDAP-Server: deine LDAP-Server-IP
Base: dc=server,dc=de
Username: cn=admin,dc=server,dc=de
Password: secret

Natürlich musst du auch hier das dc=server,dc=de durch deine verwendeten Angaben ersetzen.

Nach dem Login (falls der klappt) solltest du etwas sehen, so ähnlich wie im Attachment.

Falls das geht, solltest du auch mal versuchen, dich mit den Angaben eines OX-Users einzuloggen, also zum Beispiel mit:

Base: dc=server,dc=de
Username: uid=mmustermann,ou=Users,ou=OxObjects,dc=server,dc=de
Password: mypassword

Falls das klappt und deine LDAP-Struktur ähnlich aussieht, ist es wohl kein Fehler am LDAP-Server, sondern in der OX-Konfiguration.

Probier das doch mal aus.


Viel Erfolg,
Matthias
 

Attachments

  • ox-ldap-struktur.gif
    ox-ldap-struktur.gif
    10.2 KB · Views: 942
Last edited by a moderator:
Authentification Failure

Hi!

Habe auch mal versucht nach deiner (äußerst gelungenen Anleitung!) open-xchange zu installieren.
Klappt auch alles prima, bis auf die Anmeldung :(

Habe alles mehrfach überprüft, sql gedropt und neu erstellt ...

Mittels LDAP Admin und:
LDAP-Server: meine LDAP-Server-IP
Base: dc=server,dc=de (entsprechend meiner Anpassung geändert)
Username: cn=admin,dc=server,dc=de
Password: secret

kann ich mich auch connecten!

Als OX-User klappt der connect nur, wenn ich statt
Username: cn=mmustermann,dc=server,dc=de
Username: uid=mmustermann,ou=Users,ou=OxObjects,dc=server,dc=de
benutze!?

Hilft dir das, mir zu helfen? :rolleyes:

LG
Roman
 
@Uatschitchun

Stimmt, das war mein Fehler, habs in meinem Beitrag auch ausgebessert: Der Benutzername bei OX-Benutzern ist so aufgebaut, wie du es geschrieben hast.

Trotzdem kann ich mir das nicht erklären, wieso die Authentifikation nicht klappt. Schick doch mal deine komlpette slapd.conf und ldap.conf-Datei und schau vielleicht auch mal in die Logs.

Irgendwie fuchst mich das ja jetzt. :o Bei mir steht demnächst wieder eine OX-Installation an, da werde ich mein HOWTO noch mal vergleichen, aber ich bin mir eigentlich 100%ig sicher, dass ich nichts vergessen habe.
Neben mir steht ein Test-OX, der genau so konfiguriert ist und der funktioniert prima... :confused:

Viele Grüße,
Matthias
 
Hi ... thx für die prompte Antwort!

Also, ich habe die komplette Installation nochmal nachvollzogen, ausgehend von einem sauberen Debian-Sid (dachte dies kommt Dapper am nächsten - werde es wohl aber auch nochmal unter Dapper probieren).

Zwei Dinge, die mir aufgefallen sind:
* Sollte man ggf. die Postgres-Einrichtung vorziehen, da OX-configure einen Database-Check macht, welcher failed?
* Um einen User einzurichten, brauchts noch ein
Code:
chown -R openldap:openldap /var/lib/ldap

Hier ist mal ein Logauszug (ldap) während des Verbindens:
Code:
Aug  9 02:55:15 sid slapd[3018]: connection_get(11): got connid=0
Aug  9 02:55:15 sid slapd[3018]: connection_read(11): checking for input on id=0
Aug  9 02:55:15 sid slapd[3018]: ber_get_next on fd 11 failed errno=11 (Resource temporarily unavailable)
Aug  9 02:55:15 sid slapd[3018]: do_bind
Aug  9 02:55:15 sid slapd[3018]: >>> dnPrettyNormal: <>
Aug  9 02:55:15 sid slapd[3018]: <<< dnPrettyNormal: <>, <>
Aug  9 02:55:15 sid slapd[3018]: do_bind: version=3 dn="" method=128
Aug  9 02:55:15 sid slapd[3018]: send_ldap_result: conn=0 op=2 p=3
Aug  9 02:55:15 sid slapd[3018]: send_ldap_response: msgid=3 tag=97 err=0
Aug  9 02:55:15 sid slapd[3018]: do_bind: v3 anonymous bind
Aug  9 02:55:15 sid slapd[3018]: connection_get(11): got connid=0
Aug  9 02:55:15 sid slapd[3018]: connection_read(11): checking for input on id=0
Aug  9 02:55:15 sid slapd[3018]: ber_get_next on fd 11 failed errno=11 (Resource temporarily unavailable)
Aug  9 02:55:15 sid slapd[3018]: do_search
Aug  9 02:55:15 sid slapd[3018]: >>> dnPrettyNormal: <ou=Users,ou=OxObjects,dc=koxhof,dc=local>
Aug  9 02:55:15 sid slapd[3018]: <<< dnPrettyNormal: <ou=Users,ou=OxObjects,dc=koxhof,dc=local>, <ou=users,ou=oxobjects,dc=koxhof,dc=local>
Aug  9 02:55:15 sid slapd[3018]: => get_ctrls
Aug  9 02:55:15 sid slapd[3018]: => get_ctrls: oid="2.16.840.1.113730.3.4.2" (noncritical)
Aug  9 02:55:15 sid slapd[3018]: <= get_ctrls: n=1 rc=0 err=""
Aug  9 02:55:15 sid slapd[3018]: slap_global_control: unavailable control: 2.16.840.1.113730.3.4.2
Aug  9 02:55:15 sid slapd[3018]: ==> limits_get: conn=0 op=3 dn="[anonymous]"
Aug  9 02:55:15 sid slapd[3018]: => bdb_search
Aug  9 02:55:15 sid slapd[3018]: bdb_dn2entry("ou=users,ou=oxobjects,dc=koxhof,dc=local")
Aug  9 02:55:15 sid slapd[3018]: search_candidates: base="ou=users,ou=oxobjects,dc=koxhof,dc=local" (0x00000003) scope=1
Aug  9 02:55:15 sid slapd[3018]: => bdb_equality_candidates (objectClass)
Aug  9 02:55:15 sid slapd[3018]: => key_read
Aug  9 02:55:15 sid slapd[3018]: <= bdb_index_read: failed (-30990)
Aug  9 02:55:15 sid slapd[3018]: <= bdb_equality_candidates: id=0, first=0, last=0
Aug  9 02:55:15 sid slapd[3018]: => bdb_dn2idl("ou=users,ou=oxobjects,dc=koxhof,dc=local")
Aug  9 02:55:15 sid slapd[3018]: <= bdb_dn2idl: id=2 first=21 last=35
Aug  9 02:55:15 sid slapd[3018]: => bdb_equality_candidates (uid)
Aug  9 02:55:15 sid slapd[3018]: <= bdb_equality_candidates: (uid) index_param failed (18)
Aug  9 02:55:15 sid slapd[3018]: => bdb_equality_candidates (objectClass)
Aug  9 02:55:15 sid slapd[3018]: => key_read
Aug  9 02:55:15 sid slapd[3018]: <= bdb_index_read 2 candidates
Aug  9 02:55:15 sid slapd[3018]: <= bdb_equality_candidates: id=2, first=21, last=35
Aug  9 02:55:15 sid slapd[3018]: bdb_search_candidates: id=2 first=21 last=35
Aug  9 02:55:15 sid slapd[3018]: bdb_search: 21 does not match filter
Aug  9 02:55:15 sid slapd[3018]: bdb_search: 35 does not match filter
Aug  9 02:55:15 sid slapd[3018]: send_ldap_result: conn=0 op=3 p=3
Aug  9 02:55:15 sid slapd[3018]: send_ldap_response: msgid=4 tag=101 err=0
Aug  9 02:55:17 sid slapd[3018]: connection_get(11): got connid=0
Aug  9 02:55:17 sid slapd[3018]: connection_read(11): checking for input on id=0
Aug  9 02:55:17 sid slapd[3018]: ber_get_next on fd 11 failed errno=11 (Resource temporarily unavailable)
Aug  9 02:55:17 sid slapd[3018]: do_bind
Aug  9 02:55:17 sid slapd[3018]: >>> dnPrettyNormal: <>
Aug  9 02:55:17 sid slapd[3018]: <<< dnPrettyNormal: <>, <>
Aug  9 02:55:17 sid slapd[3018]: do_bind: version=3 dn="" method=128
Aug  9 02:55:17 sid slapd[3018]: send_ldap_result: conn=0 op=4 p=3
Aug  9 02:55:17 sid slapd[3018]: send_ldap_response: msgid=5 tag=97 err=0
Aug  9 02:55:17 sid slapd[3018]: do_bind: v3 anonymous bind
Aug  9 02:56:17 sid slapd[3018]: connection_get(11): got connid=0
Aug  9 02:56:17 sid slapd[3018]: connection_read(11): checking for input on id=0
Aug  9 02:56:17 sid slapd[3018]: ber_get_next on fd 11 failed errno=11 (Resource temporarily unavailable)
Aug  9 02:56:17 sid slapd[3018]: do_bind
Aug  9 02:56:17 sid slapd[3018]: >>> dnPrettyNormal: <>
Aug  9 02:56:17 sid slapd[3018]: <<< dnPrettyNormal: <>, <>
Aug  9 02:56:17 sid slapd[3018]: do_bind: version=3 dn="" method=128
Aug  9 02:56:17 sid slapd[3018]: send_ldap_result: conn=0 op=5 p=3
Aug  9 02:56:17 sid slapd[3018]: send_ldap_response: msgid=6 tag=97 err=0
Aug  9 02:56:17 sid slapd[3018]: do_bind: v3 anonymous bind
Aug  9 02:57:17 sid slapd[3018]: connection_get(11): got connid=0
Aug  9 02:57:17 sid slapd[3018]: connection_read(11): checking for input on id=0
Aug  9 02:57:17 sid slapd[3018]: ber_get_next on fd 11 failed errno=11 (Resource temporarily unavailable)
Aug  9 02:57:17 sid slapd[3018]: do_bind
Aug  9 02:57:17 sid slapd[3018]: >>> dnPrettyNormal: <>
Aug  9 02:57:17 sid slapd[3018]: <<< dnPrettyNormal: <>, <>
Aug  9 02:57:17 sid slapd[3018]: do_bind: version=3 dn="" method=128
Aug  9 02:57:17 sid slapd[3018]: send_ldap_result: conn=0 op=6 p=3
Aug  9 02:57:17 sid slapd[3018]: send_ldap_response: msgid=7 tag=97 err=0
Aug  9 02:57:17 sid slapd[3018]: do_bind: v3 anonymous bind
Aug  9 02:57:17 sid slapd[3018]: connection_get(11): got connid=0
Aug  9 02:57:17 sid slapd[3018]: connection_read(11): checking for input on id=0
Aug  9 02:57:17 sid slapd[3018]: ber_get_next on fd 11 failed errno=11 (Resource temporarily unavailable)
Aug  9 02:57:17 sid slapd[3018]: do_unbind
Aug  9 02:57:17 sid slapd[3018]: connection_closing: readying conn=0 sd=11 for close
Aug  9 02:57:17 sid slapd[3018]: connection_resched: attempting closing conn=0 sd=11
Aug  9 02:57:17 sid slapd[3018]: connection_close: conn=0 sd=11
Aug  9 02:58:49 sid slapd[3018]: connection_get(11): got connid=1
Aug  9 02:58:49 sid slapd[3018]: connection_read(11): checking for input on id=1
Aug  9 02:58:49 sid slapd[3018]: ber_get_next on fd 11 failed errno=11 (Resource temporarily unavailable)
Aug  9 02:58:49 sid slapd[3018]: do_bind
Aug  9 02:58:49 sid slapd[3018]: >>> dnPrettyNormal: <>
Aug  9 02:58:49 sid slapd[3018]: <<< dnPrettyNormal: <>, <>
Aug  9 02:58:49 sid slapd[3018]: do_bind: version=3 dn="" method=128
Aug  9 02:58:49 sid slapd[3018]: send_ldap_result: conn=1 op=0 p=3
Aug  9 02:58:49 sid slapd[3018]: send_ldap_response: msgid=1 tag=97 err=0
Aug  9 02:58:49 sid slapd[3018]: do_bind: v3 anonymous bind

Hier meine slapd.conf:
Code:
# This is the main slapd configuration file. See slapd.conf(5) for more
# info on the configuration options.

#######################################################################
# Global Directives:

# Features to permit
#allow bind_v2

# Schema and objectClass definitions
include         /etc/ldap/schema/core.schema
include         /etc/ldap/schema/cosine.schema
include         /etc/ldap/schema/nis.schema
include         /etc/ldap/schema/inetorgperson.schema
include         /opt/openxchange/share/openxchange.schema

# Schema check allows for forcing entries to
# match schemas for their objectClasses's
schemacheck     on

# Where the pid file is put. The init.d script
# will not stop the server if you change this.
pidfile         /var/run/slapd/slapd.pid

# List of arguments that were passed to the server
argsfile        /var/run/slapd/slapd.args

# Read slapd.conf(5) for possible values
loglevel        1

# Where the dynamically loaded modules are stored
modulepath      /usr/lib/ldap
moduleload      back_bdb

# The maximum number of entries that is returned for a search operation
sizelimit 500

# The tool-threads parameter sets the actual amount of cpu's that is used
# for indexing.
tool-threads 1

#######################################################################
# Specific Backend Directives for bdb:
# Backend specific directives apply to this backend until another
# 'backend' directive occurs
backend         bdb
checkpoint 512 30

#######################################################################
# Specific Backend Directives for 'other':
# Backend specific directives apply to this backend until another
# 'backend' directive occurs
#backend                <other>

#######################################################################
# Specific Directives for database #1, of type bdb:
# Database specific directives apply to this databasse until another
# 'database' directive occurs
database        bdb

# The base of your directory in database #1
suffix          "dc=koxhof,dc=local"

# rootdn directive for specifying a superuser on the database. This is needed
# for syncrepl.
# rootdn          "cn=admin,dc=koxhof,dc=local"

# Where the database file are physically stored for database #1
directory       "/var/lib/ldap"

# For the Debian package we use 2MB as default but be sure to update this
# value if you have plenty of RAM
dbconfig set_cachesize 0 2097152 0

# Sven Hartge reported that he had to set this value incredibly high
# to get slapd running at all. See http://bugs.debian.org/303057
# for more information.

# Number of objects that can be locked at the same time.
dbconfig set_lk_max_objects 1500
# Number of locks (both requested and granted)
dbconfig set_lk_max_locks 1500
# Number of lockers
dbconfig set_lk_max_lockers 1500

# Indexing options for database #1
index           objectClass eq

rootdn "cn=admin,dc=koxhof,dc=local"
rootpw secret

# Save the time that the entry gets modified, for database #1
lastmod         on

# Where to store the replica logs for database #1
# replogfile    /var/lib/ldap/replog

# The userPassword by default can be changed
# by the entry owning it if they are authenticated.
# Others should not be able to see it, except the
# admin entry below
# These access lines apply to database #1 only
access to attrs=userPassword,shadowLastChange
        by dn="cn=admin,dc=koxhof,dc=local" write
        by anonymous auth
        by self write
        by * none

# Ensure read access to the base for things like
# supportedSASLMechanisms.  Without this you may
# have problems with SASL not knowing what
# mechanisms are available and the like.
# Note that this is covered by the 'access to *'
# ACL below too but if you change that as people
# are wont to do you'll still need this if you
# want SASL (and possible other things) to work
# happily.
#access to dn.base="" by * read

# The admin dn has full write access, everyone else
# can read everything.
#access to *
#        by dn="cn=admin,dc=koxhof,dc=local" write
#        by * read


# For Netscape Roaming support, each user gets a roaming
# profile for which they have write access to
#access to dn=".*,ou=Roaming,o=morsnet"
#        by dn="cn=admin,dc=koxhof,dc=local" write
#        by dnattr=owner write

#######################################################################
# Specific Directives for database #2, of type 'other' (can be bdb too):
# Database specific directives apply to this databasse until another
# 'database' directive occurs
#database        <other>

# The base of your directory for database #2
#suffix         "dc=debian,dc=org"

access to *
        by dn="cn=admin,dc=koxhof,dc=local" write
        by dn="uid=mpath,ou=Users,ou=OxObjects,dc=koxhof,dc=local" write
        by dn="uid=mpath,ou=users,ou=oxobjects,dc=koxhof,dc=local" write
#        by dn="uid=USERNAME,ou=Users,ou=OxObjects,dc=koxhof,dc=local" write
        by * read

Und ldap.conf:
Code:
# $OpenLDAP: pkg/ldap/libraries/libldap/ldap.conf,v 1.9 2000/09/04 19:57:01 kurt Exp $
#
# LDAP Defaults
#

# See ldap.conf(5) for details
# This file should be world readable but not world writable.

#BASE   dc=example, dc=com
#URI    ldap://ldap.example.com ldap://ldap-master.example.com:666
BASE    dc=koxhof,dc=local
HOST    localhost

#SIZELIMIT      12
#TIMELIMIT      15
#DEREF          never

Habe lediglich aus "server.de" ein "koxhof.local" gemacht ... überall :)
Und das PW "secret" durch ein anderes ersetzt ... überall :)

Hoffe das hilft ...

Lg
Roman
 
@Uatschitchun

Unsere Logs sind bis auf ein paar Ausnahmen sehr ähnlich. Aber: Einen Unterschied habe ich gefunden, einen kleinen, aber vielleicht ist das das Problem:

In deiner slapd.conf ist der Abschnitt

Code:
access to attrs=userPassword,shadowLastChange
        by dn="cn=admin,dc=koxhof,dc=local" write
        by anonymous auth
        by self write
        by * none

Entferne da doch mal das ,shadowLastChange, so dass es lautet:

Code:
access to attrs=userPassword
        by dn="cn=admin,dc=koxhof,dc=local" write
        by anonymous auth
        by self write
        by * none

LDAP neu starten und...? Klappts? :confused:


Viele Grüße,
Matthias Path
 
@Uatschitchun

Entferne da doch mal das ,shadowLastChange, so dass es lautet:

und...? Klappts? :confused:

Hallo Matthias,

Nö, klappt leider nicht!

Dieser Unterschied war mir vorher schon einmal aufgefallen ... aber leider war es das nicht ...

Hat jmd. nach dieser exzellenten Anleitung denn schonmal OX unter Debian aufgesetzt?

LG
Roman

P.S. Werde es mal unter Dapper probieren ... ggf. gibt's da einen relevanten Versionsunterschied ...
 
Das ist schade, aber ich hoffe mein HOWTO gerät dadurch nicht in Unruf...

Es mal mit Dapper zu versuchen, wäre auch mein nächster Vorschlag gewesen. Nicht umsonst habe ich vorher das andere HOWTO erstellt... :)

Dapper basiert auf Debian, ist bei den Versionen aber teilweise deutlich neuer.


Viele Grüße,
Matthias
 
Kann keine Benutzer anlegen

Hallo zusammen,

habe mich nun auch daran versucht, Open-Xchange auf Ubuntu 6.06 zu installieren. Soweit klappt auch alles ganz gut, aber ich kann keine Benutzer einrichten.

Der Befehl adduser_ox (Parameter wie im How-to angegeben) wird bei mir mit einem

ldap_bind: Invalid DN syntax (34)

quittiert. Habe dann an der Stelle erst mal weiter gemacht, da ich davon ausgegangen bin, die Nutzer auch nach der Installation anlegen zu können. Soweit scheint Open-Xchange auch zu laufen, aber mangels eingerichtete Nutzer kann ich mich wie andere hier auch nicht einloggen. LDAP macht keine Probleme mit ldapadmin habe ich darauf. Mit den Admin-Daten kann ich mich aber ebenfalls nicht über das Web-Front-End einloggen. Für Ideen jeder Art wäre ich sehr dankbar.

Gruß
Torsten

Nachtrag:
Nur noch schnell ein paar Angaben. Also wie oben schon geschrieben handelt es sich um Ubuntu 6.06, genauer gesagt um die "Server" bzw. Minimal-Installation, wurde mit apt-get auf den aktuellen Stand gebracht und wurde zum durcharbeiten dieses Tutorials ganz frisch aufgesetzt, war als "sauber". Bis auf oben genanntes Problem ist mir sonst beim durcharbeiten des Tutorials keine weiteren Auffälligkeiten begegnet.
 
Last edited by a moderator:
Hallo zusammen,

Ins HOWTO hat sich ein Fehler eingeschlichen, daher hat die Authentifikation nicht funktioniert. Dummerweise habe ich eine (einzige!) Formulierung im HOWTO nicht getestet, dachte sie diente dem Komfort... :-(

Bei Punkt 21 lege in in der slapd.conf eine Dummy-Zeile für einen Benutzer USERNAME an und kommentiere die aus, damit man sie beim Hinzufügen neuer Benutzer einfach kopieren kann. Genau da steckt der Wurm drinnen (das HOWTO hab ich bereits ausgebessert).

Man darf Statements in der LDAP-Konfigurationsdatei nicht mit Kommentaren unterbrechen!!!

Also: Raus mit der USERNAME-Zeile, so dass nur noch tatsächliche OX-Benutzer in dem Abschnitt stehen - und es funktioniert...

Asche über mein Haupt! Sorry, sorry, sorry... :(


@Winfo: Schau mal, ob die Basenamen in der LDAP-Konfiguration auch ohne Leerzeichen etc. geschrieben hast. dc=server,dc=de ist ein Wort, alles ohne Leerzeichen, manchmal macht man, weil aus dem Deutschen gewöhnt, anch einem Komma automatisch ein Leerzeichen... :D


In diesem Sinne: Viel Spaß mit dem OX-Server! (der mit diesem HOWTO auch unter Debian läuft - habe es soeben getestet - wirklich! :) )
 
Last edited by a moderator:
@Winfo:

Poste hier doch mal deine beiden LDAP-Konfigurationsdateien.


Grüße,
Matthias

Ach ja. Daran hätte ich auch gleich denken können :rolleyes:

Muss dich aber leider auf morgen vertrösten, der Rechner auf meiner Arbeitsstelle steht.

@Winfo: Schau mal, ob die Basenamen in der LDAP-Konfiguration auch ohne Leerzeichen etc. geschrieben hast. dc=server,dc=de ist ein Wort, alles ohne Leerzeichen, manchmal macht man, weil aus dem Deutschen gewöhnt, anch einem Komma automatisch ein Leerzeichen...
Danke für den Hinweis, aber ich glaube, das kann ich schon weitestgehend ausschliessen, da ich die ganzen Einstellung aus dem How-To zum Thema LDAP bereits mehrfach durchgegangen bin.

Gruß
Torsten
 
Back
Top