私の戦闘力は53万です

awsとgcpについて書きます

AWS SESとSPFの話(その1)

会社の人から「SPF認証ってなに?」とか
AWS SESはSPFに対応していますか?」といったことをよく聞かれます。
そこで今回はSPFについて書きたいと思います。

SPFとは

そもそもSPFとは何か?ということですが、
送信元認証(=メール送信者が想定と正しいと確認すること)の
技術の1つだと思ってもらえればと思います。

例えば、私がメールを送るとします。
私のメールアドレスは「xxx@hatena.com」とします。
しかし悪い奴が、私の名前を語り、悪いメールを出すとします。
fromのメールアドレスを「xxx@hatena.com」に偽ったとしましょう。

f:id:remmemento:20191105204119p:plain
1.sendmail
こんなことをされたら、私は迷惑です。
悪い奴が、私を装って悪意あるメールを送れてしまうからです。
上記のような悪意ある行為に対し「hatena.com」ドメインからの
メールはちゃんとした人からだけ送れるようにしたい!と思ったとします。
そこで、SPFの登場です。
設定により上記のような一部の悪意ある行動を防ぐことができます。

実際の設定例

SPFの設定例として、せっかくなので実物設定を見て見ましょう。
IT企業の富士通さんのSPF設定です。
例として使いやすいのでピックアップさせて頂きました。

SPFの設定は公開されています。
txtレコードをdigすると見ることができます。(執筆時点の情報です)
Maclinuxをお使いの方は、下記コマンドを実施して見てください。

dig fujitsu.com txt
fujitsu.com. 4502 IN TXT "v=spf1 ip4:211.128.242.0/26 ip4:202.219.69.128/26 include:spf.protection.outlook.com include:mktomail.com mx:fujitsu.com?all"


例えば、上記例の最初の部分「v=spf1 ip4:211.128.242.0/26」では、
IPが「211.128.242.0/26」のメールサーバから送られて来たら「fujitsu.com」からの本物のメールだとみなして良いよ
ということを表わしています。
※その他「ip4:202.219.69.128/26〜」以降の情報も同じように
spfのルールに従い処理されますが説明を分かりやすくするため割愛しています。

f:id:remmemento:20191105204208p:plain
2.fujitsu-example
このように「fujitsu.com」のドメイン管理者が、
fujitsu.com」のメールとして正しい条件を予め設定しておくことにより、
悪い奴がメールのfrom部分を「fujitsu.com」に偽造しようが、
受信者側で、本物か偽物かを見抜くことが可能になります。

このことを応用して、よくあるパターンとしては、
社内からのメールなのに、社外メールサーバからメールが来ていることを検知できます。
送信元メールアドレスを不正に社内用に書き換えることで社内の人間を装っても、社外から悪いメールを出しているためです。
(送信元メールアドレスを社内に書き換えても社外メールサーバのIPから送られてくるためSPFにより嘘がバレる)
流行りのなりすましメールの検出等もできますね。

では、AWS SESからの送信メールのSPFはどう処理されるのでしょうか?
続きは次回で見て見たいと思います。