はじめに
このドキュメントでは、CUCとGoogle Workspace間でメールボックスが同期されない場合のトラブルシューティング方法について説明します。
前提条件
要件
次の項目に関する知識があることが推奨されます。
- Cisco Unity Connection(CUC)
- Googleワークスペース
- Simple Mail Transfer Protocol(SMTP)
使用するコンポーネント
このドキュメントの内容は、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
背景説明
パブリッシャおよびサブスクライバサーバは動作しているが、ボイスメール通知(シングルインボックスまたはボイスメールから電子メールへの機能)の送信に失敗した。
CUC Administration Page > Unified Messaging > Unified Messaging Services > Unified Messaging Accountに移動します。設定が正しく行われていても、同期エラーが発生します。
UM(Cisco UnityからGoogle Mail)の同期外れ
UM検証結果
このエラーも発生します。
Status: User mailbox is out of sync, press Reset for resync
Unified Messaging Service: Cisco Unity to Google Mail
Service Type: Google Workspace
User Corporate Email Address: userid@domain.com
[Checked] Synchronize Connection and Google Workspace Mailboxes (Single inbox)
トラブルシュート
Googleの設定
ステップ 1:Googleコンソールに移動し、作成済みのサービスアカウントを削除します。
ステップ 2:新しいサービスアカウントを追加します。
ステップ 3:次のロールを割り当てます
- サービスアカウントキー管理者
- サービスアカウントユーザ
- パブリッシュ/サブ管理
ステップ 4: 生成されたアカウントを保存し、キーファイル(JSONタイプ)をダウンロードします。
ステップ 5:サービスアカウントのクライアントIDをコピーします。
手順 6: OAuthスコープフィールド(Google管理コンソール)で、次のURLをカンマ区切りのスコープリストにコピーして貼り付けます。
手順 7:スコープを承認し、保存します。
ステップ 8: 新しいJSONファイルをGoogle Workspace UMS設定にアップロードして保存しました。
チェック実行後にサービスが失敗した場合は、Connection Google Workspace Notifierを収集します。
次のマクロトレースを設定します。
- 単一受信トレイのトレース
- メッセージトラッキングトレース
次のマイクロトレースを設定します。
- CsMbxSync:10-23
- CsEws:すべて
- EWSNotify:すべて
- CsWebDav:10 ~ 14
- CuEsd: 0、5、7
- MTA:10-30
- Cuca:すべて
- CsExMbxLocator:すべて
- DBEvent: 3,12
ヒント:このマイクロトレースおよびマクロトレースのデバッグレベルは、すべての単一受信トレイ/ユニファイドメッセージングの問題に適用されます。
Connection Google Workspace Notifierに、「Invalid “JWT: Token must be a short-lived token (60 minutes) and in a reasonable time frame”」というエラーが表示されます。
14:14:10.894 |3917,,,CuGSuiteSyncSrv,22,GSuiteServiceOpTh-40,com.cisco.unity.gsuite.services.GSuiteActionItems.sendMessage - Try # 1 Google Api send message on gsuite
14:14:11.052 |3917,,,CuGSuiteSyncSrv,23,GSuiteServiceOpTh-40,com.cisco.unity.gsuite.services.GSuiteActionItems.sendMessage - Google Api send message on gsuite failed with message 400 Bad Request
{
"error" : "invalid_grant",
"error_description" : "Invalid JWT: Token must be a short-lived token (60 minutes) and in a reasonable timeframe. Check your iat and exp values and use a clock with skew to account for clock differences between systems."
}
14:14:11.052 |3917,,,CuGSuiteSyncSrv,1,GSuiteServiceOpTh-40,com.cisco.unity.gsuite.serviceability.CuGsuiteSyncPerfCounters.incrementHttpsRqstError - Incrementing Http Request Failed counter by 1
14:14:11.052 |3917,,,CuGSuiteSyncSrv,1,GSuiteServiceOpTh-40,com.cisco.unity.gsuite.serviceability.CuGsuiteSyncPerfCounters.incrementHttpsRqstError - Total Http Request Failed after update: 3543
14:14:11.052 |3917,,,CuGSuiteSyncSrv,24,CxnResetSynchService.createNewMsgOnGSuite - 400 Bad Request
{
"error" : "invalid_grant",
"error_description" : "Invalid JWT: Token must be a short-lived token (60 minutes) and in a reasonable timeframe. Check your iat and exp values and use a clock with skew to account for clock differences between systems."
}
Clock Skew: This suggests that the system clock on the server generating the token may be out of sync with Google's servers. Even a small mismatch (e.g., a few seconds) can cause this issue.
14:14:11.052 |3917,,,CuGSuiteSyncSrv,24,com.cisco.unity.gsuite.services.GSuiteActionItems.sendMessage(GSuiteActionItems.java:1132)
com.cisco.unity.gsuite.GSuiteMessageUtility.createMessageOnGmail(GSuiteMessageUtility.java:615)
com.cisco.unity.gsuite.GSuiteMessageUtility.createNewMessageOnGmail(GSuiteMessageUtility.java:475)
com.cisco.unity.gsuite.reset.CxnResetSynchService.createNewMsgOnGSuite(CxnResetSynchService.java:343)
com.cisco.unity.gsuite.reset.CxnResetSynchService.checkWhereToSync(CxnResetSynchService.java:318)
com.cisco.unity.gsuite.reset.CxnResetSynchService.syncCnxMessage(CxnResetSynchService.java:282)
com.cisco.unity.gsuite.reset.CxnResetSynchService.sync(CxnResetSynchService.java:755)
com.cisco.unity.gsuite.reset.UMASyncWorker.resync(UMASyncWorker.java:220)
com.cisco.unity.gsuite.reset.UMASyncWorker.run(UMASyncWorker.java:109)
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
java.util.concurrent.FutureTask.run(FutureTask.java:266)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
java.lang.Thread.run(Thread.java:748)
解決方法
Google APIでの認証に使用されるJSON Web Token(JWT)が無効であるため、ログで「invalid grant」エラーが何度も発生します。有効期限が切れているか、タイムスタンプ(iat値またはexp値)が許容範囲外です。
Google APIでは、トークンの有効期間が短いこと(通常は1時間以内)と、トークンの有効期間内に要求を行うことが要求されます。 これは、CUCとGoogle間でのトークンの処理方法に関連しています。
トークンの存続可能時間(TTL)が60分未満であり、ネットワークタイムプロトコル(NTP)がサーバ、コンピュータ、およびインターネット間で同期されていることを確認します。