Reeds 2 maal was mijn Zimbra server gehacked, niettegenstaande ik heel regelmatig updates doe (toch zeker 1 keer per maand). Onlangs had ik nog een totaal nieuwe instance opgezet omdat een exploit niet 100% gefixt geraakte. En heel recentelijk was er weer een update die een script heeft gebroken om de Let's Encrypt certificaten te vernieuwen; zodat ik er nu eigenlijk wel genoeg van heb.

De Zimbra server werd opgezet omdat een gewone mailserver eigenlijk vooral de functionaliteiten van een Kalender en Contacten mist. Daarenboven had deze het voordeel dat deze het voor de clients vrij gemakkelijk liet installeren. bv voor een kalender is de te gebruiken url https://zimbra.reynaert.be/dav/user@domain.be/Calendar/
Dit is dan ook het enige nadeel van volgende setup tov Zimbra.
Bij het aanmaken van een Zimbra mailbox wordt gelijk een kalender en contacten dav aangemaakt. Met de Radicale server (die ik straks zal uitleggen) moet dit gebeuren via een manuele stap.
Ook is de url voor bv een kalender niet zo handig. bv https://madison.reynaert.be/dav/user@domain.be/md5hash/ md5hash is een lange reeks cijfers en letters.

Vele gebruikers maakten geen gebruik van de kalender en contacten functionaliteit (op Zimbra) omdat dit toch wel al enkele minder evidente plugins en of apps en configuratie nodig heeft.

Deze post kan dus dienen voor 2 doelen:

  • Opzetten van CallDav en CardDav
  • Configureren van applicaties tbv CallDav en CardDav

CallDav en CardDav met Radicale

Het is waarschijnlijk mogelijk om de Radicale server op te zetten op een fysieke of virtuele machine, maar het is zo simpel om dit via docker te doen dat ik zelfs geen moeite heb gedaan om het anders te doen.

Radicale Docker

Ik heb gekozen voor een docker van tomsquest. Installeer die ergens zodat die bereikbaar is voor je Proxy die we later ervoor zullen zetten.

#!/bin/bash
docker run \
        --cpus 1 \
        -p 5232:5232 \
        -v /share/Container/data/radicale/data:/data \
        -v /share/Container/data/radicale/config:/config:ro \
        --read-only \
		--init \
		--security-opt="no-new-privileges:true" \
		--cap-drop ALL \
		--cap-add CHOWN \
		--cap-add SETUID \
		--cap-add SETGID \
		--cap-add KILL \
		--pids-limit 50 \
		--memory 256M \
		--health-cmd="curl --fail http://10.11.94.51:5232 || exit 1" \
		--health-interval=30s \
		--health-retries=3 \
        --name Radicale \
		--hostname Radicale \
        tomsquest/docker-radicale

10.11.94.51 is de server waar ik de docker op draai. En de folders data en config zet ik ergens apart.

Configuratie van radicale

Veel hoeven we niet aan te passen aan de standaard configuratie.
Slechts enkele aanpassingen zijn nodig

Luister naar de poort 5232, en niet alleen op ip 127.0.0.1

hosts = 0.0.0.0:5232

We willen dat die authenticeert via de Proxy Realm die we straks gaan instellen

type = http_x_remote_user

Afhankelijk van wat je hebt ingesteld in de docker file gaan we de data dir gaan verleggen filesystem_folder = /data/collections

De rest is te tweaken naar eigen behoeften

Proxy via Apache

De docker gaan we benaderen via een webserver waar Apache op draait (NGinX zou natuurlijk ook kunnen) en waar we een virtual host gaan configureren alwaar we een SSL certificaat gaan aan toekennen. Dit laatste gaan we hier niet uitwerken. Considered known stuff.

We gaan de folder /dav/ proxy-en met basic authentication naar de zojuist opgezette docker RewriteEngine On RewriteRule ^/dav$ /dav/ [R,L] <Location "/dav/"> AuthType Basic AuthName "Radicale - Paswoord nodig" AuthUserFile "/etc/radicale/users" Require valid-user ProxyPass http://locatievandedocker:5232/ retry=0 ProxyPassReverse http://locatievandedocker:5232/ RequestHeader set X-Script-Name /dav RequestHeader set X-Remote-User expr=%{REMOTE_USER}

De gebruikers die van deze dienst gebruik kunnen maken moeten we aanmaken op de apache server

htpasswd -c /etc/radicale/users gebruiker1@domein.be htpasswd /etc/radicale/users gebruiker2@domein.be

Test of dit werkt. Ga met een browser naar de pagina virtualhost/dav/, login met een gebruiker en maak een kalender of contacten groep aan.

Client applicaties

OpenSync is een zeer goede gratis Open Source app op Android die je gemakkelijk kan configureren op je smartphone. Kies echter voor Inloggen met URL en gebruikersnaam of je komt mogelijks op een scherm waar je eeuwig op blijft. Voer de url in, deze die je zojuist hebt gebruikt om de kalender en contacten aan te maken aka virtualhost/dav/gebruikerx@domein.be/. Voer je credentials in en de app zal de kalenders en contacten lijsten voor je vinden en opsommen.

Voor Outlook gebruik ik de plugin CallDav Synchronizer. Per item (kalender of contactlijst) kan je de url invoeren en een aantal settings definieëren. Gebruik de test knop om het login process te testen.

Tags gerelateerd aan dit artikel: