Skip to content
IMAPメールをAIで緊急・重要・通常に分類し、OutlookとThunderbirdへ同期する流れを示すイラスト

IMAPメールをAIで重要度判定し、Outlook・Thunderbirdで自動振り分けする

メールを大量に受信していると、

  • 至急対応が必要なメール
  • 今日中に確認すればよいメール
  • 後で確認しても問題ないメール

が同じ受信トレイに並びます。

そこで、通常のIMAPメールをAIで分析し、

「緊急」「重要」「通常」の3段階に自動分類する仕組み

を構築します。

この方法ではGmail APIなどの特定サービス専用APIを使用しません。

そのため、

  • Xserverメール
  • 独自ドメインメール
  • 一般的なレンタルサーバー
  • GmailのIMAP接続
  • Microsoft系メールサービス

など、IMAPに対応しているメール環境で利用できます。

また、現在使用しているOutlookやThunderbirdをそのまま利用できます。

1.改善前の業務

通常はOutlookやThunderbirdを開き、受信トレイのメールを順番に確認します。

たとえば、

  • 顧客からの発注
  • 見積依頼
  • 修正依頼
  • 請求関係
  • 営業メール
  • メールマガジン
  • 自動通知

などが混在しています。

そのため、人が1件ずつ件名や本文を確認して重要度を判断します。

改善前

メール受信
↓
Outlook / Thunderbirdを開く
↓
送信者を確認
↓
件名を見る
↓
本文を読む
↓
重要度を判断
↓
対応

メール件数が増えるほど確認作業に時間がかかり、重要なメールを見落とす可能性も高くなります。

2.改善後の仕組み

メールソフトとは別に、小さな監視プログラムを動かします。

メールサーバー
↓
IMAP接続
↓
新着メール取得
↓
ルール判定
↓
AI判定
↓
重要度を決定
↓
IMAPフォルダへ移動
↓
緊急なら通知

メールソフト側では、

受信トレイ

AI-緊急
AI-重要
AI-通常

というフォルダが表示されます。

OutlookでもThunderbirdでも、通常のIMAPフォルダとして利用できます。

3.Outlook・Thunderbird自体にAIを組み込むわけではない

この仕組みで重要なのは、

OutlookやThunderbirdの中でAIを動かす必要はない

という点です。

AI判定は別プログラムで行います。

たとえばPythonで、

mail-ai-monitor.py

というプログラムを常時動作させます。

このプログラムがメールサーバーへIMAP接続します。

OutlookやThunderbirdは、同じメールサーバーへ通常通り接続します。

つまり、

              ┌→ Outlook
メールサーバー ├→ Thunderbird
              └→ AI監視プログラム

という構成です。

4.IMAP方式のメリット

Gmail APIなどを使う方法と比較すると、IMAP方式には次のメリットがあります。

  • 特定メールサービスに依存しにくい
  • 独自ドメインメールでも使える
  • OutlookでもThunderbirdでも使える
  • 既存のメール環境を変更しなくてよい
  • メールサーバーを変更しても対応しやすい

特に複数の会社や複数のメールサーバーで利用する業務改善システムとして考える場合、IMAP方式は汎用性があります。

5.重要度は3段階にする

メールを、

緊急

すぐ確認する必要があるメール。

例:

  • 至急
  • 緊急
  • 本日中
  • 発注
  • キャンセル
  • 納期トラブル
  • システム障害
  • クレーム

重要

急ぎではないものの、確実に確認するメール。

例:

  • 見積依頼
  • 修正依頼
  • 打ち合わせ
  • 請求
  • 契約
  • 顧客からの問い合わせ

通常

すぐに確認する必要がないメール。

例:

  • メールマガジン
  • 広告
  • 営業案内
  • 定期通知

6.最初にルール判定を行う

すべてをAIだけで判断させるのではなく、簡単なルール判定を先に行います。

例:

条件スコア
—––:
重要顧客+30
至急+40
緊急+40
発注+25
本日中+30
見積+15
修正依頼+15
メルマガ-30
営業メール-40

これにAIの判定結果を組み合わせます。

7.AIにはメール全体の意味を判断させる

キーワードだけでは誤判定する場合があります。

たとえば、

急ぎではありませんので、来週までにお願いします。

という文章です。

「急ぎ」という言葉だけを見ると緊急メールに見えます。

しかし文章全体では緊急ではありません。

そこでAIに、

  • 送信者
  • 件名
  • 本文
  • 期限
  • 要求内容

を確認させます。

AIには次のようなJSONを返させます。

{
  "priority": "important",
  "score": 68,
  "category": "estimate",
  "summary": "Webサイト修正についての見積依頼",
  "action_required": true,
  "deadline": "2026-08-28",
  "reason": "顧客からの依頼だが、即日対応の指定はない"
}

8.IMAPでメールを取得する

Pythonには標準で、

imaplib

があります。

基本的には、

import imaplib

mail = imaplib.IMAP4_SSL("mail.example.jp", 993)

mail.login(
    "user@example.jp",
    "password"
)

mail.select("INBOX")

のようにメールサーバーへ接続します。

実際にはパスワードをソースコードへ直接書かず、環境変数などへ保存します。

9.未読メールを取得する

たとえば、

status, data = mail.search(None, "UNSEEN")

として、未読メールを取得できます。

ただし実運用では、

未読=未処理

としてしまうと問題が起こる場合があります。

OutlookやThunderbirdで人が先に開いて既読にしてしまう可能性があるからです。

そのため、実際には、

UID

を記録して、

AIがまだ処理していないメールかどうか

を判断する方法が適しています。

10.処理済みUIDを保存する

SQLiteなどへ、

message_uid
processed_at
priority
score

を保存します。

例:

10251
10252
10253

まで処理済みなら、

次回は、

10254以降

だけ処理します。

これにより、OutlookやThunderbirdで既読にしても問題ありません。

11.IMAPフォルダを作成する

メールサーバー側へ、

AI-緊急
AI-重要
AI-通常

というフォルダを作ります。

Pythonから作成することもできます。

mail.create("AI-Urgent")
mail.create("AI-Important")
mail.create("AI-Normal")

日本語フォルダ名はIMAPの文字コード処理が必要になるため、プログラム内部では英数字にしておく方が簡単です。

表示上は日本語フォルダ名にすることもできます。

12.メールをフォルダへ移動する

たとえばAI判定が、

urgent

なら、

AI-Urgent

へ移動します。

同様に、

important
→ AI-Important

normal
→ AI-Normal

とします。

これらはIMAPサーバー側のフォルダなので、OutlookとThunderbirdのどちらから見ても同じ状態になります。

13.Outlookでの実装例

Outlook側では特別なAI設定は必要ありません。

通常通りIMAPアカウントを登録します。

AIプログラムがメールを分類すると、

受信トレイ

AI-Urgent
AI-Important
AI-Normal

というフォルダがOutlookに同期されます。

Outlookでの利用イメージ

AI-Urgent
  ├─ ○○株式会社 発注について
  └─ △△会社 サーバートラブル

AI-Important
  ├─ 見積依頼
  └─ Web修正依頼

AI-Normal
  ├─ メルマガ
  └─ 営業案内

14.Thunderbirdでの実装例

Thunderbirdでも考え方は同じです。

IMAPアカウントを登録しておけば、AIプログラムが作ったフォルダが同期されます。

つまり、

AI-Urgent
AI-Important
AI-Normal

をThunderbird上でも確認できます。

Thunderbird独自のメッセージフィルターを使う必要はありません。

むしろ、

分類処理をPython側へ統一

した方が、

  • Outlook
  • Thunderbird
  • Webメール
  • スマートフォン

のどこから見ても同じ分類結果になります。

15.OutlookとThunderbirdを同時に使う場合

IMAPの大きなメリットです。

たとえば、

会社PC
Outlook

自宅PC
Thunderbird

スマートフォン
標準メールアプリ

という構成でも、

すべて同じメールサーバーを見ています。

AIが、

AI-Urgent

へ移動したメールは、

どの端末から見ても同じフォルダに表示されます。

16.「移動」ではなく「コピー」も検討する

最初の試験運用では、メールをいきなり受信トレイから移動しない方が安全です。

たとえば、

受信トレイ
↓
AI-Urgentへコピー

として、

元のメールを受信トレイへ残します。

AI判定に問題がないことを確認してから、

コピー
↓
移動

へ変更します。

17.個人的には「フォルダ移動」よりフラグ方式を推奨

IMAPにはフラグがあります。

そのため、メールを物理的に移動せず、

受信トレイ

へ残したまま管理する方法もあります。

ただし標準IMAPのフラグだけでは、

緊急
重要
通常

の3段階をOutlook・Thunderbirdの両方で同じように表示するのは少し扱いにくくなります。

汎用性を優先するなら、

専用IMAPフォルダ方式

の方が分かりやすいです。

18.緊急メールだけWindows通知する

AIが、

urgent

と判断した場合だけ通知します。

例:

緊急メールを受信

送信者:
○○株式会社

件名:
Webサイトが表示されません

重要度:
96 / 100

AI要約:
公開サイトが表示されないため、
早急な確認が必要です。

Windows通知であればPythonから実装できます。

19.通知とメールソフトは分離する

重要な設計ポイントです。

OutlookやThunderbirdの標準通知を使うと、

すべての新着メール

が通知される可能性があります。

そこで、

Outlook / Thunderbird
→ 通常メール通知OFF

AIプログラム
→ 緊急だけ通知

という運用にします。

これによって、

「通知が来た=確認するべきメール」

という状態を作れます。

20.Codexに実装させる場合

Codexには一度に全部作らせるより、段階的に実装させます。

STEP 1

IMAPへ接続する。

メールサーバーへIMAP SSL接続し、
最新メールの送信者・件名・本文を取得する

STEP 2

処理済みUIDをSQLiteへ保存する。

STEP 3

キーワードと送信者によるスコアリングを追加する。

STEP 4

OpenAI APIへメール内容を渡し、

urgent
important
normal

を判定する。

STEP 5

IMAPフォルダへ分類する。

STEP 6

urgentの場合だけWindows通知する。

STEP 7

ログ画面を追加する。

21.推奨ファイル構成

imap-ai-mail/

├─ app.py
│
├─ mail/
│  ├─ imap_client.py
│  ├─ parser.py
│  └─ folders.py
│
├─ classifier/
│  ├─ rules.py
│  ├─ openai_classifier.py
│  └─ priority.py
│
├─ notification/
│  └─ windows.py
│
├─ config/
│  ├─ senders.yaml
│  ├─ keywords.yaml
│  └─ settings.yaml
│
├─ database/
│  └─ mail.db
│
└─ logs/

この構成なら、メールサーバーが変わっても主に設定ファイルを変更するだけで対応できます。

22.Outlook版・Thunderbird版を別々に作る必要はない

ここは大きなポイントです。

実際には、

Outlook用プログラム
Thunderbird用プログラム

を別々に作る必要はありません。

作るのは、

IMAPメールサーバー用AI分類プログラム1つ

だけです。

                     Outlook
                        ↑
                        │
メールサーバー ← AI分類プログラム
                        │
                        ↓
                    Thunderbird

OutlookもThunderbirdも結果を見るだけです。

23.IMAP IDLEを使えば新着を素早く検知できる

単純な方式では、

1分ごと

などにメールサーバーへ問い合わせます。

ただしIMAPには、

IDLE

という仕組みがあります。

対応しているメールサーバーなら、新着メールを比較的素早く検知できます。

そのため、

メール到着
↓
数秒程度で検知
↓
AI判定
↓
緊急なら通知

という構成も可能です。

ただしサーバーによってIDLE対応状況や接続維持時間が異なるため、

IDLE
+
一定時間ごとの再接続

という設計にします。

24.実運用ではAIに送る前に前処理する

メールには、

  • HTML
  • 署名
  • 過去の返信履歴
  • 広告
  • メールフッター

などが大量に含まれることがあります。

そのままAIへ送るのではなく、

HTML除去
↓
署名除去
↓
引用文除去
↓
本文抽出
↓
AI判定

とします。

API使用量の削減と判定精度向上の両方に効果があります。

25.添付ファイルは第2段階にする

最初のバージョンでは、

From
Subject
本文

だけをAI判定対象にします。

PDFやExcelなどの添付ファイル解析は後から追加します。

添付ファイルまで処理すると、

  • セキュリティ
  • API費用
  • 処理時間
  • ファイル形式
  • マルウェア対策

など、設計する項目が増えるためです。

26.セキュリティ上の注意

IMAPパスワードやOpenAI APIキーは、

password = "xxxx"

のようにソースコードへ記載しません。

.envなどへ保存し、

IMAP_HOST=
IMAP_USER=
IMAP_PASSWORD=
OPENAI_API_KEY=

として管理します。

メール本文や認証情報をAI処理に使う際は、情報セキュリティの基本を踏まえ、送信する情報の範囲と保管方法を決めてください。

.envはGitへ登録しないようにします。

27.この方式が向いているケース

特に向いているのは、

  • 独自ドメインメールを利用している
  • Gmailに限定したくない
  • Outlookを使っている
  • Thunderbirdを使っている
  • 複数PCで同じメールを見る
  • 将来的に他社へ提供したい

といったケースです。

Gmailだけで同様の通知を小さく試す場合は、Gmailの重要メールをAIで自動判定し、緊急メールだけ通知するを参照してください。

まとめ

通常のIMAPを利用すれば、

IMAP
↓
AI重要度判定
↓
緊急 / 重要 / 通常
↓
メールサーバー上で分類
↓
Outlook・Thunderbirdへ同期
↓
緊急だけ通知

というシステムを構築できます。

この方式ではOutlookやThunderbirdを改造する必要はありません。

AI処理をメールソフトから独立させ、メールサーバー側のIMAPを基準に処理する

のがポイントです。

これならOutlookからThunderbirdへメールソフトを変更しても、AI分類システムを作り直す必要がありません。

また、将来的にWebメールやスマートフォンを追加しても、同じ分類結果を利用できます。

関連リンク

IMAP接続先と認証情報の管理を確認するには、サーバー、アカウント、パスワードを参照してください。