
mboxshell v0.6.2
mboxShell. 모든 크기의 MBOX 파일을 위한 빠른 터미널 뷰어. Gmail Takeout 백업(50GB+)의 이메일을 메모리에 로드하지 않고 열기, 검색 및 내보내기가 가능합니다. Rust로 제작되었습니다.
mboxShell
모든 크기의 MBOX 파일을 위한 빠른 터미널 뷰어. Gmail Takeout 백업(50GB 이상)의 이메일을 메모리에 로드하지 않고 열고, 검색하고, 내보낼 수 있습니다.
이 프로젝트가 만들어진 이유
Google Takeout으로 Gmail에서 이메일을 내보내면 수십 기가바이트에 달하는 하나 이상의 .mbox 파일을 받게 됩니다. 이러한 파일을 전체를 메모리에 로드하지 않고도 효율적으로 열고, 검색하고, 탐색할 수 있는 크로스 플랫폼 터미널 도구는 없었습니다.
mboxShell은 바로 그 문제를 해결하기 위해 만들어졌습니다: 50GB MBOX를 몇 초 만에 열고, 수십만 개의 메시지를 부드럽게 탐색하며, 발신자·날짜·내용으로 검색하고, 필요한 모든 것을 내보낼 수 있습니다. GUI도, 서버도, 외부 의존성도 없는 순수 터미널 환경에서 말이죠.
사용 사례
- Gmail 백업(Google Takeout)을 원래 라벨과 함께 탐색
- 서버, 마이그레이션 또는 감사 중 메일 아카이브 분석
- 모든 소스(Thunderbird, Unix 서버 등)의 MBOX 파일에서 메시지 검색
- 추가 처리를 위해 메시지를 EML, CSV 또는 일반 텍스트로 내보내기
- 첨부 파일 개별 또는 일괄 추출
- 중복을 제거하여 여러 MBOX 파일을 하나로 병합
Mac용: mboxViewer
macOS에서 네이티브 그래픽 환경을 선호한다면 mboxViewer를 확인해 보세요 — 같은 팀이 만든 네이티브 Mac 앱입니다. 메일 클라이언트에 가져오지 않고도 MBOX 파일을 열고, 탐색하고, 검색할 수 있는 익숙한 사서함 스타일 인터페이스를 제공합니다. .mbox 파일을 드래그 앤 드롭하면 모든 메시지, 첨부 파일 및 라벨에 깔끔한 macOS 네이티브 창에서 즉시 접근할 수 있습니다. mboxShell의 파싱 엔진 성능을 데스크톱 GUI의 편안함과 함께 원하는 사용자에게 이상적입니다.
브라우저에서도: Online Mbox Viewer
아무것도 설치하지 않고 MBOX 파일을 빠르게 확인해야 하나요? Online Mbox Viewer를 사용해 보세요 — 같은 제작자가 만든 무료 MIT 라이선스 웹 앱입니다. .mbox 파일을 브라우저에서 완전히 열고 렌더링합니다: 어떤 서버에도 업로드되지 않으므로 이메일은 사용자 기기에 그대로 유지됩니다. 어떤 기기에서든 빠르게 확인하기에 완벽합니다. 소스 코드: github.com/dcarrero/online-mbox-viewer.
기능
- 파일을 메모리에 로드하지 않습니다. 1MB 버퍼의 스트리밍 I/O를 사용합니다. 100GB MBOX도 1GB MBOX와 대략 동일한 ~500MB RAM을 사용합니다(메타데이터 인덱스만 메모리에 상주).
- 영구 인덱싱. 최초 열기 시 바이너리 인덱스(
.mboxshell.idx)가 생성되어 이후에는 1초 미만으로 열립니다. - 전체 Gmail 지원.
X-Gmail-Labels를 감지하여 사이드바 패널에 가상 폴더로 표시하므로 받은편지함, 보낸편지함, 별표, 사용자 지정 라벨 등으로 필터링할 수 있습니다. - 정확한 인코딩. RFC 2047 인코딩 워드를 디코딩하고 UTF-8, ISO-8859-1, Windows-1252, KOI8-R 및
encoding_rs가 인식하는 모든 문자셋을 지원합니다. - 대화 스레딩. JWZ 알고리즘(Netscape/Mozilla에서 사용한 것과 동일)으로 메시지를 스레드로 그룹화합니다.
- 고급 검색. 필드별 필터링(
from:,subject:,date:,body:,has:attachment,label:등), 날짜 범위, 크기 필터, AND/OR 연산자 및 부정 검색. - 유연한 내보내기. EML, CSV(Excel 호환), 일반 텍스트로 개별 또는 일괄 내보내기. 디코딩된 첨부 파일 추출.
- 단일 바이너리. 런타임도 의존성도 없습니다. Linux, macOS, Windows에서 실행되는 ~5MB 실행 파일.
- 완전한 터미널 UI. 키보드 탐색(vi 스타일), 세 가지 레이아웃 모드, 대화형 검색 바, 사용자 지정 가능한 단축키.
- 이중 언어. 인터페이스가 영어와 스페인어를 지원하며 시스템 로케일에서 자동 감지합니다.
설치
사전 빌드된 바이너리(권장)
Releases 페이지에서 플랫폼에 맞는 최신 릴리스를 다운로드하세요:
| 플랫폼 | 바이너리 |
|---|---|
| Linux x86_64 | mboxshell-linux-x86_64 |
| Linux ARM64 | mboxshell-linux-aarch64 |
| Linux RISC-V 64 | mboxshell-linux-riscv64 |
| FreeBSD x86_64 | mboxshell-freebsd-x86_64 |
| macOS Intel | mboxshell-macos-x86_64 |
| macOS Apple Silicon | mboxshell-macos-aarch64 |
| Windows x86_64 | mboxshell-windows-x86_64.exe |
| Windows ARM64 | mboxshell-windows-arm64.exe |
다운로드 후 실행 권한을 부여하고 PATH로 이동하세요:
# Linux / macOS
chmod +x mboxshell-*
sudo mv mboxshell-* /usr/local/bin/mboxshell
# Or place it in a user-local directory
mv mboxshell-* ~/.local/bin/mboxshell
Windows에서는 mboxshell-windows-x86_64.exe를 PATH에 포함된 폴더로 이동하거나 직접 실행하세요.
소스에서 빌드
요구 사항: Rust 1.85 이상.
# Clone and build
git clone https://github.com/dcarrero/mboxshell.git
cd mboxshell
cargo build --release
# The binary is at target/release/mboxshell
# Install it system-wide:
sudo cp target/release/mboxshell /usr/local/bin/
# Or for the current user only:
cp target/release/mboxshell ~/.local/bin/
다른 플랫폼용 크로스 컴파일
# Add the target you need
rustup target add aarch64-apple-darwin # macOS Apple Silicon
rustup target add x86_64-unknown-linux-gnu # Linux x86_64
rustup target add aarch64-unknown-linux-gnu # Linux ARM64
# Build for a specific target
cargo build --release --target aarch64-apple-darwin
Cargo로 설치
cargo install --git https://github.com/dcarrero/mboxshell.git
빠른 시작
# Open an MBOX file in the terminal UI
mboxshell mail.mbox
# Index and show statistics
mboxshell index mail.mbox
mboxshell stats mail.mbox
# Search from the command line
mboxshell search mail.mbox "from:[email protected] date:2024"
mboxshell search mail.mbox "has:attachment subject:invoice" --json
# Export messages
mboxshell export mail.mbox --format eml --output ./emails/
mboxshell export mail.mbox --format csv --output summary.csv
# Extract attachments
mboxshell attachments mail.mbox --output ./attachments/
# Merge multiple MBOX files (duplicates are removed by default)
mboxshell merge file1.mbox file2.mbox -o merged.mbox
# Merge tagging every message with the mailbox it came from
mboxshell merge Inbox.mbox Sent.mbox -o merged.mbox --source-header
# Generate shell completions
mboxshell completions bash > /etc/bash_completion.d/mboxshell
mboxshell completions zsh > ~/.zfunc/_mboxshell
mboxshell completions fish > ~/.config/fish/completions/mboxshell.fish
CLI 명령어
| 명령어 | 설명 |
|---|---|
mboxshell [FILE] | TUI에서 파일 열기(기본 동작) |
mboxshell open <path> | TUI에서 MBOX 파일 열기 |
mboxshell index <path> [-f/--force] | 바이너리 인덱스 빌드 또는 재빌드 |
mboxshell stats <path> [--json] | MBOX 파일에 대한 통계 표시 |
mboxshell search <path> <query> [--json] | 명령줄에서 메시지 검색 |
mboxshell export <path> -f <format> -o <output> [--query <q>] | 메시지 내보내기(형식: eml, csv, txt, html) |
mboxshell merge <files...> -o <output> [--no-dedup] [--source-header] | 여러 MBOX 파일을 하나로 병합 |
mboxshell attachments <path> -o <output> | 모든 첨부 파일 추출 |
mboxshell completions <shell> | 셸 완성 생성(bash, zsh, fish, powershell, elvish) |
mboxshell manpage | 매뉴얼 페이지 생성 |
전역 플래그:
| 플래그 | 설명 |
|---|---|
-f, --force | 인덱스가 이미 있어도 강제로 재빌드 |
-v, --verbose | 로그 상세 수준 증가(-v info, -vv debug, -vvv trace) |
--lang <en|es> | 인터페이스 언어 강제 지정(기본값은 자동 감지) |
병합 플래그:
| 플래그 | 설명 |
|---|---|
--no-dedup | 중복 Message-ID 감지를 건너뛰고 입력을 바이트 단위로 그대로 연결(중복 제거는 기본적으로 켜져 있음) |
--source-header | 모든 메시지에 X-Mbox-Source: <mailbox name> 헤더를 삽입하여 병합된 아카이브가 각 이메일이 온 사서함까지 추적 가능하도록 유지 |
소스 라벨은 표시되는 사서함 이름입니다: Apple Mail 내보내기의 경우 — 문자 그대로 mbox라는 파일을 포함하는 Inbox.mbox 디렉터리 — mbox가 아닌 Inbox.mbox로 읽습니다. 동일한 라벨을 공유하게 되는 사서함은 서로 구분됩니다(Work/Inbox.mbox vs Personal/Inbox.mbox).
터미널 UI

키보드 단축키
| 키 | 동작 |
|---|---|
j / k | 다음 / 이전 메시지 |
g / G | 첫 번째 / 마지막 메시지 |
PgDn / PgUp | 페이지 아래 / 위로 |
Enter | 메시지 열기 / 메시지 보기로 전환 |
Shift-↑ / Shift-↓ | 선택한 메시지 본문 스크롤(목록 포커스 유지); 위치 표시기(Top / NN% / Bot)가 메시지 테두리에 표시됨 |
Tab / Shift-Tab | 패널 포커스 순환 |
Esc | 목록으로 돌아가기 / 팝업 닫기 |
/ | 검색 바 열기 |
f | 검색 필터 팝업 열기 |
n / N | 다음 / 이전 검색 결과 |
Space | 메시지 표시 / 표시 해제 |
* | 모두 표시 / 표시 해제 |
s | 정렬 열 순환(날짜, 발신자, 제목, 크기) |
S | 정렬 방향 전환 |
e | 메시지 내보내기(EML, TXT, CSV, 첨부 파일) |
a | 첨부 파일 표시(j/k로 탐색, Enter로 저장, A로 모두 저장) |
t | 스레드(대화) 보기 전환 |
l | 라벨 사이드바 표시 / 포커스 / 숨기기 |
h | 전체 헤더 전환 |
r | 원시 메시지 소스 전환 |
1 / 2 / 3 | 레이아웃: 목록만 / 가로 분할 / 세로 분할 |
? | 도움말 |
q | 종료 |
검색 구문
from:[email protected] Search by sender
to:[email protected] Search by recipient
cc:[email protected] Search by Cc recipient
subject:invoice Search in subject line
body:important text Search in message body (full-text)
filename:report.pdf Search by attachment file name
id:<message-id@domain> Search by Message-ID
has:attachment Only messages with attachments
has:no-attachment Only messages without attachments
label:Inbox Filter by Gmail label
date:2024-01 Messages from January 2024
date:2024-01-01..2024-06-30 Date range
before:2024-06-01 Before a date
after:2024-01-01 After a date
size:>1mb Messages larger than 1 MB
-subject:spam Exclude messages with "spam" in subject
"exact phrase" Search for an exact phrase
from:john subject:budget Implicit AND (both must match)
term1 OR term2 Explicit OR
지원되는 입력 형식
| 형식 | 확장자 | 설명 |
|---|---|---|
| MBOX (mboxrd/mboxo) | .mbox | 표준 형식. Google Takeout, Thunderbird, Unix 서버 |
성능
실제 Google Takeout MBOX 파일로 테스트:
| 파일 크기 | 메시지 수 | 인덱싱 | 재열기 |
|---|---|---|---|
| 500 MB | ~5,000 | ~3초 | < 1초 |
| 5 GB | ~50,000 | ~30초 | < 1초 |
| 50 GB | ~500,000 | ~5분 | < 1초 |
가상 스크롤 덕분에 메시지 목록 탐색은 즉각적입니다(표시되는 행만 렌더링).
설정
설정 파일은 ~/.config/mboxshell/config.toml에 있습니다:
[general]
default_sort = "date"
sort_order = "desc"
date_format = "%Y-%m-%d %H:%M"
log_level = "warn"
[display]
theme = "dark"
layout = "horizontal"
show_sidebar = false
max_cached_messages = 50
[export]
default_format = "eml"
csv_separator = ","
아키텍처
src/
+-- main.rs # CLI with clap
+-- lib.rs # Module re-exports
+-- error.rs # Error types with thiserror
+-- config.rs # TOML configuration
+-- mailbox_naming.rs # Human-facing mailbox names (Apple Mail packages)
+-- i18n/ # Internationalization (EN/ES)
+-- parser/
| +-- mbox.rs # Streaming parser (never loads the file into memory)
| +-- eml.rs # Individual EML file parser
| +-- mime.rs # MIME decoding, multipart, charsets
| +-- header.rs # RFC 5322 headers, RFC 2047 encoded-words
+-- index/
| +-- builder.rs # Binary index construction
| +-- reader.rs # Index queries
| +-- format.rs # Binary format with SHA-256 integrity check
+-- model/
| +-- mail.rs # MailEntry, MailBody
| +-- attachment.rs # Attachment metadata
| +-- address.rs # RFC 5322 address parsing
+-- store/
| +-- reader.rs # Offset-based reading with LRU cache
+-- search/
| +-- query.rs # Search query parser
| +-- metadata.rs # Fast index search (O(n), < 200ms for 1M messages)
| +-- fulltext.rs # Streaming full-text search
+-- export/
| +-- eml.rs # Export to .eml
| +-- csv.rs # Export summary to CSV (UTF-8 BOM)
| +-- text.rs # Export to plain text
| +-- attachment.rs # Attachment extraction
| +-- mbox.rs # MBOX merge with deduplication and source header
+-- tui/
+-- app.rs # Global state (Elm Architecture)
+-- event.rs # Keyboard event handling
+-- ui.rs # Layout and render dispatch
+-- threading.rs # JWZ algorithm for conversation threads
+-- theme.rs # Color theme
+-- widgets/ # Visual components
+-- mail_list.rs # List with virtual scrolling
+-- mail_view.rs # Message viewer with scroll
+-- sidebar.rs # Labels/folders panel
+-- header_bar.rs # Top bar
+-- status_bar.rs # Status bar
+-- search_bar.rs # Search bar
+-- search_popup.rs # Search filter popup
+-- help_popup.rs # Help popup
+-- attachment_popup.rs # Attachment popup
+-- export_popup.rs # Export popup
주요 의존성
| 크레이트 | 용도 |
|---|---|
ratatui + crossterm | 터미널 UI |
mail-parser | MIME/RFC 5322 파싱 |
encoding_rs | 문자셋 디코딩 |
chrono | 날짜 및 시간대 |
clap | CLI 인자 파싱 |
serde + bincode | 인덱스 직렬화 |
sha2 | 인덱스 무결성 검증 |
lru | 디코딩된 메시지 캐시 |
tracing | 구조화된 로깅 |
후원사
mboxshell은 공개적으로 개발되며 다음의 지원을 받습니다:
- Colorvivo — WordPress, AI 및 디지털 미디어 전문 기업.
- Stackscale — 프라이빗 클라우드 인프라 전문 기업.
귀사의 회사가 mboxshell이 유용하다고 생각하고 지속적인 개발을 지원하고 싶다면 .github/FUNDING.yml을 확인하거나 carrero.es로 연락해 주세요.
문서
전체 사용자 매뉴얼은 모든 명령어, 키보드 단축키, 검색 연산자, 내보내기 옵션 및 설정 키를 다룹니다:
- docs/MANUAL.md — 사용자 매뉴얼(영어)
- docs/MANUAL-ES.md — 사용자 매뉴얼(스페인어)
변경 로그
전체 릴리스 기록은 CHANGELOG.md를 참조하세요.
라이선스
MIT - Copyright (c) 2026 David Carrero Fernandez-Baillo - https://carrero.es