2015-04-27: http://weekbuild.sakura.ne.jp/trac/wiki/TracDoc/MailArchivePlugin が参照できない状態にあるため http://web.archive.org/*/http://weekbuild.sakura.ne.jp/trac/wiki/TracDoc/MailArchivePlugin からコピーを置くものです。

メールをTracに蓄積 - MailArchiveプラグイン

1. 概要

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

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

Trac 0.9,Trac 0.10,Trac 0.11beta1に対応しています。

2. 主な機能

  • メールのインポート
    unixmail形式のメールのインポートします。添付ファイルはTracのAttachementとして管理します。
  • メールサーバからのメール受信
    pop3でサーバから直接メールを受信可能です。
  • 読み込んだメールのスレッドツリー表示
    ML名ごと・月ごとにメールをスレッド表示します。
    MailArc001mini.png
  • メール本文のWiki表示
    メール本文にTracのwiki構文で解釈し、リンクに変換します。 たとえばメール本文内に #1 #1 という文字があれば、チケットの #1 #1 へのリンクに変換します。
    MailArc005mini.png
  • メールの検索
    Tracの検索機能で、メールのサブジェクトと本文を検索可能です。
    MailArc003mini.png
  • メールのタイムライン表示
    Tracのタイムライン機能で、メールの送信日をもとにタイムラインとして表示可能です。
    チケットの登録やリポジトリのコミットと、メールの送信日をいっしょに表示することが出来ます。
    MailArc004mini.png
  • Wikiでリンク指定
    Tracの強力なリンク機能をメールにも適用します。Wikiにメール単体をさすリンクを指定可能です。Message-IDや、MLで良く使われるサブジェクト([aaa:001],001など)を リンクにします。

3. セットアップ

3.1 ダウンロード

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

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

3.2 インストール

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

3.2.1 Trac 0.11の場合

(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のインストールは終了です。メインメニューに「メール倉庫」というメニューが追加されていると思います。
ただし、まだメールをインポートしてないので、メニューを押しても何も表示されません。
引き続き、メールをインポートするための設定と、メールのインポートを行ってください。

3.2.2 Trac 0.9、0.10用の場合

(1) eggの設置

zipを解凍してください。
最新版はtrunkフォルダにあります。古いTrac用(0.9, 0.10)のものはbranchesフォルダにあります。
使用するバージョンのsetup.pyがあるフォルダに移動してください。
以下のコマンドを実行して下さい:

$ python setup.py bdist_egg

distフォルダが作成されます。
その中にある*.eggファイルを、TracEnvのplugins ディレクトリにコピーしてください。

(2) TracEnvのupgrade

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

$ trac-admin [TracEnvのディレクトリ] upgrade

(3) mailarchive-amin.pyの設置

srcディレクトリ直下にあるmailarchive-admin.pyを、実行しやすいディレクトリ(/usr/local/binとか)にコピーしてください。

(4) Trac.iniの設定

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

[componets]
mailarchiveplugin.* = enabled 

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

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:削除しない。
imported:インポートできたもののみ削除する。
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 取込み方法

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

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

$ python mailarchive-admin.py [TracEnvのディレクトリ] import [ML名] [インポートするファイルのパス]

例:

$ python mailarchive-admin.py /var/trac/tracenv import mailarc-ML /tmp/mail_2006
 

(2) pop3メールの受信

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

$ python mailarchive-admin.py [TracEnvのディレクトリ] pop3 [ML名]

例:

$ python mailarchive-admin.py /var/trac/tracenv pop3 mailarc-ML

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

シェルの例:

  1. #!/bin/csh
  2. source $HOME/.cshrc
  3. python /local/bin/mailarc-admin.py /var/trac/tracenvmailarc >> /var/trac/repo/log/mailarc.log

5. 使用方法

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

6. カスタマイズ

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

mailarchive

titleメニューバー、検索、タイムラインで使うMailArchiveプラグインのタイトルを設定します。(デフォルト:MailArchive)
このサイトでは'メール倉庫’
wikiview
メール本文を表示する場合に、wiki文法に従い変換するか否かを設定します。(デフォルト:enabled)
disabledにすると、メール本文をテキストとしてそのまま表示します。enabledにすると、本文にwiki文法に沿った文字があると、変換します。(例えば #1 があると、チケット1へのリンクになります)
replaceatメールアドレスの@を変換する文字を設定します。(デフォルト:'_at_')
全角の@にするのが日本では一般的?

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]や1という形式の文字をメールへのリンクに変換しません。
mailarchive.wikisyntax.WikiSyntaxMessageIddisabledにすると、wiki内のMessage-ID:という形式の文字をメールへのリンクに変換しません。