Open-Xchange: una suite de trabajo en equipo

Índice

  1. Introducción
  2. Requerimientos del sistema
  3. Configuración de variables
  4. Instalación de paquetes
  5. Arrancar Tomcat
  6. Descargar e instalar Open-Xchange
  7. Scripts de Perl
  8. Configuración de Tomcat
  9. Configuración de Apache
  10. Configuración de PostgreSQL
  11. Configuración de LDAP
  12. Configuración del website
  13. WebDAV e inicio de Open-Xchange
  14. Instalar un nuevo idioma
  15. Instalar oxAdm y ATFrogs
  16. Sin usar paquetes Debian de Tomcat 5

Introducción

Open-Xchange es una aplicación para el trabajo en equipo (del inglés, workgroup, groupware o collaborative software) que proporciona a sus usuarios un avanzado sistema de comunicaciones y funciones para la colaboración e interactuación. Groupware se refiere a los programas informáticos que integran el trabajo de un proyecto con muchos usuarios concurrentes que se encuentran en diversas localizaciones o estaciones de trabajo, típicamente conectadas a través de la red Internet o de una intranet.

Las características de la mensajería incluyen correo electrónico, filtro anti-spam y detector de virus. Los aspectos más básicos de la colaboración incluyen el calendario, los contactos, la gestión de tareas y carpetas privadas, públicas y compartidas. Aspectos más avanzados son la completa integración mediante enlaces y permisos con la compartición de documentos, el seguimiento de proyectos, el repositorio de marcadores o favoritos, el tablón de anuncios, los foros de debate y el archivo de conocimientos. Todo ello a través de una vista integrada a modo de portal o página de inicio.

Open-Xchange Server es software libre y de código abierto, y se distribuye bajo la licencia General Public License de GNU. La versión gratuita del software viene con una documentación que podría ser algo confusa para un novicio, pero puede hallarse mucho soporte en los foros y también puede encontrarse mucha ayuda en páginas web de terceros con diversas guías de instalación sobre la distribución que hayamos elegido. El contenido digital de la interfaz de usuario web se distribuye bajo la versión 2.5 de la licencia Creative Commons License. Existe una versión de demostración en LiveCD en la sección de descargas del producto, basada en Knoppix. La versión comercial incluye funcionalidad extendida, conocida como OXtenders, que permiten la conectividad con Microsoft Outlook, un módulo de administración de usuarios mediante una interfaz gráfica y acceso al sitio web de soporte y mantenimiento donde descargar actualizaciones, parches, documentos y una extensiva lista de artículos y guías. También existe un OXtender de Samba que integra el OXServer con los entornos de Microsoft mediante una interfaz.

El servidor puede accederse desde cualquier navegador web moderno y desde varios clientes de escritorio, como KDE Kontact, Novell Evolution, KDE Konqueror, Mozilla Calendar, Mozilla Sunbird, Palm o Microsoft Outlook y Outlook Express (mediante el Outlook OXtender, un plug-in que permite interactuar con el servidor Open-Xchange del mismo modo que si fuera un servidor Microsoft Exchange). La mayoría de estas funcionalidades avanzadas requieren la compra de una licencia comercial y éstos componentes no son de código abierto. Ésto permite el uso de carpetas públicas y otras funciones de trabajo en grupo que normalmente sólo están disponibles a usuarios de los productos de Microsoft. Pero hay otros productos de terceras partes que pueden sincronizarse con el servidor usando protocolos estándar, incluyendo la interfaz WebDAV (XML), LDAP, iCal de Apple, HTTP(S), SMTP, IMAP, POP3 y SyncML. A través de SyncML el servidor puede sincronizarse con dispositivos móviles como Palm Treo.

Estas grandes posibilidades de conectividad son conocidas como acceso universal, que podría resumirse en permitir el trabajo en grupo desde cualquier lugar, sobre cualquier tipo de red de comunicaciones y utilizando cualquier dispositivo de comunicaciones disponible. En un mercado tan competitivo y cambiante como el actual, este acceso universal se está popularizando mucho entre las empresas, pues cada vez es más común encontrar a clientes, empleados y asociados trabajando menos en sus PCs de oficina. Hoy en día es muy habitual hallar a estas personas en casa, en conferencias, reuniones de negocios fuera de la oficina, de visita a un cliente, hospedados en algún hotel, esperando en un aeropuerto o conduciendo por alguna carretera. Por ello, no sería muy inteligente crear un sistema de trabajo en equipo que no pudiera ser accedido por estas personas cuando no están físicamente en la oficina. Los sistemas que permiten a las personas trabajar bajo estas circunstancias consiguen aumentar la eficiencia de la empresa.

Open-Xchange ha sido creado sobre estándares abiertos e internacionales, lo que significa el uso de APIs estándar, protocolos estándar y, siempre que sea posible, formatos de datos estándar. Algunos de los estándares que Open-Xchange utiliza son POP3, IMAP4, HTML, XML, JavaScript, LDAP y SQL, entre otros. Open-Xchange está basado en Java, pero tiene algunos componentes de seguridad escritos en C y algunos scripts en Perl. El uso de esta diversidad de tecnologías y protocolos hace que la instalación de Open-Xchange no sea una tarea sencilla, pero los pasos que a continuación se describen deberían de facilitar muchísimo dicho proceso.

Requerimientos del sistema

Los requerimientos básicos de Open-Xchange, sin tener en cuenta las librerías de Java necesarias para compilar los fuentes, nos darán una idea de la complejidad del software y podrían resumirse de la siguiente manera:

Una vez conocidos los requerimientos, procedamos a desglosar la instalación en varios pasos. Estos pasos están basados en una distribución Debian GNU/Linux Etch.

Configuración de variables

Editamos /etc/profile y añadimos o modificamos las siguientes sentencias:

export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun
export JRE_HOME=/usr/lib/jvm/java-1.5.0-sun/jre
export CATALINA_HOME=/usr/share/tomcat5
export TOMCAT_HOME=/usr/share/tomcat5
export ANT_HOME=/usr/share/ant
export OX_HOME=/opt/openxchange
export PATH=${PATH}:${JAVA_HOME}/bin

En el terminal actual, ejecutaremos la siguiente sentencia para evitar tener que volver a validarnos en el sistema:

source /etc/profile

Instalación de paquetes

Antes de nada, nos aseguraremos que tenemos los tres repositorios main, contrib y non-free en nuestro /etc/apt/sources.list y que estamos usando la versión Etch de Debian. Para ello, dicho fichero deberá contener la siguiente directiva:

deb http://ftp.es.debian.org/debian/ etch main contrib non-free

Por supuesto, podemos elegir el mirror que prefiramos. Actualizaremos la versión de los paquetes del servidor y procederemos a la instalación (aquellas aplicaciones o librerías que no se instalen a través de apt-get se sobreentenderá que se descargan, descomprimen e instalan en /opt):

apt-get update

Sun Java Development Kit

apt-get install sun-java5-bin sun-java5-demo sun-java5-fonts sun-java5-jdk sun-java5-jre

PostgreSQL

apt-get install postgresql-8.1

Apache 2

apt-get install apache2-mpm-prefork libapache2-mod-jk libapache2-mod-perl2

Perl

apt-get install libnet-ssleay-perl libio-socket-ssl-perl libxml-namespacesupport-perl \
libxml-sax-perl libauthen-sasl-perl libconvert-asn1-perl libnet-ldap-perl

Apache Ant

apt-get install ant ant-optional

OpenLDAP

apt-get install ldap-utils libldap2 slapd db4.2-util

Sudo

apt-get install sudo

GNU C++ compiler and GNU Preprocessor

apt-get install cpp g++

Documentación

apt-get install postgresql-doc-8.1 sun-java5-doc apache2-doc libapache-mod-jk-doc

Apache Jakarta Tomcat

apt-get install tomcat5 tomcat5-webapps tomcat5-admin

Javabeans Activation Framework

Carga la siguiente URL en tu navegador preferido y descarga la versión 1.1 de JAF. Descomprímela en /opt.

http://java.sun.com/products/javabeans/jaf/downloads/index.html

JDOM (soporte de XML para Java)

wget http://www.jdom.org/dist/binary/archive/jdom-b10.tar.gz

Validating XML parser for Java

wget http://archive.apache.org/dist/xml/xerces-j/Xerces-J-bin.2.7.0.tar.gz

PostgreSQL JDBC connector

wget http://jdbc.postgresql.org/download/pg74.216.jdbc3.jar

JavaMail

Carga la siguiente URL en tu navegador preferido y descarga la versión 1.4 de JavaMail. Descomprímela en /opt.

http://java.sun.com/products/javamail/downloads/index.html

Los siguientes enlaces débiles nos harán el resto del proceso más sencillo y comprensible:

ln --symbolic /opt/javamail-1.4/mail.jar /opt/mail.jar
ln --symbolic /opt/pg74.216.jdbc3.jar /opt/postgresql.jar
ln --symbolic /opt/jaf-1.1/activation.jar /opt/activation.jar
ln --symbolic /opt/jdom-b10/build/jdom.jar /opt/jdom.jar
ln --symbolic /opt/xerces-2_7_0/xercesImpl.jar /opt/xercesImpl.jar
ln --symbolic /var/lib/tomcat5 /opt/tomcat5
ln --symbolic /usr/share/java/servlet-api.jar /opt/servlet-api.jar

Arrancar Tomcat

Tomcat es un servidor web con soporte de servlets y JSPs. Incluye el compilador Jasper, que compila JSPs convirtiéndolas en servlets. El motor de servlets de Tomcat a menudo se presenta en combinación con el servidor web Apache. Tomcat puede funcionar como servidor web por si mismo. En sus inicios, existió la percepción de que el uso de Tomcat de forma autónoma era sólo recomendable para entornos de desarrollo y entornos con requisitos mínimos de velocidad y gestión de transacciones. Hoy en día ya no existe esa percepción y Tomcat es usado como servidor web autónomo en entornos con alto nivel de tráfico y alta disponibilidad. Dado que Tomcat fue escrito en Java, funciona en cualquier sistema operativo que disponga de la máquina virtual.

En la documentación del paquete en /usr/share/doc/tomcat5/README.Debian.gz podemos ver que la versión de Tomcat empaquetada para Debian usa el puerto 8180 para el servidor web HTTP y el puerto 8009 para el conector Coyote/JK AJP 1.3 para Apache. El mantenedor del paquete explica que no se usó el puerto por defecto 8080 para evitar conflictos con junkbuster. Además, Tomcat también escucha en el puerto 8005, aunque sólo sobre la interfaz lo a la espera de comandos de finalización de servicio (del inglés, shutdown).

Editamos /etc/default/tomcat5 y modificamos las dos siguientes líneas:

JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun
TOMCAT5_SECURITY=no

Iniciamos el servicio:

/etc/init.d/tomcat5 start

Y comprobamos que esté funcionando correctamente con nuestro navegador favorito:

http://localhost:8180/

Descargar e instalar Open-Xchange

Para evitar avisos y errores en el ./configure, vamos a crear primero el usuario y la base de datos de PostgreSQL. Como root, nos hacemos con una shell del usuario postgres:

su - postgres

Creamos el usuario:

createuser --no-createdb --no-superuser --no-createrole --pwprompt openexchange
Enter password for new role:
Enter it again:
CREATE ROLE

La contraseña introducida será la misma que deberemos usar en el parámetro --with-dbpass del ./configure de Open-Xchange más adelante. Creamos ahora la base de datos:

createdb --owner openexchange --encoding UNICODE openexchange
CREATE DATABASE

Ahora ya podemos proceder a descargar, configurar y compilar los fuentes de Open-Xchange. Nos cambiamos al directorio /usr/src y, desde allí:

wget http://www.open-xchange.com/oxcms/opencms/misc/developer-zone/open-xchange-0.8.2-1.tar.bz2
tar -xjf open-xchange-0.8.2-1.tar.bz2
cd open-xchange-0.8.2-1

Configuramos los fuentes:

./configure \
--prefix=/opt/openxchange \
--with-mailjar=/opt/mail.jar \
--with-activationjar=/opt/activation.jar \
--with-jdomjar=/opt/jdom.jar \
--with-xercesjar=/opt/xercesImpl.jar \ \
--with-jsdkjar=/opt/servlet-api.jar \
--with-jdbcjar=/opt/postgresql.jar \
--with-dbname=openexchange \
--with-dbuser=openexchange \
--with-dbpass=<mi_passwd> \
--with-dbhost=localhost \
--with-runuid=www-data \
--with-rungid=www-data \
--with-domain=dominio.com \
--with-organisation="Mi empresa" \
--with-basedn="dc=dominio,dc=com" \
--with-rootdn="cn=admin,dc=dominio,dc=com" \
--with-rootpw=<mi_passwd> \
--enable-webdav \
--enable-doc
make
make install

Si todo el proceso ha ido bien, estos comandos nos dejarán una instalación en /opt/openxchange.

Scripts de Perl

Perl es un lenguaje de propósito general originalmente desarrollado para la manipulación de texto y que ahora es utilizado para un amplio rango de tareas, incluyendo la administración de sistemas, el desarrollo web, la programación en red, el desarrollo de interfaces gráficas, etc. Se pensó para que fuera práctico (facilidad de uso, eficiencia y completitud) en lugar de bonito (pequeño, elegante o minimalista). Sus principales características son la facilidad de uso, el soporte tanto de la programación estructurada como de la programación orientada a objetos y la programación funcional, la incorporación de un poderoso sistema de procesamiento de texto y una enorme colección de módulos disponibles.

Copiar login.pl y login.pm al directorio /usr/lib/cgi-bin:

cp /opt/openxchange/share/perl/login.* /usr/lib/cgi-bin/
chown www-data:root /usr/lib/cgi-bin/login.*
chmod 770 /usr/lib/cgi-bin/login.pl
chmod 660 /usr/lib/cgi-bin/login.pm

Cargar la web:

http://localhost/cgi-bin/login.pl

Si se obtiene un error del tipo Internal server error, revisa la instalación de Apache y su configuración (monitoriza el log /var/log/apache2/error.log y asegúrate de que el directorio /usr/lib/cgi-bin está correctamente configurado para poder ejecutar scripts de Perl). Debería aparecer un mensaje del estilo Server not running para que la instalación fuese correcta (un mensaje muy lógico, por otra parte, al igual que con Tomcat, pues los daemons de Open-Xchange aún no los hemos arrancado).

Pantalla de inicio

Configuración de Tomcat

Creamos el contexto dentro de Tomcat para los servlets de Open-Xchange. Será necesario copiar intranet.class y webmail.class al directorio webapps de Tomcat:

mkdir --parents /opt/tomcat5/webapps/servlet/WEB-INF/classes
chmod --recursive 755 /opt/tomcat5/webapps/servlet
cp /opt/openxchange/share/servlets/*.class /opt/tomcat5/webapps/servlet/WEB-INF/classes/
chmod 644 /opt/tomcat5/webapps/servlet/WEB-INF/classes/*.class

La configuración del contexto nos la habrá creado automáticamente el proceso de configuración e instalación de Open-Xchange. Copiamos el fichero de configuración web.xml:

cp /usr/src/open-xchange-0.8.2-1/system/servlet/web.xml /opt/tomcat5/webapps/servlet/WEB-INF/
chmod 644 /var/lib/tomcat5/webapps/servlet/WEB-INF/web.xml

Creamos el subdirectorio lib dentro de WEB-INF y copiamos los jars necesarios:

mkdir --mode=755 /opt/tomcat5/webapps/servlet/WEB-INF/lib
cp /opt/openxchange/lib/*.jar /opt/tomcat5/webapps/servlet/WEB-INF/lib/
cp --dereference /opt/mail.jar /opt/tomcat5/webapps/servlet/WEB-INF/lib/
cp --dereference /opt/jdom.jar /opt/tomcat5/webapps/servlet/WEB-INF/lib/
cp --dereference /opt/postgresql.jar /opt/tomcat5/webapps/servlet/WEB-INF/lib/
cp --dereference /opt/activation.jar /opt/tomcat5/webapps/servlet/WEB-INF/lib/
chmod 644 /var/lib/tomcat5/webapps/servlet/WEB-INF/lib/*

Finalmente, copiamos el war del configurador de Open-Xchange al subdirectorio webapps de Tomcat:

cp /opt/openxchange/lib/umin.war /opt/tomcat5/webapps/
chmod 644 /var/lib/tomcat5/webapps/umin.war

Si se desea tener acceso al gestor de configuración de Tomcat será necesario añadir la línea siguiente al fichero de configuración /opt/tomcat5/conf/tomcat-users.xml:

<user username="themanager" password="mi_passwd" roles="manager"/>

Reiniciamos Tomcat:

/etc/init.d/tomcat5 restart

Y cargamos la siguiente URL. Debería de aparecernos un mensaje del estilo Server is not running, lo cual es correcto, pues hace referencia a los daemons de Open-Xchange, que aún no han sido arrancados.

http://localhost:8180/servlet/intranet

Podemos acceder al gestor de configuración de Tomcat a través de la siguiente URL:

http://localhost:8180/manager/html

Configuración de Apache

El siguiente paso es configurar Apache para que se comunique con Tomcat. Para ello usaremos mod_jk. Editamos primero el fichero /etc/apache2/conf.d/mod_jk.conf:

<IfModule mod_jk.c>
        JkWorkersFile /etc/apache2/workers.properties
        JkLogFile /var/log/apache2/mod_jk.log
        JkLogLevel error
        JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
        JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
        JkRequestLogFormat "%w %V %T"
        JkMount /*.jsp localhost
        JkMount /servlet/* localhost
        JkMount /umin/* localhost
        JkMount /examples/* localhost
        JkMount /servlet/webdav.contacts* localhost
</IfModule>

Y, por último, editamos el fichero /etc/apache2/workers.properties:

ps=/
worker.list=localhost
worker.localhost.port=8009
worker.localhost.host=localhost
worker.localhost.type=ajp13
worker.localhost.lbfactor=1
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=localhost
workers.tomcat_home=/opt/tomcat5
workers.java_home=/usr/lib/jvm/java-1.5.0-sun

Reiniciamos Apache:

/etc/init.d/apache2 restart

Y cargamos de nuevo la URL siguiente. Deberíamos seguir viendo el mismo mensaje que antes, el de Server is not running.

http://localhost/servlet/intranet

Configuración de PostgreSQL

PostgreSQL es un Sistema Gestor de Bases de Datos Objeto-Relacionales (ORDBMS) que ha sido desarrollado de varias formas desde 1977. Comenzó como un proyecto denominado Ingres en la Universidad Berkeley de California. Ingres fue más tarde desarrollado comercialmente por la Relational Technologies/Ingres Corporation. En 1986 otro equipo dirigido por Michael Stonebraker de Berkeley continuó el desarrollo del código de Ingres para crear un sistema de bases de datos objeto-relacionales llamado Postgres. En 1996, debido a un nuevo esfuerzo de código abierto y a la incrementada funcionalidad del software, Postgres fue renombrado a PostgreSQL, tras un breve periplo como Postgres95. El proyecto PostgreSQL sigue actualmente un activo proceso de desarrollo a nivel mundial gracias a un equipo de desarrolladores y contribuidores de código abierto. PostgreSQL está ampliamente considerado como el sistema de bases de datos de código abierto más avanzado del mundo. Posee muchas características que tradicionalmente sólo se podían ver en productos comerciales de alto calibre.

Vamos a continuar la configuración de PostgreSQL donde la dejamos en el apartado de instalación de Open-Xchange. En primer lugar, si queremos evitar que se nos pida la contraseña cada vez que ejecutemos un script de creación o eliminación de usuario o grupo, editaremos el fichero /etc/postgresql/8.1/main/pg_hba.conf, comentaremos los valores de configuración de acceso y añadiremos éstos al final:

local all all trust
host all all 127.0.0.1/32 trust

Entonces reiniciaremos PostgreSQL para que los cambios surjan efecto:

/etc/init.d/postgresql-8.1 restart

Es muy importante tener en cuenta que esta configuración está habilitando el acceso al servidor de base de datos a cualquier usuario que tenga una shell en el servidor, lo cual podría suponer un enorme problema de seguridad si alguien más, aparte de nosotros, tiene acceso a dicha shell. Queda en manos del lector decidir si prefiere la comodidad o la seguridad en función de las condiciones de su servidor (por ejemplo, si lo comparte con otras aplicaciones y usuarios).

Independientemente de lo que acabamos de explicar, continuaremos haciéndonos, como root, con una shell del usuario postgres:

su - postgres

Y ejecutaremos el script de Open-Xchange que inicializará la base de datos que ya creamos con anterioridad (el usuario postgres deberá tener permisos de lectura sobre el fichero /opt/openxchange/share/init_database.sql):

psql --username openexchange --password --host 127.0.0.1 --dbname openexchange < /opt/openxchange/share/init_database.sql

Tal y como se indica en la documentación de instalación (fichero INSTALL que viene con la distribución), ejecutamos la siguiente sentencia INSERT:

psql --username openexchange --password --host 127.0.0.1 --dbname openexchange -c "INSERT INTO sys_gen_rights_template values ('now','admin','now','','default_template','y','y','y','y', 'y','y','y','y','y','y','y','y','y','y','y','y','y','y','y', 'y','y','y','y','y','y','y','y','y','y','y','y','y','y','y', 'y','y','y','y','y','y','y','y','y','y','y','y','y');"

Aunque no sea algo propiamente relacionado con Open-Xchange, es recomendable la desactivación de la caché de escritura del disco duro donde se encuentre la base de datos (ésto requerirá la instalación del paquete hdparm). Suponiendo que el disco sea /dev/hda:

hdparm -W 0 /dev/hda

Configuración de LDAP

LDAP (del inglés, Lightweight Directory Access Protocol) es un protocolo de red que permite el acceso a un servicio de directorio ordenado y distribuido para buscar información diversa en un entorno de red. LDAP puede considerarse una base de datos (aunque su sistema de almacenamiento puede ser diferente) sobre el cuál pueden realizarse consultas. Habitualmente, almacena la información de login (usuario y contraseña) y es utilizado para autenticarse, aunque es posible almacenar otra información (datos de contacto del usuario, ubicación de diversos recursos de la red, permisos, certificados, etc). En conclusión, LDAP es un protocolo de acceso unificado a un conjunto de informaciones sobre una red.

En primer lugar deberemos crear una contraseña para el usuario admin en forma de cadena cifrada con SSHA:

slappasswd -h {SSHA} -s <mi_passwd>
{SSHA}wly0YmmAoCSN7d3IWiiiLloIGYY4V2F9

En este ejemplo se ha usado la contraseña mi_passwd para generar la cadena. A continuación editamos el fichero /etc/ldap/slapd.conf y añadimos o modificamos las siguientes líneas:

include         /opt/openxchange/share/openxchange.schema
suffix          "dc=dominio,dc=com"
rootdn          "cn=admin,dc=dominio,dc=com"
rootpw          {SSHA}wly0YmmAoCSN7d3IWiiiLloIGYY4V2F9
index           uid,mailEnabled,cn,sn,givenname,lnetMailAccess,alias,loginDestination eq,sub
access to dn.base=""
        by * read
access to dn.base="cn=Subschema"
        by * read
access to attrs=userPassword,userPKCS12
        by dn="cn=admin,dc=dominio,dc=com" write
        by self write
        by anonymous auth
access to dn.subtree="o=AddressBook,ou=OxObjects,dc=dominio,dc=com"
        by group.exact="cn=AddressAdmins,o=AddressBook,ou=OxObjects,dc=dominio,dc=com" write
        by users read
access to dn.regex="^ou=addr,(uid=([^,]+),ou=Users,ou=OxObjects,dc=dominio,dc=com)$" attrs=children
        by dn.exact,expand="$1" write
access to dn.regex="^(uid|cn)=([^,]+),ou=addr,(uid=([^,]+),ou=Users,ou=OxObjects,dc=dominio,dc=com)$" attrs=entry
        by dn.exact,expand="$3" write
access to attrs=shadowLastChange
        by dn="cn=admin,dc=dominio,dc=com" write
        by self write
        by * read
access to *
        by dn="cn=admin,dc=dominio,dc=com" write
        by self write
        by * read

Si la directiva suffix ya existe, no hay que añadir una nueva directiva suffix sino modificar la existente. Si la directiva index ya existe, hay que añadir una nueva línea con otra directiva index. Asimismo, hay que poner especial atención a las directivas access, pues la configuración por defecto de OpenLDAP es demasiado permisiva en algunos aspectos y demasiado restrictiva en otros (motivo por el cual se ha tenido que modificar). Si una directiva access se corresponde con una ya existente, hay que comentar la existente y dejar únicamente la que se cita en este artículo.

Editamos ahora el fichero /opt/openxchange/share/init_ldap.ldif y modificamos las siguientes líneas:

userPassword: {SSHA}wly0YmmAoCSN7d3IWiiiLloIGYY4V2F9
OXTimeZone: Europe/Madrid

El último fichero de configuración que deberemos modificar es /etc/ldap/ldap.conf. Hay que poner especial atención a los espacios en blanco, que no deben de existir en el valor de la directiva BASE:

BASE    dc=dominio,dc=com
HOST    localhost

Creamos ahora sendos enlaces débiles dentro del directorio de instalación de Open-Xchange para importar así la configuración de OpenLDAP que acabamos de crear y nos aseguramos de que /etc/ldap/ldap.conf tenga permisos 644:

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

Por último, insertamos la información dentro de la base de datos LDAP.

slapadd -v -l /opt/openxchange/share/init_ldap.ldif

Si obtenemos un error y es necesario reinicializar la base de datos de LDAP, deberemos ejecutar las siguientes instrucciones (mucho ojo, pues borrarán la base de datos LDAP existente):

/etc/init.d/slapd stop
rm --force /var/lib/ldap/*
slapadd -v -l /opt/openxchange/share/init_ldap.ldif
/etc/init.d/slapd start

Si se obtiene un error del tipo db4.2_recover not found, instala el paquete db4.2-util.

Ya estamos listos para comprobar el buen funcionamiento de nuestra instalación de OpenLDAP. Añadiremos un usuario:

/opt/openxchange/sbin/adduser_ox \
--username="jdoe" \
--passwd="jdoe" \
--name="John" \
--sname="Doe" \
--maildomain="dominio.com" \
--ox_timezone="Europe/Madrid"

Lee cuidadosamente los mensajes que este comando produzca, incluso aunque veas un OK al final, y asegúrate de que todo sea correcto antes de continuar adelante. Si se te pide una contraseña, se trata de la contraseña de PostgreSQL. Podemos añadir ahora un grupo, si lo deseamos:

/opt/openxchange/sbin/addgroup_ox --group=Desarrollo

Y también podemos agregar el usuario al nuevo grupo:

/opt/openxchange/sbin/addusertogroup_ox --user=jdoe --group=Desarrollo

Si deseamos sacar el usuario del grupo, usaremos el siguiente comando:

/opt/openxchange/sbin/deluserfromgroup_ox --user=jdoe --group=Desarrollo

Si deseamos borrar un grupo, utilizaremos el siguiente comando:

/opt/openxchange/sbin/delgroup_ox --groupname=Desarrollo

Y si queremos borrar un usuario, el siguiente comando nos hará el trabajo:

/opt/openxchange/sbin/deluser_ox --username=jdoe

Todos los scripts de gestión de usuarios, grupos y permisos se encuentran en el directorio /opt/openxchange/sbin/, como ya habrá adivinado el lector. Se recomienda monitorizar los siguientes ficheros de log para asegurarse del correcto funcionamiento de la instalación:

tail -f /opt/openxchange/var/log/groupware.log | ccze
tail -f /opt/openxchange/var/log/sessiond.log | ccze

Configuración del website

Para facilitar la configuración del website de la intranet que soportará el servidor Open-Xchange, vamos a crear un subdirectorio cfintranet en /var/www y copiaremos allí todos los ficheros estáticos, principalmente imágenes, que serán accedidos a través del servidor web Apache. El lector puede preferir la creación de un host virtual o el uso de la cláusula alias de Apache. Para ello, ejecutaremos los siguientes comandos:

mkdir /var/www/cfintranet
mkdir /var/www/cfintranet/webmail
cp --recursive /opt/openxchange/share/groupware/data/images /var/www/cfintranet/
cp --recursive /opt/openxchange/share/groupware/data/css /var/www/cfintranet/
cp --recursive /opt/openxchange/share/groupware/data/javascript /var/www/cfintranet/
cp --recursive /opt/openxchange/share/webmail/data/images /var/www/cfintranet/webmail/
cp --recursive /opt/openxchange/share/webmail/data/css /var/www/cfintranet/webmail/
cp --recursive /opt/openxchange/share/webmail/data/javascript /var/www/cfintranet/webmail/
chown --recursive www-data:root /var/www/cfintranet

Por extraño que parezca, Open-Xchange viene sin iconos. Por ello vamos a instalar un conjunto de iconos antes de arrancar los servicios de la suite de trabajo en equipo. Existen varias alternativas y todas se instalan de manera muy parecida. En la sección de descargas de la web de Open-Xchange pueden descargarse, pero para este tutorial se ha elegido el Zenith Iconset v0.1.

Captura de pantalla del Zenith Iconset

cd /usr/src
wget http://ox.cutmasta.org/zenith/ox_zenith_iconset-0.1.tar.gz
tar -xzf ox_zenith_iconset-0.1.tar.gz
cp /usr/src/ox_zenith_iconset/top/* /var/www/cfintranet/images/top/DE/
cp /usr/src/ox_zenith_iconset/top/* /var/www/cfintranet/images/top/EN/
chown --recursive www-data:root /var/www/cfintranet/

WebDAV e inicio de Open-Xchange

En estos momentos deberíamos de tener una situación tal que ésta:

Es preciso que se cumplan todas las condiciones anteriores antes de continuar, pues arrancar los servicios de Open-Xchange no harán sino añadir más leña al fuego. A continuación procederemos a iniciar Open-Xchange:

/opt/openxchange/etc/init.d/openexchange start

Podemos validarnos con el usuario jdoe en el sistema a través del script de Perl login.pl, disponible en la dirección:

http://localhost/cgi-bin/login.pl

Si tenemos problemas de permisos a la hora de arrancar los servicios o de acceder a ellos a través de nuestro navegador favorito, podemos usar el script correctfilespool que viene con Open-Xchange (dependiendo del sistema de ficheros que tengamos es posible que la operación se tome su tiempo):

/opt/openxchange/sbin/correctfilespool
Setting right user and group. This can take a long time depending on the
used filesystem. Please be patient.
Setting user and group ...

Tal y como se explicaba al principio del artículo, es posible integrar Mozilla Sunbird con Open-Xchange. Mozilla Sunbird es la versión standalone de Mozilla Calendar, aplicación que se integraba como extensión en Mozilla Firefox y Mozilla Thunderbird pero que fue discontinuada recientemente en favor de Sunbird, que podemos descargar en castellano. Para conseguir dicha integración deberemos suscribirnos a un calendario remoto usando la siguiente URL:

http://localhost/servlet/webdav.ical

Donde localhost deberá ser substituido de forma apropiada según nuestra configuración de Apache. En el caso de que tengamos problemas para cargar el calendario remoto, estos pasos pueden ayudarnos a determinar el problema:

  1. Revisar los permisos del directorio /opt/openxchange y sus subdirectorios. Tanto Tomcat como Apache deben de tener permisos de lectura.
  2. Revisar la configuración del fichero /opt/tomcat5/webapps/servlet/WEB-INF/web.xml
  3. Revisar que se nos solicita autenticación al cargar la URL http://localhost:8180/servlet/webdav.ical.
  4. Verificar que webdav.jar, jdom.jar y postgresql.jar se encuentran dentro del directorio /opt/tomcat5/webapps/servlet/WEB-INF/lib.
  5. Asegurarnos de que se nos solicita autenticación al cargar la URL http://localhost/servlet/webdav.ical. Un problema en este punto podría significar un error de configuración de mod_jk.

Suscripción a un calendario remoto mediante WebDAV

Instalar un nuevo idioma

Cambia al directorio /usr/src y descarga allí la traducción del Groupware y del Webmail al español de la página de Open-Xchange:

wget http://www.open-xchange.com/oxcms/opencms/misc/developer-zone/archive/i18n/ES/OX-ES-Groupware_0.8.2.tar.gz
wget http://www.open-xchange.com/oxcms/opencms/misc/developer-zone/archive/i18n/ES/OX-ES-WEBMAIL_0.8.2.tar.gz

Descomprime los archivos y mueve los contenidos al directorio de instalación de Open-Xchange:

tar -xzf OX-ES-Groupware_0.8.2.tar.gz
mv opt/html/ES /opt/openxchange/share/groupware/data/templates/
mv opt/locales/ES.dlc /opt/openxchange/etc/groupware/locales/
rm --recursive --force opt

tar -xzf OX-ES-WEBMAIL_0.8.2.tar.gz
mv opt/html/ES /opt/openxchange/share/webmail/data/templates/
mv opt/locales/ES.dlc /opt/openxchange/etc/webmail/locales/
rm --recursive --force opt

Instala los iconos dentro del directorio web de contenidos estáticos en español:

mkdir /var/www/cfintranet/images/top/ES
cp /usr/src/ox_zenith_iconset/top/* /var/www/cfintranet/images/top/ES/
chown --recursive www-data:root /var/www/cfintranet/images/top/ES

Acto seguido deberemos añadir la etiqueta del idioma en el fichero de Perl login.pm que previamente habíamos copiado en /usr/lib/cgi-bin. Para ello editamos dicho fichero y modifcamos la variable languages, descomentando la línea previamente, si fuera necesario:

my $languages=['DE','EN','ES'];

El siguiente paso es editar el fichero /opt/tomcat5/webapps/umin/WEB-INF/classes/oxuserminconfig.properties y añadir el idioma:

AVAILABLE_LANGUAGES=DE,EN,ES

Tras reiniciar Apache y Open-Xchange ya tendremos disponible el nuevo idioma:

/etc/init.d/apache2 restart
/opt/openxchange/etc/init.d/openexchange restart

Sin usar paquetes Debian de Tomcat 5

El uso de paquetes Debian a través de apt-get o aptitude siempre facilita las tareas de administración al administrador de sistemas, pero con Java de por medio hay ocasiones en las que no es posible. Debido a las restricciones que la licencia de la máquina virtual de Java de Sun impone, Debian no podía, hasta hace muy poco, ni siquiera empaquetarla. Aún así, no es posible subir a Debian paquetes que dependan de paquetes que no sean software libre, por lo que las librerías necesarias para ejecutar Open-Xchange se han instalado en forma de paquetes nativos.

En el caso de que el lector necesite o quiera utilizar la versión 5.5 de Tomcat en lugar de la versión 5.0, que es la que viene en el paquete Debian, será preciso instalarlo manualmente. Para ello, lo descargaremos mediante wget en el directorio /opt y lo descomprimiremos:

wget http://apache.rediris.es/tomcat/tomcat-5/v5.5.17/bin/apache-tomcat-5.5.17.tar.gz
tar -xzf apache-tomcat-5.5.17.tar.gz

Y, a continuación, estableceremos los dos enlaces débiles necesarios para que el resto de la instalación seguida en este tutorial funcione con mínimas modificaciones:

ln --symbolic /opt/apache-tomcat-5.5.17 /opt/tomcat5
ln --symbolic /opt/tomcat5/common/lib/servlet-api.jar /opt/servlet-api.jar

Las únicas diferencias que tendremos que tener en cuenta serán las siguientes:

Instalación de oxAdm y ATFrogs

La empresa que da soporte comercial a Open-Xchange, Open-Xchange Inc., facilita diversos módulos que facilitan la administración y monitorización del servidor al comprar una licencia de soporte de dicho producto. Pero hay varias alternativas libres para conseguir el mismo resultado, entre las que se encuentra oxAdm. La instalación de oxAdm es muy sencilla. Empezaremos descargándolo en /var/www desde la siguiente URL:

http://www.panno.com/oxadm/download.php?downloadFile=oxadm_06092006.tgz&basedir=downloads&download=true

Y procederemos a descomprimirlo y ajustar los permisos del directorio:

tar -xzf oxadm_06092006.tgz
chown --recursive www-data:root /var/www/oxadm
chmod 770 /var/www/oxadm
cd /var/www/oxadm
find -type f -exec chmod 660 '{}' ';'
find -type d -exec chmod 770 '{}' ';'

El último paso será ajustar la configuración a nuestra instalación editando el fichero /var/www/oxadm/inc/config.php. Dependiendo de cómo hayamos configurado nuestro servidor de correo, la configuración de oxAdm variará. La que se describe a continuación sería una configuración bastante típica y está basada en la que se ejecuta en mis servidores en producción (sólo se incluyen las líneas que se modificaron):

$defaultlang = "en.php";

$ldap = array("server" => "localhost",
        "port" => "389",
        "pass" => "mi_passwd",
        "rootdn" => "cn=admin,dc=dominio,dc=com",
        "basedn" => "dc=dominio,dc=com",
        "oxdn" => "ou=OxObjects,dc=dominio,dc=com",
        "addrdn" => "cn=AddressAdmins,o=AddressBook,ou=OxObjects,dc=dominio,dc=com",
        "groupdn" => "ou=Groups,ou=OxObjects,dc=dominio,dc=com",
        "userdn" => "ou=Users,ou=OxObjects,dc=dominio,dc=com",
        "adressdn" => "o=AddressBook, ou=OxObjects,dc=dominio,dc=com",
        "admingroup" => "admins");

$ox = array("prefix" => "/daten/ox/sbin",
        "timezone" => "Europe/Madrid",
        "preferredLanguage" => "EN",
        "userCountry" => "Spain",
        "lnetMailAccess" => "TRUE",
        "OXAppointmentDays" => "5",
        "loginShell" => "/bin/bash",
        "shadowMin" => "0",
        "o" => "Mi empresa",
        "shadowMax" => "9999",
        "mailDomain" => "dominio.com",
        "OXTaskDays" => "5",
        "shadowWarning" => "7",
        "shadowExpire" => "0",
        "OXGroupID" => "500",
        "userAddReadOnly" => "true",
        "defaultLang" => "EN",
        "defaultMailboxCreate" => "true",
        "defaultMailboxAbonieren" => "true");

$db = array("database" => "openexchange",
        "ip" => "127.0.0.1",
        "port" => "5432",
        "user" => "openexchange",
        "pass" => "mi_passwd");

$imap = array("server" => "{localhost:143/imap/notls}",
        "passwort" => "mi_passwd",
        "username" => "cyrus",
        "prefix" => "user",
        "seperator" => "/",
        "createUserQuota" => "1000000");

oxAdm requiere PHP con soporte para PostgreSQL, IMAP y LDAP. En nuestra Debian conseguiremos esto instalando los paquetes php5, php5-pgsql, php5-imap y php5-ldap:

apt-get install php5 php5-imap php5-ldap php5-pgsql

Ahora ya podemos cargar en nuestro navegador la página de inicio de esta herramienta de administración de usuarios para Open-Xchange:

http://localhost/oxadm/

Otro interesante módulo de administración para Open-Xchange es ATFrogs

wget http://download.berlios.de/atfrogs/ATFrogs-1.0.tar.gz

Módulos de Open-Xchange

http://www.open-xchange.com/EN/product/index.html

Bibliografía

Historial de revisiones

Fecha Versión Cambios
08/09/2006 1.0 Documento inicial

Volver a la página de inicio