分割メールの再結合

Windowsユーザである友人からアサギマダラの写真4枚がメールに添付されて送られてきた.「送ろうとしたメッセージは単一メッセージとしてサイズが大き過ぎるので,送信者がこのメッセージを 13 パートに分割して送信しました」と書かれているだけである.

1個のメールの大きさは約1MBであるから,全部で13MB弱である.WindowsのOutlook Expressなら自動的に繋ぎあわせて一個のメールに復元してくれることを知っていたので,Windows XPに切り替えて,メッセージと4枚の写真であることを確認できた.Outlook Express以外のメールソフトで受信した場合,どのようにして再結合しているのかインターネットで調べると,再結合できるのはOutlook Expressだけであり,結合の仕方が分からず困っている人が意外に多いことを知った.

Macの場合,購入時に付いているMailというソフトには再結合の機能はない.そこで,理屈に基づいて再結合に挑戦してみた.

Mac OSX環境下,受信したファイルの一つをテキストエディターで開いてみると,1個のファイルは,1行76文字(半角英数字)で構成された文字列が約13,000行続いている.この種のファイルが13個,受信箱に列んでいるわけである.

最初のファイルの先頭には,普段は見えないヘッダ(送信者や受信者の名前や,送信日時,どのサーバーを経由してきたか,使っているメールソフトは何かなど),次いで送信者からのメッセージ,さらに一見文字化けした様に見える半角文字列が延々と続くが,これが画像データの本体である.

二番目以降のファイルはヘッダと文字化された画像データである.すべてのファイルからヘッダ部分を機械的に削除し,順番につなぎ合わせれば目的のファイルを再現することができる.

処理手順

1)デスクトップにasagi(今回使用した名前)というフォルダを作る.

2)メールソフトを使って,13個のファイルを,ファイル番号順にa01, a02, a03 ------a13のようなファイル名で別名保存する.

3)それぞれのファイルをテキストエディタで開き,ヘッダ部分(先頭から最初の空行まで)を削除し,同じ名前で保存しなおす.


そのファイルをどうするかは,UNIX (Linux) の教育を受けていないと分からないかもしれない.

Mac OS Xは,UNIX OSであるからコマンドを使って処理する.

4)ターミナルソフトを起動,コマンド入力画面が現れる.

5)以下,cd, ls, cat等のunixコマンドを利用して処理する.

ターミナルの表示と処理

cat file1 file2 ------ file n > fileall の構文を用いれば,ファイル群は結合される.今回,生成するファイルはall.emlである.

すべてのファイル名を書く代わりに,正規表現を使えば,もっと簡単である.

khmini:asagi KH$ cat a[0-1][0-9].eml >> all.eml

ファイルの順番と番号付けに誤りがなければ,ワイルドカードを利用したcat a*.eml > all.emlでも結合できる.

結合したファイルをメールソフトに乗せると1個のメール(12.6MB)として再現される.今回添付された画像データは合計8.8MBであった.

再生画像 縮小ファイルを掲載

なお,非画像データの削除の仕方や結合する順番を間違えると画像が乱れる.その時は最初からやり直せばよい.

熊本大学薬学部の情報処理の授業では,情報リテラシー教育の外に,この程度の処理は操作手順書を見れば対応できるような知識付与を行っていたが,現在はどうなっているか分からない.

(2012/10/29)