ショッピングカートで注文を受けた際に、お客様には自動配信メールが届いているのに、お店にはメールが届かないというトラブルが発生しました。
なぜかショップ宛のメールが受信できない!
カートシステムをプログラミングする際、ショップ宛に送信するメールの 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に設置されたフォームなんかも。この問題でメールが届かない事例が増えそうです。この問題に対応したプラグインもまだ見当たらないようですので、しばらくは自分でスクリプトを組むことになりそうです。
ホームページの制作(デザイン・コーディング・プログラミング)に加え、ネットショップの販売促進に関するアドバイスも致します。 20年以上に渡って実際にネットショップを運営した経験を生かし、聞きかじりではない実績を伴ったノウハウを、自分の言葉でお伝えいたします。 プログラミングの経験は30年以上。HTML、CSS、JavaScript、TypeScript、Vue、NuxtJS、Node.js、MySQL、MongoDB、Elasticsearch、WordPress、PHP、Docker、Electronなど、幅広く対応します。
コメント