Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
SMTPでのOpenTelemetryの可能性を考えてみる
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
ryuichi1208
May 09, 2024
3.7k
9
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
SMTPでのOpenTelemetryの可能性を考えてみる
ryuichi1208
May 09, 2024
More Decks by ryuichi1208
See All by ryuichi1208
入門 再発防止策
ryuichi1208
17
6.9k
金曜日デプロイ、するかしないか.pdf
ryuichi1208
1
74
会話で作る信頼性
ryuichi1208
0
180
シグナル(Unix)と仲良くなる
ryuichi1208
1
43
AI前提のサービス運用について再考する
ryuichi1208
6
1.4k
A Shallow Dive into the World of TCP
ryuichi1208
1
670
入門リトライ
ryuichi1208
20
8.3k
超入門SRE 2025
ryuichi1208
4
1.5k
Goで作って学ぶWebSocket
ryuichi1208
5
4.2k
Featured
See All Featured
Faster Mobile Websites
deanohume
310
31k
Evolving SEO for Evolving Search Engines
ryanjones
0
210
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
290
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
150
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
450
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
720
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
250
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.4k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Transcript
1 SMTPでのOpenTelemetryの可能性を考えてみる 渡部 ⿓⼀ Pepabo Tech Conference #22 春のSREまつり 2024.05.09
技術部プラットフォームグループ 2021年 中途入社 2 自己紹介 渡部 龍一 Watanabe Ryuichi •
ロール: SRE、メールエンジニア(自称) • SNS: @ryuichi_1208 • 好きなこと: EOL対応、障害対応
メールの仕組みのおさらい 3
4 イントロダクション 届いた! メール送信!
5 送信者 MTA MDA MTA MDA SMTP SMTP MXレコード 問い合わせ
DNSサーバ 宛先:
[email protected]
送信元サーバ 送信先サーバ mail box 受信者
6 これ以外にも複数の登場⼈物がいる
7 SMTPのシーケンス図
割と複雑! 8
9 テストで送ってみたメールが届かないんですが ...
10 どこで落ちてるのか調べるのが⼤変
11 • 送信⽤メールクライアント⾃体がバグっている • アプリケーションのバグ • ウイルス判定されている • リレー設定のミス •
メールサーバのサービスが⽌まっている • IPレピュテーションの低下によって送信先で拒否されている • 送信先のメールサーバで拒否する設定になっている 考えられる原因
メールサービスでも分散トレースしたい! 12
そうだOpenTelemetryだ! 13
trace/log/metricsをどう実装するか 14
15 • アプリケーションでtrace idを発⾏してヘッダーに挿⼊する ◦ traceparentをメールヘッダーに⼊れる • Postfixでは、Milterと呼ばれるAPIが提供されている ◦ 「mail
filter」の略 ▪ Rspamd / clamav-milter ◦ SMTPプロトコル処理の各段階をフックできる ▪ DATAコマンドやMAIL FROMコマンドの各フェーズでトレースの送信ができる ◦ Milterでアトリビュートを⼊れつつtraceを送信 trace
16 • Postfixではメールヘッダーをログに書き出すことができる ◦ /etc/postfix/header_checksあたりに追記 ▪ /^Received:/ PREPEND traceparent: $traceparen
▪ td-agentからlokiなりのOtel Backendに送信して連携 • Milterでログを出⼒して送信する⽅針でも良い ◦ 送信元や送信ステータスを属性として出⼒ log
17 • kumina/postfix_exporterあたりを使⽤ • open-telemetry/opentelemetry-collector-contribにはメール関連のサーバは ない ◦ コントリビューションのチャンス..?? • メールのステータスコード40xとか50xとかとトレースやログに紐づけられたら
便利そう metrics
実装⽅針(現在作業中) 18
19 • Pythonで使えるpymilterを⽤いて実装 ◦ Milterプロトコルを喋れれば実装⾔語⾃体に制限はないが情報が多そうな Pythonを選定 • OtelでPythonはTrace/MetricsはstableだがlogsはExperimental ◦ Postfix
+ fluent-bitの組み合わせで考えてる Milterで実装していく
まとめと今後やりたいこと 20
21 • メールサービスでもトレースやログがあると便利 • PostfixではMilterを⽤いることでSMTPの各処理でフックできるのでトレースを埋め込 みやすい • 「SMTP OpenTelemetry」とか「Postfix OpenTelemetry」でググってもヒット数0な
ので取り組むのは結構⾯⽩そう まとめと今後やりたいこと
22 ご静聴ありがとうございました