2010年 11月 01日(月曜日) 20:20

Mac OS X Snow LeopardでPHPのmail()関数を使うには

評価:
(1 Vote)

Mac OS X Snow Leopardで、PHPからメールを送信する方法。XAMPP for Macなどで、ApacheとPHPが動作していることを前提としています。

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
最終更新日: 2011年 6月 26日(日曜日) 23:58
くらち たかよし

くらち たかよし

モバイル・Webアプリ作家。最近は主にiPhoneアプリ制作を手がける。企画から、UIデザイン、設計、実装、テスト、多言語対応、ユーザーサポートまでを1人〜数人の個人で行う全人的開発手法の確立を目指している。

使う言語はObjective-C, C++, C#, Java, PHPなど。Web関連で使うものはCakePHP, MySQL, Joomla! CMSなど。デザインはシロウトながらPhotoshopとIllustratorをなんとかがんばって使う。

場所や時間に縛られない、インターネット時代の新しい働き方、自由な生き方を模索中。海外移住、低予算&低リスク起業、キャリアデザイン、心理学などにも興味あり。

Web: awaresoft.jp/