Gmailへのメール配信で日単位の大幅遅延が発生したので原因をさがした

タイトル通り。

 

とあるサービスでメール配信を行っているんだけど、

Gmailのユーザーにだけメールが遅延する事象が発生。

しかも1,2時間ではなく、1,2日単位で遅れてしまうん…。

 

色々原因を探ってみたところ、メールログ内にこんな文字列ありけり。

 https://support.google.com/mail/answer/81126 to review our Bulk Email

URLに飛んだら↓のページがでてきました。

 

support.google.com

 

この中で唯一心あたりがあったのは、下記の部分。

 

登録解除

ユーザーが次のいずれかの方法でメーリング リストから登録解除できるようにする必要があります。

  • メール本文内の目立つリンクでユーザーを配信停止の確認ページに誘導する(確認以外の入力は求めない)。
  • メールへの返信で登録解除をリクエストする

 

ポイントかなぁと思ったのは、「確認以外の入力は求めない」のところ。

 

メール配信がサービス内容に直結するサービスだったため

現時点では「配信停止(退会)はこちら」という誘導文と

退会画面へのリンクは設置してたんだけど、

マイページ内へ繋がるURLなので、ログインが必要になります。

 

推測するに、文字通り「確認以外の入力は求めない」となると、

ログインID・パスワードの入力がいらない

→URLに何らかの会員識別用パラメータが必要

→少なくともユーザー単位でユニークなURLを配信

ってかんじのことが必要になるのかなと。

 

スパム扱いではなく遅延になった理由とかは察する以外にないんですが、

メール本文テキストの解析はしてるってこととリンク先までは辿らないだろう

(システムによっちゃアクセスで処理が実行されちゃうよね)ってことを考えるに

全員に同じURLを設置していた

ってことが直接的な原因だったのかなと判断。。

 

とはいえ、本文への差し込み機能をこのためだけに作るのはあほらしかったので、

「メールへの返信で登録解除をリクエストする」って方法をとることにしました。

 

Fromなんて一瞬で書き換えられるよねっていう大問題には気づかないふりをして、

次の大規模改修まではこれでいこう。