kasei_sanのブログ

かせいさんのIT系のおぼえがきです。胡乱の方はnoteとtwitterへ

メール関係の用語おぼえがき

勉強する必要が出たのでおぼえがき

レピュテーション(reputation)

「レピュテーション(reputation)」とは、電子メールの送信元の信頼性や評判を示す指標

  • スパムメールや悪意のあるメールの送信者と、信頼性のあるメール送信者を区別するために使用される
  • レピュテーションが低い内に、大量のメールを送信すると、受信側で受け入れが制限されることがある スロットリング と呼ばれる
  • レピュテーションは、ISPやメールサーバ毎にそれぞれ保有しているため、同じ送信元でもスロットリングされたり、されなかったりする
  • 基本的にはIPアドレス単位で判断される(他の要素も勘案されるらしい)
  • なので、 共有IPのメールサービスを使う場合、他のユーザの行動によって巻き添えを食う場合がある
  • そのため、 商用でメールを送るシステムを作る場合、個別IPにするのが無難
  • ただし、個別IPでメールシステムを立ち上げた場合、以下の IPウォームアップ が必要になる

ブラックリスト

スパムや悪質なメールを送信する、IPアドレスやドメインを共有しているリスト

ここに入ったからといって、ただちにメールが受け入れられなくなる訳では無いが、レピュテーションの評価に強く影響を受ける

この辺が有名らしい

  • Spamhaus
  • SURBL
  • Barracuda Reputation Block List
  • Invalument
  • Spamcop
  • MultiRBL

苦情

メールを受信したユーザが「迷惑メールを報告」などのボタンを押すこと

  • 苦情率が高いと、レピュテーションに大きく影響を受けたり、メールサービスからBANされたりする
  • さらにブラックリストに乗せられることもある

IPウォームアップ

新規にメールサーバを立ち上げた場合、レピュテーションが低い状態でいきなり大量のメールを送信すると、スロットリングされることがある

そのため、少しづつメールを送って、レピュテーションを高めていく作業をIPウォームアップと呼ぶ

sendgrid.kke.co.jp

バウンス

メールが配信できなかった。ということを指す用語

受信側からエラーコードが返ってくる

  • 4xxはソフトバウンス
  • 5xxはハードバウンス

ソフトバウンス

受信側の都合でメールが受信できない

  • メールボックスがビジーである
  • ポリシー上の理由で一時的にブロックされている
  • 処理中のエラー
  • システムストレージが不十分

など

なお、スロットリングはソフトバウンス扱い

ハードバウンス

受信側ではどうにもできない理由でメールが受信できない

  • 構文エラー、パラメータエラー、未実装の命令
  • 存在しない、無効なメールアドレス

など

レピュテーションが低下するため、ハードバウンスは避けなければならない

ハードバウンスを避けるにはどうしたら良いの?

無効なメールアドレスにはメールを送らない

メールシステムを利用しているのであれば、ハードバウンスが帰ってきたメールアドレスは送信リストから削除して、受信側に迷惑をかけないようにする

参考

👇4.2.3 数字順の返信コード に受信側のレスポンスコード一覧がある

tex2e.github.io

sendgrid.kke.co.jp

スロットリング

スロットリングとは、システムの過負荷や特定利用者による資源の独占を回避するため、一定の制限値を超えた場合に意図的に性能を低下させたり、要求を一時的に拒否したりする制御のこと。

e-words.jp

メールシステムにおいては、受信側が大量のメールの受信を制限する機能

  • 一度に大量のメールを送ると発生する
  • システム的には ソフトバウンス 扱い

スロットリングを防ぐにはどうしたら良いの?

  • レピュテーションを高める
    • 最初は、まとめて送信せずに時間を置いて少しづつ送信する
    • ただし、無効なメールアドレスが多く含まれていたりすると、なかなか受け入れてもらえない
  • 複数のIPアドレスで送信する
    • これはこれで、それぞれのレピュテーションがある程度無いと無意味

参考

sendgrid.kke.co.jp sendgrid.kke.co.jp

サプレッションリスト

メールサービスに存在する、ハードバウンスや苦情等を受け取って送信対象外とするメールアドレスの一覧

  • Amazon SESでは、
    • リージョン単位の グローバルサプレッションリスト
    • アカウント単位の アカウントサプレッションリスト
    • さらに、Configuration set-level suppression というのがある
  • SendGridでは、アカウント単位の バウンスリスト がある

それぞれ挙動は微妙に違う

グローバルサプレッションリストについて

キャリアメールだと「特定のドメイン以外受信しない」設定があるため、特定のドメイン外のメールを受けてハードバウンスを食らった場合に、 受信可能なドメインのメールもサプレッションリストのせいで送信できない 、という問題があるらしい

qiita.com

(ハード)バウンスはメールアドレスが存在しないなど、恒久的なエラーの場合に発生するものなので、一度バウンスすると他のユーザからも送信不可能にするSESの仕組みは非常に合理的といえます。ただし、日本で使用する場合に問題になるのが携帯キャリアへ送信する場合です。

例えば、ドメイン指定拒否をしている人に対して、許可されたドメイン以外から送信すると、バウンスが発生します(挙動はキャリアによって異なります)。そうすると当然Suppression Listに掲載されてしまうので、許可されたドメインから送信していた人もSuppression Listに引っかかってしまい、送信ができなくなってしまいます。リストから削除しても、また他のドメインから送信されてしまうと、また巻添いを食らってしまいます。これがSESが携帯キャリアへの配信と相性が悪いと言われる所以だと考えています。

参考

dev.classmethod.jp

sendgrid.kke.co.jp

qiita.com

参考

sendgrid.kke.co.jp