May 2, 2005

I run a local postfix on my machine, and in 10.3 I had to modify /etc/hostconfig to tell the OS to run postfix upon boot. I upgraded to Tiger today, and postgres would no longer start upon boot.

10.4 relies on launchd for crond as well as a bunch of service launching. Stock, postfix is set to run every minute if there are any files in /var/spool/postfix/maildrop. I like a livelier postfix.

The plist that is configuring postfix under launchd is /System/Library/LaunchDaemons/org.postfix.master.plist. You can either run the Property List Editor as root and remove the two ProgramArguments "-e" and "60", as well as the whole QueueDirectories field, and add a "RunAtLoad" key with the value "true", or just su or sudo and replace the file with this plist:


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>Label</key>
        <string>org.postfix.master</string>
        <key>Program</key>
        <string>/usr/libexec/postfix/master</string>
        <key>ProgramArguments</key>
        <array>
                <string>master</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
</dict>
</plist>

After this , you can either just restart, or reload the service like so:
$ sudo launchctl stop org.postfix.master
$ sudo launchctl unload /System/Library/LaunchDaemons/org.postfix.master.plist
$ sudo launchctl load /System/Library/LaunchDaemons/org.postfix.master.plist
$ sudo launchctl start org.postfix.master

Thanks to Stefan Schumacher for pointing out we need to use the RunAtLoad key for postfix to run on startup!