Init project

This commit is contained in:
2025-10-13 14:20:07 +09:00
commit 9ab919064a
8 changed files with 1436 additions and 0 deletions

315
README.md Normal file
View File

@@ -0,0 +1,315 @@
# 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にて報告してください。