postfix-users February 2011 archive
Main Archive Page > Month Archives  > postfix-users archives
postfix-users: Re: Starting postfix

Re: Starting postfix

From: Christian Roessner <c+postfix_org_en_at_nospam>
Date: Fri Feb 25 2011 - 10:02:35 GMT
To: lst_hoe02@kwsoft.de

Hi,

> The "problem" is more of that distribution like Ubuntu and Redhat are
> moving to "upstart" for boot and starting services/daemons. The main
> difference for the started services is that upstart need the program
> to *not* daemonize or terminate itself because status is checked
> directly to do respawn and other things if necessary and not by
> monitoring a PID like it was with sys-v. So basically to get Postfix
> upstart compatibel a "postfix-start-stop" helper would be needed which
> is always running and only does dispatching of start/stop requests to
> the master(s) according to Postfix needs.

I was thinking the whole night how to solve it for upstart. I wrote a
python wrapper:

#############################################################
import os, sys
import time

program = "/usr/sbin/postfix"

# First start postfix and wait for the return code
try:
    pid = os.fork()
except OSError, e:
    Log.error("First fork failed")
    print >>sys.stderr, ("Fork failed: (%d) %s" % (e.errno, e.strerror))
    sys.exit(1)

if not pid:
    try:
        os.execvp(program, (program, "start"))
    except OSError, e:
        print >>sys.stderr, ("Exec failed: (%d) %s" % (e.errno,
e.strerror))
        os._exit(1)

if os.wait()[1] != 0:
    sys.exit(1)

# wait until we get killed
while True:
    time.sleep(10)
#############################################################

This can be called with exec in upstart and doing a stop is easy, too,
because I simply call /usr/sbin/postfix stop in a post-stop script
block.

So if this is okay, I would use it. It is some kind of silly, but I
tested it here on my workstation and it does the job. But I also want to
ask the Ubuntu guys, if that is a working mechanism.

Thanks
Christian
-- Roessner-Network-Solutions Bachelor of Science Informatik Nahrungsberg 81, 35390 Gießen F: +49 641 5879091, M: +49 176 93118939 USt-IdNr.: DE225643613 http://www.roessner-network-solutions.com