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
自由自在にカスタマイズ!Go言語で作る あなただけのメールサーバー
Search
HIRANO Yoshitaka
June 13, 2024
Technology
3
290
自由自在にカスタマイズ!Go言語で作る あなただけのメールサーバー
VadeのMTA Builderの紹介です。
Webのフレームワークのようなメールのフレームワークで、Go言語で自由にメールサーバをカスタマイズできます。
簡単なサンブルと共に概要を説明します。
HIRANO Yoshitaka
June 13, 2024
Tweet
Share
More Decks by HIRANO Yoshitaka
See All by HIRANO Yoshitaka
DMARCは導入したんだけど・・・現場のつぶやき 〜 BIMI?何それ美味しいの?
hirachan
1
250
次世代のメールプロトコルの斜め読み
hirachan
4
680
そのメール、ちゃんと届いていますか?DMARC・DKIM・SPFをしっかり運用管理してドメインの信頼を守る
hirachan
2
200
MIMEと文字コードの闇
hirachan
3
1.8k
メールとAIシリーズ:プライバシー保護のための次世代技術~NLPの未来と大規模言語モデル活用術
hirachan
2
110
Whoisの闇
hirachan
3
830
メール暗号化はSTART TLSで安心?!見落としがちな脆弱性と今すぐ取るべき対策
hirachan
1
240
Gmail の「メール送信者のガイドライン」強化から 1 ヵ月、今後予想されるメールセキュリティの変化とは
hirachan
1
850
RM8回完走でもPBPはツライ
hirachan
1
160
Other Decks in Technology
See All in Technology
EMからVPoEを経てCTOへ:マネジメントキャリアパスにおける葛藤と成長
kakehashi
PRO
6
860
作るべきものと向き合う - ecspresso 8年間の開発史から学ぶ技術選定 / 技術選定con findy 2026
fujiwara3
7
2.1k
Oracle Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
4
1.1k
AIに視覚を与えモバイルアプリケーション開発をより円滑に行う
lycorptech_jp
PRO
1
790
Lookerの最新バージョンv26.2がやばい話
waiwai2111
1
150
生成AI活用によるPRレビュー改善の歩み
lycorptech_jp
PRO
5
2k
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
4k
LINEアプリ開発のための Claude Code活用基盤の構築
lycorptech_jp
PRO
2
1.4k
Master Dataグループ紹介資料
sansan33
PRO
1
4.4k
Ultra Ethernet (UEC) v1.0 仕様概説
markunet
3
200
Security Diaries of an Open Source IAM
ahus1
0
200
新職業『オーケストレーター』誕生 — エージェント10体を同時に回すAgentOps
gunta
4
1.4k
Featured
See All Featured
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.6k
Documentation Writing (for coders)
carmenintech
77
5.3k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
460
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
220
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
450
Agile that works and the tools we love
rasmusluckow
331
21k
Skip the Path - Find Your Career Trail
mkilby
1
72
Exploring anti-patterns in Rails
aemeredith
2
280
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.1k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Transcript
www.vadesecure.com Go言語で作る あなただけのメールサーバー Vade Japan 平野 善隆 自由自在に カスタマイズ!
2 www.vadesecure.com 自己紹介 名前 平野 善隆 所属 Vade Japan 株式会社
(Hornetsecurity) Principal Messaging Engineer 好きな メール、DNS、Python、Go 技術 AWS、Serverless 趣味 長距離の自転車大会(1,200kmとか、2,000kmとか) バンド演奏 主な活動 M3AAWG JPAAWG 迷惑メール対策推進協議会 Audax Randonneurs Nihonbashi
3 www.vadesecure.com メールとの関わり 1990 パソコン通信などでメールに触れる 199x ドメインを取得して近所のISPに個人のサーバーを置かせても らって運用開始 2000 外人さんの多い会社に転職したのでメールの漢字にふりがなを
付けたりして遊ぶ (のちのhiragana.jp) 個人のサーバーをちゃんとしたデータセンターに移動。 imail.ne.jpというドメインを取って一攫千金を夢見るが挫折 2004 メールの会社に入社 以降 スパムフィルタ、誤送信防止製品の開発やサービスの立ち上げ。 PPAPの礎を築く。 2023 別のメール会社に転職
4 www.vadesecure.com Vade とは 設 立 2009年、フランス共和国リールにて設立 2024年 3月 ドイツ
Hornetsecurityのグループとなる 2017年に日本市場に参入。日本国内にスレッドセンター設立 約600名 ※Hornetsecurityグループ ドイツ、フランス、アメリカ、カナダ、スペイン、イギリス、イタリア、北マケドニア、日本 拠 点 社員数 国 内 Vade フランス オフィス外観 エンドユーザ 約75,000社 / パートナー 12,000社 顧客数
HORNETSECURITY WORLDWIDE – SWARM MEETS WORLD
本社はリール(Lille)の近くのエム(Hem) 6 ここ パリ 約200km パリにもオフィスはあります
現存する世界最古の自転車大会 パリ・ブレスト・パリ 7 ここ パリ 約200km 往復1,200km ブレスト
リールよりもさらにベルギー寄り 8 ここ リールの街
社内の風景 9
社内の風景 10
ちゃんと仕事もしてます 11
業務終了後 ベルギーをサイクリング 12
13 www.vadesecure.com • Webやメールの開発環境 • MTA Bulderとは • 何ができるの? •
さまざまな特長 • まとめ もくじ
www.vadesecure.com WEBやメールの開発環境
15 www.vadesecure.com Webの開発フレームワーク Webサーバー アプリケーション サーバー データベース Apache Nginx ・・・
Ruby on Rail Django Spring Laravel ・・・ 便利なライブラリ その他 HTTP
16 www.vadesecure.com メールの開発フレームワーク メールサーバー データベース Sendmail Postfix Qmail Exim ・・・
別のメールサーバ メールボックス SMTP SMTP SMTP, LMTP Milter
17 www.vadesecure.com メールの開発フレームワーク (Cnt’d) 受信 データベース 別のメールサーバ メールボックス SMTP SMTP
SMTP, LMTP Milter Queue 配送 何もできない 少し 設定できる メールサーバー
18 www.vadesecure.com VadeのMTA Builder 受信 データベース 別のメールサーバ メールボックス SMTP SMTP
SMTP, LMTP Go言語で 自由に カスタマイズ Queue 配送 Go言語で 自由に カスタマイズ 自由に チューニング MTA Builder 便利なライブラリ 便利なライブラリ
www.vadesecure.com MTA Builderとは
20 www.vadesecure.com メールサーバを柔軟にカスタマイズするためのフレームワーク • 動作環境 : Linux 物理サーバーでもコンテナでも動きます • 開発言語
: Go言語 MTA Builderとは メールの受信や配送、その他重要な部分は MTA Builderが面倒を見ます 利用者は、ビジネスロジック(Policy)の開発に集中できます
www.vadesecure.com 21 MTA Builderのアーキテクチャ • 最新のプロトコルに対応(SPF, DKIM, DMARC, DANE, MTA-STS,
ARC) • Policy開発用のテンプレートの提供 • 仮想キュー • クラスタ化されたレピュテーション • Cloud Ready
22 www.vadesecure.com いったい 何ができるの? なんでもできます! それ、何もできないって 言ってるようなもんよね でも自分で全部作らなきゃでしょ?
©2017 – Vade Secure ひな形はすでに用意してあります • SMTP認証 • Delivery profiles
• DKIM検証・署名 • RBL • LDAP • Lists (local, redis...) • Queue • SPF • FCrDNSチェック On the roadmap: • 分散Queue • BIMI • Reputation • Vade Filter engine • DMARC • SRS • ARC • 分散Reputation • LDAP • MTA-STS • DANE • SQL...
www.vadesecure.com 具体的な実装例
25 www.vadesecure.com 25 # pctl policy rule insert -m spf
-p checkMailFrom -r checkMailFrom -s MailFrom SPFチェックを追加 コマンドで サンプルコード を追加
26 www.vadesecure.com • 同時接続数が5を越えたら すぐに受け付けずに 応答を3秒間遅らせる • 同時接続数や応答の遅延時間は 変更できるようにしたい 同時接続を制限したい
メールサーバー
27 www.vadesecure.com 27 # pctl policy rule insert -s Banner
-r Conn_simultaneous -m rules -p concurrentConnections 同時接続数制限を追加
28 www.vadesecure.com 28 スパム・ウィルスフィルタを追加
29 www.vadesecure.com • 1時間の接続数が 500を越えたら 421エラーを返す • 1日の接続数が 10000を越えたら 421エラーを返す
• 同時接続数や応答の遅延時間は 変更できるようにしたい 時間単位の接続数を制限したい メールサーバー メールサーバー メールサーバー 1時間で合計500 1日で合計10000
30 www.vadesecure.com 30 時間単位の接続数を制限
31 www.vadesecure.com メールサーバー • 特定の人からのメールを ブロックする • スパムフォルダに入れる とかではなく、 User
Unknownで拒否する 嫌いな人をブロックしたい ×
32 www.vadesecure.com 32 嫌いな人をブロックする
33 www.vadesecure.com • バックアップ用のサーバーへメールのコピーを送る • フィッシングのURLを検知する • 転送時にARCヘッダを付ける • 上司を自動でCc/Bccに入れる
• ChatGPTで本文を要約して、メールの先頭に付ける • 添付ファイルを社内のファイルサーバーに置く • 添付ファイルをzip暗号化して、パスワードを後で送る • 英語のメールを日本語に翻訳して添付する • 送信時にセキュアマトリックスで認証する • 他社のスパム・ウィルスフィルタと連携する • メールが来たらコーヒーをいれる その他なんでもできます
34 www.vadesecure.com • GoLangを利用して自由にポリシーを作ることができる • Buld, Test, Deployなど強力なコマンドラインの提供 • バージョン管理も内蔵
• ポリシーを簡単に設定するために多くのモジュールを提供 • なんでもできます。可能性は無限大 • 高速で安定した動作 • ポリシーはコンパイルされ、本番環境ではソースは見えない • 水平方向のスケール MTA / Policy Engine : まとめ
www.vadesecure.com 仮想Queueと配送
36 www.vadesecure.com • email, domain, IP, headerなど様々な要素でVIP, Normal/Clean/Dirty、など のQueueを作って自由に振り分けできる •
高速動作 • VMでもDockerでもどこでも動作可能 • どんなストレージで動作可能 (SSDs, Fast HDDs, key value store..) • RestAPI Management インターフェースによる柔軟な操作 MTA / キューと配送
37 www.vadesecure.com • 大量送信するユーザーからのメール はゆっくり配送する • 一般のユーザーからのメールは普通 にすぐに配送する 通常のメールとスパム判定されそうなものを分ける メールサーバー
Queue Queue 配送 ゆっくり 配送
www.vadesecure.com 分散レピュテーション
39 www.vadesecure.com Inbound traffic Outbound traffic 分散レピュテーション APIを通してアクセス可能 全MTA横断的な クラスタリング
受信MTAでの レピュテーション Sender Domain Ips/AS Subject Recipient Behavior 送信MTAでの レピュテーション Sender Domain Ips/AS Subject Recipient Behavior
40 www.vadesecure.com • 学習 受送信のトラフィックのあらゆる情報を集計可能。時系列の時間単位とカウンター: • 送信者や受信者のメールアドレスやドメイン毎に集計 • IPアドレスやAS毎に集計 •
件名やヘッダなどなんでも • 不審な行動を特定 (大量のスパム、宛先、不明なドメイン、IPなどなど) • アクション: • 5xxエラーや4xxエラーを返す • トラフィックを制限してメールボムなどの攻撃を防ぐ (例: X msg/5min/hour/day) • スパムとタグ付け • 乗っ取りアカウントとして特定し報告する • 特定のリストやClass of Serviceと紐付ける (UCE, VIP, Clean/normal/dirty traffic) • RestAPI を使ってなんでもできます 分散レピュテーションの機能
41 www.vadesecure.com • “上位の攻撃者”を計算する設計 (E.G.: top senders, top IPs, top
spammers...) • 時系列データ (単位時間の集計) と カウンター • どんなアクションも可能 (tempfail, tarpit, 待たせる, 無視する, 流量制限) • 乗っ取りアカウント/メールアドレス/IPの特定 • よくある DDOS, メールボム, 大量のスパム などを阻止 • 外部連携: Go言語で自由に書けるので外部のデータベースやレポートツー ル、SOCへのエスカレーション、などあらゆるものと連携可能 • RestAPI: 更にRestAPIにより柔軟な設計が可能 MTA / レピュテーション : まとめ
www.vadesecure.com Cloud Ready / DevOps Ready
www.vadesecure.com Supported Environments Run on Most x86-64 Linux: • CentOS/RHEL
based > 7.4 • Debian > 8 • Ubuntu > 18.04 • RockyLinux > 8.4 Limited Dependency: • Openssh-client • Git • libc • Bash-completion Multi Architecture: • Mono Site • Multi Site, Geo distributed, Cloud Any Architecture: • BareMetal servers • Virtual Machines • Containers (preferred) with Docker, Kubernetes AnyWhere: • Private Cloud (containers or VMs) • Public Clouds: • Amazon: AWS, VM or compatible w/EKS • Google: GCP, VM or compatible w/GKE • Microsoft: Azure, VM or compatible w/AKS • Compatible with most public clouds • Onsite Servers/VMs/Containers
44 www.vadesecure.com コマンドひとつでBuild、Deployまで可能 44 SMTP REST POLICY SMTP REST CLUSTERING
POLICY CONTROL POLICY MODULES POLICY MODULES POLICY TEMPLATES CUSTOM POLICIES CUSTOM POLICIES CUSTOM POLICIES クラスタ環境に MTA+PolicyをDeploy Policy設計 Build, Test & Ship Local PCTL 環境 Local or Remote Mail server
www.vadesecure.com CI/CD でも利用しやすい設計
www.vadesecure.com モニタリング / オブザーバビリティ
www.vadesecure.com 47 モニタリングやアラートも簡単 (Greylogを使った例)
www.vadesecure.com 48 モニタリングやアラートも簡単 (Greylogを使った例)
www.vadesecure.com 49 モニタリングやアラートも簡単 (SPAM率と量)
www.vadesecure.com 50 モニタリングやアラートも簡単 (Feedback Loopの統計)
51 www.vadesecure.com • オンプレでもクラウドでも利用可能 • どんなプラットフォームでも実行可能: BareMetal servers, VMs or
Containers • 柔軟な自動デプロイ (全てスクリプト化可能) • CI/CD 環境を活用した高速なリリースプロセス • Go言語のテストフレームワークを利用した自動テスト (UAT/E2E) • 監視環境を簡単に構築 (Monitoring/Alerting/Logging) • RestAPIによる柔軟な運用 MTA / 開発 : まとめ
52 www.vadesecure.com • Go言語でなんでも書けます。なんでもできます! • Milterではできないこともたくさんできます • めんどくさいところはVade MTA Builderが全部やります
まとめ