インフラ

SPFのDNSルックアップでハマった件

こんにちは、ちゃりおです。

gmail smtpサーバ、SPFの知識が不足してハマったのでまとめてみます。

ちゃりお
ちゃりお
SPFについてです。

Contents

用語のおさらい

本題に入る前に、登場する用語のおさらいです。

Gmail SMTPサーバ

Gmail SMTPサーバを使用することで、自前でメールサーバを建てなくても
アプリケーションからメールを送ることができます。

特徴

  • 1 日あたりの送信メール数の上限は 2,000 通です。
  • 認証時に Gmail または G Suite の完全なメールアドレスの入力が必要

Gmail SMTPサーバ

SPFについて

SPFはメール送信のなりすましを防ぐ技術です。

SPFは、こうしたメールアドレスにおけるなりすましを防ぐための技術の一つで、 DNSを利用するのが特徴です。 ドメインをSPFに対応させるには、 そのドメインのゾーンデータにSPFレコード(*2)という情報を追加します。 SPFレコードには、 そのドメイン名を送信元としてメールを送ってもよいサーバのIPアドレス等を記述します。

SPFとは

事象

GmailのSMTPサーバを使って、アプリケーションからメールを送っている。

Gmailのアカウントと違うドメインのメールアドレスを、GmailのエイリアスとしてメールのFROMにしている。

Googleから「DNSルックアップが不正」と連絡が来る。

しかし、FROMにしているGmailアカウントのspfを調べても問題なさそう。

エイリアスはSPFで認証されない

メールのヘッダーみたらエイリアスは、認証には使われないみたいです。
Gmailのアカウントのドメインが使われていました。

例えば、「hoge@hoge.com」がgmailのアカウントでメールのFromを「hoge@fuga.com」にしていた場合
「hoge@hoge.com」で認証されます。

メールクライアントがGmailだったらメールを開いて、「メッセージのソースを表示」から確認できます。

これでGmailアカウントのドメインのSPFに問題がありそうだということがわかりました。

SPFのDNSルックアップは10回まで

SPFのDNS ルックアップは10回に制限されています。
RFCで確認できます。

DNSルックアップは、spfレコードのincludeしているところをDNSで名前解決してIPアドレスを得ることです。

10回を超えている場合、SPFとして不正とみなされます。
迷惑メールフォルダに振り分けられる確率があがってしまいます。

迷惑メールフォルダに振り分けられて、ドメインのレピュテーションも下がるので悲惨です。

SPFのDNSルックアップを数える際に、知っておきたいことはincludeされた先のincludeもカウントされることです。

例えば、hoge.comのspfレコードに下記の記述があったとします。

v=spf1 include:_spf.google.com ~all

ここだけ見ると、includeが1回なのでルックアップが1回に見えます。

しかし、「_spf.google.com」をさらに調べてみると3回includeされていることがわかります。

$ dig +short _spf.google.com. txt
"v=spf1 include:_netblocks.google.com include:_netblocks2.google.com include:_netblocks3.google.com ~all"

結果、4回includeがあるのでDNSルックアップが4回発生しています。

includeが複数あって調べるのが面倒な場合、下記のツールが便利です。

MXTOOLBOX

対策

以上のことから対策としては、下記になります。

  • gmailアカウントのドメインのspfレコードの不要なincludeを削除する
  • (削除できない場合)gmailアカウントを別のドメインで新規に作る

まとめ

今回は、実際に体験した事象からSPFについて調べたことを共有しました。

一つのドメインに色々詰め込むと今回のように、SPFの問題が発生することもあると思うので
用途ごとにドメインとったり、サブドメインきるのが大事だなと実感しました。

Amazonで「メールサーバ」の本をみてみる!!

公開鍵秘密鍵-min
踏み台サーバの鍵(公開鍵・秘密鍵)の管理方法について比較してみたこんにちは、ちゃりおです。 みなさんは、踏み台サーバの鍵の管理どうしてますか。 ユーザごとにアカウント作ったり、秘密鍵を共有していたり...
Sendgridでメールのワンクリック配信停止をやってみたこんにちは、ちゃりおです。 突然ですが、メルマガの配信停止ってめちゃくちゃ面倒じゃないですか。 メール内の配信停止ボタンがどこだか...
VPCアンチパターン
VPCをつくる前に見てほしいVPCアンチパターンこんにちは、ちゃりおです。 勉強会や資格勉強で、最近VPCについて考えることが多いです。 今回は、VPCを作成する際に個人的によくな...