[Sy] MacからGmailのSMTPサーバ経由でメールを送信できるようにする手順
Mac OS X(試したのはMavericks) から Gmail のSMTPサーバを経由して、PHPでメール送信するための手順です。
ローカルでメール送信のテストをしたい場合に便利。
1. Postfixの設定を変更
実はMacには最初から Postfix がインストールされているらしい。知らなかった。
/etc/postfix/main.cf
の最後の方に、以下の設定を追記します。
$ sudo /etc/postfix/main.cf
・
・
# ↓ここから
relayhost = [smtp.gmail.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_mechanism_filter = plain
smtp_use_tls = yes
tls_random_source=dev:/dev/urandom
# ↑ここまで
修正したら、設定ファイルにミスがないかチェックします。
$ sudo postfix check
なにも起きなければOK。
2. SMTP認証の設定
GmailのSMTPを使うので、そのための認証の設定をします。
SASL(Simple Authentication and Security Layer) というものを使って認証をするみたいです。
次のように、GmailのSMTP認証に必要なアカウント情報を入力したファイルを作成します。
当然ながら、Googleアカウントを持っていない場合は作ってください。
$ sudo vim /etc/postfix/sasl_passwd
[smtp.gmail.com]:587 your_account@gmail.com:your_passwd
your_account
とyour_passwd
は、あなたのGoogleアカウントの情報に置き換えてください。
ファイルを作成したら、その情報を登録します。
$ sudo postmap /etc/postfix/sasl_passwd
登録が済んだら、ファイルは削除しちゃってOK。
$ sudo rm -rf /etc/postfix/sasl_passwd
3. ターミナル上でメール送信テスト
いよいよメール送信のテストです。まずはターミナル上から。
下記のように入力していくと、メールが送られるはずです。
$ mail -s 'subject' to_address@example.com
body
.
EOT ←上のピリオド+Enterで入力終了となり、勝手にEOTと表示される。
subject
には件名、to_address@example.com
には送信先のメールアドレスを入力します。
すると入力待ち状態になるので、本文(上の例ではbody
の部分)を入力していきます。本文を入力し終わったら、.
を入力してEnter
を押します。
これが本文入力終了の合図になっていて、画面上にEOT
と表示されてメールが送信されます。
うまくいっていれば、先ほど認証の時に設定したGoogleアカウントのGmailに、「送信済みメール」として今送った内容のメールがあるはずです。
そして送信先として指定したメールアドレス宛に、メールが届いてるはずです。
4. PHPからメール送信テスト
最後にPHPからメール送信のテストをします。
次のようにmailtest.php
というファイルを作ります。パーミッションの変更も忘れずに。
$ cd /Library/WebServer/Documents/
$ sudo vim mailtest.php
$ sudo chmod 705 mailtest.php
mailtest.php
の内容はこう。
<?php
mail('to_address@example.com', 'subject', 'body');
?>
ブラウザにて、http://localhost/mailtest.php
にアクセスします。
先ほどと同じように、メールが送られていれば成功です。