Claris FileMaker 2023 – OAuth 2.0 によるメール送信

メール送信について

FileMaker のスクリプトステップ「メールを送信」や、
Claris FileMaker Server Admin Console での通知としてメールを送信する設定が可能です。

スクリプトステップ「メールを送信」では次の3つの方法で送信できます。

  • 電子メールクライアント
  • SMTP サーバー
  • OAuth 2.0 (新機能)

またClaris FileMaker Server Admin Console での通知でも、
これまでの SMTP サーバーの設定を埋め込む方法に加えて、
OAuth 2.0 の設定による送信が可能になりました。

OAuth 2.0 で送信の動作

FileMaker の中では、「OAuth 2.0」と表記されていますが正確には次のような動きをしてくれます。

OAuth 2.0 によるサービス アカウントで認証し、API によるメール送信する

そのため設定には、サービス アカウントの作成とkeyの作成、メール送信 API の許可、ドメイン権限委譲、などが必要です。

「SMTP サーバーの方が楽じゃね?」と思われるあなたは 正解 です。
SMTP サーバー の設定で可能な場合は、無理に OAuth 2.0 による送信は使わなくてもいいかもしれません。
SMTP では実現できない場合や、次項のようなメリットを活かしたいときに利用すると良いでしょう。

OAuth 2.0 を使うメリット

今のところ思いつく OAuth 2.0 を使う場合のメリットは次の3つです。

  • https TCP 443 番ポートを使って送信できる
  • API の送信上限数までの多くのメールを送信できる
  • ドメイン内のアカウントの誰にでも成り代わって送信できる
https TCP 443 番ポートを使って送信できる

TCPポート 25 や 587 番の OUT 側がファイヤーウォールでブロックされているケースがあります。
大手企業でネットワークを細かく制御されているところや、
AWS や Google Cloud などでは SMTP 25番ポートをデフォルトで制限しています。
管理者に言って必要な制限を解除してもらえればいいんですが、
許してくれない場合も多々あります。

OAuth 2.0 は実際は RESTful なWeb API で送信するので、
https TCP 443 番ポートを使います。
このポートはごく一般的なポートであり、さまざまなアプリケーションが使っているので、
制限を掛けていないことが多いです。
もしこのポートはまで制限されている環境であれば、
それはインターネットへ出ることは許さないこととほぼ同じといえます。

API の送信上限数までの多くのメールを送信できる

SMTP サーバー による送信は、
これまで悪用されることが多く、
「人間の操作で送信するならせいぜいこれぐらいが上限では」といった数に制限されているのがほとんどです。
Google の Gmail での SMTP 送信は1日の送信上限を 500 通 、ないしは 2000 通としています。
Google Workspace における Gmail の送信制限

また、SMTP サーバー による大量メール送信はあらゆるセキュリティーチェックから監視されており、
10 年以上前の話ですが弊社内の FileMaker からわずか 200 件程度のイベント告知メールを Loop スクリプトで送信したところ、
10 分後にはインターネットプロバイダーから電話がかかってきたぐらいです。
(IP アドレスやメールサーバーがブラックリスト入りしてしまうためプロバイダーも必死だそうです)

上記のように SMTP サーバー による送信は大量送信には不向きなんですが、
API はもともと人間が使うものでなくプログラムが使うものなので、
送信の上限や制限は緩和されています。
Google の Gmail API では 1秒あたり 2.5通、1日では100万通を超える送信が可能です。
Gmail API 使用量上限

とはいえ、宣伝メールとか大量に送るのはヤメましょう。
迷惑メール扱いされ、通常のメールを送っても届かなくなってしまいますので。
Gmail ユーザーへのメールがブロックされたり迷惑メール扱いされたりしないようにする

ドメイン内のアカウントの誰にでも成り代わって送信できる

メールを送信するときにいつも固定の送信元ではなく、
FileMaker カスタム App によっては送信元をそのレコードに紐づく送信者に切り替えて送信したい場合があるでしょう。

SMTP サーバー だと送信者を切り替えしたくても、
SMTP パスワードを事前に送信者ごとに保存しておく必要があるので現実的ではありません。

OAuth 2.0 では認証はサービス アカウントが行い、
そのサービス アカウントへ「ドメイン権限委譲」、
つまり弊社であれば @kotovuki.co.jp のメールアドレスすべてに成り代わって送信できます。

成り代わって送信したメールであっても、ちゃんと各送信者の「送信済み」に履歴が残ります。
FileMaker カスタム App の幅が広がりますよね。

Google アカウントであっても使えない条件

Gmail であっても今回の FileMaker スクリプトの OAuth 2.0 によるメール送信は、
次のいずれかに該当する場合は送信できません。

  • ***@gmail のドメイン
  • Gmail が使用できない Cloud Identity アカウント
  • Gmail がない Google Workspace Essencials の各プラン

Google Workspace の Goolge アカウントを使った設定手順

Google Cloud Console の「API と サービス」を開く

URL は https://console.cloud.google.com/apis/dashboard?hl=ja です。
適切なプロジェクトを選択すること、
もしくは新たなプロジェクトを作成し、
「API と サービス」を開いてください。

Gmail API を有効にする

「+ API とサービスの有効化」をクリックすると、
「API ライブラリ」の画面になります。

中段の検索窓に、「Gmail」を入れて検索実行すると、

Gmail API をはじめ、いくつかヒットしたAPIがリストアップされます。
Gmail API を選択します。

「有効にする」ボタンをクリックします。

サービス アカウント を作成する

「認証情報」をクリックします。

「+ 認証情報を作成」をクリックし、
「サービス アカウント」をクリックします。

サービス アカウント名、サービス アカウント IDを適当に決めて、
「完了」をクリックします。

プライベートキーの取得

作成されたサービス アカウントをクリックします。

「キー」タブをクリックし、
「鍵を追加」ー「新しい鍵を作成」をクリックし、
キーのタイプ「JSON」になっていることを確認して、
「作成」をクリックします。

拡張子 .json のファイルがダウンロードされます。
あとで FileMaker に登録する必要がありますので、
ダウンロード場所を確認しておいてください。

ドメイン権限委譲の設定

「詳細」タブをクリックし、
一意の ID をクリップボードにコピーするなどして控えておきます。

ここからは Google Workspace の Admin Console を開きます。
https://admin.google.com/
もちろん開くためには権限を持っていないと入れませんので、
必要な権限を持っている人にお願いしてください。

セキュリティ ー アクセスとデータ管理 ー API の制御 を開きます。

画面の下へスクロールし、
「ドメイン全体の委任」パートにある、
「ドメイン全体の委任を管理」ボタンをクリックします。

「新しく追加」をクリックします。
「クライアント ID」には、サービス アカウントを作成後に控えておいた「一意の ID」を入れ、
「OAuth スコープ」には
https://www.googleapis.com/auth/gmail.send
を入れ、
「承認」をクリックします。

メールを送信 スクリプトステップへの設定

「メールを送信」スクリプトステップの、
送信経由:「OAuth 2.0」を選択して、
「指定…」ボタンをクリックします。

「サービスアカウント電子メール」には、サービス アカウントのメールを入れ、
「Admin ユーザ電子メール」は、送信者の Google アカウントを入れ、
「プライベートキー」は、先程ダウンロードした json ファイルを入れます。

以上で設定は完了。
あとは、宛先やメッセージ等はこれまで通りです。

OAuth 2.0 オプション について

「Admin ユーザ電子メール」に設定する Google アカウント は、
同じGoogle Workspace 内の Gmail が使えるアカウントであれば、
誰を設定しても、その人に成り代わってメール送信できます。

「プライベートキー」に入れるテキストは次のいずれでも大丈夫です。

  • .json ファイルの中身をすべて入れる。
    ただし中身にはダブルコーテーションが入っているので、
    FileMaker へは ” を \” に置換して入れる。
  • .json ファイルの中で実際必要なのは private_key の値だけ。
    FileMaker へは —–BEGIN PRIVATE KEY から始まる値だけを入れる。
  • 上記をテキストエディタで開いた場合は改行は\nに置換されているので、
    \nを除いた値を入れる。

「名前」には、Google Workspace に登録されている氏名と完全に一致させておかないと、
受信する側のメールサーバーやセキュリティソフトによっては、
迷惑メール判定されてしまいます。
そのため確実に届けるには空欄のままが良いかもしれません。

「メールアドレス」は「Admin ユーザ電子メール」と同じものを入れるか、空欄にしましょう。
ここに他のメールアドレスを入れても、
受信する側のメールサーバーやセキュリティソフトによって、
設定値が無視されるか、迷惑メール判定されてしまいます。
そのため確実に届けるにはこちらも空欄のままが良いかもしれません。

「返信先アドレス」は有効です。
必要であれば設定し、不要であれば空欄です。

Google Workspace ライセンスの販売

突然ですけど弊社は Google Cloud Partner なので、
Google Workspace ライセンスの販売も可能です。

直接契約ではクレジットカードのみになりますし、
別途ドメインの更新も必要なので、
弊社にお任せいただくと楽できると思います。

実は弊社のお客様の中には1ユーザだけの有料契約のお客様がいくつもいらっしゃいます。
FileMaker との連携用途に、
Gmail API で1つのメールアドレスだけ送受信とか、
FileMaker Server と Google Drive API と連携して1ユーザ 2TB の容量使いたいとか、
Google Chat で有料アカウントでグループを作って Webhook を使い、その他は無料アカウントを使うとか、
Google Meet だけ使いたいとか理由はさまざまです。

ぜひ弊社までお問い合わせください。

 

 

【 余談 】
最近下記リンク先への流入増大したいこともあり、
流入量が多いとブログの価値が高まりますます投稿を加速していきたいと思います。
リンク先を開いていただけると大変助かります。
Claris International Inc. (日本語)
ご協力いただけましたら幸いです。