Slide 1

Slide 1 text

1 スパムメール対策でも可観測性を! rspamdとBigQueryで実現する データドリブンな対策術 三上 烈史(@rsym1290) GMOペパボ株式会社 技術部技術基盤グループ Road to SRE NEXT@福岡 2025/5/9

Slide 2

Slide 2 text

2 ⾃⼰紹介 技術部技術基盤グループ エンジニアリングリード 2016年9⽉ 中途⼊社 三上 烈史 Mikami Tsuyoshi ペパボでのニックネームは「れっしー」 由来は名前から ● X(Twitter) : @rsym1290 ● Github: @rsym ● 趣味:ランニング

Slide 3

Slide 3 text

3 • 提供している機能の⼀つに「メール」があります • ショップオーナーがショップユーザーと連絡を取るための機能です • 今回の発表ではこのメールの機能を取り上げます ECサイト構築サービス カラーミーショップ

Slide 4

Slide 4 text

4 アジェンダ 1. スパムメール対策の重要性 2. rspamdの出番 3. BigQueryに蓄積したrspamdのログを可視化 4. スコアベースでのrejectの効果 5. まとめ

Slide 5

Slide 5 text

スパムメール対策の重要性 5

Slide 6

Slide 6 text

スパムメール対策の重要性 6 メールサーバの運⽤ではスパムメール対策が重要 spamhaus(代表的なRBL) • スパムメールが配信され続けると • メールサーバのIPレピュテーションの悪化 • RBL(Real-time Blackhole List)への登録 • メールサーバがRBLに登録されると • 様々なプロバイダ宛のメールが拒否される • ショップオーナー‧利⽤者の間で連絡が取れなくなる

Slide 7

Slide 7 text

スパムメール対策の重要性 7 スパムメールの基本的な対策 • よくある対策 • SPF/DKIM/DMARCの実装 • ブラックリスト‧ホワイトリストの利⽤ • 全てのスパムメールを防げるわけではない • 例えばアカウントのっとりの場合SPF/DKIMの認証はPASSしてしまう • スパム検知ソフトウェアを利⽤した対策が必要

Slide 8

Slide 8 text

8 rspamdの出番

Slide 9

Slide 9 text

rspamdの出番 9 rspamdとは • https://rspamd.com/ • スパムメールのフィルタリングができるOSS • 様々なモジュールを組み合わせてのフィルタリング • スコアベースのフィルタリング機構により精密なスパム判定

Slide 10

Slide 10 text

rspamdの出番 10 rspamdのスコアベースのフィルタリング機能 {"ts": , "pid": 3507278, "severity": "notice", "worker_type": "rspamd_proxy", "id": "ABCDEF", "module": "proxy", "function": "rspamd_task_write_log", "message": "id: , qid: , ip: xx.yy.zz.ww, from: <送信元アドレス>, (default: T (add header): [19.90/6.00] [PH_SURBL_MULTI(7.50){誘導先:url;送信元ドメイン:dkim;},ABUSE_SURBL(5.00){誘 導先:url;送信元ドメイン:dkim;},RBL_SPAMHAUS_XBL(4.00){xx.yy.zz.ww:from:127.0.0.3;},PHISHING(2.00){偽装元->誘導 先;},MV_CASE(0.50){},XM_CASE(0.50){}, ... ,TO_MATCH_ENVRCPT_ALL(0.00){}]), len: 7427, time: 1042.341ms, dns req: 21, digest: <12345abc67890def12345678abcde123>, rcpts: <宛先アドレス>, mime_rcpts: <宛先アドレス>"} • rspamdのログには判定スコアや判定理由が詳細に記録される • スコアが⼀定以上だとスパム判定のヘッダをメールに付与(add header) • 送信拒否(reject)もできるがデフォルトではnull(=rejectされない)

Slide 11

Slide 11 text

rspamdの出番 11 rspamdのログを元にBigQueryでスコアを分析できるようにする • スコアベースでスパムメールをrejectしたい • add headerでもメールは配信されるのでIPレピュテーションに影響する • スパムメールはrejectしたいが誤検知によるrejectは回避したい • ブラックリストベースでのrejectも試したが送信元ドメインの種類が多くて対応が困難 • BigQueryでスコアを分析してスコアベースでのrejectを試みる • rspamdのログ元にBigQuery⽤のスキーマを定義 • fluentdを介して構造化されたrspamdのログデータをBigQueryに転送 • BigQueryに蓄積したデータに基づいてrejectの閾値を探る

Slide 12

Slide 12 text

12 BigQueryに蓄積した rspamdのログを可視化

Slide 13

Slide 13 text

BigQueryに蓄積したrspamdのログを可視化 13 ある期間の全メールの判定結果別の推移 • 橙がadd headerで⾚がreject • スコアベースのフィルタで⾚(reject)を増やしたい • この当時の⾚(reject)はブラックリストによるもの ブラックリストでのreject

Slide 14

Slide 14 text

BigQueryに蓄積したrspamdのログを可視化 14 スパム判定されたメールのスコアをヒストグラム化 • スパムメールが⼀定のスコアに集中していることがわかる • 該当スコアのrspamdのログを調査したところ送信元がRBLに登録されていることがわかった • このスコア以上のスパムメールをrejectすることにした 横軸は判定スコア(閾値の情報につながるので伏せています) 特定のスコアに集中している傾向

Slide 15

Slide 15 text

15 スコアベースでの rejectの効果

Slide 16

Slide 16 text

スコアベースでのrejectの効果 16 rejectを⼊れた⽇から効果を確認 • スコアベースでのrejectを導⼊してから⾚が⼤きく増えていることがわかる • reject導⼊直後が⾚の割合がやたら多い この辺りの時期にスコアベースでのrejectを導入

Slide 17

Slide 17 text

スコアベースでのrejectの効果 17 スパム判定されたメールだけに絞ってグラフ化 • スコアベースのrejectを⼊れた直後のスパムメールの総件数が多い • 調べたところ直後に特定のプロバイダ宛の⼤量のスパム配信が試⾏されていたことが発覚 • そのスパムメール配信の阻⽌に成功👏 rejectを入れた直後に大量スパム配信が試行されていた

Slide 18

Slide 18 text

18 まとめ

Slide 19

Slide 19 text

19 まとめ • rspamdとBigQueryを活⽤したスパムメール対策術を実施 • ログの構造化とBigQueryへの転送&可視化で判断材料を獲得 • データドリブンな対策の効果 • 可視化したデータに基づいたreject設定により効果的なスパム対策を実現 • IPレピュテーション悪化のリスクを低減 • 今後の展望 • 改善はしたものの依然としてスパム対策が必要 • 収集したデータに基づく継続的なチューニングによる精度向上 • GPT Pluginの導⼊&AIを活⽤したスパムメール対策

Slide 20

Slide 20 text

https://recruit.pepabo.com/info/career/ GMOペパボでは⼀緒に働く仲間を募集しています! 20

Slide 21

Slide 21 text

21