Intro
Roundcube se está imponiendo como el cliente más habitual de software libre para webmail. Personalmente llevo varios años probándolo y cada vez me gusta más. Sin embargo, para aprovechar al máximo las posibilidades de este programa es necesario instalar un cliente de carddav que nos permita acceder a nuestros contactos. En nuestro caso mantenemos los contactos en owncloud y nos sirven para el teléfono móvil, el correo, etc.
Con la versión 1.3 de roundcube el plugin de carddav que estábamos usando dejó de funcionar, así que tuvimos que instalar la nueva rcmcarddav (https://plugins.roundcube.net/packages/roundcube/carddav) de la página de plugins de roundcube. A lo largo de la instalación y configuración de la misma nos encontramos con una serie de problemas que hemos acabado resolviendo de la forma que explico en este tutorial.
Instalación
Aunque la página de github del plugin indica como medio posible de instalación la descompresión del archivo de release, que según parece contiene todos los requerimientos, en mi caso no pude encontrar dicho archivo y tuve que descargar el directorio git, por lo que lo primero que tuve que hacer fue instalar las dependencias mediante composer.
Lo primero es descargar el .zip del git de carddav y descomprimirlo.
Luego movemos el directorio descomprimido (rcmcarddav-master) al directorio plugins de roundcube y lo renombramos como carddav.
Para instalar las dependencias, dentro del directorio carddav ejecutamos el siguiente código:
#curl -sS https://getcomposer.org/installer | php
#php composer.phar install
Sin embargo, cuando activamos el plugin carddav en el archivo config.inc.php del roundcube y tratamos de acceder el sistema nos indica un error en el acceso a la base de datos.
Esto se debe a que las tablas necesarias para carddav no se han instalado. Para instalarlas habría que ejecutar el archivo correspondiente del directorio dbmigrations/0000-dbinit de carddav. En nuestro caso el archivo a emplear es mysql.sql:
#mysql roundcubedatabase < mysql.sql -p
La primera en la frente: aparece el siguiente error:
ERROR 1215 (HY000) at line 2: Cannot add foreign key constraint
Resulta que el archivo mysql.sql contiene la instrucción de crear las tablas con prefijo. Si no hemos puesto prefijo en las tablas de roundcube, el sistema arroja el error anterior. Para eliminarlo y que el sistema cree las tablas necesarias hay que editar el archivo mysql.sql y eliminar todas las ocurrencias de TABLE_PREFIX dentro del mismo.
Una vez hecho ésto volvemos a cargar el contenido de myql.sql dentro de la base de datos de roundcube.
Arranca, pero no funciona
Con lo que habíamos hecho hasta el momento podíamos ver la entrada para carddav dentro del menu de configuración. Sin embargo, cuando creábamos una conexión el sistema no hacía nada.
Al final nos enteramos de que había que ejecutar también el archivo mysql.sql del directorio dbmigrations/0001-categories/ después de haberlo modificado para eliminar TABLE_PREFIX del mismo.
Igual hacemos con los archivos mysql.sql del resto de subdirectorios del directorio dbmigrations
Una vez hecho ésto ya podemos conectar a nuestros servidores de carddav para disfrutar de nuestros contactos.
Thats all folks!