Init project
This commit is contained in:
315
README.md
Normal file
315
README.md
Normal 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にて報告してください。
|
||||
Reference in New Issue
Block a user