316 lines
7.6 KiB
Markdown
316 lines
7.6 KiB
Markdown
# 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にて報告してください。
|