ワードプレスからのメールが届かない
ワードプレスのテーマを更新し、サーバーを引っ越した際に、問い合わせフォームからのメールが届かなくなるという問題に直面しました。
以下に調査した方法と解決方法をまとめます。
環境と前提
とりあえず、気づいたきっかけはサイトから問い合わせメールが全く届かなくなったことでした。
今までは少なくとも週に2、3回は問い合わせのメールを受け取っていたのですが、1ヶ月近く音沙汰なく、「これはおかしいぞ」と思ったのが始まり。
問い合わせフォームの使用
問い合わせフォームには、「ContactForm7」というプラグインを使用していました。
このプラグインは使いやすく、多くのユーザーから支持されています。以前は問題なく動作していたので、何が原因か分からず困りました。
flamingoには大量の問い合わせの痕跡あり
ContactForm7の補助的な意味合いで、flamingoというプラグインも導入していますが、そちらには問い合わせが内容まで含めて全て残っています。
とりあえず、不具合期間中にいただいた連絡の全損は免れた。
メールアドレスの受信先
ワードプレスから送信されるメールアドレスは主に「Outlook」のメールアドレスで受け取っていました。また、ログインに使うアカウントのメールアドレスも「Outlook」を使っていました。
なので極力Outlookを受信先として使いたい。
とここまでがおおよその前提です。
「Check & Log Email」プラグインを使った調査
とりあえず、問題を切り分けます。
大体なんか問題が起きた時はまず、「どこが悪いのか」を調査するのが早道です。
「Check & Log Email」
原因を特定するために、メール送信状況のテストと調査を行いました。調査には「Check & Log Email」というプラグインを使いました。
このプラグインでは、シンプルにメールの送信のテストを行えます。
とりあえず、複数の自前のアドレス宛に調査としてテストメールを送信してみます。
調査の結果、メール自体は送信されていることが判明しました。しかし、受信できないメールアドレスもあることがわかりました。
特定のメールアドレスでは受信できず
メールを受信できなかったメールアドレスは「Outlook」「iCloud」など特定のメールアドレスでした。「Gmail」「ezweb」などのメールアドレスでは受信できることが確認されました。
問題の切り分けとして
- 送信はできているが、受信できないパターンが存在する
- 受信できてない原因がワードプレスなのか、サーバなのか、またはメールクライアントなのかは不明
って感じです。
SMTPを使った送信では受信可能
ワードプレスは特に何も設定しない場合、「/usr/sbin/sendmail」というシステム組み込みの方法でメールを送信するみたいです。
ただSMTPサーバを使って送信した場合、「Outlook」でも受信できることが判明しました。
SMTPを設定する
ワードプレスからSMTPを使ってメールを送信するためにはいくつか方法がありますが、プラグインを使うのが一番楽です。
あんまりあれこれプラグインを入れるのは好きじゃない派なので、基本的に入れるとしたらシンプルで最小限の機能のものを選びます。
理由は「なんとなくコンフリクトしにくそうだから」で十分です。
このプラグインは本当に最小限SMTPでメールを送信する機能だけを提供してます。
OutlookのSMTPサーバを使う
別にOutlookである必要性はないんですが、受信したいのもOutlookだし、ということで選びました。
Gmailとかでもいいんですが、GmailのSMTPって日に50通とか、結構キツめの制限あったような気がするんですよね。知らんけど。
OutlookのSMTPの設定
- SMTP Host:smtp.office365.com
- MTP Secure:TLS
- SMTP Port:587
- SMTP Authentication:Yes
- Username:持ってるOutlookアカウントのメールアドレス
- Password:持ってるOutlookアカウントのパスワード
ってな感じでプラグインで入力していきます。
Fromには送信元となるメールアドレス(この場合はログインに使うOutlookのアドレス)、From Nameは受信時に表示される名前を入力しましょう。
Fromに関しては後で少し追加解説します。
パスワードには注意が必要
Outlookのアカウントには「パスワードレス」と「2段階認証」という二つの入力するパスワードが存在しないというパターンがあります。
この場合、別に詰んだとかいうわけではなく、「アプリパスワード」というソフトウェアから使う専用のパスワードを発行する必要があります。
Outlookのアプリパスワード発行方法
ちょっとURLが誰からも有効かは確認してないんですが、無効だった場合、
というところから発行できます。
SMTP送信できたけど、ワードプレスがディフォルトで使うアドレス使いたい
ここまででSMTPの設定は完了してて、問題なく送信でき、この施策前だと受信できなかったメールアドレスでの受信もできることは確認できましたが、一個気に入らないことがあります。
ワードプレスがディフォルトで送信元として使うアドレス(当サイトの場合は[email protected])を使って送信できないってことです。
このアドレスは普段使ってるメーラーでもフォルダ振り分けのためのルールなどを設定しており、何よりワードプレスからメールきたって一目でわかるので、出来れはここを送信元にしたい。
Fromにただ送信元にしたいアドレスを入力するだけではエラーになる
単純にSMTP設定の「From」の部分に送信元を[email protected]にすればいいだけじゃん、と思うかもしれませんが、それだとSMTPサーバで拒否されるのか、おそらくなりすまし防止みたいな機能が働いてまともに送信できなくなります。
ディフォルトの状態ではSMTPの認証に使っているMicrosoftアカウントのメールアドレスしか送信元に指定できません。
エイリアスを設定すれば任意のアドレスからSMTP可能
で、上の問題の解決策なんですが、Microsoftアカウントには「エイリアス」という設定があります。
エイリアスってのは別名のことで、Microsoftアカウントにログインするための別のメールアドレスや文字列を設定できます。
何も設定していない状態でも古いSkypeのアカウントとかを持っている人はそのSkypeのアカウントIDがMicrosoftアカウントのエイリアスになっていたりします。
で、エイリアスは任意で追加可能で、追加したエイリアスは元のMicrosoftアカウントと同様の振る舞いをする、みたいなことが説明に書いてあったので、「これに設定したらワードプレスのSMTPで任意のアドレスからFrom送信いけんじゃね?」と思ってとりあえず設定してみました。
エイリアスを設定する
https://account.live.com/names/manage?mkt=ja-JP&refd=account.microsoft.com&refp=profile
URLが無効の場合、
からエイリアスを設定できます。
注意点として、メールアドレスをエイリアスとして新たに登録する場合、そのメールアドレス宛に確認メールの送信と受け取ったコードでの認証が必要になりますので、指定したいメールアドレス(僕の例の場合[email protected])が受信可能なメールアドレスである必要があります。
まとめ
とりあえずここまでで、元通り。
ただ、そもそもなんでOutlookだけ受信できなくなったのかとか、詳細な原因部分については分からずじまい。
Web上調べてると、ちらほら「Gmailだけ受信できない」とかいうパターンがあることもわかりました。
もちろん迷惑メールフォルダとかは真っ先に確認してますので、「受信できてるけど気づいてない」とかいうパターンはありません。
なんらかの理由(IPとか)でブロックされた、とかなんでしょうかね?
コメント