SendGrid 独自ドメインでの SPF と DKIM の設定メモ

クラウド
クラウド
スポンサーリンク

メール配信サービス SendGrid から、独自ドメインのメールアドレスでメールを送信できるように設定し、送信ドメイン認証の SPF(エスピーエフ)と DKIM(ディーキム)を設定した時のメモです。SendGrid の基本的な設定方法は「Google Compute Engine から SendGrid 経由でメール送信」の記事をご参照ください。

この記事を書くのにあたって、SendGrid の日本代理店、構造計画研究所さんのFAQページを参考にさせていただきました。

SPF と DKIM とは?

SPF(Sender Policy Framework)DKIM(Domainkeys Identified Mail)は共に、送信元メールアドレスのドメインに対して、正当なメールサーバーから送信されている事を証明するための仕組みです。また、DKIMはメール内容が改ざんされていない事を証明することも出来ます。最近では、SPF/DKIMに対応していないメールサーバーから送信されたメールは、迷惑メールと判定されることが多くなりました。

2015年6月時点で、SPFの普及率は約90%に達していますので、もはや必須の設定かと思います。また、DKIMの普及率はまだ約40%ですが、年々普及率が上がっていますので、こちらも合わせて設定するのが良いでしょう。
送信ドメイン認証結果の集計(2015年6月時点)| 総務省

SendGrid はデフォルトで SPF/DKIM 対応済

SendGridは、何も設定していなくても SPF と DKIM に対応しています。

PostfixなどMTAから、SendGrid 経由でメールを送信した場合、Fromアドレスが「root@instance-1.localdomain」などのようにおかしなメールアドレスになっていたとしても、エンベロープFromのメールアドレスは、しっかり「xxx@sendgrid.net」としてくれます。

実際のメール配信では、FromアドレスやToアドレスは使われず、エンベロープFromやエンベロープToが使われます。手紙の配達で例えると、From/Toアドレスは中身の便箋に書く住所(便箋に住所はあまり書きませんが、あくまで例えです)エンベロープFrom/Toは封筒に書く住所となり、郵便屋さんは、封筒(英語で envelope)に書かれた住所を見て配達するのと同じです。

SPF や DKIM の認証も、このエンベロープFromに対して行われます。SendGridが管理する「sendgrid.net」ドメインは、SPF/DKIMに対応しているため、ともに「pass(認証OK)」になります。

SendGrid → Gmailで受信したメールのヘッダ(サンプル)

Authentication-Results: mx.google.com;
       dkim=pass header.i=@sendgrid.net;
       spf=pass (google.com: domain of xxx@sendgrid.net designates 192.0.2.1 as permitted sender) smtp.mailfrom=xxx@sendgrid.net
(略)
From: root@instance-1.localdomain (root)
 

ただし、サンダーバードの「DKIM Verifier」など、メーラーでDKIM署名の検証を行っている場合、下のような警告が表示されることがあります。

気になる場合は、Postfixの設定で送信元メールアドレスが「xxx@sendgrid.net」となるように設定してしまうのが手軽かと思います。
vi /etc/postfix/main.cf

#myorigin = $mydomain
 ↓
myorigin = sendgrid.net

独自ドメインと SPF/DKIM の設定

前置きが長くなりましたが、本題の独自ドメインでの SPF と DKIM の設定方法です。

SendGridでは「Whitelabels」という機能を使って、送信元メールアドレスに独自ドメインが使えるように設定すると共に、Whitelabels設定の最後に表示される、SPFとDKIM用のレコードをDNSサーバーに登録するだけで、SPF/DKIMの設定まで出来てしまいます。

裏を返せば、SPFとDKIM用のレコードをDNSサーバーに登録しなければ、独自ドメインを使う事が出来ないようなので(なにか方法があるのかもしれませんが)SendGridでは、独自ドメインとSPF/DKIMの設定はセットだと考えるのが良さそうです。

Whitelabels の設定

今回ドメイン名は「apar.jp」で設定しています。ご自分が所有しているドメイン名に読み替えてください。

SendGridの管理画面にて、Settings → Whitelabels を選択します。

「+ Add Domain」をクリック

ドメインの入力画面が開きます。「+ Use New Domain」をクリック

下記を入力/選択して「Save」をクリックします。サブドメインは、FROMアドレスなど表には出てきませんので(ただし、メールのヘッダには表示されます)、分かりやすい名前であれば良いかと思います。私は mail サブドメインを既に使っているため、単純に mail2 としました。

「SUBDOMAIN」:サブドメインを入力
「DOMAIN」:ドメイン名を入力
「DEFAULT WHITELABEL」:チェック
「AUTOMATED SECURITY」:「ON」

Whitelabelsの設定を完了するには、DNSレコードの検証が必要になります。よければ「Confirm」をクリック

表示されたSPFとDKIM用のレコードをメモしておきます、1つめがSPF用、下の2つがDKIM用です。こちらをDNSサーバーに登録します。

SPF/DKIM用レコードをDNSサーバーに登録

先ほどメモしたSPF/DKIM用レコードを、DNSサーバーに登録します。

named の場合

DNSサーバーが named の場合、ゾーンファイルに登録するレコードは下記のようになります。(シリアルの更新を忘れずに!>自分)

vi /var/named/master/apar.jp

mail2.apar.jp.          IN  CNAME u3573039.wl040.sendgrid.net
s1._domainkey.apar.jp.  IN  CNAME s1.domainkey.u3573039.wl040.sendgrid.net
s2._domainkey.apar.jp.  IN  CNAME s2.domainkey.u3573039.wl040.sendgrid.net

Amazon Route 53 の場合

Amazon Route 53 をWEBコンソールから設定する場合は、以下のようになります。

1行目(mail2.apar.jp)

2行目(s1._domainkey.apar.jp)

3行目(s2._domainkey.apar.jp)

確認

登録したDNSレコードの問合せが出来る事を確認します、SPFレコードの内容やDKIMの公開鍵が確認できるかと思います。(こういったCNAMEでの指定方法もありなんですね)

dig mail2.apar.jp TXT(IPアドレスはサンプルです)

;; QUESTION SECTION:
;mail2.apar.jp.			IN	TXT

;; ANSWER SECTION:
mail2.apar.jp.		300	IN	CNAME	u3573039.wl040.sendgrid.net.
u3573039.wl040.sendgrid.net. 900 IN	TXT	"v=spf1 ip4:192.0.2.1 -all"
 

dig s1._domainkey.apar.jp TXT

;; QUESTION SECTION:
;s1._domainkey.apar.jp.		IN	TXT

;; ANSWER SECTION:
s1._domainkey.apar.jp.	300	IN	CNAME	s1.domainkey.u3573039.wl040.sendgrid.net.
s1.domainkey.u3573039.wl040.sendgrid.net. 620 IN TXT "k=rsa\; t=s\; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC+vs2FJr4KZV3utKs2Ev7cxUdd/8fcXFcV3CXW1qBl6h/X2FG8VEMe44SLtYDXBMpLgr4lRE8p9anh7fJWGsJw/l3g9n569STZWKrIgD+8RmeXiKDmtffdfp+/7maq16juliCuEx6Bu5h9vi8JWCQ2s/16RQ9yvXDJiq3Ipt13swIDAQAB"
 

dig s2._domainkey.apar.jp TXT

;; QUESTION SECTION:
;s2._domainkey.apar.jp.		IN	TXT

;; ANSWER SECTION:
s2._domainkey.apar.jp.	300	IN	CNAME	s2.domainkey.u3573039.wl040.sendgrid.net.
s2.domainkey.u3573039.wl040.sendgrid.net. 1800 IN TXT "k=rsa\; t=s\; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDiFMa1z41Ap5hzdqUj7ao2acaui8DEcx+O9/8TT0cc4maotGZN8XRY+7p8XDHCJvjfTWqmjygfkfy8pVDh73s4Fd5ta5Tjjvk7ro7P9f6qV5+eD/v3CWjcBgivEaPeo+tgE8DqVY9zrqwD3mdC++VKDa8PuPpVn2/tdE058hjqXQIDAQAB"
 

SendGrid 管理画面でDNSレコードの確認

DNSレコードの登録が確認できたら、SendGridの管理画面に戻って「Validate Record」をクリックします。

VALID列が全て「緑チェック」になれば、SendGridでの独自ドメインとSPF/DKIMの設定は完了です。続いてPostfixの設定を行います。

Postfix の設定

メールサーバのホスト名の設定と、送信元のメールアドレス形式を設定します。

vi /etc/postfix/main.cf

# SendGridの管理画面で入力した「サブドメイン.ドメイン名」を指定
#myhostname = host.domain.tld
 ↓
myhostname = mail2.apar.jp
 
# SendGridの管理画面で入力した「ドメイン名」を指定
#mydomain = domain.tld
 ↓
mydomain = apar.jp
 
# メールアドレスを「ユーザ名@ドメイン名」の形式にする
#myorigin = $mydomain
 ↓
myorigin = $mydomain

設定した内容を読込みます。

systemctl reload postfix

SPF/DKIM認証の検証確認

Gmailへメールを送信して、メールヘッダに下記のような表示があればOKです。

Authentication-Results: mx.google.com;
       dkim=pass header.i=@apar.jp;
       dkim=pass header.i=@sendgrid.info;
       spf=pass (google.com: domain of xxxx@mail2.apar.jp designates 192.0.2.1 as permitted sender) smtp.mailfrom=xxx@mail2.apar.jp
 

終わりに

記事の中でも書きましたが、SendGrid では、SPF や DKIM の設定を意識しなくても、当然のように設定してくれます。メール配信サービス業界(そんな業界があるかは分かりませんが)では、もはやSPF/DKIMの設定は当たり前なのかもしれませんね。

コメント

タイトルとURLをコピーしました