April 15, 2026

How to convert an mbox file to .eml (and why you probably shouldn't)

An mbox stores all messages in one file; EML stores each message as a separate file. Here's how to split an mbox into EMLs — and when the conversion is unnecessary.

To convert mbox to individual .eml files, use a Python script with the built-in mailbox module, the command-line tool mb2md, or a GUI extractor like Aid4Mail. Each message in the mbox becomes one .eml file. But most modern readers open mbox directly, so the split is often unnecessary.

When you actually need EML

Skip the split if you just want to read or search the archive — any mbox reader handles that in place.

Option 1: Python (free, three lines)

import mailbox
for i, msg in enumerate(mailbox.mbox("archive.mbox")):
    open(f"msg-{i:06d}.eml", "wb").write(msg.as_bytes())

Produces one .eml per message. Works on any OS with Python 3. msg.as_bytes() preserves the original MIME bytes — important if hashes matter for forensic work.

Option 2: mb2md (Unix / macOS)

mb2md converts mbox to maildir (one file per message). Rename the files to .eml:

mb2md -s archive.mbox -d output/
cd output/cur && for f in *; do mv "$f" "$f.eml"; done

Option 3: GUI extractors (commercial)

ToolApprox. priceNotes
Aid4Mail$60Windows, preserves Unicode subjects
Systools MBOX Converter$49GUI, handles large archives
Stellar Converter for MBOX$79Supports all mbox variants

One-click export, but most re-encode attachments, which changes MD5 hashes. Avoid for chain-of-custody work.

What can go wrong

Reading without converting

If the goal is to search, thread, and read the archive, tools like tomorrow-box open mbox directly. No split, no re-encode, no extra disk. Conversion is only worth it when the downstream tool requires EML.