Mbox形式

電子メールクライアントがメールをハードディスクに保存する方法

メールメッセージの保存の最も一般的な形式は、mbox形式です。 MBOXはMailBOXの略です。 mboxは、0個以上のメールメッセージを含む1つのファイルです。

mbox形式

電子メールを格納するためにmbox形式を使用する場合は、すべてのファイルを1つのファイルに格納します。 これにより、長いテキストファイルが作成されます(インターネット電子メールは常に7ビットのASCIIテキストとしてしか存在しません。他のすべて - 添付ファイルなど - エンコードされます )。 どこが終わり、どこが始まるのか、どうやって分かりますか?

幸いにも、すべての電子メールは、最初から少なくとも1つのFrom行を持っています。 すべてのメッセージは「From」で始まります (Fromの後ろに「From_」行とも呼ばれる空白文字が続きます)。 行の先頭にあるこのシーケンス( "From")の前に空行があるか、ファイルの先頭にある場合、メッセージの先頭が見つかりました。

だから、mboxファイルを解析するときに探すのは、本質的に空の行の後に "From"が続くことです。

正規表現として、これを "\ n \ nFrom。* \ n"と書くことができます。 最初のメッセージだけが異なります。 それは単に行の先頭にある "From"で始まります( "^ From。* \ n")。

" From" 体の中で

電子メールメッセージの本文に上記のシーケンスが正確に表示されたらどうなりますか? 以下がメールの一部である場合はどうなりますか?

...最新の報告書をお送りします。

このレポートから、あなたは必要はありません...

ここでは、行の先頭に "From"が続く空の行があります。 これがmboxファイルに表示された場合、私たちは間違いなく新しいメッセージの開始点を持っています。 少なくともパーサーはそれを考えています。なぜなら、電子メールクライアントと、送信者も受信者も含まないが、「From this report」で始まる電子メールメッセージが混乱するからです。

このような悲惨な状況を避けるために、電子メールの本文に空白行が続く行の先頭に「From」が表示されないようにする必要があります。

私たちはmboxファイルに 新しいメッセージを追加するたびに、ボディ内のそのようなシーケンスを探し、単に "From"を "> From"に置き換えます。 これは、誤解を不可能にする。 上記の例は、このようになり、パーサーを起動することはありません。

...最新の報告書をお送りします。

>このレポートから、あなたは必要はありません...

このため、「From」という単なる「Eメール」の中で、「> From」が見つかることがあります。