# 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の取得 1. Discordでメッセージを送信したいチャンネルを選択 2. チャンネル設定 → 連携サービス → ウェブフック 3. 新しいウェブフックを作成してURLをコピー ### 2. Gmail用アプリパスワードの作成(Gmailを使用する場合) 1. Googleアカウントの2段階認証を有効にする 2. Googleアカウント設定 → セキュリティ → アプリパスワード 3. メール用のアプリパスワードを生成 ### 3. 環境変数の設定 ```bash # .env.exampleをコピーして.envファイルを作成 cp .env.example .env # .envファイルを編集して実際の値を設定 ``` ## 🐳 Docker Composeでの実行 ### 1. docker-compose.ymlの設定 ```yaml environment: - EMAIL_USER=your-email@gmail.com - EMAIL_PASSWORD=your-app-password - DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/YOUR_WEBHOOK_URL ``` ### 2. コンテナの起動 ```bash # コンテナをビルドして起動 docker-compose up -d # ログの確認 docker-compose logs -f # コンテナの停止 docker-compose down ``` ## 🚀 Linux用シェルスクリプトでの実行 Linux環境では便利なシェルスクリプトを使用できます: ### 1. スクリプトに実行権限を付与 ```bash chmod +x start.sh ``` ### 2. 初期セットアップ ```bash # .envファイルを作成 ./start.sh setup # .envファイルを編集して実際の値を設定 nano .env ``` ### 3. よく使用するコマンド ```bash # 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. 初期セットアップ ```powershell # .envファイルを作成 .\start.ps1 setup # .envファイルを編集して実際の値を設定 notepad .env ``` ### 2. よく使用するコマンド ```powershell # Dockerイメージをビルド .\start.ps1 build # コンテナを起動 .\start.ps1 start # リアルタイムでログを表示 .\start.ps1 logs-f # コンテナの状態を確認 .\start.ps1 status # コンテナを停止 .\start.ps1 stop # ヘルプを表示 .\start.ps1 help ``` ## 🔨 Dockerでの直接実行 ### 1. イメージのビルド ```bash docker build -t email-to-discord . ``` ### 2. コンテナの実行 ```bash 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. 依存関係のインストール ```bash pip install -r requirements.txt ``` ### 2. 環境変数の設定 ```bash # 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. アプリケーションの実行 ```bash python app.py ``` ## 📧 対応メールプロバイダー ### Gmail ```env IMAP_SERVER=imap.gmail.com IMAP_PORT=993 USE_SSL=true ``` ### Outlook/Hotmail ```env IMAP_SERVER=outlook.office365.com IMAP_PORT=993 USE_SSL=true ``` ### Yahoo Mail ```env IMAP_SERVER=imap.mail.yahoo.com IMAP_PORT=993 USE_SSL=true ``` ### その他のプロバイダー 各プロバイダーのIMAP設定を確認して適切な値を設定してください。 ## 📊 ログとモニタリング アプリケーションは以下の情報をログ出力します: - 起動/停止メッセージ - メールサーバー接続状況 - 新しいメールの検出 - Discord送信の成功/失敗 - エラー情報 ```bash # Dockerコンテナのログを確認 docker logs email-to-discord-monitor # リアルタイムでログを監視 docker logs -f email-to-discord-monitor ``` ## 🔒 セキュリティ考慮事項 1. **アプリパスワードの使用**: 通常のパスワードではなくアプリ専用パスワードを使用 2. **環境変数での機密情報管理**: パスワードやWebhook URLは環境変数で管理 3. **SSL/TLS接続**: メールサーバーとの通信は暗号化 4. **非rootユーザー**: Dockerコンテナは非rootユーザーで実行 ## 🛠️ トラブルシューティング ### メールサーバーに接続できない場合 1. IMAP設定が正しいか確認 2. アプリパスワードが正しく設定されているか確認 3. 2段階認証が有効になっているか確認(Gmail) 4. ファイアウォールの設定を確認 ### Discord通知が送信されない場合 1. Webhook URLが正しいか確認 2. Discordサーバーの権限を確認 3. ネットワーク接続を確認 ### ログの確認方法 ```bash # アプリケーションのログレベルを変更(開発時) # app.py内のlogging.basicConfig levelをDEBUGに変更 ``` ## 📝 ライセンス このプロジェクトはMITライセンスの下で公開されています。 ## 🤝 コントリビューション プルリクエストやイシューの報告を歓迎します。 ## 📞 サポート 問題が発生した場合は、GitHubのIssueにて報告してください。