WordPressからのメールが届かない、遅延する問題をSendGridで解決する

    どうも、ひろーちか(@hir0_chika)です。

    ここ最近、WordPressから発信されるメールが頻繁にロストしたり、遅延したりといった問題が発生しており、どうにも困っておりました。(特に、ログイン用のワンタイムパスワード送付メールが3回に1回しか届かないのは困った・・・。)

    SendGridという外部のメール配信サービスを使うことで解決できたので、手順を公開します。

    ※SendGridでは、送信元アドレスに設定できるのは自身が所有するドメインのメールアドレスのみとなるため、先に独自ドメインを取得しておく必要があります。

    スポンサーリンク

    SendGridのアカウントを取得する

    まず、SendGridの公式サイトにアクセスし、右上の「新規登録」をクリックします。

    会員登録画面に移ります。登録用のメールアドレスを入力し、プライバシーポリシーなどの同意にチェックを入れ、「確認メールを送信する」をクリックします。(会員登録用のアドレスなので、実際にサービスで利用するメールアドレスとは関係ありません)

    確認メールの送付画面に遷移します。先程入力したメールアドレスに「仮登録完了のお知らせ」というメールが届いているので、メール内のリンクをクリックします。

    個人情報入力画面に遷移します。私は会社名に「個人」、利用目的の1番目の質問には「WordPressログイン用のワンタイムパスワード送付用」と入力しました。

    利用目的の4番目の質問にはメールアドレスを入力しますが、これが実際にサービスで利用するアドレスとなります。従って、ドメインの所有権が必要になります。(@手前は好きな文字列で問題なし)

    確認画面へ遷移します。入力内容を確認し、「登録する」をクリックします。

    登録完了画面に移ります。審査に2営業日ほどかかるので、まったり待ちましょう。

    ちなみに独自ドメイン側でWhois情報公開代行を設定している場合は、公開情報からそのドメインの所有者を確認することができないので、追加で情報提供を求められます。

    私はレジストラの設定画面から、自身の本名と、その独自ドメインが併記された画面をキャプチャして送りましたが、1営業日以内に対応してもらえました。

    Whitelabelを設定する

    会員登録が完了したら、メールの到達性を上げるために、以下の設定を行います。

    なお、設定は独自ドメインを利用するを参照して行いました。

    Domain Whitelabelを設定する

    Domain Whitelabelとは、送信ドメイン認証のことです。

    送信者のアドレスが正規なものであることを証明する技術であり、これを設定することによってメールの到達性が向上します。

    まず、SendGridにログインし、右上のメニューから「ダッシュボード」をクリックします。

    次に、画面左側にあるSettings > Whitelabels > Domainsを選択します。

    Domain Whitelabelの画面に遷移したら、「Add Whitelabel」をクリックします。

    次に、サブドメインと対象ドメインを入力します。サブドメインの設定はどうやら必須のようで、他で使用していないものであれば何でもいいそうです。ここでは公式で例として使われている、emを入力しています。

    「Whitelabelの設定にはDNSの設定・検証が必要だよー。DNSの設定更新には最大48時間かかることもあるよー」みたいなことを言われるので、「Confirm」をクリック。

    するとDNSに設定するレコードが3つくらい出てきますので、それをドメインのネームサーバに設定します。

    私の場合、ネームサーバはConohaのものを使う設定にしているため、ConohaのDNS設定画面にて、上記と同じ設定を登録しました。
    (お名前.comならば、「ドメイン設定 > DNS関連機能の設定 > DNSレコード設定を利用する」の画面で出来るハズです)

    ネームサーバ側での登録が終わったら、SendGridの画面に戻り、「Validate Record」をクリックします。正しく設定されていれば、「VALID」に緑のチェックマークが表示されます。
    (私の場合はすぐに反映されましたが、環境によっては時間がかかる可能性があります)

    以上でDomain Whitelabelの設定は完了です。

    Email Link Whitelabelを設定する

    Email Link Whitelabelとは、メール本文内にURLが存在した場合にクリックイベントの収集のためにSendGridドメインのトラッキングURLに自動置換されるところを、独自ドメインに切り替える機能です。これを設定することによってメールの到達性が向上します。

    まず、ダッシュボードの画面で、左側にあるSettings > Whitelabels > Email Linksを選択します。

    Email Link Whitelabelの画面に遷移したら、「Add Whitelabel」をクリックします。
    (ごめんなさい画面キャプチャ忘れました。。)

    次に、サブドメインと対象ドメインを入力します。サブドメインは、先程のDomain Whitelabelで設定したものと別のものを設定します。ここでは公式で例として使われている、linkを入力しています。

    先程と同じ内容の警告文が出てくるので、「Confirm」をクリック。

    またDNSに設定するレコードが2つくらい出てきますので、それをドメインのネームサーバに設定します。

    Conohaの画面に戻って、またレコードを2つ追加します。

    ネームサーバ側での登録が終わったら、SendGridの画面に戻り、また「Validate Record」をクリックします。正しく設定されていれば、「VALID」に緑のチェックマークが表示されます。
    (こちらも、環境によっては時間がかかる可能性があります)

    以上でEmail Link Whitelabelの設定は完了です。

    WordPressと連携させる

    プラグインのインストール

    WordPressの管理画面左側にあるプラグイン > 新規追加を選択し、右上の検索ボックスに「SendGrid」と入力します。

    公式のプラグインが表示されるので、「今すぐインストール」をクリックします。

    インストールが完了したら、「有効化」をクリックすれば完了です。

    APIキーの発行

    あとはSendGridのプラグインにユーザ名とパスワードを入れれば完了なのですが、それだとセキュリティ上心もとないので、最小限の権限のみ付与したAPIキーを発行することにします。

    APIキーって何だよ分かんねえよ(怒)って人や、めんどいのでやりませんって人は、ユーザ名&パスワードの認証方式でもいいと思います。

    まず、ダッシュボードの画面で、左側にあるSettings > API Keysを選択します。

    API Keysの画面に遷移したら、「Create API Key」をクリックします。
    (またもや画面キャプチャ忘れました)

    APIキーの権限には「Full Access」「Restricted Access」「Billing Access」の3種類がありますが、今回は制限付きでアクセスさせたいのでRestricted Accessを選択します。
    名前も忘れずに入力しておきます。

    権限は以下のように設定します。「Mail Send」はFull Access、「Stats」はRead Accessにします。Statsを設定する必要はあまりないですが、この権限を外すとプラグインからメールの統計情報が見れなくなるので、私は設定しています。

    「Create & View」をクリックするとAPIキーが発行されるので、それをプラグインに設定します。

    APIキーの設定

    WordPressの管理画面左側にある設定 > SendGridを選択します。

    SendGrid Credentials > API Keyに先ほどのAPIキーを入力し、「Update Settings」をクリックすれば完了です。

    なお、Mail settings > Nameでは送信者名、Sending Addressでは送信元アドレスを変更することが、SendGrid Testではテストメールを送信することができます。

    SendGridに切り替えてからメール到達率が100%になったのでとても嬉しい。

    スポンサーリンク