ちょっと諸事情により、サーバをクリーンインストールすることになった。
これを期にWindows→RHEL4になるのだが、
いい機会なのでプラグインの設定とか見直していた。
んで、一部のTracのプロジェクトがプロジェクト管理というより、
SNSちっくなコミュニティ運用をすることになりそう。
で、メーリングリストのメールなどもためていきたいなぁと思い、
MailArchivePluginをインストールしてみた。
で、前置きは長くなったが、環境は以下の通り。
- OS:RHEL4
- trac:0.11.ja1
- Subversion:1.50
一部、はまったのでそれだけ記述。
python setup.py install でインストール後、
とりあえず、問答無用でGmailのデータをPOP3でインポートしてみる
python /usr/bin/TracMailArchive-admin /var/trac/tracenv pop3
するとこんな感じで落ちた。
2008/10/05 19:54:48 Start Connction pop3 pop.gmail.com:XXXX@gmail.com ...
Traceback (most recent call last):
File "/usr/local/share/python25/bin/TracMailArchive-admin", line 8, in
load_entry_point('TracMailArchive==0.1', 'console_scripts', 'TracMailArchive-admin')()
File "build/bdist.linux-i686/egg/mailarchive/mailarchiveadmin.py", line 623, in run
File "/usr/local/share/python25/lib/python2.5/site-packages/Trac-0.11.ja1-py2.5.egg/trac/admin/console.py", line 104, in onecmd
rv = cmd.Cmd.onecmd(self, line) or 0
File "/usr/local/share/python25/lib/python2.5/cmd.py", line 219, in onecmd
return func(arg)
File "build/bdist.linux-i686/egg/mailarchive/mailarchiveadmin.py", line 421, in do_pop3
File "build/bdist.linux-i686/egg/mailarchive/mailarchiveadmin.py", line 521, in _import_from_pop3
File "/usr/local/share/python25/lib/python2.5/poplib.py", line 96, in __init__
raise socket.error, msg
socket.error: (110, 'Connection timed out')
接続できていない感じだ。
とりあえず、ソースを見てみる。Pythonはよくわからないんだけど。。。
mailarchiveadmin.pyの521行目。。。
pop = poplib.POP3(pop_server)
確かに、自分のgmailはSSL設定にしてます。
どうせなのでちょっと直してみる。
trac.iniに以下のパラメータを追記
[mailarchive]
# sslでアクセスする場合にtrue。デフォルトは通常アクセス。
pop3_ssl = yes
青色が追加。とりあえずSSLアクセスを有効化。
def _import_from_pop3(self,author, db, mlid):
pop_server = self.env.config.get('mailarchive', 'pop3_server')
pop_user = self.env.config.get('mailarchive', 'pop3_user')
pop_password = self.env.config.get('mailarchive', 'pop3_password')
pop_delete = self.env.config.get('mailarchive', 'pop3_delete','none')
pop_ssl = self.env.config.get('mailarchive', 'pop3_ssl','no')
if pop_server =='':
self.print_error('trac.ini mailarchive pop3_server is null!')
elif pop_user == '':
self.print_error('trac.ini mailarchive pop3_user is null!')
elif pop_password == '':
self.print_error('trac.ini mailarchive pop3_password is null!')
self.print_info("%s Start Connction pop3 %s:%s ..." %
(time.strftime("%Y/%m/%d %H:%M:%S",time.gmtime()),
pop_server,pop_user))
pop = None
if pop_ssl == 'yes':
self.print_info('POP3_SSL access...')
pop = poplib.POP3_SSL(pop_server)
elif pop_ssl = 'no':
self.print_info('POP3 acces...')
pop = poplib.POP3(pop_server)
else:
self.print_error('This config is not exist.')
Let's...
python /usr/bin/TracMailArchive-admin /var/trac/tracenv pop3
OKみたい。とりあえずMessage-IDを指定せずに
まとめて取り込んでみたが問題なく成功したようだ。
画面から確認してみる。
ん? Oopsになっている。。。以下、エラーログ。
Trac detected an internal error:IndexError: list index out of range
んで、TracBack詳細
File "/usr/local/share/python25/lib/python2.5/site-packages/Trac-0.11.ja1-py2.5.egg/trac/web/main.py", line 424, in _dispatch_request
File "/usr/local/share/python25/lib/python2.5/site-packages/Trac-0.11.ja1-py2.5.egg/trac/web/main.py", line 198, in dispatch
File "build/bdist.linux-i686/egg/mailarchive/mailarchive.py", line 198, in process_request
File "build/bdist.linux-i686/egg/mailarchive/mailarchive.py", line 437, in _render_list
む。mailarchive.pyの437行目で落ちている。
mls[-1]['yearmonths'].append(category_item)
以下プロパティの値
- mls : []
- category_item : {'count': '7', 'name': u'', 'month': u'10', 'href': '', 'year': u'2008', ...
空なのに最終行に追加しようとしているせいかな。
mailarchive.pyの443行目あたりが怪しい。
if pre_mlid != mlid:
mls.append({'name':mlid,'yearmonths':[]})
pre_mlid = mlid
以下は該当するプロパティ値
pre_mlidの初期化を''で行っているせいで、mlidが空白のケースが素通りするっぽい。
とりあえず、415行目の初期化時の設定を変更
#pre_mlid = ''
pre_mlid = None
再度setup.pyして確認。
問題ないみたいだ。。。
これはバグって言うよりかは、仕様っぽいですね。
できればTracMailArchive-adminにMessage-IDが設定されていない場合にエラーにするか、
Messge-IDなしで登録できるかどちらかに設定する必要がありそう。。。
以下、感想。
Mailも検索できるし、wiki形式に変換されるし、スレッド形式で表示されるし、いい感じ。
あと、欲を言えば、折りたたみできたり
コメントを書き込めたり(wikiや、Ticketへのリンクを張りたい)
すると幸せになりそうだなと思う。
ありがたく使わせてもらいます。