WordPressに特化した仮想マシンをサクっと作ることのできるVagrantの設定ファイル『Varying Vagrant Vagrants』(以下『VVV』)。このブログでも
で、導入までの手順を紹介しました(しかもWindows環境に特化して)。
ところがこれだけでは、WordPressの開発環境として少々不足している点があります。それは……
外部にメールが送信できない
という点です。サイト構築の過程で『Contact Form 7』のようなメールフォームプラグインのテストをしようにも、外部にメールが送られないのではテストのしようがないですよね。そこで『VVV』に含まれているメールサーバ『Postfix』の設定をちょっと変えて、外部にメールを送信できるようにしてみます。
なお、外部へのメール送信にあたり、私が契約しているプロバイダ(So-net)のメールサーバをリレー(中継)サーバとして使っています。記述した設定値もSo-net特有のものなので、ご活用いただける際は適宜読み替えてください。
[2013.12.29追記]
その後、So-netのサーバ経由で送ることができなくなってしまったので、@niftyのサーバを介して送ることにしました。記事の最後に設定例を追記しています。
『Postfix』の設定は /etc/postfix/main.cf にあり
ということで、仮想マシンにSSHでログインし、以下のコマンドを実行します。
(仮想マシンへのログイン方法は「『Varying Vagrant Vagrants』でサイトを増やす方法(『WP-CLI』を使うよ)」の記事をご参照ください)
sudo nano /etc/postfix/main.cf
『VVV』に内蔵されているテキストエディタ『nano』が『Postfix』の設定ファイルを開いてくれるので、ファイルの最後に下記の内容を追記します。
({} は実際には入力しません)
relayhost = [mail.so-net.ne.jp]:587 smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/{メールパスワードを記述する任意のファイル名} smtp_sasl_mechanism_filter = CRAM-MD5
追記が終わったら、ctrl+x → y で保存します。
繰り返しになりますが、上記の記述はSo-netのSMTPサーバを介してメールを送信する場合の設定例です。relayhost や smtp_sasl_mechanism_filter の値はメールサーバによって異なるので、注意してください。
ちなみに、私が別口で契約している@niftyのSMTPサーバにつないでみたところ、こんな返答がありました。
vagrant@vvv:~$ telnet smtp.nifty.com 587 Trying 202.248.238.12... Connected to smtp.nifty.com. Escape character is '^]'. 220 msag503.nifty.com ESMTP Nifty Mail Server ehlo localhost 250-msag503.nifty.com Hello {接続元ホスト名}, pleased to meet you 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-8BITMIME 250-SIZE 20971520 250-DSN 250-AUTH=PLAIN LOGIN CRAM-MD5 250-AUTH PLAIN LOGIN CRAM-MD5 250-DELIVERBY 250 HELP
@niftyの場合も main.cf にはどうやら
smtp_sasl_mechanism_filter = CRAM-MD5
と書けばよさそうです。
メールパスワードを記述したファイルはハッシュ化を
次に、メールパスワードを記述するファイルをつくります。たとえば、ファイル名を「foobar」とした場合は……
sudo nano /etc/postfix/foobar
と新規ファイルを作成し、以下の内容を記述します。
({} は実際には入力しません)
mail.so-net.ne.jp {So-netのメールアドレス}:{So-netのメールパスワード}
main.cf 同様に ctrl+x → y で保存します。
いま作った foobar ファイルをハッシュ化します。
sudo postmap /etc/postfix/foobar
最後に main.cf をリロードして追記した設定を反映させます。
sudo service postfix reload
コマンド実行後、こんなメッセージが返ってくればオッケイです。
* Reloading Postfix configuration... ...done.
試しに『VVV』で構築されるデフォルトのサイトにログインし(http://local.wordpress.dev/wp-admin ユーザー名は admin,パスワードは password)、[Settings]-[General]の「E-mail Address」を自分のものに書き換えた上で、サイトのコメント欄に適当に書き込んでみましょう。
(いったんログアウトすることをお忘れなく)
おなじみのモデレートメールが届きました 🙂
ということで、3部作でお届けした「WindowsでVagrant+WordPress環境構築」の記事はこれにて終了です。みなさん、ハッピーなWordPressライフを!
[2013.12.29追記]
その後『VVV』で改めて別の環境を構築し、上記と同じようにPostfixの設定をしてみたところ、なぜか
to=<foo@example.com>, relay=mail.so-net.ne.jp[202.238.84.20]:587, delay=0.36, delays=0.01/0/0.34/0, dsn=4.7.0, status=deferred (SASL authentication failed; server mail.so-net.ne.jp[202.238.84.20] said: 535 5.7.0 authentication failed)
というエラーがログに残り、メールが送れなくなってしまいました。「SASL authentication failed」のメッセージを手がかりにいろいろ試してもダメで、結局@niftyのサーバを介してメールを送る設定にしました。
ただその場合も、
to=<foo@example.com>, relay=smtp.nifty.com[202.248.238.12]:587, delay=0.57, delays=0/0/0.53/0.03, dsn=5.3.0, status=bounced (host smtp.nifty.com[202.248.238.12] said: 553 5.3.0 <www-data@vvv>... Insufficient Address:vvv (in reply to MAIL FROM command))
というエラーが返ってきたので、『Postfix』ドキュメントの日本語訳「Postfixアドレス書き換え」の「外行きSMTPメールの標準マッピング」を参考に
@vvv vvv@{正引き可能な手持ちの実在ドメイン}
と記した /etc/postfix/generic ファイルを作り対応しています。
コメントを残す