GNU EmacsとWanderlustでOAuth2を使用してGmailを送受信する
表示
メーラ(MUA)を使用してGmailを送受信する際のユーザ認証にOAuth2が強制されるようになって久しい。これは、GNU EmacsとWanderlustの組み合わせでGmailをOAuth2認証で送受信するには、何をどう設定すべきか、というメモ。
なお、管理人のPC環境から、OSはDebian、Emacsとそれに付随するelispパッケージはDebian公式リポジトリやMELPAリポジトリにアップロードされているものに限定する。再インストール時などに再現性が悪いからだ。
前提条件
- Googlaが公開している手順に従い、送受信したいGmailアカウントのclient IDとclient secretを取得・有効化し、別途メモする。
- EmacsでMELPAリポジトリが使用できるよう
~/.emacs.el
に必要な行を追加する。 - GmailではSMTP送信文を暗号化するSTARTTLSを採用しているので、EmaceとWanderlustから
gnutls-bin
を使用できるようインストールと設定をする。
設定手順
- Debian公式リポジトリからWanderlustと必要なelispパッケージをインストールする。
Wanderlustと必要なelispパッケージはMELPAリポジトリからもインストールできるが、MELPAリポジトリからインストールするとOAuth2が機能しないので要注意。機能しない理由は不明。
ここでWanderlust本体であるwl
と、これに必要なapel
,flim
,semi
の3個のelispパッケージが同時にインストールされる。 - MELPAリポジトリから
auth-source-xoauth2
,oauth
,oauth2-auto
,oauth2-request
,url-http-oauth
の5個のelispパッケージをインストールする。
このとき、aio
,alert
,dash
,oauth2
,request
の5個のelispパッケージがdependencyとして使用可能であることを確認する。 ~/.wl
に、OAuth2認証を有効とする(auth-source-xoauth2-enable)
という行を追加後、Wanderlustのマニュアルに従って、先述の前提条件でメモしたclient IDとclient secretを追加する。- WanderlustでGmailアカウントの認証手段に
xoauth2
と指定する。
たとえば、IMAP受信メールボックスでは~/.folders
に%INBOX:"xxxxx@gmail.com"/xoauth2@imap.gmail.com:993!
と設定する。
SMTP送信認証では~/.wl
に(wl-smtp-authenticate-type . "xoauth2")
と設定する。
以降は、他のメールアカウントと同様に送受信できる。
なお、設定後に初めてGmailアカウントでSMTP/IMAPアクセスすると「アクセストークン受け入れ処理」が走り、そのPCのデフォルトWebブラウザにリダイレクトされるので、遷移後の画面に表示される手順に従いアクセストークンをactivateする必要がある。また、このアクセストークンは受け入れ後7日(604,800秒)でexpireして使用不可となり、結果としてGmailが送受信できなくなるので、そのときは~/.emacs.d/sasl-xoauth2/
に保存されている送信用と受信用の2個のアクセストークン(拡張子は.plstore
)を手動で削除し、再度、アクセストークン受け入れ処理をやり直す必要がある。