Sign inSign up

sosboy/gmail-bridge

By sosboy

•Updated 4 days ago

Self-hosted IMAP-to-Gmail bridge with Google Drive attachment fallback and ntfy notifications.

Image
0

334

sosboy/gmail-bridge repository overview

⁠Gmail Bridge

いつものメールを、自分のGmailへ。

会社メール・独自ドメイン・プロバイダーメールなどを、IMAPから自分のGmailアカウントへ取り込むセルフホスト型ツールです。Gmailアプリに別アカウントとして表示するだけでなく、Gmailのフィルタ・ラベル・検索でまとめて扱うために使います。利用者自身のNASやLinux/Docker環境で運用します。

紹介ページ⁠ · GitHub⁠ · 導入手順⁠ · トラブル対応⁠

⁠イメージとバージョン

docker pull sosboy/gmail-bridge:1.0.0

linux/amd64・linux/arm64対応。Dockerが実行環境に合うイメージを選択します。ARM32には対応しません。

  • 1.0.0:固定版。安定運用向け。
  • 1.0:1.0系列の修正版へ追従。
  • 1:1系列の正式版へ追従。
  • latest:最新の正式版へ追従。将来のメジャー変更も含みます。

mainへのpushではlatestを更新しません。更新の適用にはイメージ取得とコンテナ再作成が必要です。Release⁠で変更点を確認してください。

⁠導入前の準備

  1. 自分のGoogle CloudプロジェクトでGmail API・Google Drive APIを有効にし、Desktop appのOAuthクライアントを作成します。
  2. PC上でリポジトリの make_token.py を使って認証し、credentials.json と token.json を用意します。所有者の認証情報は配布しません。
  3. config.example.ini を config.ini にコピーし、IMAPなどを設定します。最初は delete_after_import = false で試してください。
  4. 永続保存先とコンテナの実行UID/GIDを設定し、新規導入では常駐起動前に初期化します。

取得用Compose⁠を docker-compose.yml として保存してください。既定イメージは sosboy/gmail-bridge:1.0.0 です。Docker導入・更新の詳しい説明⁠も参照してください。

⁠永続保存するファイルとフォルダ

NAS/ホスト側に実ファイルとディレクトリを先に用意し、次のコンテナ内パスへ個別にマウントします。

ホスト側コンテナ側権限
config.ini/app/config.ini読み取り専用
credentials.json/app/credentials.json読み取り専用
token.json/app/token.json読み書き
data//app/data読み書き
backups//app/backups読み書き
logs//app/logs読み書き

/app全体をマウントしないでください。イメージ内のプログラムが隠れます。 token.jsonは認証更新時に書き換えます。credentials.jsonは通常運用では読み込まないため、PCで認証を終えた後はマウントを省略できます。秘密情報・メール・DBをGitHubやイメージへ入れないでください。

⁠初期化と起動

設定・認証・保存先の準備後に実行します。次は現在の過去メールを取り込まず、新着から始める例です。

docker compose pull
docker compose run --rm gmail-bridge python -m app.main init --latest 1 --dry-run
docker compose run --rm gmail-bridge python -m app.main init --from-now
docker compose up -d
docker compose logs --tail=100 -f gmail-bridge

init --from-now は初回専用です。既存DBを移行した場合は再初期化しません。過去メールを取り込む場合の指定方法はINSTALLを参照してください。

常駐ループはイメージのCMD(python -m app.service)が実行します。ComposeやGUIで別のループ・commandを追加しないでください。日本時間で運用する場合は TZ=Asia/Tokyo を指定します。イメージ単体の既定はUTCです。

⁠QNAP Container Station

GUIでイメージ sosboy/gmail-bridge:1.0.0 からコンテナを作成する方法も使えます。上記の個別マウント、実行ユーザー、TZ、再起動設定を指定してください。実行ユーザーはNASのUID/GIDに合わせます。PUID/PGID環境変数で変更する方式ではありません。ポート公開は不要です。

所有者のQNAP環境では、GUIから公開イメージを導入し、定期実行・OAuth更新・新着メール取り込み・ntfy通知の成功を確認しています。全機能・全NASの動作保証ではありません。

⁠主な機能と制限

  • 標準では元サーバーのINBOXのみを取得。取得だけで既読にせず、取り込み時の既読・未読状態を反映します。双方向同期ではありません。
  • Gmailが添付を拒否した場合、任意でDriveへ添付を退避し、本文とリンクのメールを保存します。Driveの共有を一般公開へ変更しません。保存は添付の安全性を保証しません。
  • ntfy通知の失敗時は、取り込みを繰り返さず通知だけを再送します。
  • 元メールの削除は任意で、猶予期間と安全確認後に行います。手動init・cleanupやDB移行前は常駐を停止してください。
  • IMAPはSTARTTLS方式(通常143番)。993番の暗黙TLS・IMAP OAuthには対応しません。

セキュリティ⁠ · 既知の制限⁠ · プライバシー⁠ · 利用条件⁠

⁠English

A self-hosted IMAP-to-Gmail importer with optional Google Drive attachment fallback and ntfy notifications. Supports linux/amd64 and linux/arm64. Pin sosboy/gmail-bridge:1.0.0 for a fixed release. Prepare your own Google Cloud project, Desktop OAuth credentials and token, configuration, and persistent mounts before initialization. Do not mount over /app or override the service CMD. New deployments must initialize before starting; migrated databases must not be reinitialized. Follow the installation guide⁠.

MIT License. Googleの公式製品ではありません。Not affiliated with or endorsed by Google.

Tag summary

Content type

Image

Digest

sha256:8c0d4ae6b…

Size

65.7 MB

Last updated

5 days ago

docker pull sosboy/gmail-bridge