Debian Open-Xchange
Allgemein
Open-Xchange (http://www.open-xchange.com) ist ein sehr umfangreicher und sehr komfortabler Groupware-Server. Dank massivem Ajax- und Java-Einsatzes, ist dieser in der Bedienung einem Standalone Programm sehr ähnlich.
- Diese Anleitung basiert auf Einträgen aus dem offiziellen Wiki (http://www.open-xchange.com/wik) und vor allem der Anleitung zur Einrichtung unter Debian: http://www.open-xchange.com/wiki/index.php?title=Open-Xchange_Installation_Guide_for_Debian_5.0.
- Erweitert wurden diese um eigene Erkenntnisse und Stolperstellen und Diskussionen aus den Foren unter http://www.open-xchange.com/forum.
- Der Server sollte mindestens 1GB Ram, besser 2GB Ram haben, damit Open-Xchange sinnvoll eingesetzt werden kann. Die Ajax- und Java basierte Oberfläche hat einen relativ großen Ressourcen-Verbrauch zur Folge.
Voraussetzungen:
Installation
Installation der Pakete
Zunächst muß das Open-Xchange Repository zur Liste der apt-get Sources angelegt werden:
vi /etc/apt/sources.list
Folgende Zeile anhängen:
deb http://download.opensuse.org/repositories/server:/OX:/ox6/DebianLenny/ /
Anschließend muss ein update der Sourceliste durchgeführt werden
apt-get update
- Folgende Zeilen stellen einen Befehl dar, der sich über mehrere Zeilen erstreckt.
apt-get install ant sun-java5-jdk open-xchange-admin-client open-xchange-admin-soap \ open-xchange-admin-doc open-xchange-admin-plugin-hosting-doc \ open-xchange-admin-plugin-hosting open-xchange-admin open-xchange-axis2 \ open-xchange-authentication-database open-xchange-cache \ open-xchange-charset open-xchange-common open-xchange-configjump-generic \ open-xchange-configread open-xchange-control open-xchange-data-conversion-ical4j \ open-xchange-conversion-engine open-xchange-conversion-servlet \ open-xchange-global open-xchange-group-managerequest open-xchange-gui \ open-xchange-i18n open-xchange-imap open-xchange-jcharset open-xchange-mailfilter \ open-xchange-management open-xchange-monitoring open-xchange-online-help-de \ open-xchange-passwordchange-database open-xchange-passwordchange-servlet \ open-xchange-push-udp open-xchange-resource-managerequest open-xchange-server \ open-xchange-sessiond open-xchange-settings-extensions open-xchange-smtp \ open-xchange-spamhandler-default open-xchange open-xchange-contactcollector
Nach dem Download aller Pakete erscheint das Java Licence Agreement. Dieses mit OK bestätigen: Tab+Enter Die Java Einverständnis-Frage mit ja beantworten: Cursor links/rechts + Enter
Apache konfigurieren
Damit Open-Xchange korrekt funktioniert, müssen einige Module aktiviert und Optionen von Apache angepasst werden.
a2enmod proxy a2enmod proxy_ajp a2enmod expires a2enmod deflate a2enmod headers
vi /etc/apache2/conf.d/proxy_ajp.conf
Folgenden Inhalt einfügen:
<Proxy *> Order deny,allow allow from all </Proxy> ProxyPass /axis2 ajp://127.0.0.1:8009/axis2 smax=0 ttl=60 retry=5 ProxyPass /ajax ajp://127.0.0.1:8009/ajax smax=0 ttl=60 retry=5 ProxyPass /servlet ajp://127.0.0.1:8009/servlet smax=0 ttl=60 retry=5 ProxyPass /infostore ajp://127.0.0.1:8009/infostore smax=0 ttl=60 retry=5
vi /etc/apache2/sites-enabled/000-default
Folgende Zeilen am Ende (vor der Zeile </VirtualHost>) einfügen:
<Directory /var/www/ox6> AllowOverride None Order allow,deny allow from all </Directory> ExpiresActive On ExpiresByType image/gif "access plus 23 hours" ExpiresByType image/png "access plus 23 hours" ExpiresByType image/jpg "access plus 23 hours" ExpiresByType image/jpeg "access plus 23 hours" ExpiresByType text/javascript "access plus 23 hours" ExpiresByType text/css "access plus 23 hours" ExpiresByType text/html "access plus 23 hours" ExpiresByType application/x-javascript "access plus 23 hours" <Files ~ "\.(js|css|gif|jpe?g|png)$"> Header append Cache-Control "public" </Files> DeflateFilterNote ratio AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/x-javascript application/javascript BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4\.0[678] no-gzip BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html Header append Vary User-Agent env=!dont-vary
sodass das Ende des Files /etc/apache2/sites-enabled/000-default folgendermaßen aussieht:
... BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4\.0[678] no-gzip BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html Header append Vary User-Agent env=!dont-vary </VirtualHost>
Webserver neu starten um die Änderungen zu übernehmen:
/etc/init.d/apache2 restart
Datenbank anlegen
Open-Xchange bringt ein umfangreiches Script mit, um die Datenbank anzulegen und einzurichten. Dieses funktioniert allerdings nur, wenn dem MySQL-Superuser root kein Paswort zugeordnet ist. Zum Entfernen des Paswortes folgenden Befehl eingeben:
mysqladmin -u root -p password ' ' (Kein Leerzeichen zwischen den zwei ' Zeichen)
Das alte root_pwd eingeben, um das Paswort endgültig zu löschen.
Einrichten der Datenbank (ox_pwd mit einem sinnvollen Passwort für die Datenbank ersetzen):
/opt/open-xchange/sbin/initconfigdb --configdb-pass=ox_pwd -a
- Unbedingt wieder das Root-Passwort für den MySQL-Datenbankserver vergeben, da ansonsten jeder Datenbanken und weitere User anlegen, löschen oder sich Rechte erteilen könnte:
mysqladmin -u root password root_pwd
Abschließen der Installation
Starten des Adminservers:
/etc/init.d/open-xchange-admin start
Vergeben eines Passwortes für den Administrator: admin_pwd
cd /opt/open-xchange/sbin ./oxinstaller --servername=oxserver --configdb-pass=ox_pwd --master-pass=admin_pwd --ajp-bind-port=localhost
Adminserver neustarten, um die Änderungen des oxinstallers zu übernehmen.
/etc/init.d/open-xchange-admin restart
Registrieren des Servers bei der Datenbank:
./registerserver -n oxserver -A oxadminmaster -P admin_pwd
Anlegen eines lokalen Filestore:
mkdir /var/opt/filestore chown open-xchange:open-xchange /var/opt/filestore ./registerfilestore -A oxadminmaster -P admin_pwd -t file:///var/opt/filestore
Registrieren der Groupware Datenbank:
./registerdatabase -A oxadminmaster -P admin_pwd -n oxdatabase -p ox_pwd -m true
Context anlegen (Befehl besteht aus zwei Zeilen ; domain.org durch reale Domain ersetzen):
./createcontext -A oxadminmaster -P admin_pwd -c 1 -u oxadmin -d "Context Admin" -g Admin -s User \ -p admin_pwd -L defaultcontext -e oxadmin@domain.org -q 1024 --access-combination-name=all
Setzen der korrekten Eigentümerrechte:
chown -R open-xchange:open-xchange /opt/open-xchange/
Starten des Groupware-Servers:
/etc/init.d/open-xchange-groupware start
User anlegen
User die auf Open-Xchange Zugriff erhalten sollen müssen zuvor in der Datenbank angelegt werden. Damit später Imap-User gegen die Open-Xchange Datenbank authorisiert werden können (|→ siehe hier) , muß noch das Passwort-Hashing-Verfahren auf CRYPT geändert werden:
vi /opt/open-xchange/etc/admindaemon/User.properties
Den Eintrag DEFAULT_PASSWORD_MECHANISM von SHA auf CRYPT abändern:
DEFAULT_PASSWORD_MECHANISM=CRYPT
createuser kennt folgende Optionen:
Long Parameter | Short Parameter | Bedeutung |
---|---|---|
--adminuser | -A | Adminuser der zur Authorisierung nötig ist. Normalerweise oxadmin |
--adminpass | -P | Passwort admin_pwd des Users oxadmin |
--contextid | -c | Context-ID. Normalerweise 1 |
--username | -u | Username (Loginname) |
--displayname | -d | Displayname: In Open-Xchange angezeigter Name |
--password | -p | Passwort des neu anzulegenden Users |
-e | Emailadresse des neuen Users | |
--givenname | -g | Givenname: Z.B. Vorname des Users |
--surname | -s | Nachname des Users |
--language | -l | Defaultsprache der Open-Xchange Oberfläche des neuen Users. Kann auch in den Optionen später vom Nutzer selbst geändert werden. |
--department | -x | Abteilung |
--company | -z | Firma |
--imaplogin | Loginname des Nutzers auf dem Imap-Server | |
--imapserver | Hostadresse des Imap-Servers. Normalerweise localhost | |
--smtpserver | Hostadresse des SMTP-Servers. Normalerweise localhost |
Anlegen des Users Tux (Befehl besteht aus zwei Zeilen):
./createuser -c 1 -A oxadmin -P admin_pwd -u tux -d "User Tux" -g tux -s Tux_Vorname \ -p tux_pwd -e tux@domain.org --imaplogin tux --imapserver localhost --smtpserver localhost
Funktionscheck
Webbrowser öffnen und Adresse http://IP_Des_Servers/ox6 eingeben. Der Login-Bildschirm von Open-Exchange erscheint.
Mit den Login-Daten des User Tux einloggen. Die Open-Xchange Weboberfläche erscheint.
In den Bereich Einstellungen wechseln, um diese dem persönlichen Geschmack anzupassen. Z.B. Einstellen der Sprache auf Deutsch, Zeit-und Datumsformat, Userdaten, usw.
Open-Xchange Admin Oberfläche
Standardmäßig liefert Open-Xchange keine Möglichkeit mit, User in einer graphischen Oberfläche anzulegen bzw. zu bearbeiten. Die einzig vorgesehene Methode ist oben angeführter ellenlanger createuser-Befehl. Diesen Missstand hat Herr M. Weiss (www.kess.cc) mit seinem Admingui beseitigt.
Downloaden und Compilieren
cd /usr/local/src (evtl. mit mkdir anlegen, falls Verzeichnis nicht existiert)
Aktuelle Oberfläche mittels Subversion Downloaden:
svn checkout https://mani.kess.cc/svn/mwOXAdminGUI
Die Frage mit p (permanent) beantworten
cd mwOXAdminGUI/trunk vi build.xml
der Parameter oxhtml sollte folgendermaßen aussehen:
<property name="oxhtmldir" value="/var/www/ox6"/>
Mittels ant die Adminoberfläche compilieren (java):
ant
Konfiguration
vi /opt/open-xchange/etc/admingui/open-xchange-admin
Folgende Einstellungen vornehmen:
- Adminusers(durch Komma getrennt):
ADMIN_USERS=oxadmin,tux
- oxadmin-Passwort (Passwort des Users oxadmin - siehe oben):
OX_ADMIN_PASSWORD=admin_pwd
- Maildomains:
MAILDOMAINS=domain.org
Konfiguration der Datei configjump.properties:
vi /opt/open-xchange/etc/groupware/configjump.properties
URL-Eingeben, unter der Oüpen-Xchange erreichbar ist. Hier zwei Beispiele (nur eine eintragen):
URL=http://IP_Des_Servers/ox6/admingui URL=https://Domain.org/ox6/admingui
Funktionscheck
Open-Xchange Groupware-Server neustarten:
/etc/init.d/open-xchange-groupware restart
Webbrowser öffnen und als Adminuser (oxadmin bzw. User, die als $adminusers eingetragen wurden) einloggen → wie hier beschrieben. Einstellungen öffnen Auf den Link Extras klicken. Ein neues Fenster mit der Adminoberfläche sollte sich öffnen. Hier können neue User angelegt bzw. bestehende bearbeitet werden.
- Es ist nicht möglich, den Usernamen (Loginname) zu ändern.
- Die beiden Passwortfelder sind leer. Wenn hier nichts eingetragen wird, bleibt das Passwort bestehen. Um ein neues zu setzen, ein neues in beide Felder eintragen.
Optional: Mailserver-User gegen Open-Xchange authorisieren
Nachdem Open-Xchange eine komplette Userverwaltung mitbringt, empfiehlt es sich die Imap- und Postfix-User (SMTP-Auth) gegen die Open-Xchange Datenbank zu authorisieren. Dies hat den Vorteil, dass die Passwörter nur einmal gepflegt werden müssen. Weiterhin kann jeder User sein Passwort in der Open-Xchange Weboberfläche sehr einfach ändern.
Konfiguration
Für die MySQL-basierte authorisierung von User sind die beiden folgenden Module erforderlich:
apt-get install libnss-mysql libpam-mysql
- Bei zwei Testinstallationen wurde festgestellt, dass die Datenbank von Open-Xchange nicht immer den selben Namen trägt. Einmal war dieser oxdatabase_6 und einmal oxdatabase_7. Deshalb sollte vor der Fortsetzung der Konfiguration mittels phpmyadmin (siehe → siehe auch hier) der exakte Datenbankname -> OX-DB ermittelt werden und in folgenden Einstellungen enstprechend angepasst werden.
vi /etc/pam.d/imap
Alle vorhandenen Einträge auskommentieren (#-Zeichen davor setzen) und folgende Zeilen einfügen
- Sämtliche Einträge hinter auth in eine Zeile und hinter accout in eine Zeile. Die Zeilenumbrüche sind nur zur Erhöhung der Übersichtlichkeit eingefügt.
auth optional pam_mysql.so host=/var/run/mysqld/mysqld.sock user=openexchange passwd=ox_pwd db=OX-DB [table=login2user LEFT JOIN user ON login2user.id=user.id AND login2user.cid=user.cid] [where=user.cid=1] usercolumn=login2user.uid passwdcolumn=user.userPassword crypt=1 account required pam_mysql.so host=/var/run/mysqld/mysqld.sock user=openexchange passwd=ox_pwd db=OX-DB [table=login2user LEFT JOIN user ON login2user.id=user.id AND login2user.cid=user.cid] [where=user.cid=1] usercolumn=login2user.uid passwdcolumn=user.userPassword crypt=1
cp /etc/pam.d/imap /etc/pam.d/sieve cp /etc/pam.d/imap /etc/pam.d/smtp
vi /etc/libnss-mysql.cfg
Folgende Zeilen einfügen:
- Einträge, die ganz links beginnen in eine Zeile schreiben. Die Zeilenumbrüche und Einrückungen wurden nur zur Erhöhung der Übersichtlichkeit eingefügt.
getpwnam SELECT login2user.uid,'x',user.uidNumber,user.gidNumber,prg_contacts.field01,user.homeDirectory,user.loginShell FROM login2user,user,prg_contacts WHERE login2user.cid=1 AND login2user.id=user.id AND login2user.id=prg_contacts.userid AND login2user.uid='%1$s' LIMIT 1 getpwuid SELECT login2user.uid,'x',user.uidNumber,user.gidNumber,prg_contacts.field01,user.homeDirectory,user.loginShell FROM login2user,user,prg_contacts WHERE user.cid=1 AND login2user.id=user.id AND prg_contacts.userid=user.id AND user.uidNumber='%1$u' LIMIT 1 getspnam SELECT login2user.uid,'x',user.uidNumber,user.gidNumber,user.shadowLastChange,0,0,-1,-1,'A' FROM login2user,user WHERE login2user.cid=1 AND login2user.id=user.id AND login2user.uid='%1$s' LIMIT 1 getpwent SELECT login2user.uid,'x',user.uidNumber,user.gidNumber,prg_contacts.field01,user.homeDirectory,user.loginShell FROM login2user,user,prg_contacts WHERE login2user.cid=1 AND login2user.id=user.id AND login2user.id=prg_contacts.userid getspent SELECT login2user.uid,user.userPassword,user.shadowLastChange,0,0,-1,-1,'A' FROM login2user,user WHERE login2user.cid=1 AND login2user.id=user.id; getgrnam SELECT identifier,'x',gidNumber FROM groups WHERE groups.cid=1 AND identifier='%1$s' LIMIT 1 getgrgid SELECT identifier,'x',gidNumber FROM groups WHERE groups.cid=1 AND gidNumber='%1$u' LIMIT 1 getgrent SELECT identifier,'x',gidNumber FROM groups WHERE groups.cid=1 memsbygid SELECT login2user.uid FROM login2user,groups,groups_member WHERE groups.cid=1 AND groups.id=groups_member.id AND groups_member.member=login2user.id AND groups.gidNumber='%1$u' gidsbymem SELECT groups.gidNumber FROM groups,groups_member,user,login2user WHERE groups.cid=1 AND groups_member.member=user.id AND user.id=login2user.id AND groups.id=groups_member.id AND login2user.uid='%1$s'; host localhost database OX-DB username openexchange password ox_pwd
vi /etc/libnss-mysql-root.cfg
Folgende Zeilen einfügen:
username openexchange password ox_pwd
vi /etc/nsswitch.conf
Alle vorhandenen Zeilen auskommentieren (#Zeichen davor setzen) und folgende Zeilen einfügen:
passwd: files mysql group: files mysql hosts: files dns
Rechte anpassen, um das Datenbank-Passwort im File libnss-mysql-root.cfg vor fremdem Zugriff zu schützen:
chmod 600 /etc/libnss-mysql-root.cfg chmod 600 /etc/libnss-mysql.cfg chmod 600 /etc/pam.d/imap chmod 600 /etc/pam.d/sieve chmod 600 /etc/pam.d/smtp
Saslauth Daemon neustarten, um die Änderungen zu übernehmen.
/etc/init.d/saslauthd restart
Cyrus-User anlegen
Nachdem die User nun gegen die Open-Xchange Datenbank authorisiert werden, muß auch der Cyrus-User, der für die Administration des Imap-Servers verantwortlich ist, in der Open-Xchange Datenbank angelegt werden. Dies kann entweder via Adminoberfläche (→ siehe hier) oder mittels folgendem Befehl erfolgen:
cd /opt/open-xchange/sbin ./createuser -c 1 -A oxadmin -P admin_pwd -u cyrus -d "Cyrus Admin" -g cyrus -s Admin \ -p CYRUS_PWD -e cyrus@domain.org --imaplogin cyrus --imapserver localhost --smtpserver localhost
Neuen User anlegen
Um einen komplett neuen User Tux_neu anzulegen müssen folgende Schritte ausgeführt werden:
- User Tux_neu in der Open-Xchange Datenbank anlegen (→ siehe hier mittels Befehl oder → siehe hier mittels Adminoberfläche)
- Postfach anlegen (→ siehe auch hier):
cyradm --user cyrus localhost
Passwort CYRUS_PWD eingeben Folgende cm Befehle (create Mailbox) eingeben
cm user.Tux_neu cm user.Tux_neu.Drafts cm user.Tux_neu.Outbox cm user.Tux_neu.Sent cm user.Tux_neu.Trash
Die Adminoberfläche mit folgenden Befehlen verlassen:
quit
Funktionscheck
Wie unter → Funktionscheck beschrieben.
Optional: Synchronisation mit Funambol
Die Kontakte, Kalender und Aufgaben können mittels Funambol zwischen Open-Xchange, Outlook und Thunderbird auch mit mobilen Geräten wie Windows-Mobile und SyncML fähigen Handy's abgeglichen werden. Damit stehen diese Daten in allen Programmen und via Open-Xchange von jedem Webbrowser zur Verfügung.
Voraussetzung:
Installation
Download der nötigen Komponenten:
cd /usr/local/src/funambol wget ftp.gwdg.de/pub/linux/mysql/Downloads/Connector-J/mysql-connector-java-5.1.7.tar.gz wget http://download.forge.objectweb.org/sync4j/funambol-ox-connector-7.0.5.zip
Open-Xchange Connector installieren:
unzip funambol-ox-connector-7.0.5.zip cp Funambol/ox-connector/ox-connector-7.0.5.s4j /opt/Funambol/ds-server/modules cp ox-listener/funambol-ox-listener-7.0.5.zip /opt cd /opt unzip funambol-ox-listener-7.0.5.zip rm funambol-ox-listener-7.0.5.zip
Aktivieren des ox-connector:
vi /opt/Funambol/ds-server/install.properties
An die Zeile modules-to-install den Eintrag ,ox-connector-7.0.5 anhängen, sodass diese folgendermaßen aussieht:
modules-to-install=content-provider-7.1.2,email-connector-7.1.1,foundation-7.1.1,phones-support-7.1.0,webdemo-7.1.0,ox-connector-7.0.5
Ox-connector Module installieren
cd /opt/Funambol/ds-server bin/install
- Die Fragen zum neu erstellen der Datenbanken kann für alle mit Ausnahme der letzten (ox-connector) mit nein (n) beantwortet werden, da diese bereits bestehen und evtl. bereits mit Daten befüllt sind
Die Frage zum Installieren der Datenbank für den content-provider mit n beantworten Die Frage zum Installieren der Datenbank für den email-connector mit n beantworten Die Frage zum Installieren der Datenbank für das foundation Modul mit n beantworten Die Frage zum Installieren der Datenbank für das Modul phones-support mit n beantworten Die Frage zum Installieren der Datenbank für das Modul webdemo mit n beantworten Die Frage zum Installieren der Datenbank für den ox-connector mit y beantworten
Konfiguration
vi bin/ox-listener
Den Port auf dem ox-listener lauscht auf 13101 ändern, da Port 3101 bereits anderweitig verwendet wird:
JMX_PORT=13101
vi config/com/funambol/oxlistener/task/OXListenerTask.xml vi config/com/funambol/oxlistener/task/OXListenerOneShotTask.xml vi config/ox/ox/OXConnector.xml
In allen drei Files den XML-Abschnitt abändern:
<void property="OXUrl"> <string>http://oxfnbl.funambol.com:80</string> </void>
in
<void property="OXUrl"> <string>http://localhost:80</string> </void>
vi /opt/Funambol/config/Funambol.xml
Den XML-Tag
<void property="officer"> <string>com/funambol/server/security/UserProvisioningOfficer.xml</string> </void>
abändern in:
<void property="officer"> <string>com/funambol/server/security/OXOfficer.xml</string> </void>
Startscript
Damit der ox-connector beim Systemstart automatisch startet, muß ein Startscript angelegt und eingerichtet werden:
ln -s /opt/Funambol/bin/ox-listener /etc/init.d/ox-listener update-rc.d ox-listener defaults
Funambol neustarten:
/etc/init.d/funambol stop /etc/init.d/funambol start /etc/init.d/ox-listener start
Konfiguration mittels Windows-Admintool
Das Admintool öffnen und als Admin einloggen
Open-Xchange Connector anpassen: Im Linken Navigationsbaum auf Modules/ox klicken OxConnector doppelklicken. URL abändern in: http://localhost:80 Button Save anklicken
Anpassen der Clients
Die Clients müssen ebenfalls angepasst werden, damit diese mit der Open-Xchange Datenbank synchronisieren.
In den Einstellungen der Sync-Client die Datenbanken folgendermaßen ersetzen:
- card -> oxcard
- scard -> oxscard
- cal -> oxcal
- scal -> oxscal
- task -> oxtask
- stask -> oxstask
Für Hinweise zur Einstellung der Optionen → siehe hier.