平衡点


2013/12/03 [長年日記]

_ Roundcube のメールデコード

良く知られた話かもしれませんが...

世の中には機種依存文字というのがありまして, メールの文字コードは ISO-2022-JP と謳っていながら, その実丸囲み数字とかが存在する, というメールが飛び交っております.

単に自分が受ける側であれば,

なんかを参考に, 適宜設定しておくと良いのかもしれません(cc-env memo: Wanderlust の設定).

ウチ 某所サーバでは, WebMail のサービスとして Roundcube を提供しています. で, 飛び交うメールが偶に WebMail 上で読めない, という事態が発生していることに今更ながら気がつきました.

...という訳で, ad hoc ながら /usr/share/roundcube/program/lib/Roundcube/rcube_charset.php に手を加えてみます.

# source: diff
--- rcube_charset.php.orig      2013-12-03 01:05:20.966192376 +0900
+++ rcube_charset.php   2013-12-03 01:06:28.031257391 +0900
@@ -229,6 +229,11 @@
         // convert charset using mbstring module
         if ($mbstring_list !== null) {
             $aliases['WINDOWS-1257'] = 'ISO-8859-13';
+            $aliases['JIS'] = 'ISO-2022-JP-MS';
+            $aliases['ISO-2022-JP'] = 'ISO-2022-JP-MS';
+            $aliases['EUC-JP'] = 'EUCJP-WIN';
+            $aliases['SJIS'] = 'SJIS-WIN';
+            $aliases['SHIFT_JIS'] = 'SJIS-WIN';
             // it happens that mbstring supports ASCII but not US-ASCII
             if (($from == 'US-ASCII' || $to == 'US-ASCII') && !in_array('US-ASCII', $mbstring_list)) {
                 $aliases['US-ASCII'] = 'ASCII';

...こんなんで良いのかなぁ.

mbstringJIS, ISO-2022-JP, EUC-JP, SJIS, SHIFT_JIS を扱う際に, Roundcube 内で global に alias を定義しておくと良いのかもしれませんが, あんまりコード眺めてないので対応がこれで良いのか定かではありません. 誰か教えて下さい.

あ, 対応する Roundcube の version は 0.9.5-1~bpo70+1 です.

にんともかんとも.