we have just released Z-Push 2.4.0 final (tag 2.4.0 commit 0dfcf19631619195702919b3b4d521fad12f3a88).

Main feature of this version is the support of ActiveSync protocol version 14.1.
This new ActiveSync version has features which are implemented as stubs, like RightsManagement, but no backend uses this functionality yet.

With the Kopano backend the GAB search shows you saved pictures of users on the mobile now for devices which support it (iOS and some Android devices).

There are now configuration packages for NGINX (also with PHP-FPM support) available.

We changed the user based logging. Now every user/device combination logs into a separate log file, when a user is in the special log users.

For statically configured folders (via config.php) now it is possible to configure flags.

This Z-Push version supports impersonating in KOE 2.0 (to be released soon).

We also exposed shared folder API to z-push-admin. It means that now it’s possible to easily add or remove shared folders using z-push-admin for every mobile device.

There’s a new note backend contributed by Karl. Thanks for sharing it!

Another contribution is wincache IPC provider. Thanks to Michael for contributing it!

There have been a lot of changes in meeting request and recurring classes for the Kopano backend. Please let us know if you find any issues.

We want also to thank all our community contributors and for valuable feedback: Andreas, Bart, Chris, Christian, Karl, Michael, Nicolas, Roel, Vincent, Yano! Keep up the good work.

Install Z-Push 2.4.0 from the final repositories (recommended) Z-Push Wiki.

Z-Push 2.4.0 will not be released as tarball anymore.
If using the repositories is not an option, it is possible to check out the code via git and the tag 2.4.0. More information is available here.

Tickets in Z-Push 2.4.0 final
[ZP-596] - ActiveSync 14.1 related issues and tasks

[ZP-1233] - Meeting requests default to GMT timezone
[ZP-1313] - Remove TNEF class

[ZP-1205] - Set custom sync period per store

[ZP-295] - AS 14.1: Implement FirstDayOfWeek for recurring items
[ZP-836] - Recurring tasks duplicate in OL 2016
[ZP-1051] - z-push/include/mimeDecode.php:902 mb_strlen(): Unknown encoding "windows-1250"
[ZP-1162] - Create a nginx config package
[ZP-1267] - Change summed mapi tags
[ZP-1270] - Unknown origin and warnings when listing configured shared folders via API
[ZP-1276] - Error in logging when sending email with imap backend: Only variables should be assigned by reference
[ZP-1287] - Editing appointment by owner creates new appointment
[ZP-1294] - FixFileOwner requires posix_getuid which fails on Windows
[ZP-1307] - Unable to accept Meeting Request on iOS 11
[ZP-1308] - Incompatible PHP 5.4 code in FileStateMachine
[ZP-1315] - Carddav backend, EMAIL should only contain email address
[ZP-1318] - Caldav only set ORGANIZER if ATTENDEE
[ZP-1319] - Caldav only save DESCRIPTION if it's not empty
[ZP-1320] - Caldav X-MICROSOFT-CDO-ALLDAYEVENT support
[ZP-1321] - Carddav support rare phone types
[ZP-1322] - All-day event created in Outlook stretches over 2 days in Webapp
[ZP-1324] - Carddav, $message->asbody->data can be NULL
[ZP-1326] - AirWatch Boxer not working on iOS
[ZP-1329] - Refactor impersonation feature
[ZP-1339] - Replace removed PHP-MAPI functions
[ZP-1344] - Reply back exporter doesn't honor private flag
[ZP-1345] - Own private items stripped when folder is in $additionalFolders
[ZP-1347] - [imap] Creating folder on mobile fails
[ZP-1348] - Use of undefined constants in email with attachments
[ZP-1350] - Erroneous mapi_last_hresult value when source message is not found while moving
[ZP-1352] - Impersonation: check read permissions on all folders on FolderSync
[ZP-1353] - Check user vs authUser case-insensitive for log
[ZP-1354] - Basedate in GlobalObjectId must be GMT
[ZP-1355] - Auth username when impersonating is always lowercase
[ZP-1356] - Log output without impersonated user
[ZP-1361] - Folder created in impersonated store is not FLD_ORIGIN_IMPERSONATED
[ZP-1370] - Impersonation: public folder can't be opened

New Feature
[ZP-742] - Implement OnlineMeeting*Link
[ZP-743] - Implement Picture for ResolveRecipients
[ZP-744] - Implement Picture for Search
[ZP-745] - Implement BodyPart and BodyPartPreference
[ZP-746] - Implement PrimarySmtpAddress in Settings
[ZP-747] - Implement Accounts in Settings
[ZP-748] - Implement RightsManagementInformation
[ZP-758] - Implement MeetingMessageType
[ZP-1104] - Have a device specific log file
[ZP-1121] - Output opaque data
[ZP-1165] - Tools: z-push-admin could have an option to delete profiles older than X days
[ZP-1192] - Expose shared folder API to z-push-admin
[ZP-1271] - Impersonate shared folders with own credentials
[ZP-1305] - Show KOE last connection time in z-push-admin
[ZP-1332] - Add wincache IPC provider

[ZP-753] - Add ASV 14.1 constant to zpush.php
[ZP-1303] - [nginx] write documentation about configuration

[ZP-1122] - Sync loop failsafe - check for out-of-memory condition
[ZP-1145] - Support fpm in webserver config packages
[ZP-1153] - Debian packaging: run tools als webserver user
[ZP-1161] - Update Nginx config
[ZP-1183] - Use custom header for remote IP (e.g. HTTP_X_REAL_IP)
[ZP-1206] - Statically configured folders can not have flags
[ZP-1209] - AutoDiscover: config parameter to get a valid username
[ZP-1214] - AutoDiscover should check for credentials even in GET requests
[ZP-1235] - Improve guessTZNameFromPHPName
[ZP-1242] - Check for cpid directly instead of getting charset
[ZP-1258] - Use PR_EC_IMAP_EMAIL to get RFC822 data
[ZP-1260] - Improve isset in ASDevice->GetFolderSyncStatus()
[ZP-1261] - Reduce amount of repeated glob calls
[ZP-1283] - Build rh-php56-php-memcached for RHEL 6+7 with SCL
[ZP-1284] - Add Note Backend operating against Postgres database
[ZP-1295] - Merge MAPI classes from webapp
[ZP-1304] - Refactoring in MAPI classes
[ZP-1327] - Add KOE Impersonate feature flag
[ZP-1331] - Create z-push group for rpm packages
[ZP-1340] - Review stream writes
[ZP-1357] - Private items aren't stripped of data when impersonating
[ZP-1360] - Remove ICalParser class
[ZP-1367] - Tools: gab-sync shows weird behavior when php-mapi includes are wrong

Please share your experiences (positive and negative) and give feedback!