프라이버시 아키텍처
"메일 본문은 기기를 떠나지 않습니다"는 약속이 아니라 구조입니다. 이 페이지는 메일메일이 어떤 데이터를 어디로 보내고, 무엇을 코드 차원에서 불가능하게 만들어 두었는지 그대로 적습니다. 법적 고지는 개인정보처리방침에 있습니다.
한눈에 보기
메일메일에는 메일을 저장하거나 중계하는 서버가 없습니다. iPhone이 메일 제공자(네이버·Gmail 등)에 직접 접속하고, 요약·번역은 iPhone 안의 Apple 온디바이스 모델이 만들며, 워치에는 요약 카드만 건너갑니다. 저희가 운영하는 유일한 서버는 "새 메일이 있을지 모르니 깨어나라"는 신호를 보내는 신호기이고, 그 서버가 아는 것은 푸시 토큰 하나입니다.
1. 기기를 떠나지 않는 것
| 데이터 | 어디에 있나 | 보호 |
|---|---|---|
| 메일 본문 | iPhone/iPad 로컬 DB(SwiftData) | 기기 최초 잠금 해제 전까지 암호화(iOS 파일 보호). 워치·서버·로그 어디에도 안 감 |
| AI 요약(헤드라인·핵심·분류) | iPhone 로컬 DB → 워치 카드 | Apple Foundation Models로 기기 안에서 생성. 외부 AI API 호출 없음 |
| 번역문 | 메모리에만 | Apple Translation(온디바이스)으로 번역 → 요약 직후 폐기. 저장 안 함 |
| 앱 비밀번호 · OAuth 토큰 | iPhone 키체인 | 기기 전용(iCloud 키체인 동기화 차단). 워치·서버 미전송 |
| 발신자·제목 | iPhone 로컬 DB → 워치 카드 | 워치 카드에는 발신자명·제목·요약만(본문 필드 자체가 없음) |
| 프로필 아바타 사진 | iPhone 앱 전용 폴더 | 256px 썸네일만 보관, 원본 폐기. 백업·동기화 없음 |
| 개인화 학습 데이터 | iPhone 로컬 | 발신자는 해시 토큰으로만 저장(이메일 평문 없음). Pro 동기화 시에도 가중치·해시만 E2E 암호화 |
2. 기기를 떠나는 것 — 전부
아래가 iPhone 밖으로 나가는 데이터의 전체 목록입니다. 이 표에 없는 전송은 없습니다.
| 어디로 | 무엇을 | 왜 |
|---|---|---|
| 메일 제공자(네이버·다음·Gmail·회사 IMAP) | IMAP 로그인·메일 읽기·읽음/보관 플래그 | 당신 메일함과의 직접 TLS 연결. 저희를 거치지 않음 |
| Microsoft(Outlook) | OAuth 로그인, Graph API 메일 읽기 | 동일 — 직접 연결. 토큰은 키체인 |
| 메일메일 깨우기 신호기(Cloudflare Worker) | { token, env } — APNs 푸시 토큰과 환경값, 정확히 두 필드 | 약 10분마다 "내용 없는" 푸시로 앱을 깨워 백그라운드 sync. 그 외 키가 섞이면 서버가 400으로 거부 |
| 같은 신호기(Outlook 사용 시) | 구독 ID, 푸시 토큰, 환경, 검증 해시 | Microsoft가 "새 메일" 알림을 보낼 곳. 메일 내용은 포함되지 않음 |
| Apple(App Store) | 구매·영수증 | StoreKit. 검증도 기기 안에서 |
| Apple(iCloud, Pro 선택) | 암호화된 개인화 프로파일 블롭 | 기기 이전 시 학습 보존. 내용 = 가중치·발신자 해시·카테고리 친화. 키는 iCloud 키체인(저희는 복호 불가) |
| 사용자 본인의 미리 알림 앱 | 추출된 할 일 제목 + 메일 제목 | Pro 기능, 사용자가 탭할 때만. 본문 아님 |
직접 확인하는 법: Proxyman·Charles 같은 프록시로 트래픽을 보면 mailmail.app 도메인으로 가는 요청은 /v1/register·/v1/unregister(Outlook 사용 시 /v1/graph/*)뿐이고, 본문에는 토큰 문자열만 있습니다.
3. 하지 않는 것
- 회원가입·계정 없음. 이메일 주소를 저희에게 알려줄 일이 없습니다.
- 광고 SDK·분석 SDK·크래시 리포팅 SDK 없음. 크래시·성능 진단은 Apple MetricKit을 기기 안에서 개수로만 집계합니다.
- 클라우드 AI 없음. Apple Intelligence 미지원 기기에서도 클라우드로 대체하지 않고, "요약 불가"를 정직하게 표시합니다.
- 메일 본문 로그 없음. 디버그 빌드에서도 본문을 로그에 남기는 코드가 없습니다.
- 워치로 본문 전송 없음. 워치 카드 타입에는 본문 필드가 존재하지 않습니다.
4. 코드가 강제하는 방법
정책이 아니라 타입과 링크 구조로 막습니다. 나중에 실수로 뚫리기 어렵게 만든 장치들입니다.
- 경계 타입 — 워치로 가는 카드, 서버로 가는 등록 페이로드, 미리 알림 요청은 각각 별도 구조체이며 본문이 들어갈 필드가 없습니다. 단위 테스트가 "본문이 통과하면 실패"를 회귀 가드로 겁니다.
- 클라우드 추론 코드 미포함 — 실험용 클라우드 추론 인터페이스는 별도 패키지로 분리돼 있고, 출시 앱은 그 패키지를 링크하지 않습니다. 런타임 스위치가 아니라 컴파일조차 안 됩니다.
- 서버가 잉여 데이터를 거부 — 신호기는 정확히 두 필드만 받도록 스키마 검증하고, 초과 키가 있으면 400을 반환합니다.
- 키체인 기기 전용 — 자격증명은
AfterFirstUnlockThisDeviceOnly로 저장돼 iCloud 키체인으로 동기화되지 않습니다. - 메일마다 새 AI 세션 — 요약 세션은 메일 단위로 생성·폐기되어 다른 메일의 내용이 프롬프트에 섞이지 않습니다.
5. 정직하게 말하는 한계
- 메일 제공자(네이버·구글·마이크로소프트)는 당연히 당신의 메일을 갖고 있습니다. 메일메일은 그 사이에 아무것도 추가하지 않을 뿐입니다.
- AI 요약은 iPhone 15 Pro 이상(Apple Intelligence)에서만 동작합니다. 대체 클라우드를 두지 않은 대가입니다.
- Apple 온디바이스 모델·번역 엔진은 Apple의 것입니다. 기기 안에서 도는 것은 확인했지만, 그 내부 동작은 Apple의 공개 문서를 따릅니다.
- Outlook은 Microsoft 로그인 화면을 거칩니다. 그 로그인 자체는 Microsoft의 정책을 따릅니다.
변경 이력
- 2026-09-11 — 최초 공개(빌드 24 기준).