195 Views
April 19, 26
スライド概要
オープンソースカンファレンス2026 Kagawa (OSC香川)閉会式LT
コミュニティ運営のための新しいメーリングリストサービスを Python で作り始めた話。
Shuaruta Inc. ウェブアクセシビリティ基盤委員会 (WAIC) NVDA日本語版 すごい広島 with Python
PythonでMLを作ろう 2026-04-18 西本卓也 / nishimotz / 24motz PyCon JP Association
庭園を散策しました
広島から来ました • PyCon JP 2025 を開催しました • pyconjp-2025-chair.nishimotz.com • Python Boot Camp in 広島 3rd を開催します • 2026年6月6日 • 参加者、TAを募集中 • PyCon JP 2026 を開催します • 2026年8月21-23日 • 2026.pycon.jp • 主催メンバー(スタッフ)募集中、その他も募集予定
おことわり • PyCon JP Association とは無関係の活動です • 私が独自に調査した内容です • コストや法律の話は省略します • 自己責任でお願いします • 機械学習の話ではありません
メーリングリスト(ML) • 30年くらい前に cvs-ml の管理者だった • 職場のサーバーで運用していたが無料サービスに移行 • [email protected] • 2007年までは投稿があった。その後は放置 • lists.osdn.jp / me になり消滅した • 現在も管理しているコミュニティのMLがある
MLでコミュニティを運営するには • Gmail にちゃんと届くメールを送れるか • SPF DKIM DMARC • Google Groups くらいしかない • 実質的に Google アカウントと紐づいている • Googleアカウントの予備アドレスを登録できない • 参加や投稿のモデレーションが必須 • 運営者の負担が大きい
それでもメーリングリストを使いたい • アクセシビリティに関するコミュニティの最終手段 • メールアプリがそのままコミュニティツールになる • インストールするアプリがない • ログインするウェブサービスがない • メーリングリストを Python で作ろう • ただし GNU Mailman の話ではありません
Mailgun の REST API によるメール送信
Mailgun + Cloudflare (or Route 53) • Mailgun のアカウントを作る • Mailgun のAPIキーを作る • Mailgun にドメインを登録する • DNS の情報を Cloudflare に登録する • ドメインが認証されたことを確認する • 送信の SPF / DKIM / DMARC 対応 • MX を設定すれば受信もできる
Mailgun でメールを受信する • Mailgun にはメールボックスはない • メーリングリスト機能はある • 単純な同報はできる • だが From が送信者のまま • DKIM のない投稿が受信者に届かない • ヘッダーを書き換えて送信者を変えたい • Routing 機能 • 特定のアドレスに届いたら Webhook を実行 • 迷惑メール対策もできる
受信メールを分類する • 正常メール • 参加者に転送 • コマンドメール • フィッシング詐欺 • 配送確認偽装 • 課金確認偽装 • ブランド偽装 • 営業メール • テンプレ文面
llama-3.3-70b-versatile を使う
あなたはメールを分類するアシスタントです。
以下の3種類に分類してください。
phishing: フィッシング詐欺メール。
sales_template: 営業代行による定型営業メール。
legitimate: 正常なメール。返信や対応が必要なもの。
以下のJSON形式だけで回答してください。説明文は不要です。
{"category": "phishing または sales_template または legitimate",
"reason": "判定理由を日本語で一文"}
GroqCloud で実行
Webhook をデプロイする • Mailgun の署名を検証 • ヘッダーの連番の管理 • 登録者リストの管理 • Google Cloud Function と Firestore を使用
[email protected] • 空メール送信 • しばらくすると「購読を受け付けました」メールが届く • 内容に同意して返信すると購読が確定 • リストの目的=コミュニティ運営のためのMLの開発 • 本当に使い物になるのか? • サービスとして運用するかソフトウェアとして公開するか?
[email protected] • 「ooooさんを購読解除して」 • 「バウンスしているメンバーを教えて」 • 「投票の結果を教えて」 • 「200x年に同じ議論をしています」 • 「行動規範に違反しています」