/var/lib/azumakuniyuki

Sisimaiとか技術的なことはこっちに書いてみようかという試み

令和三年春の遅延(予定)

僕自身は数年前にmineoへ引っ越しをしているし管理下のサーバでは登録ユーザにメールを配信するようなサイトは無いので「ふーん」程度にしか思ってなかったものの、 三大携帯電話キャリアが開始する新料金プラン(ahamoとか)への移行と同時に携帯電話のメールアドレスがかなり多く消えるって点が気になり、 メール配信に影響があるかどうかを考えた覚え書きです。

メールと一切の関わりを持っていない人にとっては無用の記事ですしメール配信に影響が無い方に賭ける人にとってもやはり無用の記事です。

f:id:azumakuniyuki:20210309110625j:plain

結論を先に書くと、サイトに登録さている配信対象となるキャリアメールアドレスの数を確認して、その2%が消える(宛先不明になる)と仮定する。 可能ならアドレス変更をお願いする告知をしたり配信しないとかの決断をする。配信対象の2%が多くて遅延しそうならメールサーバ側で何か対策をしておく、です。

統計と雑な推定

携帯電話の契約数は約1.8億件

約400万アドレスが消える

携帯電話アドレスの0.2-2.0%が三月中に消える

  • どのキャリアでも全体の2%に相当する携帯電話キャリアのメールアドレスが消えると推定
  • 400万 ÷ 1.8億 = 2.22%やけどキリよく2%にしておく
  • 先んじて新料金プランに変えるつもりの人は日常の連絡にキャリアのメールアドレスを使っていないと推定
    • 全員では無いと思うけどメールの遅延を予測するので2%と仮定する
  • 第2章 スマホ・ケータイコミュニケーション|2019年版|モバイル社会白書Web版|NTTドコモ モバイル社会研究所
  • 携帯電話のメールを連絡手段に使うのは多くても13%程度
  • 今は2021年でもうちょい減って10%の使用率と仮定する
    • 携帯電話契約者1.8億の10%(1800万人)がキャリアメールを使用しているユーザ
    • 1800万人の2%が新料金プランに変更するとすれば36万のメールアドレスが消える
    • 使用率の調査に「サイトへの登録に使っている」が無いので10%って数字を加味するかどうか悩む
  • ってことで0.2%-2.0%の範囲としておく

新料金プランの提供開始日

  • シェアの少ない事業者から提供が始まる
    • 3月17日(水) ソフトバンク(LINEMO) 9-90万件が消える
    • 3月23日(火) KDDI(povo) 12-120万件が消える
    • 3月26日(金) NTTドコモ(ahamo) 20-200万件が消える

遅延するかどうか

  • 数による(身も蓋もない)
  • 配信の順序にもよる(連続で500系エラーが出ると遅延しやすい)
  • 単位時間で配信する量にもよる
  • マーケティング系はおそらく遅延する
  • トランザクション
    • 規約変更とか一斉配信になるものもあるけど
    • ログイン通知とかパスワード変更とかは集中しないので大丈夫そう

サイト側の対策

1. 実際の数を確認しておく

2. 告知しておく

  • ログイン後の画面とかで「登録アドレスを変えてくださいね〜」とか
  • キャリアのメールアドレスが生きているうちに変更を促すメールを送る
    • メールを送ると退会するユーザが増えるって話は有名

3. メールサーバでの対策

キャリアメールアドレス宛だけ別のリレーサーバへ回す

  • Sendmailならmailertable
  • Postfixならtransport
  • SendGridとか配信サービスに丸投げするとか?
    • 投げた先でどのような遅延対策が入っているかは不明
  • サイト側サーバの127.0.0.1:25に渡す方が安全(キューの扱い)
  • プログラムが直接SMTPで別サーバに繋ぐ場合はエラー処理が必須(後述)
    • 雑に書いてある送信プログラムは400/500系応答を想定していない
    • エラー応答でメールが消える

A. 別のリレーサーバでは低速配信に切り替える

B. 遅延するので夜中や早朝に配信されないようにしておく

  • 怒られるし
  • 9時から19時の間だけ配信するとして3600通/日
  • リレー元からメールを受け取ったらキューに落とすとか隔離するとか
  • Sendmailならquarantine
  • Postfixならhold
  • 低速配信で一通り送って宛先不明なアドレスを確認したら通常配信に戻してヨシ

遅延しなかったけど?