*version 2.1.14+j7 [#yb19b1f0] 上記バージョンには、下記が取り入れられていて、 /usr/local/mailman/Mailman/mm_cfg.py へ USE_MAILMAN_MESSAGE_ID = Yes を記述するヨロシ。 *Gmail対策? [#p4329da9] Gmailユーザが「メーリングリストに投稿すると、自分の投稿が配信されない」というトラブル?はよく耳にします。これは、GmailがMessage-ID をユニークなメッセージのID として使用する挙動が厳密すぎる?ために多くのメーリングリスト(以下ML)システムで見られる現象の様です。 以下のURLに、いろいろ出ています。^^(「Gmail メーリングリスト 投稿」をキーにググる) http://www.google.co.jp/search?hl=ja&q=Gmail+%E3%83%A1%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%B0%E3%83%AA%E3%82%B9%E3%83%88%E3%80%80%E6%8A%95%E7%A8%BF&lr= つまり、Gmail からML へメールを送ると、そのメールは送信時点で、あるMessage-ID を持ったメールとしてアーカイブされてしまうため、MLシステムを通った際にsubject を[TFC:00123] のように書き換えるような運用をしている場合、連番付きのメールが自分には配送されない、ということになる(ような)のです。 Subject を書き換える処理をしていなくても実は同じことが起きているのですが、書き換える処理をしている場合、その書き換えられた方のメールが自分宛に届かない、ということです。 つまり、ユーザから見ると自分が投稿したメールがMLに届いていない様に見え、かつ、連番に欠番が出来るようになります。同一内容の連続投稿が起こったり、管理サイドへの問い合わせが発生します。 //ちなみにMessage-ID をユニークなメールのキーとして使うのは、ある意味では当然ですが、例えばBeckyでは重複したMessage-ID のメールを取り扱えます。 日本のMLでは一般的な[TFC:00123] のような連番は、ユーザーにとってもMLからの配信漏れが確認できるなど、有用な情報なので、なんとか対策したいと思っていました。多くのGmailユーザがgoogleへの改善の申し入れもしたようですが、gmail側では対応する気配がありません。 ので、MLのシステム(プログラム)側で対応してみることにしました。 ML にはMailman を使っていたので、Subject 書換の際に、Message-ID を書き換えてしまう、という方法です。 以下が、書き換えたdiff です。 // ==================== // $ diff -u mailman-2.1.9/Mailman/Handlers/CookHeaders.py.org mailman-2.1.9/Mailman/Handlers/CookHeaders.py // --- mailman-2.1.9/Mailman/Handlers/CookHeaders.py.org 2006-02-17 11:42:35.000000000 +0900 // +++ mailman-2.1.9/Mailman/Handlers/CookHeaders.py 2008-02-18 02:11:43.000000000 +0900 // @@ -237,6 +237,10 @@ // prefix = mlist.subject_prefix.strip() // if not prefix: // return // + # overwrite message-id. // + msg['X-Original-Message-ID'] = msg.get('message-id', '') // + del msg['message-id'] // + msg['Message-ID'] = Utils.unique_message_id(mlist) // subject = msg.get('subject', '') // # Try to figure out what the continuation_ws is for the header // if isinstance(subject, Header): // ==================== ただ気になるのはこの処理をしたことでループ検知などに悪影響が出ないかということと、 %%スレッド表示がどうなるか??です。%%スレッド表示は保たれるようです。 % diff -urN /usr/local/mailman/Mailman/Handlers/CookHeaders.py-dist /usr/local/mailman/Mailman/Handlers/CookHeaders.py --- /usr/local/mailman/Mailman/Handlers/CookHeaders.py-dist 2008-08-03 11:19:50.000000000 +0900 +++ /usr/local/mailman/Mailman/Handlers/CookHeaders.py 2008-10-01 13:59:34.000000000 +0900 @@ -238,6 +238,10 @@ prefix = mlist.subject_prefix.strip() if not prefix: return + # overwrite message-id. + msg['X-Original-Message-ID'] = msg.get('message-id', '') + del msg['message-id'] + msg['Message-ID'] = Utils.unique_message_id(mlist) subject = msg.get('subject', '') # Try to figure out what the continuation_ws is for the header if isinstance(subject, Header): //ちょっとずれる感じもしますが、 //http://mail.python.org/pipermail/mailman-developers/2003-October/015981.html //でもMessage-ID の書き換えについて議論しているようで気になったのですが、結局実装されずじまい、みたいなことでしょうか。 //そもそもSubject を書き換えてるのだからMessage-ID を書き換えないのがおかしい挙動なんだ、という気もしないではないので、この修正のほうがむしろ正しい挙動に近づくのでは?、なんてことまで考えたりもしましたが、RFC の厳密な解釈など詳しく無いので判断がつきません・・。 //目の前のシステムがうまく動けば個人的には問題が無いのですが、もしも分かる方がいらっしゃったら教えていただきたいところです・・。 http://blog.hippo.fm/2008/02/gmail.html ---- #counter([total|today|yesterday]); &lastmod;