/dgmtx

ドコモメールをGMail等に転送しつつSlackへ新着通知を飛ばします。

Primary LanguagePython

docomo mail to GMail Transfer tool

NTT docomoのキャリアメールであるドコモメールを、フォルダごとすべてGMailへ吸い出します。

新着通知

GMailはIMAPでメールを投入してもスマホに新着通知を送ってくれないので、以下2種類の通知を実装しています。 どちらもオプションで、設定がなければ行いません。

  • Outlook.com に転送して、Androidアプリに通知を飛ばしてもらう。
  • Slackのincoming webhookを叩く

Outlook.comのAndroidアプリは新着通知がなぜかINBOXフォルダ(受信トレイ)しか飛ばないので、 ドコモメール側でどのフォルダに振り分けていてもOutlook.comのメールアカウントでは受信トレイに転送されます。

動かし方

Python3.5以上で動くはずです。requirements.txtを参考にパッケージを入れてください。

systemdで動かす際のServiceとTimerのUnit fileを参考までに添付してあります。

stateがない初回起動時にメールを全て転送したい場合は引数 -i をつけてください。 このときSlack通知が有効になっていると全部通知を飛ばそうとしてしまうので要注意。

初回起動時

Google CloudのAPIコンソールでGmail APIを有効にしたClientを作るとClient ID/Secretが発行されます。

これをconfig.iniに書いて(refresh_tokenがない状態)で起動すると、OAuth2認可フローのURIを表示します。アクセスしたいGmailにログインしたブラウザで 当該URIを開くと認可してくれ画面が出ます。認可するとhttps://localhost/に繋ぎに行こうとするのでその時点でのブラウザのURIを貼り付けてください。

うまくいけばrefresh_tokenを取得して表示するので、config.iniに転記してください。

コンテナでの起動

コンテナでは設定ファイルが/conf/config.iniに存在し、状態ファイルを/state/laststate.jsonに書きこめると期待して起動します。

docker run -it --mount type=bind,source="$(pwd)"/conf,target=/conf,readonly --mount type=bind,source="$(pwd)"/state,target=/state ghcr.io/walkure/dgmtx:latest

GMailのログイン情報について

GMailのIMAP接続は普通のUSER/PASSではログインできず、OAUTHBEARERを使う必要があります。 そのため、事前にGoogle Cloud PlatformでOAuth2.0認証情報を取得しておいてください。

cf. OAuth2.0を使用してGoogleAPIにアクセスする

状態ファイルについて

終了時に、次回起動に備えて状態ファイルを保存します。ここにはドコモメールIMAPフォルダを何処まで読んだかの情報と、GMailへのアクセストークンが入っています。

参照

ドコモメールをSIMフリースマホで使う - (。・ω・。)ノ・☆':;':

AUTHOR

walkure at 3pf.jp

LICENSE

MIT