MBOXの中で、添付ファイルはどこにあるのか
添付ファイルはメッセージそのものの中に、MIMEパートのbase64テキストとして入っています。ファイルが巨大になるのも、PDFの中の語を検索しても何も出ないのも、ある古い形式が添付を丸ごと失ったのも、そのためです。
メッセージの中です。添付ファイルは同じメッセージの中のMIMEパートで、バイナリの中身はbase64のテキストに符号化されています。テキストしか扱えないメールの経路を通り抜けるためです。添付ファイル用のフォルダというものはありません。MBOXファイルは自己完結していて、これまでにあなたが受け取った写真もPDFも、文字の並びとしてその中に座っています。
それはどう見えるか
PDFが1つ添付されたメッセージには、外側にmultipart/mixedの容れ物があり、その中に2つのものが入ります。本文(それ自体がプレーンテキスト版とHTML版を持つmultipart/alternativeであることが多い)と、添付のパートです。それぞれのパートが自分の種類を宣言し、全体はバウンダリ文字列で区切られます。
添付のパートは、ファイル名の入ったContent-Disposition: attachmentヘッダーと、それが何かを告げるContent-Type(application/pdf、image/png)を持ち、そのあとに数千行のbase64が続きます。
ここから3つのことが導かれ、そのそれぞれが、誰もが一度は気づく何かを説明します。
受け取ったメールよりファイルが大きい。 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です。数個で済まない量なら、一括の書き出しが、選択したものの添付ファイルを一度に1つのフォルダへ書き出します。先にfrom:とhas:attachmentでアーカイブを絞り込んでおけば、選択したものは検索結果そのものになります。添付ファイルをFinderやExplorerへ直接ドラッグして取り出すこともできます。
まとめて行う前に、知っておく価値のあることが2つあります。
- **ファイル名は衝突します。**10年のあいだに12人の送信者が、自分のファイルを
請求書.pdfと名付けています。全部を1つのフォルダにではなく、送信者ごと・検索ごとのフォルダに書き出してください。 - **文脈はメッセージのほうにあります。**日付も送信者も分からないPDFが400個入ったフォルダは、出発点のアーカイブより始末が悪い。証明に使うものなら、メッセージのほうもEMLかPDFで書き出して、ファイルごとに、それが届いたときのメールを添えておいてください。
添付ファイルが入っていない形式
歴史的な例外が1つあり、古いバックアップを復旧しようとする人がここで引っかかります。Eudoraです。メールボックスは.mbx拡張子の付いたただのmboxとして保存していましたが、添付ファイルは切り離していました。1つずつ別の添付フォルダに書き出し、本文にはAttachment Converted:にパスが続く行を残したのです。
そのため、復旧した.mbxでは添付ファイルが、その中にはないファイルへの参照として見えます。まだ残っているなら、隣にあるEudoraのディレクトリの中です。メールボックスだけでなく丸ごとコピーしてください。そして.mbxファイルだけを手渡されたのなら、添付ファイルはもう失われています。
この仕組みの良いところ
全部がファイルの中にあることこそ、MBOXのアーカイブが何十年経っても開ける理由です。失くす添付フォルダはなく、移行すべきデータベースもなく、動き続けていなければならないサーバーもありません。メールと、それに付いてきたファイルは1つのもので、テキストで、何によっても読めます。
同時に、ファイルが途方もなく大きい理由でもあります。かさばるが自己完結している、というこの取引が、そうでなければ消えていたはずの大量のメールを生き延びさせてきました。
Mbox Viewer でアーカイブを開く
Mac と Windows のネイティブ アプリ。あらゆるサイズの MBOX・EML ファイルを完全にオフラインでストリーミングします。