※ 実話です (´・ω・`)
皆さんも考えてみてください
ある企業(D社)に問い合わせをするため、
D社のwebサイトの「問合せフォーム」を利用しました。
●氏名
ほげほげ太郎●返信用メールアドレス
xxxx@example.com●問い合わせ内容
かくかくしかじか。かくかくしかじか。かくかくしかじか。
これらを記入し投稿しました(ブラウザ上は正常終了)。
すると記入したメールアドレスに、下記のメールが届きました。
●件名
Mail delivery failed : returning message to sender●本文
This message was created automatically by XXXXXXX.A message that you sent could not be delivered to all of its recipients.
This is a permanent error. The following address(es) failed:xxxx_xxxxxxx_xxxxx@xxxxxxxx.com
host xxxxxxxx.xx.xxxxxxxxxxx.com [XX.XX.XX.XX]
SMTP error from remote mail server after end of data:
553-SPF (Sender Policy Framework) domain authentication
553-fail. Refer to the Troubleshooting page at
553-http://xxx.xxxxxxxxxxxxx.com/troubleshooting for more
553 information. (#5.7.1)
さて、これは何を意味するのでしょうか?
問合せフォームと、何か関係あるのでしょうか?
そもそも問い合わせは、受理されたのでしょうか?
解答
問い合わせは、受理されなかった 可能性が高いです。
上記の英文メールも、問合せフォームに関係があります。
解説
上記の問合せフォームは、おそらく、投稿内容をメールで転送する仕組みです。
私たちがフォームで投稿すると、D社の問合せ担当にメールが届きます。
それ自体は問題ありません。しかし、転送メールの組み立てに問題がありました。
メールの差出人(From)、および、**エンベロープFrom(Return-Path)**に、
私の記入した「返信用メールアドレス」をセットしていました。
つまり、あたかも私のメールアドレスから直接、
D社に送信したように加工していたのです。
これは何を意味するでしょうか?
そうです。**「なりすまし」**です! 上記の加工は、From の偽装そのものです。
From 偽装のメールを、D社のメールサーバに送ると どうなるか?
(実際はD社からD社へ送っているのですが)
スパム判定ツールが「なりすまし」と見なし、メールを拒否します。
そりゃそうです。D社のIPアドレスからは来るはずのない
差出人 xxxx@example.com のメールが飛んでくるのですから。
しかも面白いことに、拒否されたという通知(冒頭の英文メール)が、
Return-Path の xxxx@example.com (つまり私)に送られたのです。
私は なりすましメールなど送っていないのに、です。
(フォーム投稿しただけなんだけど。)
疑問
ただ それだと、すべてのフォーム投稿が拒否されるはずです。
投稿のたびに なりすましメールが送信され、スパム判定され、
捨てられるのですから。
でも実際は逆で、ほとんどの問い合わせがスパム判定にパスし、
受理されているに違いありません。
じつは、記入したメールアドレス(xxxx@example.com)だから
拒否された理由があったのです。
SPF
冒頭の英文メールのURLにアクセスすると、このような説明がありました。
If the Env Sender publishes a hard-fail SPF policy and the inbound email fails SPF verification,
the action of block and delete will be enforced and a 5xx error is returned to the sender.
SPF records set to soft-fail will not trigger the action.
要するに なりすましの場合、SPFに -all
(hard-fail) の設定があれば
エラーとして扱います。ただし ~all
(soft-fail) なら受理します、と。
たしかに xxxx@example.com のSPFは、
-all
(hard-fail) という厳密な設定をしていました。
それゆえ、問い合わせがエラーとして扱われたのでしょう。
いやいや(笑)
D社の担当者さん、そうじゃないでしょう。
じゃ、SPFに -all
(hard-fail) は使えないのですか?
ウチが ~all
(soft-fail) に変えなきゃいけないのですか?
D社内で勝手になりすましメールを送って、
これまた勝手に拒否しているんでしょう?
変えるとしたらD社の問合せシステムですよね?
まずメールの差出人(From)を、D社の固定のメールアドレスにする!
(これで、なりすましでは無くなります。)
そして必要なら、返信用メールアドレス(xxxx@example.com)は
Reply-To に設定する!(決して From, Return-Path ではない。)
(あるいは問い合わせの転送メールのみ、スパム判定をスルーするとか。)
強制 問い合わせ!
さて、愚痴ったところで、このままでは永遠に問い合わせができません。
私は以下をおこないました。
じつは冒頭の英文メールには、本来 届くはずだった問合せメールが添付されていました。
その内容を そっくりそのままコピーし、私のPCのメーラーから送りました。
正規のIPアドレスから送るのだから、今度は なりすましではありません。
(もし届いたとき、D社の担当者がメールを見たら、
「なんかフォントが違うなぁ」くらいは思ったかもしれません。)
結局、問い合わせは受理されたようで、後日 回答メールが届きました。
コマンド
SPF(TXTレコード)の確認は、Linux(CentOS7)の場合、dig
を使います。
dig txt xxxx.com