- ベストアンサー
IMAP4でsubjectが検索ヒットしない
- IMAP4でsubjectが検索ヒットしない問題について解決方法を探しています。
- メールサーバのdovecot-1.0.7でIMAPを使用してsubjectを検索すると、一致しているワードが含まれているにもかかわらずヒットしない場合があります。
- SUBJECTがISO-2022-JPでエンコードされているため、件名が長い場合には分割されるようです。しかし、分割されている場合は個別にしか検索してくれないため、単語がバラバラになった場合には検索にヒットしません。この問題を解決する方法についてアドバイスをお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>SUBJECTはISO-2022-JPでエンコードされているようですが いえ、本来は、BASE64エンコードされているはずです。時々iso-2022jpのものなども見かけますが、MUAで受信するとSubject:が文字化けしているものもあります。 iso2022jpに変換したのち、下記の仕様にしたがって ⇒( http://www.akanko.net/marimo/data/rfc/rfc2045-jp.txt ) 変換されたものであるはずです。 本来は、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 ) を参考にしてください。
お礼
確かにBASE64でエンコードされていますね。この辺の知識がおぼろげだったので 認識改めました。 使用しているMUAは改行コードが削除される前に検索をしていたようです。 IMAPのsearchを使っているようで、ここに問題がありそうでした。 ありがとうございます。