WordPressからのメール受信用にVPSのPosfixの設定でハマった話

シェアする

日本全国の多くの方はWordPressはレンタルサーバーで利用していると思います。レンタルサーバーと言う概念の対になるものはVPS、AWSのEC2等の管理者権限があるサーバーです。基本的にはお手軽に運用できるレンタルサーバーの方が安くて人気がありますが、自由度の高さとコスパの高さで考えるとVPSの方が値段の割にパフォーマンスは高く利用できます。その反面、ミドルウェアのインストールとセットアップ、日々の運用が必要になります(といってもコマンドラインからapt upgradeって叩いて終わりですが)。

仕事でいろいろなサーバーを運用していますが、ふと気づいたことがあったのでシェアしときます。事の発端はWordPressのバージョンアップ。普通WordPressは自動アップデートされるとメールを送ってきます。自分も多くのサイトをレンタルサーバーで運用していて気づかなかったのですが、VPSで運用しているサイトからアップデートのお知らせメールが来ていない。よくよく確認したら何年も来ていない!

なぜかと思って調べてみると、そもそもPostfixというメール送信用のアプリケーションのログが送信をrejectしてたことがわかりました。メールログには sender non-delivery notification と status=bounced の記述が見えます。

ネットで調べたところ外部へメールを送信する場合、相手のSMTPサーバから送信を拒否される場合があるらしいのと、内部配送と外部リレーを区別するmain.cfの記述が mydestination と言うところにあるのですが、ここに送信してる対象ドメインが入ってると内部配送と勘違いされてしまうと…なわけない、送ってるのGmailだぞ?

status=bouncedで調べても、User unknownとか、後ろにエラーコードがついているパターンが多いんだけど、自分の場合はstatu=bouncedで終わっちまってる。これはいよいよ原因がわからず途方に暮れておりました。ここまでわかったのは

  • レスポンスタイムから見てもGmailのメールサーバから拒否されてるわけでは無さそう
  • mynetworksやmydomainsの設定は間違っていない

ここでアプローチを変えてみる
いくら症状で検索しても出てこない、っていうかそもそもメールなんて時代遅れのソリューション、最新情報なんか転がってるわけがない。こちとらSlackのWebhookドヤッの時代です。

一度頭を冷やして試してみると、とにかく外部ドメインへのメール送信が全部rejectedになる。mydomainのメールには届けられる。これ、まさかデフォで外部送信NGなん???と思って、postfix 外部へのメール 制限 で検索してみると、
postfixでメール送信先ドメインを制限する – Qiita
このページが表示された。おお!と思い、
main.cfに

を設定。
その後、/etc/postfix/transportに

を記載。ファイルをコンパイルしてリロード、メール送信をしてみると

来た!ちなみに予想通りというか迷惑メールフォルダに入りました。

っていうかpostfixの設定方法書いたサイトにそんなこと書いてなかったけど初期設定で外部ドメインへのメール送信って拒否られてんのか…ConoHa VPSだけ?なんで?まぁいたずらにpostfix立ち上げて踏み台にされる人とか死ぬほどいるだろうから仕方ないけど、これにはハマってしまいました。。

というわけで、アップデートメールの他、contactform7のフォームからも無事にメールが受信できるようになりました。メールサーバーの設定なんてなかなかやらないので今回は勉強になりました。自分で受信するだけだからgmail.comだけ追加したけど、みんなに送信したい場合はワイルドカードで指定するんでしょうか。メールサーバが立ち上がってるので踏み台にされるリスクがあります。25番ポートへのinboundを落としたり、適宜iptablesやfirewalldを設定するようにしましょう。

ちなみに、サーバーパフォーマンスが結構重視されるWordPressですが、VPSで動かすとレンサバでやってたのがアホらしくなるぐらいパフォーマンスが高くなります。サーバー運用を試してみたい方にはおすすめです。

スポンサードリンク
 
シェアする