Kontaktsynchronisation unter Mac OS El Capitan mit CardDAV

Bildschirmfoto 2015-10-14 um 11.36.36

Seit dem 30. September 2015 ist das neue Betriebssystem von Apple mit dem Namen El Capitan auf dem Markt. Wie bei jedem Launch einer neuen Software gibt es auch bei El Capitan hier und da Startschwierigkeiten. Ein aus unserer Sicht besonders ärgerliches Problem ist das geänderte Verhalten der Kontakte App bei der Kontaktsynchronisation mit einem fremden Server. Das mag bei einer einfachen Synchronisation mit iCloud oder Gmail nicht weiter tragisch sein, problematisch wird es wenn man seinen eigenen Webserver nutzt, um Kontakte zu synchronisieren. In diesem kurzen Artikel erläutern wir den Fehler, gehen auf den Grund ein und zeigen auf, wie sich der Fehler vergleichsweise einfach beheben lässt.

Ursachen der Synchronisationsprobleme mit CardDAV

Apple verwendet in der neuen Version einen PROPFIND Request, um Daten vom Server zu erhalten. Der PROPFIND Request selbst ist nicht das Problem, denn damit kann jeder Webserver umgehen. Das Problem ist, dass alle solche Anfragen der Kontakte App, an den Server auf die Adresse /.well-known/carddav laufen. Die Kontakte App ignoriert schlicht und einfach den in den App-Einstellungen eingegebenen Pfad des Anwenders für die Kontaktsynchronisation. Wir setzen bei unserem ionas-Server auf DAViCal, welches Aufrufe auf den Pfad “/dav/caldav.php” erwartet. So sind wir auf dieses Problem gestoßen.

Natürlich kann man davon ausgehen, dass Apple diesbezüglich bald ein Update herausbringt, welches das Problem behebt. Doch was macht man in der Zwischenzeit? Was ist, wenn man auf die Kontaktsynchronisation angewiesen ist?

Lösungsansatz Redirect

Eine vorübergehende Lösung für das Problem ist ein serverseitiger Redirect im Webserver. Dieser Redirect sorgt dafür, dass die fehlerhaften Anfragen auf den korrekten Pfad weitergeleitet werden. Wichtig ist dabei, dass man seine neue Konfiguration an die richtige Stelle schreibt.

Konfiguration des Webservers NGINX

In den Server Block der NGINX default Datei fügen Sie folgende Zeile ein:

rewrite ^/.well-known/carddav /PFAD_ZUR_DAVICAL.PHP permanent;
rewrite ^/.well-known/login.php /PFAD_ZUR_DAVICAL.PHP permanent;

Wichtig: Der String “PFAD_ZUR_DAVICAL.PHP” muß natürlich Ihrem Serverpfad entsprechen. Danach den NGINX Server neu starten und die Synchronisation der Kontakte funktioniert wieder einwandfrei.

Konfiguration des Webservers Apache

Apache verarbeitet die Redirect Kommandos anders als NGINX. Wenn Sie einen Apache Webserver nutzen, fügen Sie folgende Zeile in die .htaccess Datei ein.

RewriteRule ^/.well-known/carddav(.*) /PFAD_ZUR_DAVICAL.PHP$1 [R]
RewriteRule ^/.well-known/login.php /PFAD_ZUR_DAVICAL.PHP$1 [R]

Danach den Apache Server neu Starten und die Synchronisation des Adressbuches sollte danach wieder zuverlässig funktionieren. (Für NGINX haben wir den Code getestet, für Apache hatten wir keine Möglichkeit dies zu tun.)

Fazit

In den seltensten Fällen kommt eine neue Software ohne Probleme auf den Markt. Das gilt besonders für neue Betriebssysteme, wobei Microsoft einen deutlich schlechteren Ruf hat als Apple. Aber auch Apple zeigt in diesem Fall mal wieder, dass seine Entwickler anscheinend keine Probleme damit haben, gängige Standards ohne Ankündigung zu ändern.

Es ist jedoch beruhigend zu wissen, dass man mit etwas Einfallsreichtum auch bei solchen Problemen zu einer Lösung kommt.

geschrieben von

Christoph Dyllick-Brenzinger

Christoph ist Gründer und Chefentwickler von datamate. Er ist ein absoluter Linux-Fan und hat schon früh seine Leidenschaft für Technik und Programmierung entdeckt. Seine langjährige Erfahrung als Unternehmensberater spürt man regelmäßig, wenn er nach optimalen Lösungen für die Kunden sucht. Wenn er nicht gerade den Tennisplatz unsicher macht oder bei Overwatch sein Liga-Ranking verbessert, verbringt Christoph seine Freizeit mit seiner Frau und seinen drei Kindern.