SEND MAIL() USING PHP ON MAC OS X

Thanks to Benjamin Rojas, Andy Stratton, and a tip from Jasper, I was able to successfully send email from my home-brewed MAMP environment. Here’s the summary.

  1. Add the following to your /etc/postfix/sasl_passwd file:
    1
    smtp.gmail.com:587 username@gmail.com:password

(Of course, you don’t have to use GMail or port 587, but you get the idea.)

  1. Configure postfix:
1
sudo postmap /etc/postfix/sasl_passwd
  1. Backup and edit your postfix configuration:
    1
    2
    sudo cp /etc/postfix/main.cf /etc/postfix/main.cf.orig
    sudo vim /etc/postfix/main.cf

If you use TLS, then you will need to add the TLS settings but the other settings should already be there as a result of running the postmap command. You should have these options set in /etc/postfix/main.cf:

1
2
3
4
5
6
7
8
9
10
mydomain_fallback = localhost
mail_owner = _postfix
setgid_group = _postdrop
relayhost=smtp.gmail.com:587
smtp_sasl_auth_enable=yes
smtp_sasl_password_maps=hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options=
smtp_use_tls=yes
smtp_tls_security_level=encrypt
tls_random_source=dev:/dev/urandom
  1. Start postfix:
    1
    sudo postfix start

If there are errors, you may need to edit your /etc/postfix/main.cf and restart postfix:

1
sudo postfix reload

  1. Send a test message:

    1
    date | mail -s test youremailaddress@yourdomain.com
  2. Make postfix start automatically on boot by opening your /System/Library/LaunchDaemons/org.postfix.master.plist file and adding:

    1
    2
    <key>RunAtLoad</key>
    <true/>

Add this at the bottom just before the closing tag.

  1. Edit your /etc/php.ini file and configure the sendmail_path option:
    1
    sendmail_path = "sendmail -t -i"

You should now be able to send email using PHP’s mail() function. If you continue to have issues, watch the contents of your postfix mail log:

1
tail -f /var/log/mail.log