Mailman 2.1.x+j について                    菊地時夫 **簡単に言うと** *これは何?* 日本語のメーリングリストの運用でよく問題になる、文字コードの 問題をできるだけ修正しようとするもの。 *推奨設定* mm_cfg.py に以下を追加する。 GLOBAL_PIPELINE.insert(1, 'iso2022jpfix') **もっと詳しく** *何が問題なの?* 日本語のメールは ISO-2022-JP で出すべきだという習慣が長い 事続いているが、つい使ってしまう機種依存文字の問題があり、 「嘘つき」ISO-2022-JP が蔓延している。JIS になくて Unicode に入っている文字を使いたければメールの charset を UTF-8 にすればよいのだが、一部に Unicode の利用につい て強い反対もある。 Mailman は投稿されたメールをそのまま配送するのではなく、 管理者の設定によってヘッダやフッタを付加したり、「まとめ読み」 にまとめたり、「保存書庫」に HTML 形式で保存公開したりする。 また、一方で Python 付属の charset codec は規格に忠実で 「嘘つき」ISO-2022-JP をエラーとして扱う。 (これは、NKF やその他の「日本語」コード変換ツールと違って 直接 JIS<->EUC<->SJIS 変換するのでなく、一旦 Unicode に変換しているためで、機種依存文字の変換先が不定ではどうにも ならないからであろう) このため、投稿メールに機種依存文字が混じっていると、ヘッダ/ フッタの付加時などに文字化けを誘発することになる。 *解決法* これまでに、1.機種依存文字を全て ? にしてしまう。2.機種依 存文字を意味的に近い文字に変換する {例 ① -> (1)} の方法 を試して来たが、質問があれば教えるということで、公式的には一 切サポートしてなかった。ここでは、ヘッダ/フッタの付加時に、 charset の優先順位を与える事で、できる限りリストのポリシー に合った修正が可能になるようにするとともに、投稿口のところで 必要に応じた「嘘つき ISO-2022-JP」から UTF-8 への変換が できるようにハンドラモジュールを追加した。また、これが可能と なるように PyKF (0.3.4) を同梱している。 *インストール* python 2.5 以上 (not python 3.x) が必要。 通常の mailman と同様の手順でインストール。 pythonlib に pykf が入り、Handlers に iso2022jpfix.py が入る。 *設定の詳細* (あなたのポリシーと責任で) 1.Defaults.py に設定可能なパラメータを追加してある。 # Charset order in Decorate.py DECORATE_LCSET = 1 DECORATE_MCSET = 2 DECORATE_CHARSETS = [DECORATE_LCSET, \ DECORATE_MCSET, 'utf-8'] フッタ/ヘッダの追加時に LCSET (リストの文字コード), MCSET (メールの文字コード), UTF-8 の順で変換を試みる。 UTF-8 の使用が嫌なら mm_cfg.py でこれを取り除けば良い。 (結果については、設定者の責任です) 2.mm_cfg.py に以下を追加する。 GLOBAL_PIPELINE.insert(1, 'iso2022jpfix') 「嘘つきISO-2022-JP」を(問答無用で)UTF-8 に変換する。 *どうしてもポリシーが合わない人は* 0. Decorate.py を使わない (それでも archive, digest は、問題がでる) (Obsoleteな) 解決法の 1,2 を試す。 ヒント: 1. email/charset.py を書き変えて使用する 2. behave.py を使う *以上* 質問は mailman-users-jp@python.jp へどうぞ。 *** 2010/12/07 rev 3. 2010/11/03 rev 2. 2010/07/10 1st version