ショップ宛の注文メールが届かない!トラブルの原因はDMARCでした

ネットショップのプログラミング

ショッピングカートで注文を受けた際に、お客様には自動配信メールが届いているのに、お店にはメールが届かないというトラブルが発生しました。

なぜかショップ宛のメールが受信できない!

カートシステムをプログラミングする際、ショップ宛に送信するメールの Fromにお客様のメールアドレスを設定していました。こうしておくことで、受信した注文メールに返信すれば、お客様にメールを送信できるため便利だからです。

しかしある日、こんなトラブルに遭遇しました。

お客様には自動送信メールが届いているのに、ショップには注文メールが届かない

サーバのログには確かにショップ宛にメールを送信した履歴があるのに、なぜか受信トレイに届きません。迷惑メールボックスにも見つかりません。そのメールだけが忽然と消えてしまいました。

なぜか、「yahoo.com」というドメインのメールアドレスを使っているお客様に、不具合が発生することに気付きました。

サーバに残されたメール送信ログを丹念に調べてみたところ、こんなメッセージが見つかりました。

Unauthenticated email from yahoo.com is not accepted due to domain's

yahoo.com から認証されていないドメインがどーのこーの…

しかし、ネットショップのサーバから、自店のメールアドレス宛に送信したわけですから、「yahoo.com」のメールサーバは無関係のはず…。

なぜ?

混乱しつつ、このメッセージを再度眺めていると、このメッセージは「ASPMX.L.GOOGLE.COM」から発せられたものであることに気付きます。

yahoo.comからではなく、Gmailのサーバからのメッセージです。

ショップのメールは、Google Apps(現在のG Suite。要はGmail)で運用しています。
ここで、やっと原因が見えてきました。

つまりはこんな状況のようです。

ネットショップのサーバから Gmail宛に送信したものの、Gmail側で受信を拒否している

ネットショップのサーバから、Google Apps で運用しているメールアドレス宛にメールが送信されたものの、Google Apps がそのメールの受信を拒否したようなのです。

いろいろ調べてみたところ、「DMARC」という仕組みが原因のようです。
ざっくり要約すると、「DMARC」とはこんな取組みのようです。

DMARCとは、「SPFとDKIMのどちらの認証にも失敗した場合に、受信サーバはどうすべきか」について、ドメイン所有者がポリシーを発行し、DMARCに参加するメールプロバイダがそれに従って処理を行う取り組み。

今回の例をあてはめて説明するとこんな感じになります。

yahoo.com が DMARC に参加し「yahoo.comのメールを受信したとき、もしもそのメールがyahoo.com以外のサーバから送信されたものであったなら、そのメールの受信を拒否してね」とポリシーを発行していて、同じく DMARC に参加する Google は、そのポリシーに従って、該当するメールの受信を拒否したということです。

要は、本人が送った覚えのないメールは受信を拒否しようね、という「なりすましメールを防止する活動」ということですね。
(※該当するメールをどうするか(拒否とか破棄とか)は、発行されたポリシーによって様々です)

そういえば過去にも同じようなことが1回あったな~と思い出しまして調べ直してみると、そのときは「aol.com」というドメインだったのですが、やはり AOL も DMARC に参加しており「拒否してくれ」というポリシーを発行しているようです。

その他にも PayPal や eBay なども DMARC に参加しているみたいですね。

なるほど、そんな取り組みがあるとは知りませんでした。

SPFレコードの追加と同じように、DNSにDMARCの設定を記述したTXTレコードを追加することで、DMARCを有効にできるみたいですね。

対策: From がダメなら Reply-To を使おう

そういうことならば、From には 自社ドメインのメールアドレスを指定し、Reply-To にお客様のメールアドレスを入れて送信すれば、良いということになります。ほとんどのメールアプリケーションは、メールを返信する際、通常はFromのメールアドレスに返信するのですが、Reply-Toヘッダにメールアドレスが指定されている場合は、そちら宛に返信するというルールがありますので、それを利用するのです。

そんなわけで、スクリプトからメールを送信するプログラムについて、該当部分の書き換え作業を行った次第です。

最近国内でも、DMARCに参加すると発表したメールプロバイダがいくつかあるようです。まだ他では聞いたことがない事例なのですが、DMARC に参加するメールプロバイダが増えるにつれ、「注文受付のメールが届いてるのに、商品が届かないんですけどー(怒)」というお客様からのクレームがじわじわと増えそうな気がします。

この問題が厄介なのは、お客様のメールアドレスによって、届いたり届かなかったりする点です。ホームページ制作会社が作ってテストしたときは問題なかったのに、いざ運用を開始したら時々発生するというパターンなので、インフラ周りの知識までないと、原因の特定が難しいかも知れませんね。

同様にWordPressに設置されたフォームなんかも。この問題でメールが届かない事例が増えそうです。この問題に対応したプラグインもまだ見当たらないようですので、しばらくは自分でスクリプトを組むことになりそうです。

コメント

タイトルとURLをコピーしました