diff --git a/internal/mailsync/mailsync.go b/internal/mailsync/mailsync.go index df857b2..9adffa1 100644 --- a/internal/mailsync/mailsync.go +++ b/internal/mailsync/mailsync.go @@ -163,6 +163,14 @@ func (s *Service) FetchForDomain(ctx context.Context, mailboxes []string, domain if box == "" { continue } + // 도메인 전체 위임은 이 서비스계정이 속한 Workspace 도메인 사용자만 impersonate 가능. + // 멤버 목록에 섞인 개인 Gmail(@gmail.com)이나 아직 프로비저닝 안 된 계정은 + // token 교환이 unauthorized_client로 실패한다. 그 메일박스만 건너뛰고, 프로젝트 + // 전체 동기화를 실패로 마크하지 않는다(나머지 멤버 메일은 정상 수집). + if _, err := s.accessToken(ctx, box); err != nil { + log.Printf("mailsync: 메일박스 %s 건너뜀 (impersonation 불가): %v", box, err) + continue + } pageToken := "" fetched := 0 for {