今日は Ruby で UNIX MBOX メールデータ中のメールヘッダ「Content-Type」属性を検証してみました。 以下の過去記事も参照。
- Ruby - UNIX MBOXデータ読み込み!
- Ruby - UNIX MBOX メールヘッダ「Date」検証!
- Ruby - UNIX MBOX メールヘッダ「From」検証!
- Ruby - UNIX MBOX メールヘッダ・アドレス系属性の検証!
- Ruby - UNIX MBOX メールヘッダ・Message-ID系属性の検証!
- Ruby - UNIX MBOX メールヘッダ・Mime-Version属性の検証!
RFC 2045 によると書式は以下のようになっていないといけないようです。
1
|
|
そして、"type" は “text”, “image”, “audio”, “video”, “application”, “message”, “multipart” であること。 使用できる文字は以下以外のUS-ASCII文字でないといけないようです。
1 2 |
|
と言うことで、「Content-Type」属性に設定されている “type”, “subtype”, “parameter” を調べてみました。 ※メールヘッダ部分のみです。「Content-Type」に “multipart” が設定されていて本文が分割されている場合の各パート内の「Content-Type」については、今回は調査対象外です。
参考までに、当方の UNIX MBOX メールデータ(61,665件)を検証した結果を掲載します。 だから何?と言われそうですが、自分の近い将来のための記録として掲載していますので、ご承知おきください。
Ruby スクリプトは今までの検証で使用してきたものを流用しています。
使用した正規表現
パラメータ部分は別途正規表現を利用する方法と採りました。
1 2 |
|
1 2 |
|
※実際はそれぞれ改行なしの1行です。
Content-Type属性
1メール(ヘッダー部分)に複数設定されることはない属性です。 また、必須で設定されないといけないものでもありません。 パラメータは設定されていないもの、複数設定されているものがあります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
|
不正な “type”, “subtype” はありませんでした。 パラメータ部分にマッチしなかったものが4種類ありました。
- パラメータがないのにサブタイプの後ろに";“が付加されているものが406件
- パラメータの属性と値の間の"=“の左右に半角スペースが入っているのものが47件
- パラメータの値に非US-ASCII文字(日本語)が使用されているものが1件
- パラメータの属性か値のどちらかに準拠外の文字( “?”, “/”, “:”, “(”, “)” )が含まれているものが515件
日本語が設定されている箇所が気になりますが、これ以外は RFC 2045 に準拠していないだけで、致命的ではないと判断。
次回は、「Content-Transfer-Encoding」属性を検証してみるつもりです。
以上。