- blogs:
- cles::blog

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




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行目付近に下記のような部分があるので、
下記のように書き換えます
ファイルの最上部にはPythonのパスを示す@PYTHON@という部分がありますが、起動時にPythonのパスを指定することになるので、この部分は書き換えずに放っておいて大丈夫です。
次に設定ファイルであるemail2trac.confを書き換えます。
C:\m2t\email2trac.conf
最も重要な設定項目はprojectです。ここで指定したプロジェクトにチケットが投入されます。上記はTracLightをCドライブ直下にインストールした場合にSampleProjectを指定する例になります。
tmpdirについては、これを設定しないと添付ファイルの処理の部分でコケてうまく動かなかったので今回はC:\m2t\tmpというディレクトリを作りました。ここに限らずどこか適当なディレクトリを指定しても大丈夫です。
これでemail2trac本体の設定は完了です
† fetchmailと連携させる
最後にfetchmailとemail2tracを連携させて、メールサーバーからメールを取得してチケットを投入するという一連の処理が流れるようにするために、fetchmailの設定ファイルを作ります。今回はC:\m2t\fetchmailrcという名前にします。
C:\m2t\fetchmailrc
###POP_SERVER###、###EMAIL_USER###、###EMAIL_PASSWORD###の部分はそれぞれ用意しておいたメールアドレスの、POPサーバ、ユーザ名、パスワードに読み替えてください。僕はAPOP対応のサーバを使ったのでproto APOPになっていますが、普通のPOP3を使う場合にはproto POP3と書く必要があります。
最後にfetchmailを起動するためのバッチファイルを作ります。
今回はC:\m2t\runfetchmail.batという名前にします。
C:\m2t\runfetchmail.bat
† 動作を確認する
設定がうまくいっていれば、runfetchmail.batをダブルクリックするとfetchamailが起動します。C:\e2t\fetchmail.logにログが残るので、ファイルを開いて下記のようなログが残っていればひとまずfetchmailは動作しています。
C:\e2t\fetchmail.log
次にメールを送信してからバッチを起動してみましょう。
Tracにチケットが投入されれば設定は成功です。
最後に自動的にメールが取り込まれるように、runfetchmail.batをタスクに登録して定期的にバッチが起動されるようにしておくとよいでしょう。fetchmail.logは大きくなり続けるので定期的に捨てることも忘れずに。
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/2986
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
はじめまして、お世話になります。
windows server 2003でTrac Lighitningを使っていまして、email2tracを使用したいと思い、このページをみさせてもらいました。
手順通りに進めてみたのですが、
runfetchmail.batを実行すると以下のエラーがでてしまいうまく動作しませんでした。
File C:\m2t\fetchmailc must be owned by you
このファイルに対して自分自身の権限を与えてみたのですがやはり結果は同じでした。このエラーを解決する手段はなにかありますか?
アドバイス頂けましたらよろしくお願い致します。
動作させているのはCygwinのfetchmailなので、
cygwinのbashを起動して下記のコマンドを打ってみたときに
起動させているユーザーとOwnerが同じになっているでしょうか?
ls -l /cygdrive/c/m2t/fetchmailc
同じになっていないのであれば、
chown (ユーザー名) /cygdrive/c/m2t/fetchmail
のようにすればよいと思います。
hsurさん、ありがとうございます。
アドバイス通りに設定したところ、fetchmailが動きました!
メールから正常にTracへメール本文を取り込む事が出来るようになったのですが、runfetchmail.batを実行すると以下のようなエラーが出力されます。
★runfetchmail.bat実行後のエラー
fetchmail: Unknown command: "LAST".
★fetchmail.logの出力エラー
fetchmail: POP3< -ERR Unknown command: "LAST".
どうやらメールサーバの方がLASTのコマンドをうまく受け付けていないようです。動作に影響はないのですが、このエラーを消す方法はありますか?
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
- nmcli で NIC が所属するゾー... (2)
- 居酒屋 八(ひらく) (1)
- びっくりドンキー 大宮公園店 (1)
- Windows 10 で勝手にログアウ... (1)
2 . Windows 10 で勝手にログアウトされないようにする(30859)
3 . Word で数式がグレーアウトされていて挿入できないときは(26460)
4 . リモートデスクトップで Alt + PrtSc と同じことをするには(21965)
5 . Visual Studio 2017/2019 で scanf() がエラー(C4996)になるときは(21310)