*Mailman Tips 3 [#kf76e9ec]
[[Mailman on FreeBSD]]~
[[Mailman Tips]]~
[[Mailman Tips 2]]~
[[Mailman Tips 3]]~
[[Mailman Tips 4]]~
#contents
*以下の問題はMailman Ver 2.1.14で対策済み [#a8ec4e7e]
**管理データベースからの「拒否」メールの標題の日本語化 [#s96b9a1c]
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([total|today|yesterday]);