手元の自作アプリにて、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レコードが表示されます。
- <SendGridが自動付与したサブドメイン>.example.com
- my._domainkey.example.com
- my2._domainkey.example.com
これらをお名前.comのネームサーバに登録します。
お名前.comのネームサーバーを使うように設定
以下の手順に従い、現在のネームサーバをお名前.comにします。
ネームサーバーの変更|お名前.com Navi ガイド|ドメイン取るならお名前.com
ネームサーバー設定にて、 現在のネームサーバー情報
が お名前.com
となっていればOKです。
お名前.comのネームサーバへDNSレコードを登録
以下の手順に従い、お名前.comのネームサーバへDNSレコードを登録します。
DNS関連機能の設定:DNSレコード設定|お名前.com Navi ガイド|ドメイン取るならお名前.com
登録するレコードは、SendGridのDomain Authentication用の3レコード、および、MXレコードとなります。
CNAMEレコードはSendGridで表示された
- <SendGridが自動付与したサブドメイン>.example.com
- my._domainkey.example.com
- my2._domainkey.example.com
を登録します。
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 経由
のような表示が消えていました。