~tkikuchi/mailman/2.1-japan

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
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