Delegateで文字変換POPプロクシを作る

Nokia E90のメールアプリはWEBブラウザと同様、日本語はUTF-8以外は文字化けしてしまいます。そこで、ブラウザと同様にDelegateをPOPプロクシとして受信するメールの文字コードをUTF-8に変換してしまいます。

インストールや起動方法はHTTPプロクシと同じ。違うのは起動オプションだけです。

変換スクリプトの用意

MIMEデコードと文字コードのUTF-8への変換はdelegateが行ってくれますが、それだけだとメールのヘッダに


Subject: メールの件名

のようにUTF-8の文字列がそのまま入ってしまい、受信した際に件名や送信者の名前などが文字化けしてしまいます。受信した際に文字化けしないようにするために、UTF-8になった文字列を再度MIME形式にエンコードする必要があります。そこで下記のようなスクリプトを作成しておきます。ここではencode.plという名前をつけることにします。


#!/usr/local/bin/perl -w

use Encode;

undef $/;
$_ = <>;

@x = split(/\n/,$_);

$xx = '';
$xxx='';

foreach $xx (@x){
   $xx = encode("MIME-header",decode("utf8",$xx));
   $xxx .= $xx."\r\n";
}

print $xxx;

変数名はちょー適当。もっと綺麗な書き方もできるけど、とりあえず動けばよしということでこんな感じです。

CFIスクリプトの用意

次に、次のようなCFIスクリプトをmy.cfiとか適当な名前で作成します。


#!cfi

Header-Filter: /var/lib/encode.pl

これだけ。encode.plは先ほど作成したperlのスクリプトです。

delegateの起動オプション

最後にdelegateの起動。


/usr/sbin/delegate -P110 SERVER=pop://mail.mopera.net CHARCODE=UTF-8 REMITTABLE=pop PERMIT="pop:*:*" FTOCL=/var/lib/my.cfi

FTOCLで指定するのは先ほど作成したCFIスクリプトです。上記のオプション指定ではポート110へのPOPアクセスをmail.mopera.netに転送します。

メーラの設定

Screenshot0009

こんな感じで、POPサーバにdelegateを動かしているサーバを指定します。ユーザ名/パスワードは本当のPOPサーバのものです。

上記で、文字化けせずメールを受信できるようになりました。

タグ: , , , , ,

back to top