Lovin' Me Some SOGo (#noapple)

I really want to thank “jm k” for sending me a note awhile back on the SOGo project.

One of my big complaints about Android has always been that one must rely too much on hosting your data at Google to get the most benefit out of it. I have a nonnegotiable requirement to be able to synchronize my contacts and calendars across devices, and for the moment Apple doesn’t force me to use iCloud. However, I want to move away from iOS, so some sort of sync solution is required.

Any solution must be multi-platform. Most of the guys in the office have iPhones and MacBooks. Jeff has an Android phone and runs Fedora on his laptop. I run Ubuntu on my work desktop and, for the moment, OS X on my Macbook Air and the desktop at home.

Enter SOGo. SOGo is an open source “groupware” (how I hate that term) solution that enables one to manage calendars and contacts through a webUI, as well as desktop and mobile devices. The webUI also includes an IMAP connector that lets you access an IMAP server (a lá Squirrelmail – although one of the gotchas that hit me was that I couldn’t send mail unless the “To:” address was in my contacts).

For those that think open source can’t be beautiful, the webUI is very clean and attractive. It’s also all AJAX-y so you can manage your information as if you were using a native app (i.e. right click on a contact to bring up a menu that lets you update, delete, etc.).

But the real power lies in its sync capabilities. It implements both CalDAV and CardDAV protocols, which are becoming more widespread, and it is now possible for me to sync up most of my worlds.

Getting started isn’t super easy, however. Jeff did most of the work getting it installed on one of our Debian Squeeze servers (they supply packages) and while it is easy to get the software on the machine, getting it configured is another matter. It is pretty important to use LDAP for user management, and since we don’t have tons of LDAP experience there was a learning curve.

Being the boss has its benefits, so I pretty much sat back and complained a lot. However, I was able to help in getting the Apple stuff to sync, and especially in the case of the OS X Address Book the procedure borders on ritualistic.

In the hope that someone else will find this useful, here’s how I got the Address Book to sync.

Launch the Address Book, go to Preferences -> Accounts and add a new CardDAV account. Put in your server name, username and password and hit “Next”. This will cause the application to verify its connection to SOGo.

In our case, it failed. My belief is that it is due to the fact that the path the the SOGo DAV share doesn’t start at root.

After a lot of trial and error, I found a solution. After you create the account, look in the

~/Library/Application Support/AddressBook/Sources

directory and you should see a code for the account profile, something like this:

12B84577-CE41-4AB8-9CD6-91E2796E3A99

Descend into that directory and you’ll see a file called “Configuration.plist”. You’ll have to edit that file and make three changes:


        <key>haveWriteAccess</key>
        <integer>1</integer>
        <key>isSharedABAccount</key>
        <integer>0</integer>
...
        <key>servername</key>
        <string>https://sogo.example.com:443/SOGo/dav/tarus</string>
        <key>username</key>
        <string>tarus</string>

Make sure “haveWriteAccess” is set to 1 (true), “isSharedABAccount” is set to zero (false), and the “servername” string should be the fully qualified path to your user’s DAV share on the SOGo server (the port must be explicitly stated, even though one would assume the “https” tag would default to that).

And please use SSL for the connection – this is a lot of personal data you’ll be putting up there.

Anyway, hats off to the SOGo team as well as to Jeff for getting this running. Check out their demo if you are interested (username and password both “sogo1”). Now all that we have left is to set up a Firefox sync server for bookmarks and passwords and we should have synchronization covered.