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" "">
<plist version="1.0">

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!