Ruby - UNIX MBOX ヘッダ検証!

Updated:


(最近、ブログタイトルが似たようなものになっていますが、微妙に内容が異なっていますのであしからず)

さて、今日は UNIX MBOX メールデータのヘッダの検証を行ってみました。 (検証には Ruby を使用していますが、ソースまでは公開していませんのであしからず)

今までも、何度かヘッダのフィールド毎に検証したり、どんなヘッダで成り立っているのかを検証したりしてきました。 以下、の当ブログ過去記事等も参照。

しました。

ところが、実際に UNIX MBOX データをデータベース(MySQL)に登録しようと考えた場合、 ヘッダの各フィールドの文字数が一体どれくらいあるのか?ということを確認しておかなければ、テーブル設計が出来ないことが判明!

ということで、今回はヘッダの各フィールドのキー・値の文字数をチェックしました。

参考までに、以下に当方の 61,665 件のメールデータで検証した結果を載せておきます。 (個人の記録です。あしからず)

ちなみに、1つのフィールドが複数行にわたる場合は、2行目以降の先頭の半角空白・タブを半角空白1個に変換して検証しています。

ヘッダ部分の検証

フィールドの数別に集計

文字数を集計する前に、1つのメールに何個のフィールドが設定されているかを集計してみました。 通常、”Received”フィールドは複数存在しますが、存在する分だけカウントしています。

個数 件数   個数 件数
9 17 34 935
10 23 35 1,202
11 47 36 494
12 158 37 283
13 636 38 259
14 844 39 91
15 1,202 40 55
16 2,427 41 33
17 3,683 42 64
18 3,424 43 129
19 2,476 44 126
20 4,673 45 220
21 5,163 46 249
22 4,863 47 192
23 3,925 48 84
24 5,436 49 157
25 4,860 50 46
26 3,776 51 79
27 2,315 52 19
28 2,543 54 8
29 934 56 15
30 628 57 1
31 769 59 1
32 926 61 1
33 1,174

61,665 件のメールにトータルで 1,455,868 件のヘッダフィールドが存在しました。

フィールドのキー部分の文字数別集計

ヘッダのフィールドのキー部分(コロン”:”より左側)を文字数別(10文字単位)に集計してみました。

文字数 件数
10文字以下 778,357
20文字以下 614,786
30文字以下 62,724
40文字以下 1

最大文字数は 32 文字でした。

フィールドの値部分の文字数別集計

ヘッダのフィールドの値部分(コロン”:”より右側)を文字数別(100文字単位)に集計してみました。

文字数 件数
0文字以下 37,875
100文字以下 1,228,603
200文字以下 161,561
300文字以下 20,757
400文字以下 5,823
500文字以下 1,187
600文字以下 34
700文字以下 14
800文字以下 5
900文字以下 1
1,000文字以下 3
1,200文字以下 1
1,300文字以下 1
1,400文字以下 2
1,500文字以下 1

最大文字数は 1,462 文字でした。


そして、ついでと言ってはなんですが、Content-Typeが”multipart”の場合のボディ部分の各Partについても、前述のヘッダと同様の検証を行いました。

Content-Typeが”multipart”の場合の各Partを検証

フィールドの数別に集計

個数 件数
0 18
1 1,800
2 13,624
3 2,506
4 1,827

フィールドのキー部分の文字数別集計

ヘッダのフィールドのキー部分(コロン”:”より左側)を文字数別(10文字単位)に集計してみました。

文字数 件数
10文字以下 30,647
20文字以下 12,714
30文字以下 513

最大文字数は 25 文字でした。

フィールドの値部分の文字数別集計

ヘッダのフィールドの値部分(コロン”:”より右側)を文字数別(100文字単位)に集計してみました。

文字数 件数
100文字以下 43,837
200文字以下 27
300文字以下 10

最大文字数は 229 文字でした。


これで、データベースの各カラムを大体何文字に設定すればいいのかが計算できます。

以上。





 

Sponsored Link

 

Comments