---
title: PythonでMLを作ろう
tags: 
author: [Takuya Nishimoto](https://image.docswell.com/user/nishimotz)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/4EZL11D373.jpg?width=480
description: オープンソースカンファレンス2026 Kagawa （OSC香川）閉会式LT  コミュニティ運営のための新しいメーリングリストサービスを Python で作り始めた話。
published: April 19, 26
canonical: https://image.docswell.com/s/nishimotz/ZR8QXJ-2026-04-19-083332
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/4EZL11D373.jpg)

PythonでMLを作ろう
2026-04-18
西本卓也 / nishimotz / 24motz
PyCon JP Association


# Page. 2

![Page Image](https://bcdn.docswell.com/page/Y76WLL1Z7V.jpg)

庭園を散策しました


# Page. 3

![Page Image](https://bcdn.docswell.com/page/G75M114974.jpg)

広島から来ました
• 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
• 主催メンバー（スタッフ）募集中、その他も募集予定


# Page. 4

![Page Image](https://bcdn.docswell.com/page/9J2911V5ER.jpg)

おことわり
• PyCon JP Association とは無関係の活動です
• 私が独自に調査した内容です
• コストや法律の話は省略します
• 自己責任でお願いします
• 機械学習の話ではありません


# Page. 5

![Page Image](https://bcdn.docswell.com/page/DEY4ZZ36JM.jpg)

メーリングリスト(ML)
• 30年くらい前に cvs-ml の管理者だった
• 職場のサーバーで運用していたが無料サービスに移行
• cvs-jp-info@lists.sourceforge.jp
• 2007年までは投稿があった。その後は放置
• lists.osdn.jp / me になり消滅した
• 現在も管理しているコミュニティのMLがある


# Page. 6

![Page Image](https://bcdn.docswell.com/page/VJNY33K178.jpg)

MLでコミュニティを運営するには
• Gmail にちゃんと届くメールを送れるか
• SPF DKIM DMARC
• Google Groups くらいしかない
• 実質的に Google アカウントと紐づいている
• Googleアカウントの予備アドレスを登録できない
• 参加や投稿のモデレーションが必須
• 運営者の負担が大きい


# Page. 7

![Page Image](https://bcdn.docswell.com/page/YE9P99VYJ3.jpg)

それでもメーリングリストを使いたい
• アクセシビリティに関するコミュニティの最終手段
• メールアプリがそのままコミュニティツールになる
• インストールするアプリがない
• ログインするウェブサービスがない
• メーリングリストを Python で作ろう
• ただし GNU Mailman の話ではありません


# Page. 8

![Page Image](https://bcdn.docswell.com/page/GE8D99PKED.jpg)

Mailgun の REST API によるメール送信


# Page. 9

![Page Image](https://bcdn.docswell.com/page/LELMWW1P7R.jpg)

Mailgun + Cloudflare (or Route 53)
• Mailgun のアカウントを作る
• Mailgun のAPIキーを作る
• Mailgun にドメインを登録する
• DNS の情報を Cloudflare に登録する
• ドメインが認証されたことを確認する
• 送信の SPF / DKIM / DMARC 対応
• MX を設定すれば受信もできる


# Page. 10

![Page Image](https://bcdn.docswell.com/page/4JMY99W2JW.jpg)

Mailgun でメールを受信する
• Mailgun にはメールボックスはない
• メーリングリスト機能はある
• 単純な同報はできる
• だが From が送信者のまま
• DKIM のない投稿が受信者に届かない
• ヘッダーを書き換えて送信者を変えたい
• Routing 機能
• 特定のアドレスに届いたら Webhook を実行
• 迷惑メール対策もできる


# Page. 11

![Page Image](https://bcdn.docswell.com/page/PJR9GGY579.jpg)

受信メールを分類する
• 正常メール
• 参加者に転送
• コマンドメール
• フィッシング詐欺
• 配送確認偽装
• 課金確認偽装
• ブランド偽装
• 営業メール
• テンプレ文面


# Page. 12

![Page Image](https://bcdn.docswell.com/page/PEXQXXGXJX.jpg)

llama-3.3-70b-versatile を使う
あなたはメールを分類するアシスタントです。
以下の3種類に分類してください。
phishing: フィッシング詐欺メール。
sales_template: 営業代行による定型営業メール。
legitimate: 正常なメール。返信や対応が必要なもの。
以下のJSON形式だけで回答してください。説明文は不要です。
{&quot;category&quot;: &quot;phishing または sales_template または legitimate&quot;,
&quot;reason&quot;: &quot;判定理由を日本語で一文&quot;}


# Page. 13

![Page Image](https://bcdn.docswell.com/page/3EK9WW49ED.jpg)

GroqCloud で実行


# Page. 14

![Page Image](https://bcdn.docswell.com/page/L73W11L975.jpg)

Webhook をデプロイする
• Mailgun の署名を検証
• ヘッダーの連番の管理
• 登録者リストの管理
• Google Cloud Function と Firestore を使用


# Page. 15

![Page Image](https://bcdn.docswell.com/page/87DKXXN8JG.jpg)

ja@mailgarden.org
• 空メール送信
• しばらくすると「購読を受け付けました」メールが届く
• 内容に同意して返信すると購読が確定
• リストの目的＝コミュニティ運営のためのMLの開発
• 本当に使い物になるのか？
• サービスとして運用するかソフトウェアとして公開するか？


# Page. 16

![Page Image](https://bcdn.docswell.com/page/VJPKPP5WE8.jpg)

ja@mailgarden.org
• 「ooooさんを購読解除して」
• 「バウンスしているメンバーを教えて」
• 「投票の結果を教えて」
• 「200x年に同じ議論をしています」
• 「行動規範に違反しています」


