BLOGTIMES
2009/03/31

windowsサーバでemail2tracを使う (fetchmail+email2trac)

  python  trac  windowsserver  bat 
このエントリーをはてなブックマークに追加

Tracはセットアップがいろいろ面倒なので、最近はWindows用のインストーラーがついたTrac Lightningをひたすら使っています。

Trac使い込んでいくといろいろと不満点が出てくるのですが、その最たる例が使い方がっわからない人でもTicketが入れられるようにメールを送るとチケットとして追加できるようにしたいというものがあります。

既にこれを実現するための仕組みとしてemail2tracという便利なスクリプトがあるのですがそもそもこのスクリプトはMDAが動いているサーバで.forwardや.qmailから起動されることを想定しているので通常MDAやMTAを動かしていないであろうWindowsサーバーに導入するには一手間かかります。一応、Windows向けのインストールマニュアルもありますが、日本語の情報があまりなかったので、導入方法をまとめておきます。

ちなみに実際の僕の導入構成はチケットに投入するときにいろいろ他にも処理を噛ませたかったので、fetchmail+procmail+emai2tracというもうちょっと複雑な構成になっています。

前準備

既にTracは導入済みであるとして、MTAやMTAを持っていないWindowsサーバでemail2tracを利用するには下記のものが必要になります。

1. 適当なメールアドレス

Yahoo!でもGmailでも好きなものを。このメールアドレス宛に送ったメールがチケットとして追加されるようになります。

2. Cygwin + fetchmail

1.のメールサーバーからメールを取得するために必要になります。Cygwinをインストールする際に、fetchmail を選択するのを忘れずに。本当はこの部分をPure Pythonで自作すればCygwinは不要にできるのですが、面倒なのでやめました。

email2tracのダウンロード

前準備が終わったら、email2tracのセットアップに入っていきます。まず、最新版のemail2tracをダウンロードして解凍します。ファイルがたくさん出てきますが、この中で使うのは下記の3つだけです。configureとかMakefileとか入っていますが、これらは無視してください。自分で.inを書き換えてセットアップすることになります。
 email2trac.conf
 email2trac.py.in
 delete_spam.py.in

これら3つを適当な場所にコピーします。
ここではc:\m2tというディレクトにインストールすることを前提に進めます。

ファイルのリネームとプログラムの微調整

email2trac.py.inとdelete_spam.py.inはそれぞれ、email2trac.pyとdelete_spam.pyという風にリネームします。configureとかMakefileを使っていないので、.inファイルの中には@hoge@のような部分が残っているので、これらの部分を手動で書き換えて微調整する必要があります。

email2trac.pyの1366行目付近に下記のような部分があるので、

configfile = '@email2trac_conf@'

下記のように書き換えます

configfile = 'email2trac_conf'

ファイルの最上部にはPythonのパスを示す@PYTHON@という部分がありますが、起動時にPythonのパスを指定することになるので、この部分は書き換えずに放っておいて大丈夫です。

次に設定ファイルであるemail2trac.confを書き換えます。

C:\m2t\email2trac.conf

[DEFAULT] project: C:\TracLight\projects\trac\SampleProject tmpdir: C:\m2t\tmp debug: 0 umask: 022 spam_level: 5 reply_all : 0 ticket_update: 1 umask: 022 email_header: 1 trac_version: 0.11 enable_syslog : 1 alternate_notify_template : alternate_notify_template_update : drop_spam : 0 verbatim_format: 1 strip_signature: 0 email_quote: > strip_quotes: 0 ignore_trac_user_settings: 0 black_list: MAILER-DAEMON@

最も重要な設定項目はprojectです。ここで指定したプロジェクトにチケットが投入されます。上記はTracLightをCドライブ直下にインストールした場合にSampleProjectを指定する例になります。

tmpdirについては、これを設定しないと添付ファイルの処理の部分でコケてうまく動かなかったので今回はC:\m2t\tmpというディレクトリを作りました。ここに限らずどこか適当なディレクトリを指定しても大丈夫です。

これでemail2trac本体の設定は完了です

fetchmailと連携させる

最後にfetchmailとemail2tracを連携させて、メールサーバーからメールを取得してチケットを投入するという一連の処理が流れるようにするために、fetchmailの設定ファイルを作ります。今回はC:\m2t\fetchmailrcという名前にします。

C:\m2t\fetchmailrc

poll ###POP_SERVER### with proto APOP user "###EMAIL_USER###" with password "###EMAIL_PASSWORD###" is trac here mda "C:/TracLight/python/python.exe C:/e2t/email2trac.py -f C:/e2t/email2trac.conf"

###POP_SERVER###、###EMAIL_USER###、###EMAIL_PASSWORD###の部分はそれぞれ用意しておいたメールアドレスの、POPサーバ、ユーザ名、パスワードに読み替えてください。僕はAPOP対応のサーバを使ったのでproto APOPになっていますが、普通のPOP3を使う場合にはproto POP3と書く必要があります。

最後にfetchmailを起動するためのバッチファイルを作ります。
今回はC:\m2t\runfetchmail.batという名前にします。

C:\m2t\runfetchmail.bat

C:\cygwin\bin\fetchmail -v --fetchmailrc C:\e2t\fetchmailrc >> C:\e2t\fetchmail.log

動作を確認する

設定がうまくいっていれば、runfetchmail.batをダブルクリックするとfetchamailが起動します。C:\e2t\fetchmail.logにログが残るので、ファイルを開いて下記のようなログが残っていればひとまずfetchmailは動作しています。

C:\e2t\fetchmail.log

fetchmail: 6.3.9 querying ************* (protocol APOP) at *************: poll started Trying to connect to *************/110...connected. fetchmail: POP3< +OK Hello there. <*************@*************> fetchmail: POP3> APOP ************* ************* fetchmail: POP3< +OK logged in. fetchmail: POP3> STAT fetchmail: POP3< +OK 0 0 fetchmail: No mail for *************@************* at ************* fetchmail: POP3> QUIT fetchmail: POP3< +OK Bye-bye. fetchmail: 6.3.9 querying ************* (protocol APOP) at *************: poll completed

次にメールを送信してからバッチを起動してみましょう。
Tracにチケットが投入されれば設定は成功です。

最後に自動的にメールが取り込まれるように、runfetchmail.batをタスクに登録して定期的にバッチが起動されるようにしておくとよいでしょう。fetchmail.logは大きくなり続けるので定期的に捨てることも忘れずに。


    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/2986
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    doidoidoi3 [Hatena] (2009/07/17 20:36) <%HatenaAuth()%>

    はじめまして、お世話になります。
    windows server 2003でTrac Lighitningを使っていまして、email2tracを使用したいと思い、このページをみさせてもらいました。

    手順通りに進めてみたのですが、
    runfetchmail.batを実行すると以下のエラーがでてしまいうまく動作しませんでした。

    File C:\m2t\fetchmailc must be owned by you

    このファイルに対して自分自身の権限を与えてみたのですがやはり結果は同じでした。このエラーを解決する手段はなにかありますか?
    アドバイス頂けましたらよろしくお願い致します。

    hsur (2009/07/17 23:15) <%HatenaAuth()%>

    動作させているのはCygwinのfetchmailなので、
    cygwinのbashを起動して下記のコマンドを打ってみたときに
    起動させているユーザーとOwnerが同じになっているでしょうか?

    ls -l /cygdrive/c/m2t/fetchmailc

    同じになっていないのであれば、

    chown (ユーザー名) /cygdrive/c/m2t/fetchmail

    のようにすればよいと思います。

    doidoidoi3 [Hatena] (2009/07/21 16:35) <%HatenaAuth()%>

    hsurさん、ありがとうございます。
    アドバイス通りに設定したところ、fetchmailが動きました!

    メールから正常にTracへメール本文を取り込む事が出来るようになったのですが、runfetchmail.batを実行すると以下のようなエラーが出力されます。

    ★runfetchmail.bat実行後のエラー
    fetchmail: Unknown command: "LAST".

    ★fetchmail.logの出力エラー
    fetchmail: POP3< -ERR Unknown command: "LAST".

    どうやらメールサーバの方がLASTのコマンドをうまく受け付けていないようです。動作に影響はないのですが、このエラーを消す方法はありますか?

    Comments Form

    コメントは承認後の表示となります。
    OpenIDでログインすると、即時に公開されます。

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン