もっと簡単にmu4eをMSのOAuth2に対応させる
以前、oauth2msというツールを使う方法を紹介しましたが、mutt_oauth2.pyを使うとそれよりずっと簡単でした。さらにoauth2msだといくら頑張っても個人向けのe-mailサービス(outlook.com, outlook.jp, hotmail.com など)がダメだったのですが、こちらの方はそれもあっさりできてしまいます。
mutt_oauth2.py の準備
mutt_oauth2.py をダウンロードして適当なパス (例: /usr/local/bin/) に実行権限付きで保存します。ソースコードを2箇所だけ書き換えます。<GPGの鍵指定>の部分は gpg コマンドで作った鍵のID (e-mailアドレス) を書いておきます。client_id
の部分は以下のとおりの文字列を書くことで、mutt_oauth2.py に Thunderbird のフリをさせます。これによって (oauth2ms 等で必要だった) azure 側の面倒くさいアプリ登録等を回避できる仕組みのようです。
# 前略
ENCRYPTION_PIPE = ['gpg', '--encrypt', '--recipient', '<GPGの鍵指定>']
DECRYPTION_PIPE = ['gpg', '--decrypt']
registrations = {
'google': {
# google の設定いろいろ(中略)
},
'microsoft': {
# MS の設定いろいろ(中略)
'client_id': '9e5f94bc-e8a4-4e73-b8be-63364c29d753', # Thunderbird のフリをさせる
'client_secret': '', # 空のままで ok
},
}
# 後略
token ゲット
mutt_oauth2.py <トークンファイル> --authorize
と、コマンドを実行します。<トークンファイル>
はトークンを保存しておくファイルで、アカウント毎に作ります。例えば ~/.mutt_token_hotmail
とかそんな感じです。するとインタラクティブに続きます。
vailable app and endpoint registrations: google microsoft
OAuth2 registration: microsoft
まずは↑このように microsoft を選びます。
Preferred OAuth2 flow ("authcode" or "localhostauthcode" or "devicecode"): devicecode
Account e-mail address: ****@outlook.com
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code E*******H to authenticate.
Polling...............
続いて認証の方法、なんでも良いのですがコピペが少なめのdevicecodeを選択しました。そして自分のアカウントのe-mailアドレスを入力します。すると「https://microsoft.com/devicelogin を開いてデバイスコード入れろ」と言われるのでブラウザでそのURLを開き、認証ページで表示されたデバイスコードE*******H
を入力します。
mutt_oauth2.py <トークンファイル>
と、--authorize
なしで実行してトークン文字列がズラッと出てくればokです。
なお、トークンファイルのパーミションは 0600 のような安全なものにする必要があるようです。
msmtp の設定
.msmtprc
(の一部)こんな感じです。msmtp -a hotmail foo@bar.com
などとして送信できるかチェックしましょう。
account hotmail
host smtp-mail.outlook.com
port 587
from oreore@hotmail.com
user oreore@hotmail.com
passwordeval "mutt_oauth2.py ~/.mutt_token_hotmail"
auth xoauth2
mbsync (isync) の設定
.mbsyncrc
(の一部)はこんな感じです。mbsync hotmail
などとして同期できるかチェックしましょう。
IMAPAccount hotmail
PassCmd "mutt_oauth2.py ~/.mutt_token_hotmail"
Host imap-mail.outlook.com
User oreore@hotmail.com
SSLType IMAPS
AuthMechs XOAUTH2
CertificateFile /etc/ssl/certs/ca-certificates.crt