Debian Open-Xchange

Aus Wiki
Zur Navigation springen Zur Suche springen

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.

Hinweis:
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/ /
Hinweis:
Folgende Zeilen stellen einen Befehl dar, der sich über mehrere Zeilen erstreckt.
apt-get install 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


ACHTUNG:
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
--email -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-Xchangen Admin Oberfläche

Mit Hilfe der Adminoberfläche können neue User bzw. bestehende User, auf sehr viel elegantere und einfachere Art und Weise via Weboberfläche anstatt der ellenlangen createuser bzw. changeuser Befehle, angelegt bzw. bearbeitet werden.

cd /usr/local/src (evtl. mit mkdir anlegen, falls Verzeichnis nicht existiert)
wget http://www.kess.cc/ox-admin-gui/at_download/file
mv file ox-admingui.tar.gz
tar xvf ox-admingzu.tar.gz
chown -R www-data:www-data admingui
vi admingui/config.php

Folgende Änderungen durchführen:

$oxadminpass = 'admin_pwd';
$domains     = array("domain.org");
$adminusers  = array("oxadmin", "Tux");

Mit dem Eintrag $adminusers können mehrere User die Berechtigung erhalten, die Adminoberfläche zu benutzen. Die User jeweils durch Komma getrennt angeben, wie oben im Beispiel für die User oxadmin und Tux.

Auf den Webserver verschieben:

mv admingui /var/www/ox6/

Open-Xchange Konfig anpassen, damit die Adminoberfläche ansprechbar ist:

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/login.php?u=%u&p=%p
URL=https://Domain.org/ox6/admingui/login.php?u=%u&p=%p

Open-Xchange neustarten:

/etc/init.d/open-xchange-admin restart
/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.

Hinweis:
Es ist derzeit nicht möglich, die emailadresse und den Usernamen (Loginname) zu ändern. Dies ist für eine zukünftige Version geplant.


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
Hinweis:
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

Hinweis:
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:

Hinweis:
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:

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.