『Varying Vagrant Vagrants』から外部へのメール送信を設定したよ

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 ファイルを作り対応しています。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です