はじめに
このドキュメントでは、Microsoft Exchange Online Mail(SMTP)サーバを介した電子メール通信を可能にするISEでのOAuth 2.0の設定について説明します。
前提条件
要 件
Cisco Identity Services Engine(ISE)、シンプルメール転送プロトコル(SMTP)サーバ機能、およびOAuth認証に関する基本的な知識があることが推奨されます。
使用するコンポーネント
ISEバージョン3.5 P1(3.2パッチ8、3.3パッチ8、3.4パッチ4もこの機能をサポート)
Microsoft EntraIDおよびMicrosoft 365管理センターへのアクセス
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されたものです。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
設定
このセクションでは、次の目的で使用される電子メール通知をサポートするためのMicrosoft Entra IDおよびISEの設定について説明します。
- Eメールオプションにシステムアラームを含めることを有効にした状態で、すべての内部管理ユーザにEメールアラーム通知を送信します。 送信者の電子メールアドレスを設定するには、Administration > System > Settings > Alarm Settings > Alarm Notificationの順にクリックし、Microsoft 365 admin centerで設定されている電子メールアドレスを入力します
- スポンサーは、ログイン資格情報とパスワードのリセット手順を記載した電子メール通知をゲストに送信します。ゲストおよびスポンサーフローでは、送信者の電子メールはWork Centers > Guest Access > Settings > Guest email settings > Default 'From' email addressで、Microsoft 365 admin centerで設定されたアドレスに設定されます
- ゲストが正常に登録した後、ゲストアカウントの有効期限が切れる前に実行するアクションを使用して、ログイン資格情報をゲストが自動的に受け取れるようにします。
- パスワードの有効期限が切れる前に、ISEで設定されたISE管理ユーザ/内部ネットワークユーザにリマインダメールを送信します。
電子メールを送信するISEノード
| 電子メールの目的 |
電子メールを送信するノード |
| ゲストアクセスの有効期限 |
プライマリポリシー管理ノード(PAN) |
| アラーム |
アクティブモニタリングおよびトラブルシューティングノード(PMnT) |
| ゲストおよびスポンサーポータルからのスポンサーおよびゲスト通知 |
ポリシーサービスノード(PSN) |
| パスワードの有効期限 |
プライマリPAN |
ネットワーク図
ISEでOAuthを使用するには、次の3つの手順を実行する必要があります。
1. ISEアプリケーションをMicrosoft Entra IDに登録する
2. トークンサーバー(IDP)からアクセストークンを取得する
3. アクセストークンを使用して、SMTPサーバーへの接続要求を認証します。

コンフィギュレーション
ステップ1:ユーザの電子メールアカウントの作成
Microsoft 365管理センターから、登録ドメインにユーザの電子メールアカウントを作成します。ここでは、EntraIDアプリケーションに接続してISEから電子メールを送信するために、ユーザ名「no-reply」を使用してサンプルアカウントを作成します。
- Users > Active usersの順に移動し、ISEから電子メールを送信するユーザを追加します。
- 基本のセットアップ:ユーザの名と姓、表示名、FQDN、およびパスワードを追加し、Nextをクリックします。
- locationおよびAssign user a product license(Microsoft 365 E5 Developer)を選択し、Nextをクリックします
ユーザーの追加

4. オプション設定で、ロールユーザ(管理センターへのアクセスなし)を割り当てます。
5. 確認してFinish addingをクリックします。
6. このユーザアカウントがMicrosoft 365電子メールにアクセスできるアプリケーションを選択します。Microsoft 365管理センターで、Users > Active usersの順に選択し、ユーザアカウントを選択して、Mailをクリックします。Email apps > Manage email appsの順に選択します。他のアプリケーションとともに認証済みSMTPも選択されていることを確認します。
メールアプリの管理

ステップ2:Microsoft Entra IDにISEアプリケーションを登録する
- アクティブなサブスクリプションがあり、アプリケーション開発者以上のMS Azureアカウントを使用して、Microsoft Entra管理センターにサインインします。
- Entra IDを参照します。 App registrations サービスを検索し、New Registration をクリックします。
- アプリケーションのわかりやすい名前を入力して、「サポートされているアカウントタイプ」でアプリケーションを使用できるユーザを指定し、「単一テナントのみEntraIDテナント」を選択して「登録」をクリックし、アプリケーションの登録を完了します。
アプリケーションの登録
4. アプリケーションの「概要」ページが表示されます。アプリケーションを一意に識別するアプリケーション(クライアント)IDを記録します。ISE SMTP設定で使用するディレクトリ(テナント)IDも指定します。
アプリ登録の詳細
5. 次に、このMS Entraアプリケーションにアプリケーションクレデンシャルを追加して、アプリケーション自体を安全に認証し、ユーザの操作なしでWeb APIにアクセスします。
- 新しく登録したアプリケーションで、Manage > Certificates & secretsの順に選択します。Client secretsの下で、New client secretをクリックします。Add a client secretの下にDescriptionを入力し、Expiration durationを設定して、Addをクリックします。
- クライアントシークレットの値は、作成直後を除いて表示できないため、クライアントシークレットの値をメモしてください。シークレットを作成したら、ページを終了する前に必ずシークレットを保存してください。
- キーの有効期限もメモします。
アプリケーションクライアントシークレットの構成
6. アプリケーションは、ユーザー/管理者によってアクセス許可が与えられると、APIを呼び出す権限を与えられます。ここで、MS EntraアプリケーションにSMTP権限を追加します。
- 新しく登録したアプリケーションで、Manage > API permissionsの順に選択します。Add a permissionを選択します。
- 組織で使用するAPIタブを選択し、「Office 365 Exchange Online」を検索します。
- Application permissionsをクリックします。
- SMTPアクセスには、SMTP.SendAsApp権限を選択します。
- このアクセス許可にはテナント管理者の同意が必要です。Grant admin consent for <tenant name> をクリックします。
アプリケーションへのAPIアクセス許可の割り当て
Note: User.Read Permission for Microsoft Graph is added by default (No Admin consent for the tenant)
7. Exchangeのサービスプリンシパルは、アプリケーションがSMTP、POP、およびIMAPプロトコルのクライアント資格情報フローを介してExchangeメールボックスにアクセスできるようにするために使用されます。
テナント管理者がMicrosoft Entraアプリケーションに同意したら、管理者はExchange Online PowerShellを使用してExchangeでEntraアプリケーションサービスプリンシパルを登録する必要があります。この登録は、New-ServicePrincipalコマンドレットによって有効にされます。
- ラップトップにPowershellがインストールされていない場合は、インストールします
abc@abc-M-506L ~ % brew install --cask powershell
abc@abc-M-506L ~ % sh
sh-3.2$ brew update
sh-3.2$ brew upgrade powershell
Powershellのインストール
II. New-ServicePrincipalコマンドレットを使用するには、ExchangeOnlineManagementをインストールし、スニペットに示されているようにテナントに接続します。
sh-3.2$ pwsh
PowerShell 7.5.4
PS/Users/abc> Install-Module -Name ExchangeOnlineManagement
PS/Users/abc> Import-module ExchangeOnlineManagement
PS/Users/abc> Connect-ExchangeOnline -Organization xxxxxxxx-xxxx-xxxx-xxxx-xxxxx999be76 ---->Directory (tenant) ID
Exchange Onlineテナントへの接続
III. ExchangeでのMicrosoft Entraアプリケーションサービスプリンシパルの登録。AppIDとObjectID [OBJECT_IDは、アプリケーション登録のエンタープライズアプリケーションノード(Azure Portal)の[概要]ページのオブジェクトIDです。これは、「アプリケーション登録」ノードの「概要」ページにあるオブジェクトIDではありません。誤ったオブジェクトIDを使用すると、認証が失敗します]。
PS/Users/abc> New-ServicePrincipal -AppId xxxxxxxx-xxxx-xxxx-xxxx-xxxxxx6a953e -ObjectId b10axxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
ExchangeにEntraアプリケーションサービスプリンシパルを登録する
IV. Get-ServicePrincipalコマンドレットを使用して、登録済みのサービスプリンシパル識別子を確認します
PS/Users/abc> Get-ServicePrincipal | fl
登録済みサービスプリンシパルIDの確認
V.テナント管理者は、アプリケーションがアクセスを許可する特定のメールボックスをテナントに追加できるようになりました。この構成は、Add-MailboxPermissionコマンドレットを使用して行います。
PS/Users/abc> Add-MailboxPermission -Identity "no-reply@abcdef.onmicrosoft.com" -User b10aa0dx-xxxx-xxxx-xxxx-xxxxxxe189bb -AccessRights FullAccess
アプリケーションにアクセスするためのメールボックスのアクセス許可の追加
Microsoft Entraアプリケーションは、OAuth 2.0クライアント資格情報の許可フローを使用して、SMTP、POP、またはIMAPプロトコル経由で許可されたメールボックスにアクセスできるようになりました。
ステップ3:MS Exchange Online OAuth経由でISE SMTPユーザ認証を設定します。
Simple Mail Transfer Protocol(SMTP)サーバを設定するには、メニューアイコン(
Administration > System > Settings > SMTP Serverの順に選択します。 フィールドを設定します。
- SMTP Server Settings領域で、次の操作を行います。
- SMTPサーバ:smtp.office365.com
- SMTPポート:587
- 接続タイムアウト:60秒
- Authentication Settings領域で、トグルスイッチを使用してUse Authentication Settingsオプションを有効にします。
MS Exchange Online OAuthを選択します。次の値を入力して、Microsoft Exchange Online OAuthを設定します。
- Usernameフィールドに、Exchange Onlineユーザ名の完全な電子メールアドレスを入力します。
- クライアントIDフィールドに、Azure Entra IDアプリケーションのクライアントIDを入力します。
- テナントIDフィールドに、Azure Entra IDアプリケーションのテナントIDを入力します。
- Client Secretフィールドに、Azure Entra IDアプリケーションのクライアントシークレットを入力します。
- Expiry Dateフィールドに、クライアントシークレットの有効期限を入力します。
クライアントシークレット期限切れアラームは、この設定に基づいてトリガーされます。
- OAuth Token Endpoint API およびScopeファイルには、値が自動的に入力されます。
構成は、接続テスト操作が正常に完了した後にのみ保存できます。

SMTPサーバへのテスト接続に成功しました。
Note: To protect sensitive customer data, these configurations are excluded from Backup and Restore operations
確認
確認するには、ゲスト電子メールの設定を構成します。Work Centers > Guest Access > Guest Email Settingsに移動します。Enable email notifications to guestsを選択し、設定と保存のステップ1で設定した無応答アカウントのデフォルトの「送信元」電子メールアドレスを設定します。
ゲストの電子メール設定の変更
Work Centers > Guest Access > Portal & Components > Guest Portals > Self-Registered Guest Portal (default) > Portal Page Customization > Notifications > Emailの順に移動して、テスト電子メールを送信します。
右側のプレビューペインで、Settings > Send Test Emailの順にクリックし、電子メールIDをAddして、Sendをクリックします。
自己登録ポータルからのテスト電子メール
Outlookは、確認の手順1で設定した返信なしのアカウントから電子メールを受信する必要があります。スクリーンショットのサンプル電子メール。
Outlookで受信した電子メールのサンプル
Guest.log at debug level:
2026-02-02 05:17:34,608 INFO [admin-http-pool139][[]] cpm.guestaccess.apiservices.util.SmtpMsgRetryThreadUtil -::admin:::- sendMailMessage: Submitting Mail Job............
2026-02-02 05:17:34,608 INFO [admin-http-pool139][[]] cpm.guestaccess.apiservices.util.SmtpMsgRetryThreadUtil -::admin:::- submitMailMsgJob: SMTP server FQDN ==> smtp.office365.com
2026-02-02 05:17:34,609 INFO [admin-http-pool139][[]] cpm.guestaccess.apiservices.util.SmtpMsgRetryThreadUtil -::admin:::- sendMailMessage: Time taken for Submitting mail job is 1 Milli seconds.
2026-02-02 05:17:34,609 INFO [admin-http-pool139][[]] cpm.guestaccess.apiservices.util.SmtpMsgRetryThreadUtil -::admin:::- sendMailMessage: Calling Future.get....
2026-02-02 05:17:34,609 INFO [GUEST_ACCESS_SMTP_RETRY_THREAD][[]] cpm.guestaccess.apiservices.util.SmtpMsgRetryThreadUtil -:::::- submitMailMsgJob: Creating transport object...
2026-02-02 05:17:39,365 INFO [GUEST_ACCESS_SMTP_RETRY_THREAD][[]] cpm.guestaccess.apiservices.util.SmtpMsgRetryThreadUtil -:::::- submitMailMsgJob: Time taken for transport.sendMessage() call is 4756 Milli Seconds.
2026-02-02 05:17:39,365 INFO [admin-http-pool139][[]] cpm.guestaccess.apiservices.util.SmtpMsgRetryThreadUtil -::admin:::- sendMailMessage: Future.get status: success Time taken for Future.get method call is 4756 Milliseconds.
また、スポンサー管理者がゲストユーザにユーザクレデンシャルを再送信することで、スポンサーポータルからテストします。
スポンサーポータルからのテスト
ゲストユーザへのクレデンシャルの送信
ゲストユーザが受信した電子メールのサンプル:
ゲストユーザへの電子メール通知
トラブルシュート
クライアントシークレットの有効期限に関するアラームの確認から始めます。SMTP OAuth Client Secretに関連する新しいアラームがISEに追加されました。

さらにトラブルシューティングを進めるには、トラブルシューティングする問題に応じて、PAN、PSN、またはPMnTノードでデバッグログを有効にします。
- ロギングコンポーネント:guest-access-admin、guestaccess
- ログファイル:guest.log
接続操作のテスト
2026-02-02 05:58:21,501 DEBUG [MnT-AlarmWorkerMail-Threadpool-0][[]] cpm.guestaccess.apiservices.util.SmtpSession -:::::- SMTP settings : Username : null Port : 587 timeout : 60 isSSLEnabled: false isAuthEnabled false Server: smtp.office365.com
2026-02-02 05:58:21,501 DEBUG [MnT-AlarmWorkerMail-Threadpool-0][[]] cpm.guestaccess.apiservices.util.SmtpSession -:::::- Setting MailSessionProperties
2026-02-02 05:58:21,501 DEBUG [MnT-AlarmWorkerMail-Threadpool-0][[]] cpm.guestaccess.apiservices.util.SmtpSession -:::::- Set the FQDN : sa-ise35-1.poongarg.local
2026-02-02 05:58:21,513 DEBUG [MnT-AlarmWorkerMail-Threadpool-0][[]] cpm.guestaccess.apiservices.util.SmtpSession -:::::- SMTP settings : Username : null Port : 587 timeout : 60 isSSLEnabled: false isAuthEnabled false Server: smtp.office365.com
2026-02-02 05:58:21,513 DEBUG [MnT-AlarmWorkerMail-Threadpool-0][[]] cpm.guestaccess.apiservices.util.SmtpSession -:::::- Setting MailSessionProperties
2026-02-02 05:58:21,513 DEBUG [MnT-AlarmWorkerMail-Threadpool-0][[]] cpm.guestaccess.apiservices.util.SmtpSession -:::::- Set the FQDN : sa-ise35-1.poongarg.local
2026-02-02 05:59:14,872 DEBUG [admin-http-pool136][[]] cpm.admin.guestaccess.action.SmtpServerSettingsAction -::admin:::- inside smtpServerSettings testConnection
2026-02-02 05:59:14,872 DEBUG [admin-http-pool136][[]] cpm.admin.guestaccess.action.SmtpServerSettingsAction -::admin:::- smtpServerSecureSettings testConnection
2026-02-02 05:59:15,630 DEBUG [admin-http-pool136][[]] cpm.guestaccess.apiservices.oauth.OauthTokenCache -::admin:::- Putting value in OAuth Cache (accessToken, expiry) ..
2026-02-02 05:59:15,630 DEBUG [admin-http-pool136][[]] cpm.guestaccess.apiservices.oauth.ExchangeOnlineProvider -::admin:::- Access token acquired (no caching in this method)
2026-02-02 05:59:15,630 DEBUG [admin-http-pool136][[]] cpm.guestaccess.apiservices.oauth.OauthTokenCache -::admin:::- Putting value in OAuth Cache (accessToken, expiry) ..
2026-02-02 05:59:20,146 DEBUG [admin-http-pool136][[]] cpm.guestaccess.apiservices.util.SmtpSession -::admin:::- Successfully created mail session and connected to mail server.
2026-02-02 05:59:20,146 DEBUG [admin-http-pool136][[]] cpm.admin.guestaccess.action.SmtpServerSettingsAction -::admin:::- Successfully connected to smtp.office365.com.
保存操作
2026-02-02 05:54:07,337 DEBUG [admin-http-pool129][[]] cpm.admin.guestaccess.action.SmtpServerSettingsAction -::admin:::- inside smtpServerSettings editSubmit
2026-02-02 05:54:07,337 DEBUG [admin-http-pool129][[]] cpm.admin.guestaccess.action.SmtpServerSettingsAction -::admin:::- smtpServerSettings in editSubmit
2026-02-02 05:54:07,339 DEBUG [admin-http-pool129][[]] cpm.admin.guestaccess.action.SmtpServerSettingsAction -::admin:::- Set SMTP Server is :smtp.office365.com
2026-02-02 05:54:07,339 DEBUG [admin-http-pool129][[]] cpm.admin.guestaccess.action.SmtpServerSettingsAction -::admin:::- Set SMTP port is :587
2026-02-02 05:54:07,339 DEBUG [admin-http-pool129][[]] cpm.admin.guestaccess.action.SmtpServerSettingsAction -::admin:::- Set Connection Timout is :60
2026-02-02 05:54:07,339 DEBUG [admin-http-pool129][[]] cpm.admin.guestaccess.action.SmtpServerSettingsAction -::admin:::- Set TLS/SSL config is :false
2026-02-02 05:54:07,339 DEBUG [admin-http-pool129][[]] cpm.admin.guestaccess.action.SmtpServerSettingsAction -::admin:::- Set Authentication config is :false
2026-02-02 05:54:07,357 DEBUG [admin-http-pool129][[]] cpm.admin.guestaccess.action.SmtpServerSettingsAction -::admin:::- SMTP server settings successfully saved
接続の問題のトラブルシューティング
1. GUIエラー: smtp.office365.conへの接続に失敗しました。
接続がタイムアウトしました
2026-02-09 03:24:58,658 ERROR [admin-http-pool11][[]] cpm.guestaccess.apiservices.util.SmtpSession -::admin:::- MessagingException : com.sun.mail.util.MailConnectException: Couldn't connect to host, port: smtp.office365.com, 587; timeout 60000;
nested exception is:
java.net.SocketTimeoutException: connect timed out
Guest.logにconnect timed outと記録される。この問題を解決するには、プロキシ設定を修正する必要があります。
2. GUIエラー: OAuthエンドポイントまたはテナントIDが無効です – 説明を参照してください。テナントIDを確認する必要があります。
3. 無効なクライアントシークレット – 同じ。クライアントシークレット値を確認する必要があります
無効なクライアントシークレットエラー
4. 無効な電子メールアドレス – サービス価格の構成が正しいことを確認してください。
無効な電子メールアドレスのエラー

5. 要求されたターゲットへの有効な証明書パスが見つかりません:エントリID証明書チェーン証明書(pcapに従ってMicrosoft Azure RSA TLS発行側CAおよびDigiCertルートCAなど)がISEの信頼済み証明書ストアに存在し、「ISEおよびクライアントサーバ通信(インフラストラクチャ)での認証の信頼」ロールに対して信頼されていることを確認してください。
pcapを取得して、EntraIDから送信されたすべての証明書を確認します。
証明書の検証エラー
2026-02-10 14:32:47,528 ERROR [admin-http-pool9][[]] cpm.guestaccess.apiservices.util.SmtpSession -::admin:::- Exception : javax.mail.AuthenticationFailedException: failed to connect
2026-02-10 14:34:06,549 ERROR [admin-http-pool9][[]] cpm.guestaccess.apiservices.oauth.ExchangeOnlineProvider -::admin:::- Error acquiring token: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
2026-02-10 14:34:28,655 ERROR [admin-http-pool27][[]] cpm.guestaccess.apiservices.oauth.ExchangeOnlineProvider -::admin:::- Error acquiring token: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
