Syntax Error.

[Sy] MacからGmailのSMTPサーバ経由でメールを送信できるようにする手順

2014/06/08

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_accountyour_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にアクセスします。

先ほどと同じように、メールが送られていれば成功です。