Email to Discord Webhook Forwarder
メールサーバーを監視して、新しいメールが到着したときにDiscordのWebhookを使用して通知を送信するPythonアプリケーションです。
🚀 機能
- メールサーバー監視: IMAP/IMAPS プロトコルでメールサーバーを監視
- Discord通知: 新しいメールが到着したときにDiscordに通知
- 環境変数設定: 設定は全て環境変数で管理
- Dockerサポート: コンテナとして簡単にデプロイ可能
- SSL/TLS対応: セキュアな接続をサポート
- エラーハンドリング: 堅牢なエラー処理とログ出力
📋 必要な環境変数
| 変数名 | 説明 | 必須 | デフォルト値 |
|---|---|---|---|
EMAIL_USER |
メールアドレス | ✅ | - |
EMAIL_PASSWORD |
メールパスワード/アプリパスワード | ✅ | - |
DISCORD_WEBHOOK_URL |
Discord Webhook URL | ✅ | - |
IMAP_SERVER |
IMAPサーバーアドレス | ❌ | imap.gmail.com |
IMAP_PORT |
IMAPポート番号 | ❌ | 993 |
USE_SSL |
SSL/TLS使用の有無 | ❌ | true |
MAILBOX |
監視するメールボックス | ❌ | INBOX |
CHECK_INTERVAL |
チェック間隔(秒) | ❌ | 60 |
🔧 セットアップ
1. Discord Webhook URLの取得
- Discordでメッセージを送信したいチャンネルを選択
- チャンネル設定 → 連携サービス → ウェブフック
- 新しいウェブフックを作成してURLをコピー
2. Gmail用アプリパスワードの作成(Gmailを使用する場合)
- Googleアカウントの2段階認証を有効にする
- Googleアカウント設定 → セキュリティ → アプリパスワード
- メール用のアプリパスワードを生成
3. 環境変数の設定
# .env.exampleをコピーして.envファイルを作成
cp .env.example .env
# .envファイルを編集して実際の値を設定
🐳 Docker Composeでの実行
1. docker-compose.ymlの設定
environment:
- EMAIL_USER=your-email@gmail.com
- EMAIL_PASSWORD=your-app-password
- DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/YOUR_WEBHOOK_URL
2. コンテナの起動
# コンテナをビルドして起動
docker-compose up -d
# ログの確認
docker-compose logs -f
# コンテナの停止
docker-compose down
🚀 Linux用シェルスクリプトでの実行
Linux環境では便利なシェルスクリプトを使用できます:
1. スクリプトに実行権限を付与
chmod +x start.sh
2. 初期セットアップ
# .envファイルを作成
./start.sh setup
# .envファイルを編集して実際の値を設定
nano .env
3. よく使用するコマンド
# Dockerイメージをビルド
./start.sh build
# コンテナを起動
./start.sh start
# リアルタイムでログを表示
./start.sh logs-f
# コンテナの状態を確認
./start.sh status
# コンテナを停止
./start.sh stop
# コンテナを再起動
./start.sh restart
# docker-compose で起動
./start.sh compose-up
# Python直接実行
./start.sh python
# ヘルプを表示
./start.sh help
4. 利用可能なコマンド一覧
| コマンド | 説明 |
|---|---|
setup |
初期セットアップ(.envファイル作成) |
build |
Dockerイメージをビルド |
start |
コンテナを起動 |
stop |
コンテナを停止 |
restart |
コンテナを再起動 |
logs |
ログを表示 |
logs-f |
ログをリアルタイム表示 |
status |
コンテナの状態を確認 |
clean |
停止済みコンテナとイメージを削除 |
compose-up |
docker-compose で起動 |
compose-down |
docker-compose で停止 |
python |
Python直接実行 |
help |
ヘルプを表示 |
🪟 Windows用PowerShellスクリプトでの実行
Windows環境では PowerShell スクリプトを使用できます:
1. 初期セットアップ
# .envファイルを作成
.\start.ps1 setup
# .envファイルを編集して実際の値を設定
notepad .env
2. よく使用するコマンド
# Dockerイメージをビルド
.\start.ps1 build
# コンテナを起動
.\start.ps1 start
# リアルタイムでログを表示
.\start.ps1 logs-f
# コンテナの状態を確認
.\start.ps1 status
# コンテナを停止
.\start.ps1 stop
# ヘルプを表示
.\start.ps1 help
🔨 Dockerでの直接実行
1. イメージのビルド
docker build -t email-to-discord .
2. コンテナの実行
docker run -d \
--name email-monitor \
--restart unless-stopped \
-e EMAIL_USER=your-email@gmail.com \
-e EMAIL_PASSWORD=your-app-password \
-e DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/YOUR_WEBHOOK_URL \
-e CHECK_INTERVAL=60 \
email-to-discord
🐍 Python直接実行
1. 依存関係のインストール
pip install -r requirements.txt
2. 環境変数の設定
# Windowsの場合
set EMAIL_USER=your-email@gmail.com
set EMAIL_PASSWORD=your-app-password
set DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/YOUR_WEBHOOK_URL
# Linux/macOSの場合
export EMAIL_USER=your-email@gmail.com
export EMAIL_PASSWORD=your-app-password
export DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/YOUR_WEBHOOK_URL
3. アプリケーションの実行
python app.py
📧 対応メールプロバイダー
Gmail
IMAP_SERVER=imap.gmail.com
IMAP_PORT=993
USE_SSL=true
Outlook/Hotmail
IMAP_SERVER=outlook.office365.com
IMAP_PORT=993
USE_SSL=true
Yahoo Mail
IMAP_SERVER=imap.mail.yahoo.com
IMAP_PORT=993
USE_SSL=true
その他のプロバイダー
各プロバイダーのIMAP設定を確認して適切な値を設定してください。
📊 ログとモニタリング
アプリケーションは以下の情報をログ出力します:
- 起動/停止メッセージ
- メールサーバー接続状況
- 新しいメールの検出
- Discord送信の成功/失敗
- エラー情報
# Dockerコンテナのログを確認
docker logs email-to-discord-monitor
# リアルタイムでログを監視
docker logs -f email-to-discord-monitor
🔒 セキュリティ考慮事項
- アプリパスワードの使用: 通常のパスワードではなくアプリ専用パスワードを使用
- 環境変数での機密情報管理: パスワードやWebhook URLは環境変数で管理
- SSL/TLS接続: メールサーバーとの通信は暗号化
- 非rootユーザー: Dockerコンテナは非rootユーザーで実行
🛠️ トラブルシューティング
メールサーバーに接続できない場合
- IMAP設定が正しいか確認
- アプリパスワードが正しく設定されているか確認
- 2段階認証が有効になっているか確認(Gmail)
- ファイアウォールの設定を確認
Discord通知が送信されない場合
- Webhook URLが正しいか確認
- Discordサーバーの権限を確認
- ネットワーク接続を確認
ログの確認方法
# アプリケーションのログレベルを変更(開発時)
# app.py内のlogging.basicConfig levelをDEBUGに変更
📝 ライセンス
このプロジェクトはMITライセンスの下で公開されています。
🤝 コントリビューション
プルリクエストやイシューの報告を歓迎します。
📞 サポート
問題が発生した場合は、GitHubのIssueにて報告してください。
Description
Languages
Python
42.5%
PowerShell
28%
Shell
27.4%
Dockerfile
2.1%