====== 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||servlet-api-2.4.jar |- |Sun Java Mail API||mail.jar |- |Sun Java Activation Framework||activation.jar |- |MySQL Java Connector||mysql-connector-java-5.1.6-bin.jar |- |Apache Jakarta Java Caching System||jcs-1.3.jar |- |Apache Commons Logging||commons-logging-1.1.1.jar |- |Apache Commons Codec||commons-codec-1.3.jar |- |Apache Commons File Upload||commons-fileupload-1.2.1.jar |- |Apache Commons IO||commons-io-1.4.jar |- |Apache Commons HTTP Client||commons-httpclient-3.1.jar |- |Apache Commons CLI||commons-cli-1.1.jar |- |Apache Jakarta Slide||jakarta-slide-webdavlib-2.1.jar |- |Java TNEF v1.3.1||tnef.jar |- |Java Charset package||jcharset-1.3.jar |- |JDOM||jdom.jar |- |Eclipse Equinox OSGi||org.eclipse.osgi_3.2.2.R32x_v20070118.jar |- |JUnit||junit-4.1.jar |- |Saxon XSLT Processor||saxon9.jar |- |Spring Framework Core||spring-core.jar |- |Spring Framework Beans||spring-beans.jar |} 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 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 # 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