Table des matières

OPEN-XCHANGE

Pré-Requis

Java

* Modifier vos sources APT :

# vim /etc/apt/sources.list
deb http://ftp2.de.debian.org/debian/ stable main non-free
# apt-get update

* Installer Sun Java 1.5 JRE and JDK

# apt-get install sun-java5-bin sun-java5-jdk

* Vérifier l'installation de Sun Java JRE

# java -version
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_10-b03)
Java HotSpot(TM) 64-Bit Server VM (build 1.5.0_10-b03, mixed mode)
# javac -version	
javac 1.5.0_10
[...]
# apt
[...]

MySQL

# apt-get install mysql-server-5.0 mysql-client-5.0

Vérifier l'installation de MySQL

Ne pas mettre de mot de passe au compte root de MySQL.

# mysql -V
mysql  Ver 14.12 Distrib 5.0.32, for pc-linux-gnu (i486) using readline 5.2
# mysqld -V
mysqld  Ver 5.0.32-Debian_7etch5-log for pc-linux-gnu on i486 (Debian etch distribution)
# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1337
Server version: 5.0.32-Debian_7etch4-log Debian etch distribution
[...]

Apache

# apt-get install apache2 libapache2-mod-jk

Cyrus IMAP Server

# apt-get install cyrus-imapd-2.2 cyrus-admin-2.2 sasl2-bin libpam-mysql libnss-mysql-bg \
libsasl2-modules libsasl2-modules-gssapi-mit

Postfix SMTP Server

# apt-get install postfix postfix-mysql amavisd-new

CVS

# apt-get install cvs

GNU gettext

# apt-get install gettext gettext-base

Apache Ant

# apt-get install ant ant-optional
# ant
Buildfile: build.xml does not exist! 
Build failed

Si cela remonte des erreurs, vous pouvez préciser où se trouve JAVA

# export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun

Open-Xchange directories

# mkdir -p /opt/open-xchange/lib
# mkdir -p /var/log/open-xchange
# mkdir -p /var/www/ox/admin
# mkdir -p /var/log/open-xchange

Open-Xchange groups and users

# addgroup --system open-xchange
# adduser --system --home /opt/open-xchange --no-create-home --disabled-password --ingroup open-xchange open-xchange
# chmod 750 /var/log/open-xchange
# chown open-xchange:open-xchange /var/log/open-xchange

JSON for Java

# cd /tmp
# cvs -d :pserver:anonymous@www.open-xchange.com:/cvsroot co json-jdk15
# cd json-jdk15
# ant
# cp lib/json.jar /opt/open-xchange/lib

util.concurrent for Java

# cd /tmp
# wget http://gee.cs.oswego.edu/dl/classes/EDU/oswego/cs/dl/current/concurrent.tar.gz
# tar xvzf concurrent.tar.gz
# cd concurrent
# ant dist
# cp lib/concurrent.jar /opt/open-xchange/lib/

Jar Nécessaires

Copier les binaires jar dans le répertoire /opt/open-xchange/lib

Sur ce [http://khayyin.druidesmetal.org/documentations/Open-Xchange.rar lien] vous trouverez les librairies que j'ai utilisé dans mon installation

{|border="1" cellpadding="5" cellspacing="0"

!Library name !Required .jar file name

Sun Java Servlet API
Sun Java Mail API
Sun Java Activation Framework
MySQL Java Connector
Apache Jakarta Java Caching System
Apache Commons Logging
Apache Commons Codec
Apache Commons File Upload
Apache Commons IO
Apache Commons HTTP Client
Apache Commons CLI
Apache Jakarta Slide
Java TNEF v1.3.1
Java Charset package
JDOM
Eclipse Equinox OSGi
JUnit
Saxon XSLT Processor
Spring Framework Core
Spring Framework Beans

Rajouter un lien sur une librairie :

# ln -s  org.eclipse.osgi_3.2.2.R32x_v20070118.jar org.eclipse.osgi_3.2.2.ox.jar

Configuration des Services

Apache Webserver and mod_jk

# vi /etc/apache2/conf.d/ox.conf
<IfModule mod_jk.c>
  JkWorkersFile /etc/apache2/workers.properties
  JkLogFile /var/log/apache2/mod_jk.log
  JkLogLevel error
  JkMount /ajax/* ajp13_worker
  JkMount /servlet/* ajp13_worker
  JkMount /infostore ajp13_worker
  JkMount /infostore/* ajp13_worker
  JkMount /oxadmin/* ajp13_worker
  JkMount /oxadmin ajp13_worker
</IfModule>
# vi /etc/apache2/workers.properties
ps=/
worker.list=ajp13_worker
worker.ajp13_worker.port=8009
worker.ajp13_worker.host=localhost
worker.ajp13_worker.type=ajp13
# /etc/init.d/apache2 restart

Cyrus IMAP Server

# vi /etc/imapd.conf
allowplaintext: yes
unixhierarchysep: yes
sasl_pwcheck_method: saslauthd
sasl_mech_list: PLAIN LOGIN
admins: oxadmin
loginrealms: example.com
autocreatequota: 1024
# vi /etc/cyrus.conf

Ajouter à la fin

        # running squatter
        squatter        cmd="/usr/sbin/squatter -r user" period=30
# /etc/init.d/cyrus2.2 restart

PAM

# vi /etc/pam.d/imap
auth       optional     pam_mysql.so host=/var/run/mysqld/mysqld.sock user=openexchange passwd=secret db=open-xchange-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=secret db=open-xchange-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
# vi /etc/pam.d/pop
auth       optional     pam_mysql.so host=/var/run/mysqld/mysqld.sock user=openexchange passwd=secret db=open-xchange-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=secret db=open-xchange-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
# vi /etc/pam.d/sieve
auth       optional     pam_mysql.so host=/var/run/mysqld/mysqld.sock user=openexchange passwd=secret db=open-xchange-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=secret db=open-xchange-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

NSS for MySQL

# vi /etc/libnss-mysql.cfg
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    open-xchange-db
username    openexchange
password    secret
# vi /etc/libnss-mysql-root.cfg
username    openexchange
password    secret

SASL authentication demon

# vi /etc/default/saslauthd

START=yes MECHANISMS="pam"

# /etc/init.d/saslauthd restart

Postfix

# vi /etc/postfix/master.cf

remplacer

lmtp unix - - - - - lmtp

par

lmtp unix - - n - - lmtp

# vi /etc/postfix/main.cf

mailbox_transport = lmtp:unix:/var/run/cyrus/socket/lmtp virtual_alias_domains = mysql:/etc/postfix/ox_domains.cf virtual_alias_maps = mysql:/etc/postfix/ox_user_aliases.cf, mysql:/etc/postfix/ox_aliases.cf, mysql:/etc/postfix/ox_resource_aliases.cf, mysql:/etc/postfix/ox_group_aliases.cf smtpd_sender_restrictions = check_sender_access mysql:/etc/postfix/ox_externaldomaincheck.cf smtpd_restriction_classes = local_only local_only = check_recipient_access mysql:/etc/postfix/ox_domains.cf, reject smtpd_recipient_restrictions = check_sender_access mysql:/etc/postfix/ox_senderrestrictions.cf, permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination

# vi /etc/postfix/ox_aliases.cf

hosts = 127.0.0.1 user = openexchange password = secret dbname = open-xchange-db query = SELECT destination FROM address_mappings WHERE cid=1 AND address="%s";

# vi /etc/postfix/ox_user_aliases.cf

hosts = 127.0.0.1 user = openexchange password = secret dbname = open-xchange-db query = SELECT login2user.uid FROM login2user,user,user_attribute

       WHERE login2user.cid=1
       AND user_attribute.name="alias"
       AND login2user.id=user_attribute.id
       AND login2user.id=user.id
       AND user_attribute.value="%s";

# vi /etc/postfix/ox_domains.cf

hosts = 127.0.0.1 user = openexchange password = secret dbname = open-xchange-db query = SELECT restriction FROM mail_domains WHERE cid=1 AND domainName="%s";

# vi /etc/postfix/ox_externaldomaincheck.cf

hosts = 127.0.0.1 user = openexchange password = secret dbname = open-xchange-db query = SELECT smtpSenderRule FROM mail_domains WHERE cid=1 AND domainName="%s";

# vi /etc/postfix/ox_senderrestrictions.cf

hosts = 127.0.0.1 user = openexchange password = secret dbname = open-xchange-db query = SELECT className FROM user_mail_restrictions WHERE cid=1 AND address="%s";

# vi /etc/postfix/ox_group_aliases.cf

hosts = 127.0.0.1 user = openexchange password = secret dbname = open-xchange-db query = SELECT login2user.uid FROM group_address_mappings,groups_member

       LEFT JOIN login2user ON login2user.id=groups_member.member WHERE
       groups_member.id=group_address_mappings.id AND
       group_address_mappings.address="%s" AND
       group_address_mappings.cid=1;

# vi /etc/postfix/ox_resource_aliases.cf

hosts = 127.0.0.1 user = openexchange password = secret dbname = open-xchange-db query = SELECT destination FROM resource_address_mappings,resource WHERE

       resource.mail="%s" AND
       resource_address_mappings.cid=1 AND
       resource_address_mappings.cid=resource.cid AND
       resource_address_mappings.id=resource.id;

# usermod -G mail postfix

# newaliases

Installation Open-Xchange

Installation Open-Xchange Groupware

# cd /tmp # cvs -d :pserver:anonymous@www.open-xchange.com:/cvsroot/ co -r bf_6_4 open-xchange

# cd /tmp/open-xchange/

Vérifier dans le fichier build.xml les versions des jar nécessaires

Si votre serveur est un 64 bits # export ANT_OPTS="-Xmx512m"

# ant -Dlib.dir=/opt/open-xchange/lib install (…)

BUILD SUCCESSFUL Total time: xx minutes xx seconds

# cp /tmp/open-xchange/etc/init.d/open-xchange-groupware /etc/init.d/

# chmod +x /etc/init.d/open-xchange-groupware # cp /tmp/open-xchange/etc/default/open-xchange-groupware /etc/default/ # chmod +x /etc/default/open-xchange-groupware

Installation Open-Xchange Admindaemon

# cd /tmp # cvs -d :pserver:anonymous@www.open-xchange.com:/cvsroot co -r bf_6_4 open-xchange-admin # cvs -d :pserver:anonymous@www.open-xchange.com:/cvsroot co -r bf_6_4 open-xchange-admin-console-ee # cvs -d :pserver:anonymous@www.open-xchange.com:/cvsroot co -r bf_6_4 open-xchange-admin-plugin-imap # cvs -d :pserver:anonymous@www.open-xchange.com:/cvsroot co -r bf_6_4 open-xchange-admin-plugin-mail # cvs -d :pserver:anonymous@www.open-xchange.com:/cvsroot co -r bf_6_4 open-xchange-admin-plugin-mailfilter # cvs -d :pserver:anonymous@www.open-xchange.com:/cvsroot co -r bf_6_4 open-xchange-admin-plugin-context_light # cvs -d :pserver:anonymous@www.open-xchange.com:/cvsroot co -r bf_6_4 open-xchange-admin-plugin-ca_mgmt_simple # cvs -d :pserver:anonymous@www.open-xchange.com:/cvsroot co -r bf_6_4 open-xchange-admin-plugin-osconfig # cvs -d :pserver:anonymous@www.open-xchange.com:/cvsroot co -r bf_6_4 open-xchange-admin-plugin-services # cvs -d :pserver:anonymous@www.open-xchange.com:/cvsroot co -r bf_6_4 open-xchange-admin-plugin-sw-update # cvs -d :pserver:anonymous@www.open-xchange.com:/cvsroot co -r bf_6_4 open-xchange-admin-plugin-backup # cvs -d :pserver:anonymous@www.open-xchange.com:/cvsroot co -r bf_6_4 open-xchange-admin-plugin-fetchmail # cvs -d :pserver:anonymous@www.open-xchange.com:/cvsroot co -r bf_6_4 open-xchange-admin-plugin-license # cvs -d :pserver:anonymous@www.open-xchange.com:/cvsroot co -r HEAD licenseDBClient

# cd /tmp/licenseDBClient # cp lib/*.jar /opt/open-xchange/lib

# cd /tmp/open-xchange-admin

Vérifier dans les fichiers build.xml se trouvant dans les répertoires que vous venez de télécharger les versions des jar nécessaires

# ant -Dlib.dir=/opt/open-xchange/lib install

BUILD SUCCESSFUL Total time: xx seconds

Open-Xchange Database

# /opt/open-xchange/sbin/oxinstaller –oxdb-pass=secret –admin-pass=secret –maildomain example.com

# mysql -h localhost -u openexchange -p configdb

Démarrer Open-Xchange

# /etc/init.d/open-xchange-groupware start Starting Open-Xchange Groupware: open-xchange-groupware. # tail -n200 -f /var/log/open-xchange/open-xchange.log.* /var/log/open-xchange/open-xchange-console.log

# /etc/init.d/open-xchange-admin start Starting Open-Xchange Admin Daemon: open-xchange-admin. # tail -n200 -f /var/log/open-xchange/open-xchange-admin.log.* /var/log/open-xchange/open-xchange-admin-console.log

# ps ax | grep open-xchange 32729 ? S 0:00 /usr/bin/java -Xms128M -Xmx192M -Djava.awt.headless=true -Dopenexchange.propfile=/opt/open-xchange/etc/groupware/system.properties -Djava.util.logging.config.file=/opt/open-xchange/etc/groupware/file-logging.properties -classpath /opt/open-xchange/lib/activation.jar:/opt/open-xchange/lib/commons-cli-1.0.jar:/opt/open-xchange/lib/commons-codec-1.3.jar:/opt/open-xchange/lib/commons-fileupload.jar:/opt/open-xchange/lib/commons-httpclient-2.0.2.jar:/opt/open-xchange/lib/commons-io.jar:/opt/open-xchange/lib/commons-logging.jar:/opt/open-xchange/lib/concurrent.jar:/opt/open-xchange/lib/jakarta-slide-webdavlib-2.1.jar:/opt/open-xchange/lib/jcharset-1.3.jar:/opt/open-xchange/lib/jcs-1.2.7.9.2.jar:/opt/open-xchange/lib/jdom.jar:/opt/open-xchange/lib/json.jar:/opt/open-xchange/lib/junit-4.1.jar:/opt/open-xchange/lib/mail.jar:/opt/open-xchange/lib/mysql-connector-java-3.1.13-bin.jar:/opt/open-xchange/lib/org.eclipse.osgi_3.2.2.ox.jar:/opt/open-xchange/lib/ox_admin_console_ee.jar:/opt/open-xchange/lib/ox_admindaemon.jar:/opt/open-xchange/lib/ox_admin_plugin_backup.jar:/opt/open-xchange/lib/ox_admin_plugin_ca_mgmt_simple.jar:/opt/open-xchange/lib/ox_admin_plugin_context_light.jar:/opt/open-xchange/lib/ox_admin_plugin_imap.jar:/opt/open-xchange/lib/ox_admin_plugin_mailfilter.jar:/opt/open-xchange/lib/ox_admin_plugin_mail.jar:/opt/open-xchange/lib/ox_admin_plugin_osconfig.jar:/opt/open-xchange/lib/ox_admin_plugin_services.jar:/opt/open-xchange/lib/ox_admin_plugin_sw-update.jar:/opt/open-xchange/lib/ox_server.jar:/opt/open-xchange/lib/saxon8.jar:/opt/open-xchange/lib/servlet-api-2.4.jar:/opt/open-xchange/lib/spring-beans_1.2.7.jar:/opt/open-xchange/lib/spring-core_1.2.7.jar:/opt/open-xchange/lib/tnef.jar: ComfireServer 442 ? S 0:00 /usr/bin/java -Djava.net.preferIPv4Stack=true -Xms50M -Xmx50M -Dopenexchange.propfile=/opt/open-xchange/etc/admindaemon/system.properties -Dconfigdir=/opt/open-xchange/etc/admindaemon -Djava.util.logging.config.file=/opt/open-xchange/etc/admindaemon/file-logging.properties -Duser.timezone=GMT -Dlibdir=/opt/open-xchange/lib -jar /opt/open-xchange/lib/org.eclipse.osgi_3.2.2.ox.jar -configuration file:/opt/open-xchange/etc/admindaemon/osgi/

Tester Open-Xchange

http://your-server/servlet/TestServlet http://your-server/servlet/webdav.version http://your-server/ajax/ http://your-server/infostore/

Open-Xchange Groupware GUI

# cd /tmp # cvs -d :pserver:anonymous@www.open-xchange.com:/cvsroot co -r bf_6_4_2 open-xchange-gui

# cd /tmp/open-xchange-gui # export CLASSPATH=/opt/open-xchange/lib/saxon8.jar # export ANT_OPTS="-Djavax.xml.transform.TransformerFactory=net.sf.saxon.TransformerFactoryImpl"

Vérifier dans le fichier build.xml les versions des jar nécessaires

# ant -Dlib.dir=/opt/open-xchange/lib/ -Dhtdoc=/var/www/ox deploy

# ant -Dlib.dir=/opt/open-xchange/lib/ -lib /opt/open-xchange/lib -Dhtdoc=/var/www/ox deploy

Open-Xchange Admin GUI

# cd /tmp # cvs -d :pserver:anonymous@www.open-xchange.com:/cvsroot co -r bf_6_4 open-xchange-admin-gui-ee # cvs -d :pserver:anonymous@www.open-xchange.com:/cvsroot co -r bf_6_4 open-xchange-admin-gui-ee-ajax # cvs -d :pserver:anonymous@www.open-xchange.com:/cvsroot co -r bf_6_4 open-xchange-admin-gui-ee-templates

Vérifier dans les fichiers build.xml se trouvant dans les répertoires que vous venez de télécharger les versions des jar nécessaires

# cd /tmp/open-xchange-admin-gui-ee # ant -Dlib.dir=/opt/open-xchange/lib/ install

# cd /tmp/open-xchange-admin-gui-ee-ajax # ant -Dlib.dir=/opt/open-xchange/lib/ -Dhtdoc=/var/www/ox/admin install

# cd /tmp/open-xchange-admin-gui-ee-templates # ant -Dlib.dir=/opt/open-xchange/lib/ -Dhtdoc=/var/www/ox/admin -Doxguidir=/var/www/ox/admin install

# /etc/init.d/open-xchange-groupware restart # /etc/init.d/open-xchange-admin restart

Voilà L'installation est terminée. Les URLs utiles : Admin : http://your-server/ox/admin

Webmail : http://your-server/ox/ox.html

Erreurs possibles

Si ce genre de message apparaît dans l'Admin : java.lang.SecurityException: class "javax.mail.QuotaAwareStore"'s signer information does not match signer information of other classes in the same package

# cd /opt/open-xchange/lib # rm mailapi_1_3_1.jar # unzip -j some_path/javamail-1_4.zip javamail-1.4/lib/mailapi.jar # mv mailapi.jar mailapi_1_3_1.jar

# /etc/init.d/open-xchange-admin stop # /etc/init.d/open-xchange-groupware stop # /etc/init.d/apache2 restart # /etc/init.d/open-xchange-groupware start # /etc/init.d/open-xchange-admin start