당신의 메일은 당신의 것입니다. 하지만 그 전부를 한 번에 Gmail에서 꺼내는 일은 Google이 순순히 허락하지 않습니다. 하나의 계정이 하루에 내려받을 수 있는 바이트 수에는 공개된 상한이 있고, 이를 넘으면 계정은 응답을 멈춥니다 — 1분이 아니라, 하루가 될 수도 있습니다.

이메일을 읽는 동안에는 아무도 이 제한에 부딪히지 않습니다. 전체 아카이브를 통째로 가져가려 할 때 처음으로 마주하게 됩니다.

Google이 공개하는 수치

제한은 사용자당, 일당 기준이며, Google은 이를 모든 Workspace 버전에 동일하게 적용합니다:

  • IMAP 다운로드: 하루 2,500 MB. 백업, 아카이버, 데스크톱 메일 클라이언트와 관련된 항목입니다.
  • POP 다운로드: 하루 1,250 MB. 절반밖에 안 되며, POP으로 보관하지 말아야 할 이유가 하나 더 늘어난 셈입니다.
  • 웹 클라이언트에서의 다운로드: 하루 1,250 MB. 브라우저에서 첨부파일을 끌어내는 것도 포함됩니다.
  • IMAP 업로드: 하루 500 MB. 이 한도는 메일을 Gmail 계정에서 꺼낼 때가 아니라, Gmail 계정으로 옮겨 넣을 때 문제가 됩니다.
  • 웹 클라이언트에서의 업로드: 하루 1,500 MB.

한도를 넘으면 계정이 일시적으로 정지됩니다. Google의 표현을 그대로 빌리면, 정지는 보통 한 시간 정도 지속되지만 최대 24시간까지 이어질 수 있습니다. 로그인해도 메일함 대신 오류만 뜹니다. 아무것도 삭제되지는 않지만, 아무것도 사용할 수도 없습니다.

Google은 이러한 제한이 예고 없이 바뀔 수 있다고도 밝히고 있는데, 이는 이 숫자를 약속으로 여기고 무언가를 설계하지 말라는 점잖은 표현입니다. 현재 수치는 Google의 Gmail 대역폭 제한 페이지.

2.5기가바이트는 나눠 보기 전까지는 넉넉해 보입니다

대학 시절부터 써온 메일함은 좀처럼 작지 않습니다. 15년치 영수증, 친척들이 보낸 사진, 회계사가 보낸 PDF, 10년치 뉴스레터가 금세 쌓여 30, 40, 60 GB는 흔한 수준입니다.

하루 2,500 MB라면, 40 GB짜리 메일함을 내려받는 데만 최소 16일이 걸립니다. 16시간이 아니라 16일입니다 — 그것도 다른 무엇도 계정을 건드리지 않고, 단 1바이트도 두 번 받지 않는다는 전제하에서입니다.

어떤 메일함이든 상한으로 나누면 일정이 나옵니다. 10 GB 계정은 나흘. 50 GB는 20일. 100 GB는 40일입니다. 그리고 서버가 이미 거부한 뒤에도 도구가 계속 재시도하면, 초과할 때마다 다음 날 할당량을 삼키는 정지를 부를 수 있습니다. 그러면 이 숫자는 모두 두 배가 됩니다.

Gmail 메일함을 내려받는 데 걸리는 일수(용량별) 두 개의 직선. 일일 한도에서 멈추면 10 GB는 나흘, 100 GB는 40일이 걸립니다. 정지를 무릅쓰고 재시도하면 각각 8일과 80일로 두 배가 됩니다. 02040608010255075100 재시도하다 정지한도에서 멈춤 80일40일 일수메일함 크기(GB)
벤치마크가 아니라 산술입니다. 메일함 크기를 공개된 하루 2,500 MB로 나눈 값입니다. 위쪽 선은 초과할 때마다 일시 중지 대신 계정 정지를 얻는 경우의 같은 메일함입니다.

마지막 부분이 의외라고 느끼는 사람이 많습니다. 예산은 앱이 아니라 계정에 속합니다. 백그라운드에서 동기화하는 휴대폰, 큰 폴더를 새로고침하는 노트북의 메일 클라이언트, 메일함을 훑고 있는 보관 도구까지 모두 같은 2,500 MB에서 끌어다 씁니다. 백업 자체는 아무 문제 없이 얌전하게 작동해도, 동시에 다른 세 클라이언트가 바빴다는 이유만으로 계정이 잠길 수 있습니다.

청구서를 좌우하는 건 첨부파일입니다. 일반 텍스트 메시지 10만 통이 사진을 첨부한 이메일 400통보다 가벼울 수 있습니다. 즉 메시지 개수로 따진 메일함 크기는 며칠이 걸릴지에 대해 거의 아무것도 말해주지 않습니다.

Gmail은 메시지 하나를 여러 번 세기도 합니다

Gmail은 라벨인 척하는 폴더 시스템이 아닙니다. 폴더인 척하는 라벨 시스템입니다. IMAP상에서 라벨 세 개가 붙은 메시지 하나는 세 개의 메일함에, 그리고 All Mail에도 나타납니다. 모든 폴더를 훑으며 찾은 것을 전부 내려받는 도구는 그 메시지를 네 번 내려받게 되고, 일일 제한에도 네 번 청구됩니다.

Gmail에 연결하는 모든 IMAP 클라이언트에 적용되는 실용적인 규칙은 All Mail 또는 개별 라벨 중 하나만 선택하고 둘 다 선택하지 않는 것입니다. All Mail에는 모든 메시지가 정확히 한 번씩만 들어 있어 완전한 아카이브를 만들기에 효율적인 선택입니다. 둘 다 선택하는 것은 하루치 대역폭을 오후 한나절에 소진하고, 그 대가로 중복본까지 떠안는 가장 흔한 방법입니다.

한계에 부딪히면 벌어지는 일

경고 같은 건 없습니다. 서버는 그냥 거부하기 시작하고, 클라이언트에 뜨는 것은 대개 "오늘 너무 많이 내려받았습니다" 같은 명확한 메시지가 아니라 도움이 안 되는 인증 오류나 연결 오류입니다. 이 상황을 인식하지 못하는 소프트웨어는 이를 일시적인 실패로 여기고 재시도합니다 — 정중하게, 끈질기게, 반복해서, 이미 정지된 계정을 상대로.

진짜 손해는 여기서 발생합니다. 제한 자체는 시간을 잃게 할 뿐이지만, 잠긴 계정에 계속 재시도하면 다음 날까지 잃게 됩니다.

이미 무엇을 가지고 있는지 아는 아카이버. MailVault는 메일을 한 번만 읽어 당신의 것인 파일로 보관하고, Gmail이 오늘은 여기까지라고 말하면 조용히 멈춥니다.

MailVault 방문

MailVault가 이 제한 안에서 작동하는 방식

MailVault 는 로컬 이메일 아카이버입니다. 서버의 메일을 사용자 자신의 디스크에 표준 .eml 파일로 복사하며, 부족한 자원은 디스크 공간이 아니라 대역폭이라는 전제 위에 설계되었습니다.

  • 메시지를 절대 두 번 내려받지 않습니다. 무언가를 가져오기 전에 서버의 UID를 디스크에 이미 저장된 메시지와 비교해, 차이만 요청합니다. 변화가 없는 메일함을 두 번째로 실행하면 다시 2,500 MB가 아니라 몇 킬로바이트 정도만 듭니다. Gmail용 아카이버가 갖출 수 있는 가장 중요한 특성입니다.
  • 연결 압축을 협상합니다. 서버가 COMPRESS=DEFLATE를 지원하면 MailVault는 그것을 사용합니다. 헤더와 일반 텍스트 본문은 압축이 매우 잘 되지만, 이미 압축된 첨부파일은 거의 줄어들지 않습니다. 텍스트 위주의 메일함에서는 실질적인 여유를 벌어주지만, 사진 위주의 메일함에서는 거의 도움이 되지 않습니다.
  • 헤더 먼저, 본문은 그다음. 메시지 봉투(헤더)는 용량이 작습니다. 이것부터 내려받으면 본문에 하루치 예산을 쓰기 전에 메일함의 전체 모양 — 누가, 언제, 얼마나 큰지 — 을 먼저 보고 검색할 수 있습니다.
  • 손대지 않고 읽습니다. 모든 가져오기는 BODY.PEEK를 사용하므로, 보관 작업이 메일을 읽음으로 표시하는 일도, 다른 클라이언트에서 재동기화를 유발하는 일도 없습니다.
  • 작은 연결 풀을 재사용합니다 폴더마다 새 연결을 여는 대신 — 이 방식은 Gmail의 동시 연결 상한을 피하는 방법이기도 합니다.
  • 서버가 멈추라고 하면 멈춥니다. Gmail이 대역폭 제한을 알리면, MailVault는 정지 상태로 재시도하는 대신 실행을 종료합니다. 이미 내려받은 것은 모두 디스크에 남고, 앱은 일일 제한에 도달했다는 사실과 제한이 풀린 뒤 — 보통 한 시간 이내, 최대 24시간 — 다시 실행하라는 것을 명확히 알려줍니다.
  • 아카이브 자체가 상태입니다. 진행 상황이 평범한 폴더 속 평범한 파일로 저장되기 때문에, 중단된 실행이 데이터베이스를 손상시키지 않습니다. 다음 날 실행은 디스크에 있는 내용을 확인해 차이만 이어받습니다.

특별히 영리한 것은 없습니다. 일일 한도를 환경의 사실로 받아들이는 소프트웨어와 서버를 무한하다고 여기는 소프트웨어의 차이일 뿐입니다.

대용량 Gmail 계정을 실제로 보관하는 방법

  1. 시간이 아니라 일 단위로 계획하세요. 메일함 크기를 2.5 GB로 나누고, 최소 그만큼의 세션을 예상하세요.
  2. 한 번에 하나의 아카이버만 실행하세요. 첫 전체 실행이 진행되는 동안 다른 기기의 활발한 동기화는 멈춰 두세요.
  3. 전체보관함 또는 라벨 중 하나만 선택하고, 둘 다는 선택하지 마세요. 전체보관함에는 모든 메시지가 정확히 한 번씩만 들어 있습니다.
  4. 가장 큰 비용은 처음에 치른다고 예상하세요. 처음 실행이 가장 비용이 크며, 이후 실행은 그 사이에 도착한 것만 가져옵니다.
  5. 계정이 잠기면 기다리세요. 도구를 반복해서 재시작하지 마세요. 한 시간의 인내가 하루치 정지보다 훨씬 쌉니다.
  6. 가지고 있는 것을 확인하세요. 한 번도 열어보지 않은 아카이브는 백업이 아니라 희망일 뿐입니다. 표준 .eml 파일은 어떤 메일 클라이언트로도 열 수 있으며, 바로 그것이 이 형식을 쓰는 이유입니다.

MailVault는 이 여섯 가지를 macOS와 Linux에서 기본으로 수행합니다.

아직 해결하지 못한 것

정직이 마케팅보다 저렴합니다. 현재 MailVault는 한도를 예측하는 대신 한도에 반응합니다. 하루 예산에 대해 바이트를 계산하며 2,500 MB 아래로 유지하도록 속도를 조절하지는 않고, 라벨에 보관된 메시지와 All Mail에 있는 같은 메시지가 두 통이 아니라 한 통임을 인식하기 위해 Gmail 자체의 메시지 식별자를 아직 사용하지 않습니다. 두 가지 모두 계획에 올라 있습니다. 그때까지는 위의 지침 — 아카이버는 하나만, All Mail만, 여러 날에 걸쳐 — 이 더 적은 코드로 같은 일을 해냅니다.

클라우드에서 메일을 꺼내되, 하루치씩 차근차근. 는 Gmail을 비롯한 모든 IMAP 계정을 표준 .eml 파일로 사용자 자신의 기기에 보관하며, 같은 메시지를 두 번 내려받는 일이 없습니다.

MailVault 방문