メーリングリストが止まった

あるとき突然メーリングリストが止まった。いくつかあるメーリスの一つだ。止まったというクレームがきて、ほかのメーリスをためしたら問題がない。
OSXサーバ10.4 で mailman を使っている。
ログを見ると
Sep 09 19:29:50 2010 (514) Uncaught runner exception: [Errno 63] File name too long: ‘/private/var/mailman/archives/private/physiologyml/attachments/20100907/2c2bbc24/iso-2022-jpBRWZmZWN0cyBvZiBVbmlsYXRlcmFsIE1vdG9yIENvcnRleCBMZXNpb24giso-2022-jpBb24gSXBzaWxlc2lvbmFsIEhhbmQbJEIhRxsoQnMgUmVhY2ggYW5kIEdyiso-2022-jpBYXNwIFBlcmZvcm1hbmNlIGluIE1vbmtleXMgUmVsYXRpb25zaGlwIFdpiso-2022-jpBdGggUmVjb3ZlcnkgaW4gdGhlIENvbnRyYWxlc2lvbmFsIEhhbmQucGRm.pdf’
Sep 09 19:29:50 2010 (514) Traceback (most recent call last):
File “/usr/share/mailman/Mailman/Queue/Runner.py”, line 111, in _oneloop
self._onefile(msg, msgdata)
File “/usr/share/mailman/Mailman/Queue/Runner.py”, line 167, in _onefile
keepqueued = self._dispose(mlist, msg, msgdata)
File “/usr/share/mailman/Mailman/Queue/IncomingRunner.py”, line 130, in _dispose
more = self._dopipeline(mlist, msg, msgdata, pipeline)
File “/usr/share/mailman/Mailman/Queue/IncomingRunner.py”, line 153, in _dopipeline
sys.modules[modname].process(mlist, msg, msgdata)
File “/usr/share/mailman/Mailman/Handlers/ToDigest.py”, line 91, in process
send_digests(mlist, mboxfp)
File “/usr/share/mailman/Mailman/Handlers/ToDigest.py”, line 132, in send_digests
send_i18n_digests(mlist, mboxfp)
File “/usr/share/mailman/Mailman/Handlers/ToDigest.py”, line 306, in send_i18n_digests
msg = scrubber(mlist, msg)
File “/usr/share/mailman/Mailman/Handlers/Scrubber.py”, line 265, in process
url = save_attachment(mlist, part, dir)
File “/usr/share/mailman/Mailman/Handlers/Scrubber.py”, line 445, in save_attachment
fp = open(path, ‘w’)
IOError: [Errno 63] File name too long: ‘/private/var/mailman/archives/private/physiologyml/attachments/20100907/2c2bbc24/iso-2022-jpBRWZmZWN0cyBvZiBVbmlsYXRlcmFsIE1vdG9yIENvcnRleCBMZXNpb24giso-2022-jpBb24gSXBzaWxlc2lvbmFsIEhhbmQbJEIhRxsoQnMgUmVhY2ggYW5kIEdyiso-2022-jpBYXNwIFBlcmZvcm1hbmNlIGluIE1vbmtleXMgUmVsYXRpb25zaGlwIFdpiso-2022-jpBdGggUmVjb3ZlcnkgaW4gdGhlIENvbnRyYWxlc2lvbmFsIEhhbmQucGRm.pdf’
Sep 09 19:29:50 2010 (514) SHUNTING: 1284028118.276547+09c3101c3ca9dda630d35a87bdfc5463eecae202

となっている。

どうやら、やたら長い名前の添付ファイルを送ったらしい。聞いたら

Effects of Unilateral Motor Cortex Lesion on Ipsilesional Hand’s Reach and
Grasp Performance in Monkeys Relationship With Recovery in the Contralesiona
l Hand.pdf

だって。なんてことだ、常識外だろうが。これを解決するのにえらいてまどった。
最終的には解決したのだが、なかなか解決できず、しかし使わないといけない状況で、なんとか新しいメーリスを、古いメーリスの登録者から作った。それでとりあえず運用してもらうことにした。
このメーリスには、もはや関係のない者が、自分で脱会してないし、削除の依頼も来てないからそのままになっていたから、この際整理するのもいいかと思ったからだ。登録者は30名くらいだからな。
解決方法は、多分こんな風にすればいいのだと思う。解決したのだが、いろいろなことをやったのでどれが正しいのかわからなくなってしまったのだ。
usr/share/mailman で
# ./bin/unshunt
を実施する。配信できなかったメールはshunt というdirectory に保存されているらしい。あちこちいじったから、どこにこのdirectory があったのかわからなくなった。 上記のコマンドを実施する前にshunt directory を捨てるなんてことも実施したからだ。
/var/mailman/lists/[メーリングリスト名] のdigest.mbox を捨てる。こいつが要では?
2度とないように
/usr/share/mailman/mailman にある mm_cfg.py  に
SCRUBBER_DONT_USE_ATTACHMENT_FILENAME = True
と1行記述する というのがいいらしいが実施していない。というのもdigest.mbox を消して同じ長たらしいファイル名のファイルを添付して送信したらできちゃったからだ。つまり再現性がなかったのだ。
ちなみに

メーリングリストの一覧を得るコマンド
/usr/share/mailman root# ./bin/list_lists

特定のメーリングリスト登録者のリストを得るコマンド
/usr/share/mailman root# ./bin/list_members [メーリングリスト名]
ともかくリストにあるメアドが出力されるもので、その属性(配信停止とか投稿可とか)は出力されない。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です