Warning: リポジトリと同期できません (サポートされていないバージョンコントロールシステム "svn です。 Python のライブラリに "svn" が正しくインストールされているか確認してください。)

メールをTracに蓄積 - MailArchiveプラグイン(Trac0.11用)

1. 概要

MLなどのメールを保管し、Tracにて表示・検索するためのプラグインです。
プロジェクトですでに使用しているMLがあり、その内容をTracで一元管理したい場合にお使いください。
EmailtoTracScript の様に、メールをチケットに投入する機能はありません。)

Tracの強力なリンク機能を利用できます。たとえば、Wikiで特定のメールを示すリンクを作成したり、メールの本文に書かれたチケットの番号をリンクにしてしまうことが可能です。また、検索やタイムラインといったTracの基本機能にも対応しています。

Trac 0.11に対応しています。
本記事はTrac0.11版のものです。Trac 0.9,Trac 0.10版の説明は「メールをTracに蓄積 - MailArchiveプラグイン(Trac0.9/0.10用)」を参照してください。

2. 主な機能

  • メールのインポート
    unixmail形式のメールのインポートします。添付ファイルはTracのAttachementとして管理します。
  • メールサーバからのメール受信
    pop3でサーバから直接メールを受信可能です。
  • 読み込んだメールのスレッドツリー表示
    ML名ごと・月ごとにメールをスレッド表示します。
    (件数が多い場合、さらにページ分割されます) 

  • メール本文のWiki表示
    メール本文にTracのwiki構文で解釈し、リンクに変換します。 たとえばメール本文内に #1という文字があれば、チケット1 へのリンクに変換します。 
     
  • メールの検索
    Tracの検索機能で、メールのサブジェクトと本文を検索可能です。
    http://weekbuild.sakura.ne.jp/trac/attachment/wiki/TracDoc/MailArchivePlugin/MailArc003mini.png?format=raw
  • メールのタイムライン表示
    Tracのタイムライン機能で、メールの送信日をもとにタイムラインとして表示可能です。
    チケットの登録やリポジトリのコミットと、メールの送信日をいっしょに表示することが出来ます。
    http://weekbuild.sakura.ne.jp/trac/attachment/wiki/TracDoc/MailArchivePlugin/MailArc004mini.png?format=raw
  • Wikiでリンク指定
    Tracの強力なリンク機能をメールにも適用します。Wikiにメール単体をさすリンクを指定可能です。Message-IDや、MLで良く使われるサブジェクト([aaa:001],[aaa 001]など)を リンクにします。

3. セットアップ

3.1 ダウンロード

Subversion を使用してはHTTP経由でチェックアウトしてください。コマンドラインクライアントでは、以下のようにします。(詳しくはhttp://sourceforge.jp/projects/shibuya-trac/cvs/ 参照)

svn checkout http://svn.sourceforge.jp/svnroot/shibuya-trac/plugins/mailarchiveplugin

3.2 インストール

MailArchivePluginのインストールを行います。

(1) インストール

zipを解凍してください。
Trac0.11用の最新版はtrunkフォルダにあります。
setup.pyがあるフォルダに移動してください。
以下のコマンドを実行して下さい:

$ python setup.py install

(bdist_eggでeggファイルを作るやり方だと、スクリプトがうまく動かないみたいです。)

(2) TracEnvのupgrade

DBにMailArchivePlugin用のテーブルを追加するために、TracEnvをupgradeする必要があります。以下のコマンドを実行してください。

$ trac-admin [TracEnvのディレクトリ] upgrade
(3) Trac.iniの設定

MailArchivePluginを使用可能にするには、Trac.iniの[components]カテゴリに以下を加えてください。
(pluginフォルダに置いた場合には不要)

[componets]
mailarchiveplugin.* = enabled

ここまでで、MailArchivePluginのインストールは終了です。メインメニューに「MailArchive」というメニューが追加されていると思います。
ただし、まだメールをインポートしてないので、メニューを押しても何も表示されません。
引き続き、メールをインポートするための設定と、メールのインポートを行ってください。

4. メールのインポート

4.1 説明

MailArchivePluginでメールを表示・検索するには、まずメールデータをTracに取込む(=インポートする)必要があります。

メー ルをインポートするには、2通りの方法があります。unixmail形式のメールファイルのインポートと、pop3サーバからのメールの受信です。「片方 の方法だけ使う」ことも可能ですし、「最初に今までのメールをインポートしてから、今後はpop3でメールを受信する。」というような使い方をも可能で す。 注意: * メールのデータはTracEnvのデータベースに保存します。ディスク使用量に注意してください。大抵はメールのほうがTracに蓄積されたデータよりも大きいので。。

  • メー ルの添付ファイルはTracのAttachmentとして保存します。Trac.iniに記載されたサイズより大きな添付ファイルは取り込み出来ません。 Trac.iniの[attachment]のmax_size(デフォルトは262,144Byte)を大きくしたほうがよいでしょう。
  • HTML形式のメールは取り込み出来ません。
  • マルイチなどの記号文字を取り込むためには、nkfが別途必要です。
  • メールデータのユニークキーはMessage-IDです。すでにDBに同じMessage-IDのメールがDBに存在する場合は、新しく取込んだメールで上書きします。

4.2 設定

Trac.iniの以下の項目を設定してください。

[mailarchive]

codecaliases読み込み時のコーデック変換エイリアスをしています。変換しない場合は不要です。
以下の書式で記載してください。メールの文字コード:pythonのコーデック名[,メールの文字コード:pythonのコーデック名]...コーデック名のところに、cmd:実行ファイルパスを書くと、外部の変換プログラムを呼び出し可能です。変換プログラムは、標準入力から入力を受け取り、標準出力に結果をutf-8で出力する必要があります。
pop3_serverpop3サーバのアドレスを指定します。pop3受信しない場合は不要です。
pop3_userpop3サーバへ接続するためのアカウントを指定します。pop3受信しない場合は不要です。
pop3_passwordpop3サーバへ接続するためのパスワードを指定します。
pop3_delete
pop3サーバのメールを削除するかどうかを指定します。(デフォルト:none)
pop3受信しない場合は不要です。
none:削除しない。[[BR]]imported:インポートできたもののみ削除する。[[BR]]all:すべて削除する。

なお、日本ではマルイチなどの機種依存文字が含まれるJIS形式のメールが普通に送られてきますが、これを取り込みたい場合は、nkfが必要です。 nkf(V2.0以上)をパスのとおったフォルダにおき、trac.iniにて以下の様に指定してください。

[mailarchive]
codecaliases = iso-2022-jp:cmd:nkf -J -w8 -x --cp932,Shift_JIS:cp932
Shift_JISの指定はおまけ(つけないで試してみたらShift_JISの変換失敗があったため)。

あなたの周りの人が、そんなメール送るやついねぇという良い人たちばかりでしたら、codecaliasesにiso-2022-jp:iso-2022-jp-2004 くらいを指定しておけばよいでしょう。

4.3 取込み方法

プラグインインストール時に、スクリプト用のフォルダパス(tracdとがあるのと同じ)に TracMailArchive-adminというコマンドが作成されます。これを使用してください。

(1) メールファイル(unixmail形式)のインポート

あなたの手元にあるメールをまとめてインポートします。メールファイルのインポートを行わない場合は、この章は飛ばしてください。
unixmail形式のメールをインポート可能です。
メールを取込むには、以下のコマンドを実行してください。
ML名には、メーリングリストの(短い)名前を指定してください。画面に表示する際に、ここで指定したML名をキーにして分類されます。
メールの取込み状況およびエラーは、標準出力に出力されます。

[スクリプト用のフォルダパス]/TracMailArchive-admin [TracEnvのディレクトリ] pop3 [ML名]

例(Unix):

$ python /usr/bin/TracMailArchive-admin /var/trac/tracenv import mailarc-ML /tmp/mail_2006

例(Windows):

$ TracMailArchive-admin.exe /var/trac/tracenv import mailarc-ML /tmp/mail_2006
(2) pop3メールの受信

pop3サーバからメールを受信します。pop3メールの受信を行わない場合は、この章は飛ばしてください。
メールを受信するには、以下のコマンドを実行してください。
ML名には、メーリングリストの(短い)名前を指定してください。画面に表示する際に、ここで指定したML名をキーにして分類されます。
メールの取込み状況およびエラーは、標準出力に出力されます。

$ python [スクリプト用のフォルダパス]/TracMailArchive-admin [TracEnvのディレクトリ] pop3 [ML名]

例(Unix):

$ python /usr/bin/TracMailArchive-admin /var/trac/tracenv pop3 mailarc-ML

例(Windows):

$ TracMailArchive-admin.exe /var/trac/tracenv pop3 mailarc-ML

取り込みを行うシェルを書いて、cronに設定しておくとよいでしょう。

シェルの例:

#!/bin/csh

source $HOME/.cshrc
python /local/bin/mailarc-admin.py /var/trac/tracenvmailarc >> /var/trac/repo/log/mailarc.log

5.パーミッションの設定

メールを参照するためには、パーミッションの設定が必要です。管理ページの[一般設定]→[パーミッション]から、'MAILARCHIVE_VIEW'権限をユーザに付与してください。
なお、添付ファイルを参照するためには'ATTACHIMENT_VIEW'権限も必要です。

6. 使用方法

メニューにある「MailArchive」をクリックしてください。一番最近の月のメールがスレッド表示されます。画面右に、ML毎、月毎のメールの数が表示されます。これをクリックすると、そのML/月のメールがスレッド表示されます。
メールを1件クリックしてみてください。メールの中身が表示されます。画面右には、同じスレッドに属するメールが表示されます。添付ファイルがあれば、画面下のAttachement欄に表示されます。

6. カスタマイズ

Trac.iniの以下の項目を設定することで、MailArchivePluginの動きを細かく制御することが出来ます。

[mailarchive]

wikiview
メール本文を表示する場合に、wiki文法に従い変換するか否かを設定します。(デフォルト:enabled)
disabled:メール本文をテキストとしてそのまま表示します。
enabled:本文にwiki文法に沿った文字があると、変換します。(例えば #1 があると、チケット1へのリンクになります)
replaceatメールアドレスを表すリンクのリンク先として使用されるアドレスの@を変換する文字を設定します。(デフォルト:変換せず)
補足:Trac0.11用ではメールアドレスがリンクとなり、直接見えなくなったため、デフォルトは"変換せず"にしています。しかし、HTMLにはアドレスが書かれているので、インターネットに公開するサイトではアドレス収集対策として変更することをおすすめします。
item_pages 1ページに表示されるメールの件数を指定します。(デフォルト:50)
ページ分割しないという設定はありませんので、ページ分割をしたくない場合は、できるだけ大きな値を設定してください。
補足:1ページに表示されるメールは以下のように取得しています。従って、同一スレッドでも別ページに分かれる場合があります。
(1)指定したカテゴリ、指定した月という条件でメールの送信日時順に取得
(2)送信日時順に指定した件数でページに分割
(3)分割したページ内でIn-Reply-Toに従いスレッドを構築
shown_pages ページの目次の表示件数を設定します。(デフォルト:30)
なお、Tracの検索機能と同じように、必ずしも指定件数表示される訳ではないようです。よく分かりません。

[components]

mailarchive.mailarchive.NavigationContributordisabledにすると、メニューバーにMailArchiveを表示しません。
mailarchive.mailarchive.SearchProviderdisabledにすると、検索にMailArchiveを表示しません。
mailarchive.mailarchive.Timelinedisabledにすると、タイムラインにMailArchiveが表示しません。
mailarchive.wikisyntax.WikiSyntaxMaildisabledにすると、wiki内のmail:1 という形式の文字をメールへのリンクに変換しません。
mailarchive.wikisyntax.WikiSyntaxMldisabledにすると、wiki内の[ML名:1]や[ML名 1]という形式の文字をメールへのリンクに変換しません。
mailarchive.wikisyntax.WikiSyntaxMessageIddisabledにすると、wiki内のMessage-ID:という形式の文字をメールへのリンクに変換しません。

7. 開発中のソースについて

メンテナンスは、 Sibuya.trac で行っています。svnから取得してください。

8. ご意見・ご要望

ご意見・ご要望は以下から登録してください。

これまでに登録されたものは[query?component=MailArchivePlugin こちら]を参照してください。

添付ファイル