People, this week I have gone through a several iterations and several degrees of Postfix-upstart integration.
The short answer is that only one option is practical at the moment. The longer answer is summarized below. Wietse There are three major levels of Postfix-upstart integration. - Boot-only integration: use upstart to start/stop Postfix at boot/shutdown time and nowhere else. This option is preferred. It requires no changes to Postfix, and it does not affect Postfix reliability. Postfix comes with its own daemon that (re)spawns mail processes as needed. This small program has proven to be extremely reliable over the past 14 years. - Fake integration: this variant involves running a dummy process directly under upstart. This program translates SIGHUP/SIGTERM signals from upstart into postfix reload/stop commands. This option has no benefits over "boot-only integration", as observed by others; it just increases complexity. On the positive side, it is fully compatible with existing Postfix code for single-instance and multi-instance support. - Full integration: all Postfix master daemons run directly under upstart. This requires re-implementing the Postfix start/stop commands and multi-instance provisioning commands, so that they execute requests through initctl(8). This option is not preferred. The code that executes requests through initctl(8) needs to be maintained in parallel with the existing management code, because many supported systems do not use upstart. Another downside is that the longer code paths through initctl(8) do not necessarily make Postfix more reliable. Unfortunately, a lot of energy has gone into debating the next option on- and off-list: - Broken integration: one proposed variant runs one Postfix master daemon directly under upstart. It breaks the Postfix start/stop commands and multi-instance support, because it lacks the steps required for full initctl(8) integration (see previous item). I tried several variants along this line. They were less broken, but they still violated the principle of least astonishment. I don't want to spend more words on this heated debate, except for the following: - If a new feature is important, then it should be developed in the context of the Postfix development release, that is, Postfix 2.9. - There is no need to distribute private branches of stable Postfix releases that break major Postfix features.