I’ll be frank here and say that quality push notification for email is a tall order. Z-Push is the easiest hack solution in which the server queries itself regularly and pushes the changes to you. It isn’t true end-to-end push, but it functions similarly to it by providing you with an ActiveSync compatible layer that you connect to.
The type of Push that Apple uses themselves for iCloud and iOS is not based on Microsoft’s ActiveSync. For that, you need heavy customization and a certificate signed by a Mac Server. The best I can tell you on how to implement it more in the way that Apple does is to reverse engineer cPanel’s version 64 release in which they augmented Dovecot to accomplish this task.
The most reliable way that I can tell you to set up ActiveSync, which is more common and supports push notifications by adding your email accounts as Exchange accounts in the iOS Mail application, is to use Z-Push or purchase a license of some other software that provides an ActiveSync compatibility layer. These licenses typically cost monthly per user. Zimbra is an example of a server application you can license and run for this: https://www.zimbra.com/email-server-software/email-exchange-activesync/
In the realm of installing Z-Push, you’re going to have to read over it’s documentation and configuration scripts and make informed decisions on what fits your software stack best in the way that you’ve built it. I have never, personally, found a simple tutorial that functioned well with the latest version of Z-Push. Any time that I set it up, I went line by line in it’s configurations and it involved a lot of trial and error.
I hope that at least gives you some idea of what is ahead and what directions are available :)