iCloud 꺼도 Mail은 왜 서버에 접속할까

메일도 연락처도 iCloud 동기화를 꺼뒀는데, 이메일을 보낼 때마다 애플 서버에 접속한다면 어떨까요? macOS Mail 앱에서 실제로 포착된 예상 밖의 iCloud 통신과 개인정보 보호 문제를 살펴봤어요.
iCloud를 꺼도 발생한 Mail 앱의 서버 접속
핵심은 iCloud와 무관한 계정끼리 메일을 보냈는데도 iCloud 연결이 발생했다는 점이에요. 테스트 환경에서는 iCloud 메일 계정이 없었고, 시스템 설정의 Mail 및 연락처 동기화도 모두 비활성화된 상태였습니다.
그런데 비 iCloud 계정에서 다른 비 iCloud 계정으로 이메일을 보내자 네트워크 감시 도구 Little Snitch가 즉시 외부 연결을 감지했어요. 같은 방식으로 여러 차례 테스트해도 결과는 반복됐습니다.
이는 사용자가 화면에서 동기화를 껐더라도, Mail과 연관된 일부 시스템 기능이 별도로 CloudKit을 사용할 가능성을 보여줘요. 설정 스위치만 보고 모든 관련 통신이 중단됐다고 단정하기 어려운 이유입니다.

cloudd와 nsurlsessiond가 연결한 주소
통신을 시도한 주체는 macOS 시스템 프로세스인 cloudd와 nsurlsessiond였어요. 두 프로세스 모두 gateway.icloud.com의 443 포트로 접속했으며, TCP 기반 HTTPS와 UDP 기반 QUIC(빠른 전송을 위한 네트워크 프로토콜)를 함께 사용했습니다.
확인된 요청 경로는 다음과 같아요.
cloudd:/ckdatabase/api/client/query/retrieve로 데이터를 조회하려 했어요.nsurlsessiond:/ckdatabase/api/client/record/save로 레코드를 저장하려 했어요.- TCP 또는 UDP 연결을 차단하면 다른 프로토콜로 재시도하는 움직임도 나타났어요.
경로에 포함된 ckdatabase는 애플의 클라우드 데이터 저장 기술인 CloudKit과 관련돼요. 다만 iCloud는 인증서 고정(Certificate Pinning)을 사용하기 때문에 Proxyman으로 패킷을 복호화할 수 없었고, 네트워크 확장 기능에서도 암호화 전 데이터를 확인하지 못했습니다.
단서는 ‘이전 수신자 목록’에서 발견
터미널 로그를 분석한 결과, 가장 유력한 원인은 Mail의 **이전 수신자 목록(Previous Recipients)**이었어요. 이메일을 보낸 직후 CloudKit 로그에 com.apple.mail.recents라는 영역이 등장했기 때문입니다.
확인에 사용된 명령어는 다음과 같아요.
log stream --predicate 'subsystem == "com.apple.cloudkit"' --info --debug
애플 문서에 따르면 이전 수신자 목록은 동일한 Apple 계정으로 로그인하고 iCloud 연락처를 켰을 때 기기 간 공유됩니다. 하지만 이번 환경에서는 연락처와 Mail이 모두 꺼져 있었기 때문에, 설정 설명과 실제 동작 사이에 차이가 있는 셈이에요.
로그에서는 com.apple.icloud-bcassets-brandedemail도 발견됐지만, 차단 시 연결 오류가 나타난 com.apple.mail.recents와 달리 직접적인 관련성은 확인되지 않았습니다. 따라서 현재로서는 이전 수신자 정보 동기화 시도가 가장 설득력 있는 추정이에요.

로컬 파일과 이메일 주소 데이터 확인
Find Any File로 시스템 내부를 조사하자 com.apple.mail.recents를 비롯해 캘린더, FaceTime, 위치 관련 최근 기록 파일들이 발견됐어요. 파일은 recentsd 컨테이너의 SyncedPreferences 경로에 저장된 NSKeyedArchiver plist 형식이었습니다.
다행히 해당 plist 파일 자체에서는 개인 데이터가 확인되지 않았어요. 하지만 별도의 Recents 폴더에 있는 SQLite 데이터베이스에는 Mail 앱의 과거 수신자 이메일 주소가 실제로 저장돼 있었습니다.
현재 증거만으로 이 이메일 주소들이 iCloud에 전송됐다고 확정할 수는 없어요. 그럼에도 관련 기능을 모두 껐는데 최근 기록용 동기화 구조와 서버 접속이 작동한다는 사실은 충분히 점검할 필요가 있습니다.
사용자가 취할 수 있는 대응 방법
이 통신이 불편하다면 Little Snitch에서 cloudd와 nsurlsessiond의 gateway.icloud.com 연결을 차단할 수 있어요. iCloud 동기화 테스트나 관련 기능이 필요할 때만 규칙을 잠시 해제하는 방식이 현실적입니다.
다만 두 프로세스는 다른 macOS 기능에서도 사용될 수 있으므로 무조건적인 영구 차단은 기능 오류를 유발할 수 있어요. 먼저 로그를 확인하고, Mail 전송 직후 어떤 요청이 발생하는지 비교한 뒤 제한적으로 규칙을 적용하는 것이 안전합니다.
결국 쟁점은 이메일 내용이 전송됐는지 여부만이 아니에요. 사용자가 메일을 보냈다는 시점 자체가 애플 서버에 알려질 수 있다는 점도 개인정보 보호 관점에서 중요합니다. macOS를 사용한다면 iCloud 설정뿐 아니라 실제 네트워크 동작까지 한 번 확인해보는 것이 좋겠어요.






