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

はじめに
Gmail は、Gmail のサービス側で POP/IMAP を有効にすることによって、Google 製以外のメールクライアントから、メールの受信や送信をすることができます。

ただし、アカウントのユーザー名とパスワードのみを使って接続する通常の方法は、2022年6月以降、セキュリティの観点から、完全に使えない状態になってしまったので、Google 以外のアプリで Gmail を操作したい場合は、OAuth2 認証を使った接続が必須になります。

OAuth2 認証を行うことによって、ユーザー自身が、Google のサービスを使用するそれらのアプリを承認すると、安全性が高い状態として認められるので、通常通りアプリを使うことができます。
これは、Gmail に限らず、他の Google サービスを使うアプリでも同様です。

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

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

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

POP を有効にする場合は、「すべてのメールで POP を有効にする」にチェックを入れます。
IMAP を有効にする場合は、「IMAP を有効にする」にチェックを入れます。
設定を変更したら、「設定を保存」ボタンを押して、決定します。
POP と IMAP
POP は、サーバー上のメールデータを、直接 PC 上にダウンロードしてから表示します。
IMAP は、ファイルのダウンロードはせずに、サーバー上にあるメールデータを読み込んだりすることで、管理します。

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

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

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

ならば、すべてのアプリで開発者側が用意すれば良いのでは、と思うかもしれませんが、1日ごとに利用者数の制限があったり、Google の審査が必要だったりと、開発者側にとっても利用者にとっても不便な部分があるので、無料のフリーウェアなどでは、用意できない事情があります。
しかし、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 (認証)」ボタンを押すと、認証情報が確認され、自動で、以下のパスワードの文字列がセットされます。

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

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