Upgrade to Pro — share decks privately, control downloads, hide ads and more …

透過型SMTPプロキシによる送信メールの可観測性向上: Update Edition / Im...

linyows
November 11, 2024

透過型SMTPプロキシによる送信メールの可観測性向上: Update Edition / Improved observability of outgoing emails with transparent smtp proxy: Update edition

JPAAWG 7th General Meeting@Nov 11, 2024 での発表資料です。https://meetings.jpaawg.org/program/

linyows

November 11, 2024
Tweet

More Decks by linyows

Other Decks in Technology

Transcript

  1. Tomohisa Oda, Researcher and Software Engineer at Sakura Internet Research

    Center Presented at JPAAWG 7 th General Meeting on Nov 1 1 , 2 0 2 4 透過型SMTPプロキシによる 送信メールの可観測性向上: Update Edition
  2. はじめに • 本発表は今年初めに開催された「さくら の 夕 べ in 福岡」での発表の更新版 • 「さくらの

    夕 べ in 福岡」での発表は、 「さくらのナレッジ」にて 文 字起こしさ れ記事になっている • 現地参加できずにこの資料をご覧になる 方 は記事を読むとよいかも https://knowledge.sakura.ad.jp/ 3 7 1 1 1 / さくらのナレッジに本発表記事がある
  3. メール受信におけるセキュリティの問題 • メールの送信者は正しいか? • 通信途中で盗聴や改ざんはされていないか? • 正しいメールを迷惑メールとして受信してる? • 送信者はなりすましをしていないか? •

    中継サーバでメールを盗聴されていないか? • 送信ドメイン認証(SPF、DKIM、DMARC) • 経路暗号化(TLS、MTA-STS、DANE) • 転送対応(SRS、ARC) • ブランド表 示 (BIMI) • エンドツーエンド暗号化(S/MIME、PGP) GmailやOutlook使っていれば何も考え(ry
  4. 受信メールに対する信頼性の低下 メールInboxは未読で溢れている • メール配信が安価なマーケティングツールとなっていて、 大 量の広告メールがメールInboxを占有している • 利 用 しているサービスのセキュリティインシデントにより、

    自 分のメールアドレスが流出しており、 大 量のスパムメール を受信する • そもそも、Instagram, X, TikTok, LINE, Discord, LINEとい ったSNSやメッセージプラットフォームで 生 活しているので メールに問題があっても問題とは思わない 9 8 7 , 6 5 4 1 , 2 3 4 , 5 6 7
  5. スパムメール対策 受信サーバにおける 一 般的なスパム対策の分類 • 解析 ・ フィルターの活 用 (SpamAssassin,

    Amavis … ) • 送信元 ・ 受信者管理の活 用 (DNSBL, Reputation, Allowlist/Denylist) • メール流量制御の活 用 (IP Throttling, Tarpit) • 再送要求の活 用 (Greylisting) • セッションフィンガープリントの活 用 (商 用 製品など) • チャレンジ応答の活 用 (商 用 製品など)
  6. GmailとYahoo!のスパムメールの削減施策 2024年2 月 1 日 から以下の要件を満たす必要がある • SPF, DKIMの認証 •

    IPの逆引き • TLSによる接続 • メッセージフォーマット準拠 RFC 5 3 2 2 5 , 0 0 0 /daily以上送信の場合 • 送信ドメイン認証 • ワンクリック配信解除 RFC 8 0 5 8
  7. 共有メールホスティングのビジネスモデル • メールホスティングは、テナントに対して 仮想的に分割された物理サーバリソースを 提供する • テナントは複数のドメインを設定し、それ に紐づくメールアカウントを使 用 する

    • 1つの物理サーバに多くのテナントを収容 することでサービス提供を安価にしている example.com info@ hello@ postmaster@ … example.jp example.org example.net example.us example.gov … { マルチテナントのためのリソース隔離と権限分離が重要
  8. 共有メールホスティングの構成 MUA(Mail user agent)からのメール送信を受け付けるMSA(Mail submission agent)が複数ある場合にIPv 4 アドレスの削減や運 用 の集約のため

    にリレーサーバを 用 いるケースを想定 メール送信にフォーカスした話 MSA 1 MSA 2 MU 3 MTA 1 MX for example.com MX for example.net MX for example.jp MUAs
  9. 共有メールホスティングの事情 • ドメイン単位にIPv 4 を割り振ることはできな いため、メール送信に使 用 するIPは集約したい • 集約しすぎるとIPに起因するスロットリングな

    どの影響範囲が 大 きくなる • 送信メールキューも同時に集約するとキュー滞 留時に影響範囲が 大 きくなり運 用 が 大 変になる • つまり、メールキューは分散しIPは適切な分量 に集約するのが良い example.com example.jp example.org example.net example.us example.gov xxx.xxx.xxx.xxx yyy.yyy.yyy.yyy example.com example.jp example.org example.com example.jp example.org メール送信にフォーカスした話
  10. 各MTAの可観測性が低いという課題 • MTAが分散することで出 力 するログを集約しパースすることによってメールシステム 全体で何が起きているか把握出来るようにはなる • 一方 で受信サーバによるTarpitやThrottling のようなSMTPコマンドレベルの変化を検

    知することはできない • そして、過去に何が起きていたかを確認することはできても、リアルタイムに問題を検 知して修復することは不可能 • 例えばThrottlingが発 生 していることを検知し、発 生 の引き 金 となったドメインの送 信をブロックし、他のドメインの送信に使うIPを付け替えるといった運 用 の 自 動化な どを 行 える環境にしたい
  11. • 透過型のプロキシなのでメールキュ ーは管理しない • 各コンテナMTAでキューを分散し て管理する • SMTPプロトコルレベルのログを DBに保存し何が発 生

    しているかリ アルタイムで検知できるようにする • 同 一 ホストのためコンテナMTAと プロキシ間はTLSを使わない コンテナホストに透過型SMTPプロキシを導 入 する xxx.xxx.xxx.xxx example.com example.jp example.org example.net example.us example.gov Proxy DB 外部25番ポートへのパケットを全てプロキシへ転送
  12. 透過型SMTP送信プロキシ: WARP https://github.com/linyows/warp • 一 般的なSMTPプロキシは受信 用 で送信に使えるものが 見 あたらないためGoで

    自 作 • MTAプロセスの25番宛先のパケットをiptablesでDNATし、本当の宛先をgetsockopt(2) にオプション引数を渡すことで変換前のアドレスを取り出している • 透過型なので同 一 ホストでなく別ホストであってもルーティングを書けば導 入 可能 • 相 手 MXからのEHLOレスポンスに含まれるSTARTTLSを削除してMTAに返却しプロキシは 相 手 MXとTLS接続する • フックイベントを作っているのでプラグインから追加の処理が可能 • カナリアリリースによる本番導 入 と検証は済み
  13. 検証環境での事例 SMTPセッション数10で100通を 大手 メールサービス宛に送る実験 1 . 同時最 大 接続数制限に引っかかった 4

    5 1 4 . 7 . 6 5 2 The mail server [xxx.xxx.xxx.xxx] has exceeded the maximum number of connections. 2 . レピュテーションの低さから受信拒否の判断をされた 5 5 0 - 5 . 7 . 1 [xxx.xxx.xxx.xxx] Our system has detected that this message is likely suspicious due to the very low reputation of the sending domain. To best protect our users from spam, the message has been blocked.
  14. 既存 手 法のリレー 方 式と透過型プロキシで性能 比 較 集約サーバにWarpを使うパターンとPost fi xを使うパターンで

    比 較した MSA 1 MSA 2 MU 3 Warp or Post fi x MX 1 for example.com MX 2 for example.net MX 3 for example.jp MUAs
  15. 実験した内容 以下の3種類の実験を 行 った 1 . 送信メールキューが滞留した状態を再現しメールレイテンシーの変化を 比 較 2

    . メールを 大 量に送信して集約サーバにおけるリソース消費の 比 較 3 . 受信サーバが 行 う同時接続数の制限状態を再現し、複数のMSA(テナント) から同 一 ドメインに対して送信し、送信量の変化を 比 較
  16. Warp or Post fi x MUAs 再現にはPost fi xのqmgr_message_active_limitを20000から200にした MX

    1 for example.com MX 2 for example.net MX 3 for example.jp MSA 1 MSA 2 MU 3 Tarpit 1 0 1 , 0 0 0 1 0 1.送信メールキューの滞留再現しレイテンシーを 比 較
  17. 1.送信メールキューの滞留再現しレイテンシーを 比 較 Return-Path: <[email protected]> X-Original-To: [email protected] Delivered-To: [email protected] Received:

    from mail1.example.jp (1-2-0-192.example.jp [192.0.2.1]) by mx1 (Postfix) with UTF8SMTPS id D791E825DA6 for <[email protected]>; Sun, 25 Aug 2024 08:38:42 +0000 (UTC) Received: from msa2.example.com (2-2-168-192.example.com [192.168.2.2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by mail1.example.jp (Postfix) with UTF8SMTPS id EF56C1B00B7E for <[email protected]>; Sun, 25 Aug 2024 16:59:53 +0900 (JST) Received: from localhost (unknown [172.18.0.1]) by msa2.example.com (Postfix) with UTF8SMTP id 36D07825EAC for <[email protected]>; Sun, 25 Aug 2024 07:59:12 +0000 (UTC) From: [email protected] To: [email protected] Date: Sun, 25 Aug 2024 16:59:11 +0900 Subject: Experiment: Case 1 - 361d42cbeac2b6b2aafb937f9247f25d2282283f This is a test mail. End-to-End Latency Relay Latency 結果:Warpの場合はキュー滞留の影響を他のテナントの送信に波及しない
  18. Warp or Post fi x MUAs Nは3から10秒ごとに6まで増加させて送信(1,000>10,000>100,000>1,000,000) MX 1 for

    example.com MX 2 for example.net MX 3 for example.jp MSA 1 MSA 2 MU 3 2. 集約サーバのリソース消費を 比 較 1 0 n 1 0 n 1 0 n
  19. Warp or Post fi x MUAs 再現にはMX 1 のsmtpd_client_connection_count_limitを50から10に変更 MX

    1 for example.com MX 2 for example.net MX 3 for example.jp MSA 1 MSA 2 MU 3 1 0 4 1 0 4 1 0 4 3. 同時接続数制限を再現しテナントごとの送信量の 比 較
  20. 実運 用 に向けての課題 • MTA-STSやDANEなどへの対応:送信先である外部MXとTLS通信するのは透過型SMTPプロキシにな るため、経路暗号化強制のための実装が必要である • 3つ 目 の実験により分かったSMTPコネクションの公平性への対応:同

    一 宛先への送信は複数IPでラ ウンドロビンし同時接続数の制限を受けないようにすることや、同じMSAがSMTPセッションを使い 続けないようにあえて切断するなどを検討する • 複数IP対応:内部レピュテーションによるものや受信サーバレスポンス変化によるものによって複数 IPの使い分け機能を追加する • メールフォーマットの緩和:現状RFCに準拠していないメールは送信できないため、ある程度緩和す る • メトリクス対応:Observability製品と連携できる機能を実装する さまざまな機能が不 足 しているためたくさん実装が必要
  21. 謝辞: 本研究は JSPS科研費20K 1 1 7 9 1 「軽量コンテナによる 大

    規模 高 集積メールホスティング基盤における送信機能の 高 機能化」の 助成を受けたものです。