Gmail対策?

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に届いていない様に見え、かつ、連番に欠番が出来るようになります。同一内容の連続投稿が起こったり、管理サイドへの問い合わせが発生します。

日本のMLでは一般的な[TFC:00123] のような連番は、ユーザーにとってもMLからの配信漏れが確認できるなど、有用な情報なので、なんとか対策したいと思っていました。多くのGmailユーザがgoogleへの改善の申し入れもしたようですが、gmail側では対応する気配がありません。

ので、MLのシステム(プログラム)側で対応してみることにしました。

ML にはMailman を使っていたので、Subject 書換の際に、Message-ID を書き換えてしまう、という方法です。

以下が、書き換えたdiff です。

ただ気になるのはこの処理をしたことでループ検知などに悪影響が出ないかということと、 スレッド表示がどうなるか??です。スレッド表示は保たれるようです。

% 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://blog.hippo.fm/2008/02/gmail.html


Counter: 6031, today: 1, yesterday: 1

2018-01-04 (木) 13:08:28


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS