How To Setup SyncML on Kolab / Gentoo
June 22, 2008 by Jeremy Brock
Kolab, a Microsoft Exchange groupware alternative for Linux, now supports SyncML which allows contact, calendar, and notes synchronization between kolab and your PDA, phone, and even Outlook. SyncML support on Kolab2/Gentoo is experimental; you’ll be running a bleeding edge configuration. Test it before modifying your production box.
SyncML support is provided through Horde’s SyncML backend which queries the Kolab storage driver for PIM information. Horde's SyncML backend doesn’t support using the Kolab storage driver to store metadata so we need to install a database, I used MySQL however this should work with other backends.
Currently there is no nag (task) support. I’ve tested SyncML support with Outlook using funambol and with BlackBerry using SyncJe.
This guide assumes the following:
- You have a working Kolab2/Gentoo w/ Horde.
- MySQL is installed and configured.
- Your're NOT trying this on a production server (yet).
Gunnar Wrobel was kind enough to create a script that downloads the Kolab Horde CVS code and patches it (See Unofficial Announcement). The first step is to create a temporary directory then download and run the script.
mkdir kolab cd kolab wget 'http://kolab.org/cgi-bin/viewcvs-kolab.cgi/*checkout*/server/horde/external-horde-cvs.sh' chmod u+x external-horde-cvs.sh ./external-horde-cvs.sh
Before we install the new framework iCalendar.php needs to be patched to fix a contact synchronization bug (BUG #6706)
cd framework/iCalendar wget -O iCalendar.php 'http://cvs.horde.org/co.php/framework/iCalendar/iCalendar.php?r=1.57.4.60&p=1' cd ..
Now install the updated horde framework with SyncML support. This will overwrite your existing horde framework in /usr/share/php/Horde
./install-packages.php cd ..
Next Horde needs to be configured. First we must create the default horde configuration files then copy your existing kolab config.php file over.
cd horde/config for f in *.dist; do cp $f `basename $f .dist`; done cd ../dimp/config for f in *.dist; do cp $f `basename $f .dist`; done cd ../../imp/config/ for f in *.dist; do cp $f `basename $f .dist`; done cd ../../ingo/config/ for f in *.dist; do cp $f `basename $f .dist`; done cd ../../kronolith/config/ for f in *.dist; do cp $f `basename $f .dist`; done cd ../../mimp/config/ for f in *.dist; do cp $f `basename $f .dist`; done cd ../../mnemo/config/ for f in *.dist; do cp $f `basename $f .dist`; done cd ../../nag/config/ for f in *.dist; do cp $f `basename $f .dist`; done cd ../../passwd/config/ for f in *.dist; do cp $f `basename $f .dist`; done cd ../../turba/config/ for f in *.dist; do cp $f `basename $f .dist`; done cd ../..
Now copy over your existing horde config/config.php with your Horde/Kolab settings.
cp /var/www/kolab/htdocs/horde/config/conf.php config/conf.php
Next we must create the necessary database and tables for horde, if you use a different backend refer to the README file in scripts/sql for installation instructions.
mysql -u root -p < scripts/sql/create.mysql.sql /etc/init.d/mysql restart
Create a backup copy of your existing horde directory and copy the new folder over. Then run kolabconf to recreate the kolab.conf files
mv /var/www/kolab/htdocs/horde /var/www/kolab/htdocs/horde.presyncml cd .. cp -rv horde /var/www/kolab/htdocs/horde chown -R apache:apache /var/www/kolab/htdocs/horde kolabconf
You should have a working horde install which you can access from https://www.example.org/horde
Now horde needs to be configured to use MySQL as its database. Login as 'manager' with your kolab manager password and goto Administration->Setup->Horde->Database Tab. Change the following and click on Generate Horde Configuration:
$conf[sql][phptype] = MySQL $conf[sql][username] = horde $conf[sql][password] = horde $conf[sql][database] = horde
Congratulations, you’re done installing the Horde/Kolab cvs overlay with SyncML support. The journey has just started.
For more information on configuring SyncML in Horde visit the SyncHowTo page.
For a list of SyncML clients visit the SyncML Wiki.
Issues/Troubleshooting:
1. Funambol for Microsoft Outlook won’t communicate over SSL (https) if your certificate isn’t trusted. If that’s the case modify your apache configuration files to allow non SSL connections.
2. Funabol for Blackberry doesn’t work (for me), use SyncJE (trail version available)
3. If you have contact syncing issues verify the Global Address Book is not the default Address Book. Options->Address Book->Address Books
4. If you have syncing issues verify annotations are correct for that folder. Folder type should be contact.default, event.default, note.default, or task.default
cyradm -u user@example.org localhost > info INBOX/Contacts {INBOX/Contacts}: condstore: false lastpop: lastupdate: 10-May-2008 11:55:25 -0400 partition: default size: 86046 folder-type: contact.default > mboxcfg INBOX/Contacts /vendor/kolab/folder-type contact
5. Tasks (nag) support hasn't been implemented yet thus it does not work.
Many thanks to Gunnar Wrobel for patching Horde’s SyncML to work with the KoLab storage driver and for aiding me in the troubleshooting process.
