Setup Z-Push for Zimbra 8

  • Install Apache on the server

    sudo apt-get update apt-get install apache2 php-curl

    Get the correct repository for your Linux Distribution on the below link:

    In this case I was running it on a Ubuntu 16.04 server, so I used the commands below:

    sudo echo "deb /" > /etc/apt/sources.list.d/z-push.list
    sudo wget -qO - | apt-key add -

    Then Updated the repos

    sudo apt update

    Then installed z-push from the repo

    sudo apt install z-push-common z-push-config-apache z-push-backend-combined z-push-ipc-sharedmemory

    Go to the Z-push Backend folder

    cd /usr/share/z-push/backend

    Get the latest Z-Push Zimbra Backend file from in this case it will be Release68 (


    Modify the and run it after it to install the Zimbra backend release files

    sudo chmod +700
    chmod +x
    sudo ./ 68

    Modify the default-ssl.conf apache configuration to point to the Z-Push Backend folder

    sudo nano /etc/apache2/sites-available/default-ssl.conf

    The configuration will look as below:

    Then enable the SSL site and enable SSL for Apache.

    sudo a2ensite default-ssl.conf
    sudo a2enmod ssl 
    sudo systemctl restart apache2

    Configure the Z-Push Backend Configuration File as below:

    sudo nano /usr/share/z-push/config.php

    Configure the following lines for TimeZone (Use PHP Timezones), BackendProvider (For ZImbra), in my case this is what I needed

     define('TIMEZONE', 'America/New_York');
     define('BACKEND_PROVIDER', 'BackendZimbra');

    Modify the Zimbra Backend Configuration

    sudo nano /usr/share/z-push/backend/zimbra/config.php

    Correct the Zimbra Configuration on the backend to point to your Zimbra internal or External Server

    define('ZIMBRA_URL', '');
    define('ZIMBRA_DISABLE_URL_OVERRIDE', true);

    If you don't want (Contact, Calendar, Tasks and Notes) to sync you can comment them on the configuration


    Then allow your Z-Push Server to be white-listed on your Zimbra Server (Connect to your Zimbra server and do the following)

    su zimbra
    zmprov  mcf +zimbraHttpThrottleSafeIPs
    zmcontrol restart

    In my case I have my Z-Push behind an Nginx and I configured it as needed and it worked properly after this. (For Nginx SSL Proxy you can look at @JaredBusch topic on the following URL: You will also need to create a DNS entry to point to your Z-push server. I chose not to setup Z-push on my Zimbra server as the configurations get removed every-time the server is updated and also I did not want to install Apache over the same server as well.

  • Excellent write up, thanks.

  • Big Thumbs up on that Dbeato, first guide on here for Zpush I believe.

  • @StuartJordan said in Setup Z-Push for Zimbra 8:

    Big Thumbs up on that Dbeato, first guide on here for Zpush I believe.

    First one that I've seen, for sure.

  • If you are migrating from an older Z-push like from 2014, make sure to pay attention to this as well

  • All the Z-Push state files are located on /var/lib/z-push. I deleted them all for an user and then boom everything started working.