소개
이 문서에서는 CUC와 Google Workspace 간의 사서함 동기화 중단 시 문제를 해결하는 방법을 설명합니다.
사전 요구 사항
요구 사항
다음 주제에 대한 지식을 보유하고 있으면 유용합니다.
- Cisco Unity Connection(CUC)
- 구글 워크스페이스
- SMTP(Simple Mail Transfer Protocol)
사용되는 구성 요소
이 문서는 특정 소프트웨어 및 하드웨어 버전으로 한정되지 않습니다.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
배경 정보
게시자 및 가입자 서버가 작동하지만 음성 메일 전자 메일 알림(단일 받은 편지함 또는 전자 메일로 보낸 음성 메일 기능)을 보내지 못했습니다.
CUC Administration(CUC 관리) 페이지 > Unified Messaging(통합 메시징) > Unified Messaging Services(통합 메시징 서비스) > Open the Unified Messaging Account(통합 메시징 계정 열기)로 이동합니다. 컨피그레이션이 올바르게 설정되었음에도 불구하고 동기화 오류가 있습니다.
UM(Cisco Unity to 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 Console로 이동하여 이미 생성된 서비스 계정을 삭제합니다.
2단계. 새 서비스 계정을 추가합니다.
3단계. 다음 역할을 할당합니다.
- 서비스 계정 키 관리자
- 서비스 계정 사용자
- Pub/Sub 관리자
4단계. 생성된 계정을 저장하고 키 파일(JSON 유형)을 다운로드합니다.
5단계. 서비스 계정의 클라이언트 ID를 복사합니다.
6단계. OAuth 범위 필드(Google Admin Console)에서 쉼표로 구분된 범위 목록을 복사하여 붙여 넣습니다.
7단계. 범위를 승인하고 저장합니다.
8단계. 새 JSON 파일을 Google Workspace UMS 구성에 업로드하고 저장합니다.
검사가 수행된 후 서비스가 실패한 경우 연결 Google 작업 영역 알림을 수집합니다.
다음 Macrotraces를 설정합니다.
- 단일 받은 편지함 추적
- 메시지 추적 추적
다음 마이크로트레이스를 설정합니다.
- CsMbxSync: 10-23
- CsEws: 모두
- EWSN알림: 모두
- CsWebDav: 10-14
- CuEsd: 0,5,7
- MTA: 10-30
- Cuca: 모두
- CsExMbxLocator: 모두
- DBEvent: 3,12
팁: 이 마이크로추적 및 매크로추적 디버그 레벨은 모든 단일 받은 편지함/통합 메시징 문제에 적용됩니다.
Connection Google Workspace Notificer(연결 Google 작업 영역 알림)에서 유효하지 않은 "JWT: 토큰은 수명이 짧은 토큰(60분)이어야 하며 적절한 시간 내에 "오류가 표시됩니다.
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로 인증하는 데 사용된 JWT(JSON Web Token)가 유효하지 않으며, 이는 로그를 통해 여러 번 "invalid grant" 오류가 발생한 것과 같은 실패 원인입니다. 만료되었거나 타임스탬프(iat 또는 exp 값)가 허용 범위를 벗어납니다.
Google API를 사용하려면 토큰이 짧아야 하며(대개 1시간 이하) 토큰의 유효한 기간 내에 요청해야 합니다. 이는 CUC와 Google 간에 토큰이 처리되는 방식과 관련이 있습니다.
토큰의 TTL(Time-To-Live)이 60분 미만이고 NTP(Network Time Protocol)가 서버, 컴퓨터 및 인터넷에서 동기화되었는지 확인합니다.