Mac OS Xには、メールサーバとしてPostfixがデフォルトでインストールされています。また、/usr/sbin/sendmailがありますが、これはPostfixとsendmailの互換インターフェイスとして存在しているもので、実態はPostfixのようです。(man sendmailを参照)
本格的なメールサーバとしてルーティングの設定をすることもできるようですが、ここでは開発でローカルのWebサーバからメールを送信するために使うことだけを考えて、GMailのSMTPサーバを利用する設定を行いました。
1. SASLパスワードファイルの作成
/etc/postfix/に、sasl_passwdというファイルを作成して、次の一行を記述して保存します。(SASL: Simple Authentication and Security Layer)
$ sudo vi /etc/postfix/sasl_passwd
smtp.gmail.com:587 [ユーザ名]@gmail.com:[パスワード]
作成したら、次のコマンドを実行して、Postfixが読み込むdbファイルを生成します。
$ sudo postmap /etc/postfix/sasl_passwd
すると、/etc/postfix/sasl_passwd.dbというファイルができあがります。
.dbファイルができたら、元のテキストファイルは削除してしまって大丈夫です。パスワードが平文で書かれてしまっているファイルを放置しておくのはよくないので。
2. Postfix設定ファイルの編集
/etc/postfix/main.cfを編集し、いちばん後ろに次の行を追加します。
$ sudo vi /etc/postfix/main.cf
# Minimum Postfix-specific configurations. mydomain_fallback = localhost mail_owner = _postfix setgid_group = _postdrop relayhost=smtp.gmail.com:587 # Enable SASL authentication in the Postfix SMTP client. smtp_sasl_auth_enable=yes smtp_sasl_password_maps=hash:/etc/postfix/sasl_passwd smtp_sasl_security_options= # Enable Transport Layer Security (TLS), i.e. SSL. smtp_use_tls=yes smtp_tls_security_level=encrypt tls_random_source=dev:/dev/urandom
3. Postfixの起動
Postfixはデフォルトでは起動していません。Macの起動時にサービスを開始するようにするために、下のコマンドを実行します。
$ sudo launchctl load -w /System/Library/LaunchDaemons/org.postfix.master.plist
(/etc/hostconfigに"MAILSERVER=-YES-"の一行を追加するのでもよいようです。)
もし、既にPostfixを起動した状態でmain.cfを編集した場合は、
$ sudo postfix reload
で設定ファイルを再読み込みできます。
4. テストメールの送信
Postfixを起動したら、テストメールを送信してみます。
次のコマンドを実行して、メールが送信できればOKです。(mail関数の最初の引数は確認できるメールアドレスに置き換えてください。)
$ php -r "mail('[Test TO mail address]', 'Test Subject', 'Test Body');"
Webサーバからメールが送信できることを確認するには、DocumentRoot以下に次のような内容のファイルを置いてブラウザからアクセスしてみます。
<?php
mail(
'送信先(自分のメールアドレス)',
'件名',
'本文'
);
?>
あらかじめ、Terminalをひとつ開いて、
$ tail -f /var/log/mail.log
でPostfixのログを表示しておくと、何が起きているかがわかります。
下のコマンドで、メールキューの内容を見られます。
$ sudo mailq
送信に失敗して、キューにたまってしまった場合は、次のコマンドで削除できます。
$ sudo postsuper -d ALL
送信先に指定したアドレスで無事に受信できれば成功です。
次のページを参考にさせていただきました。
Gmail Email Relay using Postfix on Mac OS X 10.5 Leopard
php, mail() and osx leopard





