OAuth2 認証により、メールソフトで Gmail を操作

はじめに
Gmail は、POP/IMAP を有効にすることで、他のメールクライアントからでも操作することができますが、セキュリティの観点から、デフォルトで Google 以外のアプリからは使えない状態になっています。

すべてのアプリから使えるようにするには、Google の設定で、「安全性の低いアプリのアクセス」を有効にする必要があります。

これを有効にすればアプリを使うことはできるのですが、問題なのは、有効に設定しても、いつの間にか自動で無効に戻ってしまうことです。
このままでは、一時的には使えても、普段使いとして使うことができません。

ただし、OAuth2 認証を行うことによって、ユーザーが Google のサービスを使用するアプリを承認すると、安全性が高い状態として認められるので、「安全性の低いアプリのアクセス」は無効のままで、アプリを使うことができます。

これは、Gmail に限らず、他の Google サービスを使うアプリでも同様です。
メールソフトも含めて、Google サービス関連のアプリを使う際は、(アプリ側が対応していれば)OAuth2 認証をすることによって、アプリを使用することができます。

ここでは、メールクライアントが Claws Mail の場合の方法を紹介します。
Gmail の設定
まずは、Gmail で POP/IMAP を有効にします。
(POP/IMAP は、メールを受信するためのプロトコルです)

Gmail のサイトのメール画面から、設定ページを開きます。
歯車アイコンをクリックし、「すべての設定を表示」ボタンを押します。

「メール転送と POP/IMAP」の項目を選択します。

POP を有効にする場合は、「すべてのメールで POP を有効にする」にチェックを入れます。
IMAP を有効にする場合は、「IMAP を有効にする」にチェックを入れます。
設定を変更したら、「設定を保存」ボタンを押して、決定します。

POP は、サーバー上のメールデータを、直接ファイルにダウンロードしてから表示します。
IMAP は、直接ダウンロードはせずに、サーバー上にあるメールデータを読み込んだりして、管理します。

個人で使う一般的なメールソフトの場合、通常は POP を使います。
複数のメールソフトから使いたい場合など、メールデータをサーバー上で管理したい時は、IMAP を使ってください。
OAuth2 の認証情報を作成
OAuth2 認証を行うためには、OAuth の「クライアント ID」と「シークレットキー」の2つが必要になります。

この情報は、主に開発者が用意するものであり、Google の API を使うアプリ1つごとに、認証情報を1つ用意する、といった形になります。

アプリによっては、開発者側でこの2つを用意して、アプリ内に組み込んでいる場合があります。
その場合は、アプリ側で提示された URL から認証を行えばよいので、OAuth2 の認証情報を作成する必要はありません。

ただし、アプリによっては、自分で認証情報を作成して、指定する必要があるので、その場合は、以下の手順が必要です。
自分が使うアプリ用として使う分には、Google への申請などは必要なく、無料で作れますが、手順は少し複雑です。

Claws Mail の場合、「クライアント ID」と「シークレットキー」の指定が必要なので、用意します。
作成手順
まずは、「Google Cloud Platform」のページを開きます。
こちらは、基本的に、Google サービスを使う開発者が使います。

新しいプロジェクトを作成
上のバーの「Google Cloud Platform」の文字の横に、現在のプロジェクト名が表示されている部分(アイコン・プロジェクト名・▼)があるので、そこをクリックしてください。
開いた画面から、「新しいプロジェクト」をクリックします。

プロジェクト名の入力を求められるので、適当に好きな名前を記述してください。デフォルトのままでも構いません。
「場所」には、何も設定しなくて良いです。

「作成」ボタンで、プロジェクトが作成されます。

プロジェクトが作成されたら、そのプロジェクトを選択します。
上部の「Google Cloud Platform」の文字の横の部分から選択できます。

Gmail API を有効にする
上部のバーの左端にある、3本線のアイコン(ナビゲーションメニュー)をクリックし、「API とサービス」のサブメニューから、「ライブラリ」を選択します。

検索バーに「gmail」と入力し、Enter キーを押します。
検索結果から、「Gmail API」をクリックします。
「有効にする」ボタンを押して、現在のプロジェクトで、Gmail API を使えるようにします。

有効になったら、画面が移動します。

OAuth 同意画面
ナビゲーションメニューから、「API とサービス」>「OAuth 同意画面」を開きます。
ここでは、ユーザーに認証を求める時の情報などを設定します。

「外部」を選択して、「作成」ボタンを押します。

ここから、各情報を入力していきます。
これらの情報は、基本的に、開発者が自分のアプリ用に設定する情報であり、自分だけで使う分には特に重要な項目はないので、適当で構いません。
必須以外の項目には、何も設定する必要はありません。

アプリ名ユーザーに認証を要求するときに表示されるアプリ名。
自分だけで使う分には、何でもよい。
ユーザーサポートメールユーザーに認証を要求するときに、サポート用として表示するメールアドレス。
自分のメールアドレスで構いません。
デベロッパーの連絡先情報
(メールアドレス)
自分のメールアドレス。
Google からの情報が送られてきます。

各ページで情報を設定して、作成されたら、「OAuth 同意画面」に戻ります。
作成した情報が表示されていれば、問題ありません。

テストユーザーの追加
「OAuth 同意画面」を表示してください。

「公開ステータス」は「テスト」になっていますが、そのままにしておきます。
これは、開発者が、自分のアプリの公開前に、自分達だけで動作テストができるようにするための状態です。

「アプリを公開」にすると、他のユーザーが認証できるようになりますが、今回は、自分が使うアプリ用に作成しているため、自分だけが認証できればよいので、公開状態にする必要はありません。

ただし、テストの状態では、認証可能なユーザーをあらかじめ設定しておく必要があるので、テストユーザーの「ADD USERS」ボタンを押して、自分のアカウントを追加します。
メールソフトで使いたい Gmail のメールアドレスを記述してください。

認証情報の作成
次に、クライアント ID とシークレットキーを作成します。

「API とサービス」画面の状態で、横のメニューから、「認証情報」を選択します。
認証情報を作成」をクリックして、メニューから「OAuth クライアント ID」を選択します。

「アプリケーションの種類」で、「デスクトップアプリ」を選択します。
「名前」は、クライアントIDの名前です。一覧表示の名前として使われるだけなので、適当で構いません。

入力したら、「作成」ボタンをクリックします。

作成されたら、「クライアント ID」と「シークレットキー」が表示されます。
これでようやく、認証情報の作成は完了です。

この2つの文字列は、クライアント(メールソフト)側で指定する必要があるので、テキストをコピーしておきます。
クライアント ID 一覧上の、鉛筆アイコン(編集)をクリックすると、再度確認できます。
プロジェクトの削除
認証情報が不要になった場合、プロジェクトの削除は、ナビゲーションメニューの「IAM と管理」>「設定」の画面から、「シャットダウン」をクリックで、削除できます。
Claws Mail で設定
Claws Mail で OAuth 認証の設定を行います。
Claws Mail で新規アカウントを作成するか、作成済みの Gmail 用アカウントに設定してください。
設定情報
基本:サーバ情報
プロトコルPOP または IMAP を選択
受信用サーバ(POP) pop.gmail.com
(IMAP) imap.gmail.com
SMTP サーバsmtp.gmail.com
ユーザIDGmail のメールアドレス
パスワード空にしておきます
受信:POP
Authenticate before POP connection
(POP 接続の前に認証)
ON にする
認証方法OAuth2
送信:認証
SMTPサーバで認証を行うON にする
認証方法OAUTH2
ユーザID/パスワード空にしておきます。
送信のユーザIDは、常に空で構いません。
SSL/TLS
SSL/TLSを使用するPOP、SMTP 両方で ON にする
設定 (OAuth2)
「OAuth2」の項目では、まず、「Google/Gmail」を選択します。

その後、「Client ID」と「Client secret」に、認証情報でコピーした「クライアント ID」と「シークレットキー」の文字列を貼り付けます。

次に、ブラウザでユーザーの認証を行う必要があるので、「Open default browser with request」ボタンを押して、デフォルトのブラウザで開くか、「Copy link」ボタンで認証用の URL 文字列をコピーして、任意のブラウザで開いてください。

ブラウザで、Google のログイン画面が出るので、使用したい Gmail のアカウントを選択してください。

「このアプリは Google で確認されていません」などのメッセージが出ますが、OAuth のテストユーザーに、選択したアカウントが含まれていれば問題ないので、「続行」をクリックします。

「Google アカウントへのアクセスを求めています」と出るので、「続行」を押してください。
許可されれば、認証用のコードが表示されるので、それをコピーします。

Claws Mail のアカウント設定に戻って、OAuth2 の「Authorization code (認証コード)」の欄に、コピーした文字列を貼り付けます。
その後、下の「Authorize (認証)」ボタンを押すと、認証情報が確認され、自動で、以下のパスワードの文字列がセットされます。

  • 基本:サーバ情報のパスワード
  • 送信:認証のパスワード

後は、実際に受信/送信してみて、問題なければ完了です。