I've just finished a tool for bulk export address books from Kolab into Zimbra-compatible CSV files (one file per mailbox).
It's written in python. Feel free to test and feedback.
In Kolab personal Address Book is by default stored in INBOX/Contacts folder in an RFC822 message format; one contact per message. A contact itself is stored as an attachment to the message. They also use cyrus-imapd as service application (hence, no PROXYAUTH support)
As a CON: it doesn't still export photos from contacts. And still as it is not a 1-button-tool (it only exports, not imports the into Zimbra).
At the end of file there are 2 lines:
first line initializes an instance of ABExporter object giving path to it's config file as a parameter.
exporter = ABExporter('/path/to/imapconn.conf')
second line produces the sugar, milk and a cup of coffee and mixes them the way you like. Parameter is path to a directory where to write Contacts .csv files.
Format of config file is:
imaplogin = manager
imappass = der_password
imapserver = kolab.domain.com
port = 143
The meaning of ABExporter.tagToCsvMap dictionary is described as ABMapType's docstring. Else is not very hard to understand, I guess.