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

あるとき突然メーリングリストが止まった。いくつかあるメーリスの一つだ。止まったというクレームがきて、ほかのメーリスをためしたら問題がない。

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

となっている。

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

だって。なんてことだ、常識外だろうが。これを解決するのにえらいてまどった。

最終的には解決したのだが、なかなか解決できず、しかし使わないといけない状況で、なんとか新しいメーリスを、古いメーリスの登録者から作った。それでとりあえず運用してもらうことにした。

このメーリスには、もはや関係のない者が、自分で脱会してないし、削除の依頼も来てないからそのままになっていたから、この際整理するのもいいかと思ったからだ。登録者は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 [メーリングリスト名]
ともかくリストにあるメアドが出力されるもので、その属性(配信停止とか投稿可とか)は出力されない。