centos標準のsquirrelmailで、日本語の添付ファイルが文字化けする報告があった。

いろいろぐぐって解決策を見ると、日本語パッチを当てて再コンパイルすることが紹介されている。
面倒だなあ、、、。

それで、完全ではないかもしれないが、簡単な方法を見つけたので記録する。

/usr/share/squirrelmail/functions/i18n.php で、
case ‘downloadfilename’:
$useragent = func_get_arg(2);
if (strstr($useragent, ‘Windows’) !== false ||
strstr($useragent, ‘Mac_’) !== false) {
$ret = mb_convert_encoding($ret, ‘SJIS’, ‘AUTO’);
} else {
$ret = mb_convert_encoding($ret, ‘EUC-JP’, ‘AUTO’);
のSJISとなっているところを、
$ret = mb_convert_encoding($ret, ‘UTF-8’, ‘AUTO’);
というようにUTF-8に書き換える。

これで検証したところ、IEでまだ少し文字化けするようなので下記を追加した。

/usr/share/squirrelmail/functions/mime.php で、
if (preg_match(‘/compatible; MSIE ([0-9]+)/’, $HTTP_USER_AGENT, $match) &&
((int)$match[1]) >= 6 && strstr($HTTP_USER_AGENT, ‘Opera’) === false) {
$isIE6plus = true;
}
のうち
if (preg_match(‘/compatible; MSIE\s?([0-9]+)/’, $HTTP_USER_AGENT, $match) &&
に修正。

再び検証したところ、今のところ添付ファイルの文字化けなし、、、。