お名前comの独自ドメイン + お名前メールな環境で、SendGrid の Domain Authentication によるDKIM/SPF認証を設定してみた

手元の自作アプリにて、SendGridでメールを送信するための準備として、Domain AuthenticationによるDKIM/SPF認証の設定をしたときのメモを残します。

 

目次

 

環境

  • SendGrid本体でアカウント作成
  • お名前.comで契約

 

調査

Domain Authentication用CNAMEレコードをどこに登録するか

SendGridでメールを送信するための準備として、Domain Authentication の設定を行います。
SendGrid 新人成長記 第六回 Domain Authentication: メールの到達率を高めるために | SendGridブログ

 
今回の環境はお名前.comの独自ドメイン + お名前メールなので、お名前メールの方でDNSにCNAMEレコードを追加すれば良さそうです。
お名前.com お名前メール 活用ガイド

 
ただ、お名前メール ライトプランの契約内容を読んだところ、サブドメインが使えないことに気づきました。
お名前メール 月あたり46円(税込)からのメールアドレス取得|お名前.com

サブドメインが使えないとすれば、SendGrid の Domain Authentication 用のCNAMEレコードをお名前メールのDNSに作成できません。

もしかしたらスタンダードプランに上げれば使えるかもしれませんが、他に何か良い方法がないかを調べてみました。

 
すると、

などの記事より、

  • ネームサーバは、 お名前.com
    • 01.dnsv.jp、02.dnsv.jp、03.dnsv.jp、04.dnsv.jp
  • お名前.comのネームサーバに以下のレコードを登録
    • SendGrid用のCNAMEレコードを登録
    • お名前メール用のMXレコードを登録

とすればいけそうでした。

今回の環境ではお名前メールはほとんど使ってなかったため、もし失敗してメールが届かなくなっても良かったこともあり、試してみることにしました。

 

設定

SendGrid にて、Domain Authentication用レコードを作成

Settings > Sender Authentication > Domain Authentication より、設定を行います。

なお、今回、独自ドメインとして example.com を使いますが、実際には自分が取得しているドメインとなります。

項目 理由など
DNS host I'm not sure お名前.comがリストになかったため
Would you also like to brand the links for this domain? No 今回はLink Brandingの設定はしないため
From domain example.com 自分が取得している独自ドメインを設定
Use automated security チェックする CNAMEレコードでドメイン認証するため
Use custom return path チェックしない 使わないため
Use custom DKIM selector チェックする 既存のサブドメインとの重複をさけるため
DKIM selector my 任意の値で良い

 
設定後、以下の3つのCNAMEレコードが表示されます。

これらをお名前.comのネームサーバに登録します。

 

お名前.comのネームサーバーを使うように設定

以下の手順に従い、現在のネームサーバをお名前.comにします。
ネームサーバーの変更|お名前.com Navi ガイド|ドメイン取るならお名前.com

ネームサーバー設定にて、 現在のネームサーバー情報お名前.com となっていればOKです。

 

お名前.comのネームサーバへDNSレコードを登録

以下の手順に従い、お名前.comのネームサーバへDNSレコードを登録します。
DNS関連機能の設定:DNSレコード設定|お名前.com Navi ガイド|ドメイン取るならお名前.com

登録するレコードは、SendGridのDomain Authentication用の3レコード、および、MXレコードとなります。

CNAMEレコードはSendGridで表示された

を登録します。

 
MXレコードは、お名前メールのコントロールパネルにある サーバー情報SMTP・POPサーバの番号を使って設定します。
お名前.com お名前メール 活用ガイド

例えば、番号が smtp10.gmoserver.jp の場合は、

項目
ホスト名 example.com
TYPE MX
TTL 3600
VALUE mx10.gmoserver.jp
優先 10

として登録します。

 

SendGridにてverifyする

SendGridのDomain Authenticationのページにある Verify ボタンをクリックし、3つのCNAMEレコードが verified になることを確認します。

なお、登録後反映されるまで最大72時間かかるようですので、気長に待ちます。

 
Verifiedになっているかどうかは、SendGridの画面のほか、SendGridの List all Domains APIでも確認できます。
Domain Whitelabel - ドキュメント | SendGrid

 
curl

> curl https://api.sendgrid.com/v3/whitelabel/domains --header 'authorization: <APIキー>'

を実行すると、Verifiedになっていれば

[
    {
        "id": 123,
        "user_id": 456,
        "subdomain": "em9999",
        "domain": "example.com",
        "username": "user_name",
        "ips": [],
        "custom_spf": false,
        "default": false,
        "legacy": false,
        "automatic_security": true,
        "valid": true,
        "dns": {
            "mail_cname": {
                "valid": true,
                "type": "cname",
                "host": "em9999.example.com",
                "data": "u123.xxx.sendgrid.net"
            },
            "dkim1": {
                "valid": true,
                "type": "cname",
                "host": "my._domainkey.example.com",
                "data": "my.domainkey.u123.xxx.sendgrid.net"
            },
            "dkim2": {
                "valid": true,
                "type": "cname",
                "host": "my2._domainkey.example.com",
                "data": "my2.domainkey.u123.xxx.sendgrid.net"
            }
        },
        "last_validation_attempt_at": 1615966760
    }
]

のように表示されます。

 

動作確認

SendGridから受信したメールの確認

SendGridのMarketing機能などを使って、自分のGmail宛にメールを送信してみます。

すると、 Authentication-Results ヘッダが Domain Authentication 設定前は

Authentication-Results: mx.google.com;
  dkim=pass header.i=@sendgrid.net header.s=smtpapi header.b=xxx;
  arc=pass (i=1 spf=pass spfdomain=sendgrid.net dkim=pass dkdomain=sendgrid.net);
  spf=pass (google.com: domain of xxx@gmail.com designates xxx.xxx.xxx.xxx as permitted sender) 

だったような内容が、設定後は

Authentication-Results: mx.google.com;
  dkim=pass header.i=@example.com header.s=my header.b=xxx;
  spf=pass (google.com: domain of bounces@em9999.example.com designates xxx.xxx.xxx.xxx as permitted sender) 

のように変わっていました。

また、Gmailからも sendgrid.net 経由 のような表示が消えていました。

これにより、Domain AuthenticationによるDKIM/SPF認証は成功しているようでした。