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 文字でした。
これで、データベースの各カラムを大体何文字に設定すればいいのかが計算できます。
以上。
Comments