Z-Push 2.4.x beta/pre-final updates

Hi all,

the release procedure for Z-Push 2.4.x versions will be the same as for Z-Push 2.3.x versions (except that we won’t publish tarballs anymore).

From today pre-final branch will contain Z-Push 2.4.x releases. If for some reason you want to continue using Z-Push 2.3.x pre-final, you’ll have to disable the current Z-Push pre-final repository and checkout release/2.3 branch. More information about using branches is available at: https://wiki.z-hub.io/display/ZP/How+to+get+the+latest+Z-Push+code+from+GIT.

By using the pre-final repository you will automatically get fixes fast and install beta versions.

  • When a final is released, in the release/2.4 branch/pre-final repo this version also gets a tag, like version+1-beta0. So, 2.4.0 final in master is called 2.4.1.beta0 in release/2.4.
  • Changes are going to be continuously merged into the release/2.4 branch.
  • By using the pre-final repository you will get these changes when update/upgrade from the repository.
  • These changes will be part of the next released beta, but you will have them before the beta is officially released (a released beta is just a bundle of changes).


  • 2.4.0 was released (final, in the GIT master branch)
  • in release/2.4 2.4.0 is called 2.4.1.beta0+0 (same thing, just a different name)
  • as changes are merged, the last number will increase, 2.4.1.beta0+6 are changes that are going to become 2.4.1.beta1. Same as 2.4.1.beta1+X are changes that are going to become 2.4.1.beta2 (or perhaps final if we consider these changes trivial enough that we don’t release another beta).

This thread is to keep you updated about the changes that are merged into the release/2.4 branch.

Alternatively you could get the same via a GIT checkout of the release/2.4 branch.

If you have any feedback about the version, please open a new thread mentioning the exact version number logged in your z-push log.


Tickets in 2.4.0.alpha1 release:
[ ZP-295] AS 14.1: Implement FirstDayOfWeek for recurring items
[ ZP-596] ActiveSync 14.1 related issues and tasks
[ 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-753] Add ASV 14.1 constant to zpush.php
[ ZP-758] Implement MeetingMessageType
[ZP-1051] z-push/include/mimeDecode.php:902 mb_strlen(): Unknown encoding “windows-1250”
[ZP-1121] Output opaque data
[ZP-1145] Support fpm in webserver config packages
[ZP-1161] Update Nginx config
[ZP-1162] Create a nginx config package
[ZP-1165] Tools: z-push-admin could have an option to delete profiles older than X days
[ZP-1209] AutoDiscover: config parameter to get a valid username
[ZP-1214] AutoDiscover should check for credentials even in GET requests
[ZP-1258] Use PR_EC_IMAP_EMAIL to get RFC822 data
[ZP-1261] Reduce amount of repeated glob calls
[ZP-1267] Change summed mapi tags
[ZP-1270] Unknown origin and warnings when listing configured shared folders via API
[ZP-1271] Impersonate shared folders with own credentials
[ZP-1276] Error in logging when sending email with imap backend: Only variables should be assigned by reference

Tickets since 2.4.0.alpha1:
[ZP-1104] Have a device specific log file
[ZP-1122] Sync loop failsafe - check for out-of-memory condition
[ZP-1153] Debian packaging: run tools als webserver user
[ZP-1183] Use custom header for remote IP (e.g. HTTP_X_REAL_IP)
[ZP-1205] Set custom sync period per store (KOE feature)
[ZP-1206] Statically configured folders can not have flags
[ZP-1233] Meeting requests default to GMT timezone
[ZP-1235] Improve guessTZNameFromPHPName
[ZP-1242] Check for cpid directly instead of getting charset
[ZP-1260] Improve isset in ASDevice->GetFolderSyncStatus()
[ZP-1283] Build rh-php56-php-memcached for RHEL 6+7 with SCL
[ZP-1305] Show KOE last connection time in z-push-admin
[ZP-1307] Unable to accept Meeting Request on iOS 11
[ZP-1308] Incompatible PHP 5.4 code in FileStateMachine
[ZP-1313] Remove TNEF class
[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-1321] Carddav support rare phone types
[ZP-1324] Carddav, $message->asbody->data can be NULL
[ZP-1326] AirWatch Boxer not working on iOS
[ZP-1327] Add KOE Impersonate feature flag
[ZP-1331] Use z-push as default group for config files and directories.


  • Ticket ZP-1104 causes the DeviceID to be added to the log file name, when a user is in the special log users.
  • Changes in the main configuration file:
    • The ability to add flags (e.g. to suppress reminders of calendars in KOE)
    • The parameter USE_X_FORWARDED_FOR_HEADER was superseded by USE_CUSTOM_REMOTE_IP_HEADER. The new parameter allows you to specify any header to identify the remote IP (HTTP_X_REAL_IP by default).
    • A new KOE flag was added (used by KOE 2.0).

Please modify your configuration file accordingly!

The pre-final repository is now using release/2.4 branch. Current version of the pre-final repository is 2.4.0.beta1+0.

Tickets since 2.4.0 beta1 release:
[ZP-836] - Recurring tasks duplicate in OL 2016
[ZP-1287] - Editing appointment by owner creates new appointment
[ZP-1294] - FixFileOwner requires posix_getuid which fails on Windows
[ZP-1322] - All-day event created in Outlook stretches over 2 days in Webapp
[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

New Feature
[ZP-1192] - Expose shared folder API to z-push-admin
[ZP-1332] - Add wincache IPC provider

[ZP-1303] - [nginx] write documentation about configuration

[ZP-1284] - Add Note Backend operating against Postgres database
[ZP-1295] - Merge MAPI classes from webapp
[ZP-1304] - Refactoring in MAPI classes
[ZP-1340] - Review stream writes
[ZP-1357] - Private items aren’t stripped of data when impersonating
[ZP-1360] - Remove ICalParser class

Last merges for 2.4.0 final release:

[ZP-1370] - Impersonation: public folder can’t be opened

[ZP-1367] - Tools: gab-sync shows weird behavior when php-mapi includes are wrong

Tickets for 2.4.1 beta release:

[ZP-1291] - Cli tools should exit with 0 if called with --help
[ZP-1373] - USE_CUSTOM_REMOTE_IP_HEADER not working with Apache
[ZP-1374] - Include path in imap backend lacks pear folders
[ZP-1375] - z-push-config-nginx has wrong permissions in RPM
[ZP-1376] - Out-of-memory check when memory_limit = -1
[ZP-1377] - Undefined index warnings in imap backend
[ZP-1379] - Undefined offset warnings when impersonating
[ZP-1383] - CARDDAV: Last character of note trimmed

[ZP-1382] - CALDAV: Out of office / Tentative / Workingelsewhere status

Z-Push 2.4.1 beta1 update:

[ZP-1392] Fix SyncUserInformation for default backend.

Current version of the pre-final repository is 2.4.1.beta1+3.

Merges into release/2.4:

[ZP-1369] - Impersonation: ReplyBack notification mail can not get folder name
[ZP-1386] - include/mimeDecode.php:541 Uninitialized string offset: 0 (8)
[ZP-1391] - IMAP Backend: Users cannot authenticate against IMAP servers with GSSAPI support
[ZP-1396] - CalDAV Attendee but no meeting
[ZP-1399] - Wrong state and log folder permissions for RHEL based systems
[ZP-1400] - Picture not saved for a contact created on mobile
[ZP-1408] - Warning Undefined index: subject
[ZP-1410] - IMAP backend to provide user details for caldav
[ZP-1411] - Unset undefined properties for tasks

New Feature
[ZP-1372] - Folder re-sync is triggered on deletions ratio threshold

[ZP-1398] - z-push-admin do not call $device->GetHierarchyCache() in loop
[ZP-1401] - In gab2contacts also sync Kopano contacts

Merges into release/2.4

[ZP-1412] - Add ignore_missing_attachments option to mapi_inetmapi_imtoinet

[ZP-1413] - deb: Turn php dependencies around

Merges into release/2.4

[ZP-1402] - PHP 7.2 compatibility

[ZP-1407] - $errcontext argument of error handlers has been deprecated

[ZP-1330] - PHP 7.2, warnings in logs about implementing Countable
[ZP-1405] - create_function() has been deprecated
[ZP-1406] - each() has been deprecated
[ZP-1418] - IMAP Backend: imap_fetch_overview might return an empty array
[ZP-1419] - Structurally dead code (UNREACHABLE)
[ZP-1420] - Typo in identifier (IDENTIFIER_TYPO)
[ZP-1421] - Expression with no effect (NO_EFFECT)
[ZP-1422] - Expression with no effect (NO_EFFECT)
[ZP-1423] - Nesting level does not match indentation (NESTING_INDENT_MISMATCH)
[ZP-1424] - Typo in identifier (IDENTIFIER_TYPO)
[ZP-1425] - Expression with no effect (NO_EFFECT)
[ZP-1426] - Logically dead code (DEADCODE)
[ZP-1427] - Undefined index in mapiprovider
[ZP-1429] - IMAP backend, send emailaddress to reply_meeting_calendar
[ZP-1430] - Wrong IpcWincacheProvider path in InterProcessData

[ZP-1416] - List opened shares in z-push-admin

Current version of the pre-final repository is 2.4.3.beta0+0.

Merge into release/2.4

[ZP-1431] - Z-Push logrotate cron su file permissions

Update 18:11 - just pushed a small fix for the usage instructions formatting in z-push-admin.

Current version of the pre-final repository is 2.4.3.beta1+3.

Merge into release/2.4

[ZP-1434] - X-Forwarded-For header might contain multiple IPs
[ZP-1436] - Z-Push log files not writable after logrotate

Current version of the pre-final repository is 2.4.3.beta1+6.

Merge into release/2.4

[ZP-454] - Error deleting an occurrence on a mobile device
[ZP-1014] - z-push/include/z_caldav.php:585 Undefined index: urn:ietf:params:xml:ns:caldav:calendar-home-set (8)
[ZP-1437] - Send range in ItemOperations response
[ZP-1440] - Outlook EAS break meeting request
[ZP-1444] - KOE webservices calls fail for impersonated stores
[ZP-1445] - MAPI_E_STORE_FULL handling in SendMail()

New Feature
[ZP-1442] - Retry loop when writing file state machine data to disk

Current version of the pre-final repository is 2.4.4.beta1+0