やかんです。

メールについて書きます。大学のセキュリティの授業でも扱われたような内容ですね。復習っぽくなることが予想されます。

Header Fromについて

メールには

  • Envelope From
  • Header From

の2つの値が「送信者」となります。色々すっ飛ばしますが、セキュリティ上問題になるのはEnvelope Fromです。だから、SPF認証とかでIPアドレスのチェックが入るのは基本的にEnvelope Fromのみです。

で、唐突ですがAレコードのないドメインをHeader Fromに利用したいというケースを考えてみます。↑こういうわけなので、Aレコードが設定されていない(つまり、IPアドレスに紐づかない)ドメインでも、Header Fromに指定する分には特に問題が生じないわけですね。

東大生やかんのブログ
やかん

Header Fromについては基本的に何もチェックが入らないからね

だがしかし、キャリアメールではそうもいかない

auとかドコモとかのメールでは、なぜかHeader FromについてもSPF認証が行われるようです。

なぜなんですかね。メール自体から直接にHeader Fromに指定されたドメインに関するIPアドレスを取得することはできません。

文句はありますが、だとしても、SPF認証が行われてしまう以上、Aレコードがない(IPアドレスに紐づかない)ドメインをHeader Fromに使用することが難しくなりました。

東大生やかんのブログ
やかん

困りました

そもそも、Aレコードがないドメインというのは、DNS機能だけが利用されるというか、TXTとかCNAMEとかのためだけに存在している空虚なドメインです。ただ、「メール送信用のドメインとして利用したいんです」という場合などには、Aレコードを設定しないというのも非常に納得です。

蛇足ですが、Aレコードはwebアクセスはもちろん、具体的なサーバーを利用する場合に必要になります。SSHの接続先だったりAPIサーバーだったり。

では、どうする。

SPFには便利な機能がございまして、includeというタグが利用できるんですね。

Header Fromで指定しているドメインにAレコードがなかったり、あるいは別な事情で適切にSPFレコードを設定できない!となった場合でも、includeタグを使用してEnvelope Fromに指定されるドメインのSPFルールを参照するようにしてあげれば良いです。

だから例えば、

「Aレコードが設定されていない、mail.sample.comというメアドをHeader Fromに利用したい!」

という場合で、

「メールの送信にはAWSのSESを利用するよ!」

という場合には、

v=spf1 include:amazonses.com ~all

↑こんな感じでmail.sample.comのTXTレコードにSPFを指定してあげればいいはずです。

以上。

これでうまくいくんですかね。。わかりませんが、うまくいくと思うんだけどなー、どうなんだろう。経過を見ます。

すみません、最後に一言。

SPFは本来、送信元のIPアドレスをチェックすることでセキュリティ対策をします(なりすましを見破る)という趣旨のものだと理解しています。

そして、メールから直接に取得できる送信もとIPアドレスはEnvelope Fromに指定されるドメインのものとされます。なので、Envelope FromについてSPFチェックを行うことはセキュリティ上有効なわけです。

まあでも、これについてもテキトーなドメインでも

v=spf1 include:amazonses.com ~all

とかの、適切にSPFが管理されているドメインのSPFルールを参照するように設定しちゃえばSPFチェックで合格しちゃう気がしますよね。。

話がそれました。

上で見たような趣旨のSPFをHeader Fromに利用するというのは、果たして適切と言えるのでしょうか?

SPFは、「自分の送信するメールはセキュリティばっちりです!」と主張したい善人の皆様にとっては有益な仕組みだと思います。だけど、includeタグという便利だけど便利ゆえにあぶなっかしい仕組みがあるもんですから、善人の皆様について観念される「セキュリティ対策」と、攻撃者について観念される「セキュリティ対策」が等価なものになってしまうリスクを孕んでいる気がします。

どうなんでしょうか。有識者の方教えて欲しいです。

「じゃあ、includeタグを廃止、あるいはたくさん使っている人については、信用するの控えます!」というのも極端というか、SESとかのメッセージ配信サービスの意味がなくなってしまう気もします。「メールの送信に利用するドメインはDNSの一部機能だけ利用できればいいや」、というニーズ(IPアドレスに紐付けない)は一定程度あると思いますし。

いやでも、そもそもサブドメインでメールを配信するのってどうなんだろうか。。MXレコードをしっかり指定できるのなら良さそうだが。。

東大生やかんのブログ
やかん

ん、そうじゃね?

そうじゃね?

MXレコードは、親ドメインを持っている以上基本的に持ってる値ですよね。これを、メール配信に使いたいサブドメインでも使えばいいのでは?

サブドメインと親ドメイン、それぞれ同じMXレコードを登録することは有効です。メールサーバーのスペックは自己責任ですけどね。

でも、それにしてもHeader FromのSPFはマジで意味わからんな。何のためにやってんの?SPFって、メールが送信されたサーバーのIPアドレスをメール本文から直接に取得できるからこそ意味があるんだよね?

結論。

Header FromでSPFする意味は、まじでわからんかった。自作自演だろこれ。

東大生やかんのブログ
やかん

謎!

というわけで、メモでした。以上です。最後までお読みいただき、ありがとうございます!