MBOX 안에서 첨부 파일은 어디에 있을까요?
첨부 파일은 메시지 자체 안에, MIME 파트 속 base64 텍스트로 들어 있습니다. 파일이 그토록 큰 이유, PDF 안의 단어를 검색해도 아무것도 나오지 않는 이유, 그리고 어느 옛 형식이 첨부 파일을 통째로 잃어버린 이유입니다.
메시지 안입니다. 첨부 파일은 같은 메시지 안의 MIME 파트이고, 그 이진 내용은 텍스트만 다루는 메일 인프라를 통과하기 위해 base64 텍스트로 인코딩되어 있습니다. 첨부 파일 폴더 같은 것은 없습니다. MBOX 파일은 자체 완결적이고, 지금껏 받은 모든 사진과 PDF가 글자가 되어 그 안에 앉아 있습니다.
실제 생김새
PDF가 붙은 메시지는 바깥쪽에 multipart/mixed 컨테이너를 두고 그 안에 두 가지를 담습니다. 본문(대개 그 자체가 일반 텍스트 버전과 HTML 버전을 담은 multipart/alternative입니다)과 첨부 파트입니다. 각 파트는 자기 타입을 선언하고, 전체는 경계 문자열로 나뉩니다.
첨부 파트에는 파일 이름이 담긴 Content-Disposition: attachment 헤더, 그것이 무엇인지 말해 주는 Content-Type(application/pdf, image/png), 그리고 몇천 줄의 base64가 붙어 있습니다.
여기서 세 가지가 따라 나오고, 각각이 사람들이 눈치채는 무언가를 설명합니다.
파일이 받은 메일보다 큽니다. base64는 크기에서 3분의 1가량을 더 씁니다. 6 MB짜리 사진은 메일박스에서 8 MB쯤을 차지합니다. 여기에 20년을 곱하면 40 GB짜리 아카이브에 대한 설명은 거의 다 됩니다.
PDF 안의 글자를 검색해도 아무것도 나오지 않습니다. 문서는 그 안에서 단어가 아니라 base64입니다. body:는 메시지 본문을 검색하며, 인코딩된 파일 안까지는 보지 못합니다. 메시지가 말한 것을 검색하세요. 아니면 보낸 사람과 기간에 has:attachment를 더하는 편이 실제로 찾아내는 방법입니다.
거기 있는 동안에는 아무것도 실행되지 않습니다. 인코딩된 텍스트는 아무 힘이 없습니다. 위험은 그것을 디코딩해서 저장하고 열 때 시작되고, 그건 MBOX의 문제가 아니라 평범한 안전 문제입니다.
첨부 파일과 메시지 속 이미지
둘 다 MIME 파트이지만 같은 것은 아닙니다.
인라인 이미지 — 뉴스레터 속 로고 같은 것 — 는 multipart/related를 쓰고 HTML에서 cid:무언가로 참조되므로, 저장할 파일로 나타나는 대신 레이아웃 안에 표시됩니다. 첨부 파일과 마찬가지로 메시지 안에 담겨 오고, 자리도 그만큼 차지합니다.
원격 이미지는 둘 중 어느 쪽도 아닙니다. 평범한 https:// 링크이고, 메시지를 열 때 서버에서 가져옵니다. 그중 무엇도 내 아카이브에 없고, 오래된 뉴스레터가 군데군데 빈 채로 그려지는 이유가 이것입니다. 그리고 그것을 가져오는 리더는 내가 방금 2015년의 메시지를 열었다는 사실을 보낸 사람에게 알려 줍니다. Mbox Viewer는 cid: 참조를 해석해 서식 있는 메일이 오프라인에서도 제대로 그려지게 하고, 원격 이미지는 차단합니다.
꺼내는 법
대개 진짜 목적은 이쪽입니다. 메일을 읽는 것이 아니라 거기 붙어 있는 청구서를 되찾는 것이죠.
메시지를 열어 첨부 파일을 저장하거나, 먼저 훑어보세요. Mac에서는 스페이스바로 Quick Look입니다. 몇 개를 넘어간다면, 일괄 내보내기가 선택한 것의 모든 첨부 파일을 한 번에 폴더 하나로 씁니다. 먼저 from:과 has:attachment로 아카이브를 좁히면 검색 결과가 그대로 선택이 됩니다. 첨부 파일을 Finder나 Explorer로 바로 끌어다 놓을 수도 있습니다.
한꺼번에 하기 전에 알아 둘 것이 두 가지 있습니다.
- 파일 이름이 부딪힙니다. 10년 동안 열두 명의 발신자가 자기 파일을
청구서.pdf라고 불렀습니다. 전부 한 폴더에 넣지 말고, 보낸 사람별 또는 검색별로 폴더를 나눠 내보내세요. - 맥락은 메시지에 있습니다. 날짜도 보낸 사람도 없는 PDF 400개가 흩어져 있는 폴더는 처음 손에 들었던 아카이브보다 나쁩니다. 증명이 필요한 것이라면 메시지도 EML이나 PDF로 함께 내보내, 파일마다 그것이 도착한 메일이 딸려 있게 하세요.
첨부 파일이 빠져 있는 형식
역사적 예외가 하나 있고, 오래된 백업을 되살리는 사람들이 여기에 걸립니다. Eudora입니다. 메일박스를 .mbx 확장자를 단 평범한 mbox로 저장했지만, 첨부 파일은 떼어냈습니다. 각각을 별도의 첨부 폴더에 기록하고, 본문에는 Attachment Converted: 뒤에 경로가 붙은 줄을 남겼죠.
그래서 되살린 .mbx는 첨부 파일을 그 안에 없는 파일에 대한 참조로 보여 줍니다. 아직 존재한다면 바로 옆 Eudora 디렉터리에 있습니다. 메일박스만이 아니라 전체를 복사하세요. 그리고 누군가 .mbx 파일만 건넸다면, 첨부 파일은 이미 사라진 것입니다.
이 모든 것의 좋은 점
전부가 파일 안에 있다는 것이 MBOX 아카이브가 수십 년 뒤에도 열리는 이유입니다. 잃어버릴 첨부 파일 디렉터리도, 이전할 데이터베이스도, 계속 돌아가고 있어야 할 서버도 없습니다. 메일과 그와 함께 온 파일들은 하나의 객체이고, 텍스트이며, 무엇으로든 읽힙니다.
파일이 거대한 이유도 같습니다. 부피는 크지만 자체 완결적이라는 그 맞바꿈이, 그러지 않았다면 사라졌을 아주 많은 이메일을 살려 왔습니다.
Mbox Viewer로 아카이브 열기
네이티브 Mac과 Windows 앱. 크기에 상관없이 MBOX 및 EML 파일을 완전히 오프라인으로 스트리밍합니다.