Gmail
OAuth2認証 送信9.3.0
R9.3.0よりWagbyのメール送信機能は、SMTP接続時の認証方式としてOAuth 2.0に対応しました。ここではその設定方法を説明します。
- Googleアカウントに対応するWagbyのアカウント(juser)を事前に用意します。一時的にシステム管理者のプリンシパルを付与します。
- GoogleクラウドにてクライアントID、クライアントシークレットを発行します。上記ページの「Google Developers Console」の説明を参考にしてください。これを client_secret.json というファイルで customize/tomcat/bin に保存します。(ビルド処理により、wagbyapp/bin に client_secret.json が含まれるようになります。) application.properties に記述するのではなく client_secret.jsonという別ファイルにしています。
- フルビルドし、Wagbyアプリケーションを起動します。
- システム管理者プリンシパルがあるため管理処理メニューを開くことができます。"WebAPI設定" を開きます。
- "OAuth2 (Mail)" 欄に⽤意されている「GMail認証ページを開く」ボタンを押下します。⼿順にしたがって認証します。認証情報は wagbyapp/bin/datastore フォルダ内に保存されます。
- このWagbyアカウントから、システム管理者のプリンシパルを除きます。
この手順でGoogleとの連携が行えました。メールテンプレートの設定では、SMTPメールサーバを "smtp.gmail.com" とします。プロトコルやSMTP認証は未設定とします。
このメールテンプレートを使ったメール送信を行うことができます。現在ログオンしているGoogleアカウントとしてメールが送信されます。なおジョブ送信の場合は、ジョブ実行アカウントに、メール送信用として準備したアカウントを指定してください。
設定項目 |
値 |
備考 |
メールサーバ |
smtp.gmail.com |
|
プロトコル |
|
(指定しない) |
SMTP認証利用 |
|
(指定しない) |
SMTP認証アカウント名 |
|
(指定しない) |
SMTP認証パスワード |
|
(指定しない) |
確認ポイントとトラブルシューティング
メール送信がうまくいかない場合、次の点を確認してください。
- wagbyapp/binに client_secret.json が含まれていますか。サンプルを次に示します。
{
"web":
{
"client_id":"xxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com",
"project_id":"wagbymailtest",
"auth_uri":"https://accounts.google.com/o/oauth2/auth",
"token_uri":"https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs",
"client_secret":"xxxxxx-xxxxxxxxxxxxxxxxx_xxxxxxxxxx",
"redirect_uris":["http://localhost:8921/wagby/redirectGoogle.html"],
"javascript_origins":["http://localhost:8921"]
}
}
- 管理処理>WebAPI設定で「OAuth2(Mail)」が設定されていますか。
- 指定したクライアントシークレットは有効ですか。無効の場合、ログに次のようなエラーが記録されます。"com.google.api.client.auth.oauth2.TokenResponseException: 401 Unauthorized"
※ この設定(GMail送信のGoogle認証)は、ログオン認証のためのOIDCの設定とは別のものです。そのためログオン認証のためにGoogleとのOIDCを行わず(つまりログオン認証自体はWagby標準の認証方法を使う)、メール送信だけGoogle認証を使うことができます。もちろん併用もできます。その場合、クライアントIDなどの情報管理は、OIDC接続用(application.propertiesに記述する)と、メール送信用(client_secret.jsonに記述する)の両方で行ってください。
R9.3.0より前のWagbyを使う場合
R9.3.0より前のバージョンのWagbyはOAuth 2 認証に未対応です。そのため Gmail 側で安全性の低いアプリとして扱われ、接続を拒否されることがあります。POPによるメール受信機能についても、同様に接続できないことがあります。
次の対策がありますが、Googleがこれらの対策でも接続を認めなくなった場合は、利用できなくなります。
送信 ※旧設定
設定項目 |
値 |
備考 |
メールサーバ |
smtp.gmail.com |
|
プロトコル |
SMTP over SSL |
標準のポート番号は 465。 |
SMTP認証利用 |
利用する |
|
SMTP認証アカウント名 |
XXX@gmail.com |
ご利用のGmailメールアカウント |
SMTP認証パスワード |
*** |
ご利用のGmailメールアカウントのパスワード |
受信 (POP) ※旧設定
設定項目 |
値 |
備考 |
メールサーバ |
pop.gmail.com:995 |
|
アカウント名 |
XXX@gmail.com |
ご利用のGmailメールアカウント |
パスワード |
*** |
ご利用のGmailメールアカウントのパスワード |
トラブルシューティング
Google社のメール送信ガイドライン [2024.2]
2024年2月よりGoogle社は新しいメール送信者のガイドラインを定めました。
Wagbyのメール送信機能でGoogleのメールアドレスに届かないという場合、下記ページをご確認いただき、ガイドラインに沿った設定を行ってください。
メール送信者のガイドライン
このガイドラインの要件の一つとして、メール送信者のドメインに対応するDNSサーバにSPFレコードを設定する必要があります。
また、送信件数の上限に関してDKIM/DMARCへの対応が求められる場合があります。詳細はGoogle社の説明ページもしくは本件を詳細に説明しているブログ記事などをご確認ください。(これらの設定もWagby側に行うものではありません。)
Office365
送信
設定項目 |
値 |
備考 |
メールサーバ |
smtp.office365.com:587 |
|
プロトコル |
SMTP STARTTLS |
|
SMTP認証利用 |
利用する |
|
SMTP認証アカウント名 |
- |
ご利用のOffice365メールアカウント |
SMTP認証パスワード |
*** |
ご利用のOffice365メールアカウントのパスワード |
トラブルシューティング
Client does not have permissions to send as this sender
次のエラーです。
com.sun.mail.smtp.SMTPSendFailedException: 550 5.7.60 SMTP; Client does not have permissions to send as this sender
こちらは、SMTP 認証に利用したメールアカウントと異なる差出人(From)を指定して、メールを送信した場合に発生することがあります。メール差出人とSMTP認証メールアカウントを同じものに指定した上でメールの送信を行ってください。