プロが教える店舗&オフィスのセキュリティ対策術

メールサーバ(dovecot-1.0.7)にてIMAPでsubject検索すると
一致しているワードが含まれているにもかかわらずヒットしない場合があります。

SUBJECTはISO-2022-JPでエンコードされているようですが
件名が長いと分割されます。
しかし分割されている場合、個別にしか検索してくれないようです。
(なので単語がバラバラになったら検索にヒットしない)

(例)
Subject:
=?iso-2022-jp?B?UmU6IBskQkNtMFUhJzojN24kTjtENmIkLBsoQjIwMTMxMTEx?=
=?iso-2022-jp?B?MDAbJEIxXyRHJDkhIxsoQg==?=

Re: 注意:今月の残金が20131111
00円です。

メールのSUBJECTを分割させない、もしくは分割も検索対象に含める場合はどうすれば
よいでしょうか。

たとえば以下のようなSUBJECTだとすると・・
(1通目) Re: 注意:今月の残金が2013111100円です。
(2通目) 2013111100円が今月の残金です。

検索ワード”2013111100” では(2)しかヒットしなかったり・・。
日本語、英数字、両方で起こります。なので文字化けではなさそう。

A 回答 (1件)

>SUBJECTはISO-2022-JPでエンコードされているようですが


 いえ、本来は、BASE64エンコードされているはずです。時々iso-2022jpのものなども見かけますが、MUAで受信するとSubject:が文字化けしているものもあります。
 iso2022jpに変換したのち、下記の仕様にしたがって
 ⇒( http://www.akanko.net/marimo/data/rfc/rfc2045-jp … )
 変換されたものであるはずです。

 本来は、1so-2022jpなりにエンコードした後で、ascii以外(厳密には違う)の文字をbase64エンコードします。
→ UmU6IOazqOaEj++8muS7iuaciOOBruaui+mHkeOBjDIwMTMxMTExMDDlhobjgafjgZnjgII=
本来は、
→ =?ISO-2022-JP?B?GyRCQ20wVSEnOiM3biROO0Q2YiQsGyhCMjAxMzExMTEw?=
=?ISO-2022-JP?B?MBskQjFfJEckOSEjGyhC?=
出なければならない。2行に分かれていますね。これは、「encoded-word は 75バイト以内でなければならない.」というルールによるものです。

 様々なMUA、特にメールフォームなどで送信されてくるメールヘッダには、正式なルールに従っていないものがあります。

★対策:一旦iso2022jpにデコードしてから検索する。
 この時に、改行コードは削除されて一行に戻るはずです。

Perlでしたら、
 ⇒Base64エンコード・デコードする( http://www.din.or.jp/~ohzaki/perl.htm#JP_Base64 )
を参考にしてください。
    • good
    • 0
この回答へのお礼

確かにBASE64でエンコードされていますね。この辺の知識がおぼろげだったので
認識改めました。
使用しているMUAは改行コードが削除される前に検索をしていたようです。
IMAPのsearchを使っているようで、ここに問題がありそうでした。
ありがとうございます。

お礼日時:2013/11/28 23:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!