Mailman Tips 3

Mailman on FreeBSD
Mailman Tips
Mailman Tips 2
Mailman Tips 3
Mailman Tips 4

以下の問題はMailman Ver 2.1.14で対策済み

管理データベースからの「拒否」メールの標題の日本語化

http://mm.tkikuchi.net/pipermail/mmjp-users/2008-January/002258.html

【現象】
会員アドレス限定のモデレートなlist で、
「list への foo@example.com の投稿は承認が必要です」
というメールでは、正常に表示する日本語メールタイトルが、「リストの管理
データベースで、「拒否」にチェックし、投稿者に返送されたとき、
 -------------------------------------------------------------------
    件名 =?ISO-2022-JP?B?GyRCJCIkMSReJDckRiQqJGEkRyRIJCYkNBsoQg==?=
 =?ISO-2022-JP?B?GyRCJDYkJCReJDkhIxsoQg==?= で投稿されたメール 
司会者による拒否の理由は以下の通りです。
"理由は示されていません"

この件に関する質問コメントは以下のリスト管理者宛にお願いします。
-------------------------------------------------------------------
のように、mimeデコードがないためタイトルの生データ?が帰るので読めない。
【対策】
messages 内で %(subject) を検索してみると、他の箇所もほとんど
同様の問題を持っていました。
templates の方は既に対応されているようですが…。

・保留メッセージの拒否通知メール
	Mailman/ListAdmin.py
・保留メッセージの取消確認画面・完了画面
	Mailman/Cgi/confirm.py
・message/rfc822 形式の添付として転送したメールの書庫 HTML
	Mailman/Handlers/Scrubber.py

修正するには、パッチを当てるしかないと考えています。

patchの当て方 http://www.jp.freebsd.org/QandA/HTML/541.html

 ただしパッチの改行コードがCR+LFだとエラーするのでLFで有ることを確認すること :)

% patch < MIMESubject.patch
Hmm...  Looks like a new-style context diff to me...
The text leading up to this was:
--------------------------
|*** Mailman/Cgi/confirm.py.orig        Sun Sep 30 16:11:00 2007
|--- Mailman/Cgi/confirm.py     Fri Jan  4 10:53:32 2008
--------------------------
Patching file Mailman/Cgi/confirm.py using Plan A...
Hunk #1 succeeded at 634 (offset 6 lines).
Hunk #2 succeeded at 701 (offset 6 lines).
Hmm...  The next patch looks like a new-style context diff to me...
The text leading up to this was:
--------------------------
|*** Mailman/Handlers/Scrubber.py.orig  Sun Sep 30 16:11:02 2007
|--- Mailman/Handlers/Scrubber.py       Sat Jan  5 12:19:03 2008
--------------------------
Patching file Mailman/Handlers/Scrubber.py using Plan A...
Hunk #1 succeeded at 284 (offset 14 lines).
Hmm...  The next patch looks like a new-style context diff to me...
The text leading up to this was:
--------------------------
|*** Mailman/ListAdmin.py.orig  Sun Sep 30 16:11:02 2007
|--- Mailman/ListAdmin.py       Thu Jan  3 22:18:37 2008
--------------------------
Patching file Mailman/ListAdmin.py using Plan A...
Hunk #1 succeeded at 292.
done
piano#

MIMESubject.patch

*** Mailman/Cgi/confirm.py.orig	Sun Sep 30 16:11:00 2007
--- Mailman/Cgi/confirm.py	Fri Jan  4 10:53:32 2008
***************
*** 628,635 ****
              # the user who posted the message.
              op, id = mlist.pend_confirm(cookie)
              ign, sender, msgsubject, ign, ign, ign = mlist.GetRecord(id)
-             subject = Utils.websafe(msgsubject)
              lang = mlist.getMemberLanguage(sender)
              i18n.set_language(lang)
              doc.set_language(lang)
              # Discard the message
--- 628,636 ----
              # the user who posted the message.
              op, id = mlist.pend_confirm(cookie)
              ign, sender, msgsubject, ign, ign, ign = mlist.GetRecord(id)
              lang = mlist.getMemberLanguage(sender)
+             subject = Utils.websafe(Utils.oneline(msgsubject,
+                                                   Utils.GetCharSet(lang)))
              i18n.set_language(lang)
              doc.set_language(lang)
              # Discard the message
***************
*** 694,700 ****
      i18n.set_language(lang)
      doc.set_language(lang)
  
!     subject = Utils.websafe(msgsubject)
      reason = Utils.websafe(_(givenreason))
      listname = mlist.real_name
      table.AddRow([_('''Your confirmation is required in order to cancel the
--- 695,701 ----
      i18n.set_language(lang)
      doc.set_language(lang)
  
!     subject = Utils.websafe(Utils.oneline(msgsubject, Utils.GetCharSet(lang)))
      reason = Utils.websafe(_(givenreason))
      listname = mlist.real_name
      table.AddRow([_('''Your confirmation is required in order to cancel the
*** Mailman/Handlers/Scrubber.py.orig	Sun Sep 30 16:11:02 2007
--- Mailman/Handlers/Scrubber.py	Sat Jan  5 12:19:03 2008
***************
*** 270,275 ****
--- 270,276 ----
              finally:
                  os.umask(omask)
              subject = submsg.get('subject', _('no subject'))
+             subject = Utils.oneline(subject, lcset)
              date = submsg.get('date', _('no date'))
              who = submsg.get('from', _('unknown sender'))
              size = len(str(submsg))
*** Mailman/ListAdmin.py.orig	Sun Sep 30 16:11:02 2007
--- Mailman/ListAdmin.py	Thu Jan  3 22:18:37 2008
***************
*** 292,300 ****
          elif value == mm_cfg.REJECT:
              # Rejected
              rejection = 'Refused'
              self.__refuse(_('Posting of your message titled "%(subject)s"'),
                            sender, comment or _('[No reason given]'),
!                           lang=self.getMemberLanguage(sender))
          else:
              assert value == mm_cfg.DISCARD
              # Discarded
--- 292,302 ----
          elif value == mm_cfg.REJECT:
              # Rejected
              rejection = 'Refused'
+             lang = self.getMemberLanguage(sender)
+             subject = Utils.oneline(subject, Utils.GetCharSet(lang))
              self.__refuse(_('Posting of your message titled "%(subject)s"'),
                            sender, comment or _('[No reason given]'),
!                           lang=lang)
          else:
              assert value == mm_cfg.DISCARD
              # Discarded

Counter: 2831, today: 1, yesterday: 0

添付ファイル: fileMIMESubject.patch 350件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2011-10-29 (土) 09:04:38