Zarafa Z-push op multi-tenant setups

Bij Taurix bieden we klanten hosted groupware aan op basis van het uitstekende Zarafa.  Zarafa heeft ondersteuning voor multi-tenant setup zodat elke klant in zijn eigen omgeving zit en niets ziet van de andere klanten die op dezelfde server werken.

Zarafa maakt gebruik van een spin-off project genaamd Z-push om volwaardige ActiveSync ondersteuning te bieden voor mobiele devices.  Maar helaas is Z-push blijkbaar niet gemaakt om multi-tenancy standaard te ondersteunen.  Dit wordt namelijk bereikt door de Domain parameter van je client te gebruiken. 

Wat zarafa nodig heeft is dat de user parameter die door Z-push wordt doorgegeven gelijk is aan de waarde waarmee inglogd wordt.  Hoe de logins op de multi-tenancy setup worden opgebouwd is instelbaar.  Het gaat om een combinatie van <user> <serarator> en <domain>.  Wij bij Taurix maken gebruik van het formaat <domain>\<user>, de patch hieronder is dan ook op die basis gemaakt.

De wijziging moet gebeuren in <z-push>/backend/zarafa.php:

+                 $this->session = @mapi_logon_zarafa("$domain\\$user", $pass, MAPI_SERVER, null, null, 0);
-                 $this->session = @mapi_logon_zarafa($user, $pass, MAPI_SERVER, null, null, 0);

+                 $this->session = @mapi_logon_zarafa("$domain\\$user", $pass, MAPI_SERVER);
-                 $this->session = @mapi_logon_zarafa($user, $pass, MAPI_SERVER);