
DKIM、SPFレコードはどこに書けばいい?簡単に解説するGmailへのメール受信対策
カテゴリ:WEB制作

※当サイトはアフィリエイト広告を利用しています。
お問い合わせフォームからメールを送信した際にGmailで受信できないという相談をいただきます。
この事象はDKIM、SPFレコードなどの認証の問題から起きるのですが、どこのサーバーに、何のレコードを書けばいいのかわからないという方も少なくないようです。
今回はサーバーの仕組みだったりは一旦、置いてわかりやすく解説したいと思います。
目次
まずは出てくる用語を解説
DNSサーバー(ネームサーバー)とは?
DNSサーバーは、インターネット上で「どのサービスがどのサーバーにあるか」を教えてくれる案内役のような存在です。
例えば、メールはこのサーバーを利用し、ホームページは別のサーバーを利用するといったように、それぞれの機能とサーバーの関係を管理しています。
ホームページを見ようとするとき、まず「そのホームページのサーバーはどこにあるのか?」と確認が必要になります。住所に例えると「どの場所に行けばいいのか」を尋ねるイメージです。するとDNSサーバーが「このドメインはこのサーバー(住所)にありますよ」と教えてくれます。
この仕組みによって、ドメイン名とサーバーのアドレスが結びつき、ユーザーは「example.com」といった覚えやすい名前を使って、実際のサーバーにアクセスできるようになっています。
DNSレコードとは?
DNSレコードとは、「どのサービスにアクセスするときに、どのサーバーを参照すればいいか」をまとめた情報のことです。
DNSサーバーの中に書かれていて、いわば「案内表」のような役割を持っています。
例えば・・・
- ホームページを表示するときは、このサーバーを見に行く
- メールを送受信するときは、このサーバーを利用する
といった指示が、DNSレコードとして登録されています。
SPFレコードとは?
SPFレコードとは、メールの「送信元サーバーの許可リスト」をDNSに登録したものです。
たとえばGmailなどのメールサービスは、「どのサーバーから送られたメールでも受け取る」という仕組みではありません。あらかじめDNSサーバーにSPFレコードとして記載されているサーバーから送られてきたメールだけを受信します。
もし送信してきたサーバーがこのリストに載っていなければ、不正な送信と判断され、メールは受け取ってもらえません。
DKIMとは?
メールが本当に正しい送信元から送られたかを確認する仕組みです。
これは、DNSサーバーに「公開鍵(パスワードのようなもの)」を登録しておき、メールを送信するときにその鍵を使ってメールに電子署名をします。受信側はDNSに登録された公開鍵で署名を確認することで、「改ざんされていないか」「正規のサーバーから送られたものか」をチェックできます。
これにより、なりすましや改ざんを防ぎ、メールの正当性を保証することができます。Gmailにメールが届かない理由
GoogleはGmailでのメールの受信に以下にいずれかを必須としています。
- SPFレコードによってそのサーバーからのメール送信が許可されている
- DKIMによる送信メールへの署名と、DNSサーバーに設定してある
まず、(1)については、Gmailは迷惑メールの対策としてDNSサーバーに記載してあるDNSレコードを確認して、そのメールが送られたサーバーがSPFレコード(メールの正当性を証明するDNSレコード)で許可されたかどうかを確認します。
次に(2)ですが、Gmailがメールを受けた際にメール自身にこれがついている署名を確認します。その署名とDNSサーバーの署名が一致する場合にメールを受け入れます。一致しない場合はGmailは『なりすましメールである』と判断してメールの受信を拒否します。
上記のいずれかが設定されていれば受信、上記のいずれも設定されていない場合は許可されていないと判断し、Gmailは『なりすましメールである』と判断してメールの受信を拒否します。
SPFレコードの設定方法
どこに記載するか?
DNSサーバーが設定してあるサーバーのTXTレコードに記載します。
例えば・・・
- ネームサーバーはエックスサーバー
- ホームページはヘテムル(Aレコードで参照)
・・・を使用している場合、DNSサーバーが設定してあるエックスサーバーに記載します。
ヘテムル側のレコードを触ることはありません。
エックスサーバーのDNSレコード設定の中にある、TXTレコードの値(内容)がv=spf1〜〜〜〜 となっているところを編集します。
どこのサーバーも既存の記述があることが多いので、それに付け加える形で記載します。
Before
v=spf1 +a:サーバー番号.xserver.jp +a:ドメイン +mx include:spf.sender.xserver.jp ~all
After
v=spf1 +a:サーバー番号.xserver.jp +a:ドメイン +mx include:spf.sender.xserver.jp include:_spf.heteml.jp ~all
上記の構文を解説します。
SPFレコードの構文を解説
メカニズムとは?
メカニズムはドメインのレコード、メールサーバーのレコード、SPFポリシーのレコードなど種別みたいなものを解説します。
ip4 | IPv4アドレスを指定(サーバーのアドレスのこと) |
ip6 | IPv6アドレスを指定(サーバーのアドレスのこと) |
a | ドメインのレコードを指定 |
mx | メールサーバーのレコードを指定 右に値を記述しない場合(mx:○○○○などと記載しない)は、MXレコードに定義されているサーバー(ホストが許可される) |
include | SPFレコードのポリシー(*ここが重要) |
~all | 記載されているすべての項目を有効にします。 |
限定子
修飾子である『+』は限定子と言われ、、記載内容を許可するかどうかを指定します。
+ | 許可(初期値が+なので許可の場合は省略可能です。) |
– | 拒否(このサーバーから来たメールは全て拒否されます。) |
~ | SoftFail『-』と同様に拒否ですが迷惑メールなどに振り分けられる場合があります。 |
基本的には使用するのは『+(許可)』『+(拒否)』でしょう。
値
実際のサーバー情報であったり、SPFレコードの情報だったりを記載します。
DKIMの設定方法
メール送信を行うサーバーから公開鍵を発行しネームサーバーが向いているサーバーのTXTレコードに記載します。
DKIMはどこに記載する
ネームサーバーがエックスサーバー、Aレコードがヘテムルに設定してある場合は、ヘテムルでDKIMの公開鍵を発行して、エックスサーバーのTXTレコードに同じものを貼り付けます。要はメールの送信サーバーから公開鍵を発行します。
公開鍵の発行例は以下です。
ホスト名:default._domainkey.ドメイン名
種別 : TXT
内容 : v=DKIM1; k=rsa; p=~~~~暗号~~~~~
発行されたものをそのままエックスサーバーのTXTレコードに貼り付ければ完了です。
まとめ
Gmailでは、迷惑メールやなりすましを防ぐため、SPFレコードまたはDKIMが必須になっています。
SPFは「送信を許可されたサーバーか」をチェックし、DKIMは「署名と公開鍵が一致しているか」を確認します。これらの設定がない場合、Gmailは正規のメールであっても「なりすまし」と判断して受信を拒否してしまいます。基本的に設定は、ドメインのネームサーバー側にあるDNS(TXTレコード)を編集します。
DNS・SPF・DKIMを正しく理解し設定することで、メールの到達率を高め、不正利用やなりすましを防ぐことができます。