問い合わせフォームのメールが、届いていなかった。差出人を名乗るだけで送れてしまう仕組みの話

フォームから送ったはずのメールが、僕の受信箱には無かった。
迷惑メールの中にいた理由をたどると、メールという仕組みそのものの話になった。

電話が鳴って、常連のお客さんがこう言った。
「先週、サイトのフォームからお送りしたんですけど」。
僕の受信箱にはそんなメールは無い。
念のため迷惑メールのフォルダを開いたら、そこに三通ぶん並んでいた。
こちらは届いていないことにすら気づいていなかった。
調べていくうちに、これは設定のミスというより、メールという仕組みの成り立ちの話なのだと分かってきた。

メールは、差出人を自由に名乗れてしまう

郵便の封筒を思い浮かべてほしい。
裏の差出人欄は、書く人が手で書く。
誰の名前を書いても、ポストは受け取ってくれる。
メールもずっとこの作りのままだった。
送信側が「私は◯◯という会社です」と名乗れば、そう名乗ったまま相手に届いてしまう。
だから受け取る側、たとえばGmailのような大きなサービスは、届いたメールを最初から少し疑ってかかる。
名乗りが本当かどうかを、こちらが用意しておいた材料で確かめにくる。
その材料を置いていない差出人は、正直に運用していても怪しい側に分類されてしまう。

SPF・DKIM・DMARC は、三つの確かめ方

横文字が三つ並ぶと身構えるけれど、やっていることは単純だ。

SPFは、送っていい機械の名簿だ。
「うちのドメインのメールは、この住所のサーバーからしか出しません」という一覧を、ドメインの設定(DNS)に書いておく。
受け取り側は、実際に送ってきた機械が名簿に載っているかを見る。

DKIMは、封蝋にあたる。
送るときにメールへ電子的な署名を付けておいて、受け取り側がそれを照合する。
確かにそのドメインが出したものか、途中で中身が書き換わっていないかが分かる。

DMARCは、合わなかったときの扱い方の宣言だ。
名簿にも封蝋にも合わない差出人が現れたら、何もしないのか、迷惑メールに隔離してほしいのか、受け取らないでほしいのか。
その希望をこちらから書いておく。
結果をまとめたレポートを受け取る設定もできるので、自分のドメインを騙って誰かが送っていないかにも気づける。

うちのフォームで起きていたこと

原因は、通知メールの差出人だった。
フォームに入力された相手のメールアドレスを、そのまま送信者として使っていたのだ。
返信しやすいように、という善意の作りだったと思う。
けれど実際には、うちのサーバーが他人のドメインを名乗って送っている形になる。
名簿に載っているはずがない。
直し方は拍子抜けするほど簡単で、差出人を自分のドメインの固定アドレスに戻し、相手のアドレスは返信先(Reply-To)に入れる。
これだけで、返信のしやすさは保ったまま、名乗りと実体が一致するようになった。

届いていないことは、こちらからは見えない

この件でいちばん怖かったのは、エラーが一通も返ってこなかったことだ。
送信は成功していて、相手のサーバーも受け取っていて、ただ静かに迷惑メールへ振り分けられていた。
画面の上では何ごとも起きていない。
だから今は、月に一度だけ自分でフォームを送ってみることにしている。
宛先はGmailと携帯のアドレスと、仕事で使っているアドレスの三つ。
三分で終わるし、これで気づけなかった不着はいまのところ無い。
問い合わせが減ったなと感じている人は、減ったのではなく届いていないだけかもしれない。
まず自分宛てに一通、送ってみてほしい。

スタンプラリーに挑戦する 行った場所・気になる場所は、現地チェックインでスタンプに残せます。 みんなのコースを見てみる 会員が作ったスポット巡りのコースを都道府県から探せます。自分だけのコースも作れます。

技術ブログ一覧へ戻る