
mboxshell v0.6.2
mboxShell. 모든 크기의 MBOX 파일을 위한 빠른 터미널 뷰어. Gmail Takeout 백업(50GB+)의 이메일을 메모리에 로드하지 않고 열기, 검색 및 내보내기가 가능합니다. Rust로 제작되었습니다.
mboxShell
어떤 크기의 MBOX 파일이든 빠르게 볼 수 있는 터미널 뷰어. Gmail Takeout 백업(50 GB 이상)의 이메일을 메모리에 로드하지 않고 열고, 검색하고, 내보낼 수 있습니다.
이 프로젝트가 존재하는 이유
Google Takeout을 사용해 Gmail에서 이메일을 내보내면 수십 기가바이트에 달할 수 있는 하나 이상의 .mbox 파일이 생성됩니다. 여기에 더해 소유한 각 Google 그룹마다 메일박스가 하나씩 추가로 생성되는데, 이는 놓치기 쉽고 Gmail 내보내기 자체보다 더 클 수도 있습니다. 이러한 파일을 메모리에 전부 로드하지 않고도 효율적으로 열고, 검색하고, 탐색할 수 있는 크로스 플랫폼 터미널 도구는 존재하지 않습니다.
mboxShell은 바로 이 문제를 해결하기 위해 만들어졌습니다. 50 GB MBOX를 몇 초 만에 열고, 수십만 개의 메시지를 부드럽게 탐색하고, 발신자·날짜·내용으로 검색하고, 필요한 것을 무엇이든 내보낼 수 있습니다. 모두 터미널에서, GUI도, 서버도, 외부 의존성도 없이 말입니다.
사용 사례
- Gmail 백업 탐색 (Google Takeout) — 원래 라벨과 함께
- 소유한 그룹 읽기 — Takeout이 별도 메일박스로 내보내며, 종종 아카이브에서 가장 큰 파일인 경우가 많습니다
- 메일 아카이브 분석 — 서버에서, 마이그레이션이나 감사 중에
- 메시지 검색 — 모든 출처의 MBOX 파일에서 (Thunderbird, Unix 서버 등)
- 메시지 내보내기 — 추가 처리를 위해 EML, CSV 또는 일반 텍스트로
- 첨부 파일 추출 — 개별 또는 일괄로
- 여러 MBOX 파일 병합 — 중복을 제거하며 하나로
Mac에서는: mboxViewer
macOS에서 네이티브 그래픽 환경을 선호한다면 mboxViewer를 확인해 보세요. 같은 팀이 만든 네이티브 Mac 앱입니다. 메일 클라이언트로 가져오지 않고도 MBOX 파일을 열고, 탐색하고, 검색할 수 있는 익숙한 메일박스 스타일 인터페이스를 제공합니다. .mbox 파일을 끌어다 놓기만 하면 깔끔한 macOS 네이티브 창에서 모든 메시지, 첨부 파일, 라벨에 즉시 접근할 수 있습니다. mboxShell의 파싱 엔진 성능을 데스크톱 GUI의 편안함과 함께 누리고 싶은 사용자에게 이상적입니다.
브라우저에서도: Online Mbox Viewer
아무것도 설치하지 않고 MBOX 파일을 살짝 들여다봐야 하나요? 같은 저자가 만든 무료 MIT 라이선스 웹 앱 Online Mbox Viewer를 사용해 보세요. .mbox 파일을 전적으로 브라우저에서 열고 렌더링합니다. 어떤 서버에도 업로드되지 않으므로 이메일은 사용자의 컴퓨터에 그대로 남습니다. 어떤 기기에서든 빠르게 확인하기에 완벽합니다. 소스 코드는 github.com/dcarrero/online-mbox-viewer에 있습니다.
기능
- 파일을 메모리에 로드하지 않습니다. 1 MB 버퍼를 사용하는 스트리밍 I/O를 사용합니다. 100 GB MBOX는 1 GB MBOX와 거의 동일한 약 500 MB의 RAM을 사용합니다(메타데이터 인덱스만 메모리에 상주).
- 영구 인덱싱. 처음 열 때 바이너리 인덱스(
.mboxshell.idx)를 생성하므로 이후 열기는 1초 이내에 완료됩니다. - 완전한 Gmail 지원.
X-Gmail-Labels를 감지하여 사이드바 패널에 가상 폴더로 표시하며, 받은편지함, 보낸편지함, 별표표시, 사용자 지정 라벨 등으로 필터링할 수 있습니다. - Google Groups 메일함. Takeout 아카이브가 소유한 각 그룹마다 제공하는
topics.mbox파일을 읽고, 의미 없는 파일 이름 대신 그룹 이름으로 이름을 지정하며, 그룹을 가상 라벨로 표시하고 정확한X-GM-THRIDid로 대화를 스레드화합니다. - 올바른 인코딩. RFC 2047 encoded-word를 디코딩하며, UTF-8, ISO-8859-1, Windows-1252, KOI8-R 및
encoding_rs가 인식하는 모든 문자 집합을 지원합니다. - 대화 스레드화. JWZ 알고리즘(Netscape/Mozilla에서 사용하는 것과 동일)을 사용하거나, 메일함에 자체 대화 id가 있는 경우 이를 사용하여 메시지를 스레드로 그룹화합니다.
- 고급 검색. 필드별 필터링(
from:,subject:,date:,body:,has:attachment,label:등), 날짜 범위, 크기 필터, AND/OR 연산자 및 부정. - 유연한 내보내기. 개별 또는 대량 내보내기를 EML, CSV(Excel 호환), 일반 텍스트, HTML, 새 MBOX 또는 Maildir로 지원합니다. 디코딩된 첨부 파일 추출.
- 단일 바이너리. 런타임 없음, 의존성 없음. Linux, macOS 및 Windows에서 실행되는 약 5 MB의 실행 파일.
- 완전한 터미널 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
# Hand over only part of an archive: a new mailbox with just the matches
mboxshell export mail.mbox --format mbox --query "from:[email protected]" -o handover.mbox
# Convert to Maildir (read/replied/flagged state kept as Maildir flags)
mboxshell export mail.mbox --format maildir -o ~/Maildir/Archive
# 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, mbox, maildir) |
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 | man 페이지 생성 |
mboxshell config [path|show|defaults] | 설정 파일 위치, 내용 또는 기본값 표시 |
전역 플래그:
| 플래그 | 설명 |
|---|---|
-f, --force | 인덱스가 이미 존재하더라도 강제로 재빌드 (export에서는 -f가 --format이므로, 해당 명령에서는 --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
