Z-Push

Z-Push (presumably Z is for Zarafa) is a FOSS implementation of the Microsoft Exchange ActiveSync protocol which is used to synchronize email, personal contacts and other items between a central server and a mobile device.

Z-Push enables any PHP and non-PHP based groupware package to become fully sync-able with any ActiveSync compliant device with an appropriate backend.

Currently, Z-Push includes four backends: the IMAP and the Maildir backends for e-mail synchronization, the vCard and the CardDAV backends for contact synchronization, CalDAV for calendar synchronization, stickynotes for Sticky Notes Synchronization and one for the Kopano and Zarafa package which is sold by allowing full synchronization of E-mail, Calendar, Contacts, and Tasks.

There is also a 3rd party project that implements a Zimbra Backend, allowing Z-Push to be used with a ZCS server (Including opensource edition).

Since version 2.3.0, released in July 2016, significant performance improvements have been achieved, as well as significantly lower memory usage. Connecting to Outlook 2013 and 2016 via EAS is also officially supported. With the optional Kopano Outlook Extension (available only for paid subscribers of Zarafa/Kopano), additional Outlook features are enabled such as Out of Office replies and opening of shared and public folders.

The future sustainability of the Z-Push project was in question after Kopano (formerly Zarafa) announced that they would no longer be supporting the project. Z-Push now has a new maintainer from the community for future support of the project.

Technical background and architecture
The ActiveSync protocol is a binary XML (WBXML) protocol across HTTP. The protocol is specifically designed with efficient use from mobile devices in mind. As such the protocol is optimized for low bandwidth, high latency connections. Also the protocol is designed for minimum number of whole request round trips. This means that the protocol can use many of the same techniques used to speed up access to websites. This is as opposed to IMAP or SMTP which is a two way handshaking TCP protocol which can be both quite slow and costly in terms of battery consumption across high latency connections.

Getting ActiveSync instant push notification on mobile devices – particularly iOS devices – may well be the primary reason some people wish to use ActiveSync. However this will introduce significant additional server loading, so it should be carefully considered and monitored whether this is actually a desirable feature on the server.

The client (i.e. phone) uses long polling HTTP with 30 minute timeouts on the HTTP requests. This means if no mail arrives there is no traffic on the TCP channel and the phone radios remain in low power receive only mode. However, server-side these HTTP requests are served as long polling web requests and processed in PHP. When the request comes in it consumes the resources of a web request - see further discussion below - and keeps this open for up to 30 minutes, or until a new message arrives, or the client device is switched off.