Howto send mails from localhost through a smarthost on OSX

You’re getting weird errors like “Connection refused” from your local smtp library? You may have to reconfigure your local mailer.


Setting up your Mac to use a smarthost to send mails through is not very hard. I found a nice howto on this site:

I’ve copied the central lines:

sudo postconf -e relayhost=your.isps.mailserver smtp_use_tls=yes smtp_sasl_auth_enable=yes smtp_sasl_password_maps=hash:/etc/postfix/smtp_auth tls_random_source=dev:/dev/urandom smtp_sasl_security_options=noanonymous
sudo sh -c 'echo "your.isps.mailserver username:password" >> /etc/postfix/smtp_auth'
sudo chown root:wheel /etc/postfix/smtp_auth
sudo chmod 600 /etc/postfix/smtp_auth
sudo postmap hash:/etc/postfix/smtp_auth


I noticed postfix is quitting after 60 seconds. So if you send yourself a test email using: echo "test" | mail -s "test" your@email the postfix daemon will quit after 60 seconds and you’ll get these errors when trying to send mails through localhost in Plone:

Traceback (innermost last):
  Module ZPublisher.Publish, line 119, in publish
  Module ZPublisher.mapply, line 88, in mapply
  Module ZPublisher.Publish, line 42, in call_object
  Module Products.SecureMailHost.SecureMailHost, line 166, in send
  Module Products.MailHost.MailHost, line 144, in send
  Module Products.SecureMailHost.SecureMailHost, line 276, in _send
  Module Products.SecureMailHost.mail, line 102, in send
  Module smtplib, line 244, in __init__
  Module smtplib, line 310, in connect
error: (61, 'Connection refused')


You need a persistent postfix! Open /System/Library/LaunchDaemons/org.postfix.master.plist and check the programm arguments. They contain -e 60 by default and that’s the exit time of the master process which is described in master’s man-page as follows:

-e exit_time
  Terminate the master process after exit_time seconds.
  Child processes terminate at their convenience.

So let’s modify this org.postfix.master.plist file:

sudo vim /System/Library/LaunchDaemons/org.postfix.master.plist

Remove these programm arguments and add the RunAtLoad statement to startup automatically (remove highlighted lines):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "">
<plist version="1.0">


        <true />

Restart your postfix daemon using the commands below or reboot and it should not exit any more:

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


comments powered by Disqus