fetchmail + maildrop + IMAP でメールをサーバ振り分けする

うちには PC がたくさんあり、メールをあっちこっちから POPで受信すると大変なことになるため、一回サーバでうけてそのメールボックスを IMAP で LAN 内に公開する形にしています。 こうしておくと、メールクライアントも自由に選べますし、PC を再インストールするときなんかもバックアップとらなくて済むので便利です。

ところで、我らが Mozilla の Thundirbird さんですが IMAP でつなぐとどーにもこーにもパフォーマンスがでない。 特にぼくのメールボックスは 2002 年くらいからのメールがそのままのこっているためメール数が多く、正直 Thundirbird ではつかえないくらい遅くなってしまいます。 (3.0 で速くなるかな~)

というわけで、メインで使っている Linux さんのほうは別のメールクライアントってことで、本格的に Sylpheed を使い始めました。

Sylpheed – lightweight and user-friendly e-mail client

Sylpheedはシンプル、軽量かつ高機能で使いやすい電子メールクライアント(メールソフト、メーラ、MUA)です。

SylpheedはLinux、BSD、Mac OS X等主にUnix系のシステム、そしてWindowsなど多数の環境でで動作します(Windows版についての詳細はWikiを参照してください)。

IMAP でも優れた性能を発揮してくれて、特にフォルダ間のメールの移動などはおそらく Thundirbird の体感倍くらいの速度がでるのではないかと思います。

network02

和製なので、文字化け等の心配もなく、作者さんも使い込んでつくっている印象があり、ユーザインターフェースも分かりやすく実用的です。

さて、このようにメールクライアントがあちこちにある場合 IMAP をひとつおくと便利で、ずっと使っていたのですが長年ひとつ問題をかかえていたのでありました。 それはメールのフォルダ振り分けなのですが、これは実は各クライアントでやらせていました。

振り分けはいっかい設定するだけでいいといえばいいのですが、メーリングリストとか増やしてしまうと全台追加しなければいけなく、そんなことぼくがまめにやるわけもなく、あるクライアントでうけると非常に面倒なことになるということが起きつつありました。

また、iPod touch がバージョンアップで IMAP みれるようになりましたが、振り分けができない(たぶん)ので、ここいらで思い切ってサーバサイドで振り分けをしてみることにしてみました。  touch でメールみるの結構便利です。 ちょっと工夫すればオフ読みできるし。 🙂

今のネットワーク構成はこんなかんじです。 描いているうちにおもしろくなって他のこともかいてしまいまった。 そうそう、RD とかもつながってるんだ。書き忘れた。(笑)

network01

真ん中のサーバとなっている CentOS くん(Linux) が fetchmail というソフトでいろんなところのメールサーバに一定周期でつなぎにいって、POP でとってきています。 それをいままでは postfix にわたしてメールボックスに格納していたのですが、これをやめ、メール振り分けするために maildrop というソフトに渡すことにしました。

.fetchmailrc の内容はこんなかんじです。

[hiromasa@repository ~]$ cat .fetchmailrc 
set logfile "/home/hiromasa/log/fetchmail.log"
set postmaster hiromasa
set no bouncemail
 
defaults
     protocol pop3
     flush
     no mimedecode
     #smtphost localhost
     mda "/usr/bin/maildrop"
     #keep
 
poll pop.mail.yahoo.co.jp
     protocol pop3
     user maple4estry
     password *********

mda に /usr/bin/maildrop を指定しているところがみえます。

でもって、maildrop の設定ファイル、 .mailfilterです。

[hiromasa@repository ~]$ cat .mailfilter 
MAILDIR="$HOME/Maildir"
DEFAULT="$HOME/Maildir/"
 
logfile "$HOME/log/maildrop.log"
 
if (/^Subject: .*Cron/)
{
        to "$MAILDIR/.Cron/"
}
 
if (/^Subject: \[wp-testers/)
{
        to "$MAILDIR/.wp-testers/"
}
 
if (/^Subject: \[PHP/)
{
        to "$MAILDIR/.PHP-users/"
}

こんなかんじに、メールヘッダを判定させて各メールボックスのディレクトリに振り分けていけばいいようです。

メールの振り分けって目で見えていないとどうも怖くって、いままで二の足を踏んでいましたが、設定を「条件にあたらなければデフォルト」とする方式すればいいので間違ってもメールが闇にきえることはなさそうです。

あと、 maildrop が失敗したときは fetchmail が POP から消さずにうまいこと keep してくれました。 最初のうちはログをみながら運用するといいかもしれません。

てなわけで、うちにいっぱいPCがある方はやってみるといいかもしれません。 サーバおくのはお手軽感覚はありませんが、、玄箱とか NAS を debian 化してこれらのソフトをいれると、スイッチぽんでいけるので便利かもしれません。 🙂

Firefox の拡張をつくってみる

なんか最近「~つくってみる」ってのが多い気もしますが、今回は Firefox の拡張をつくってみました。 せっかく手持ちでつかっているアプリは、自分でいろいろいじれたほうが面白いですよね。

先日ふと、WordPress っぽいサイトをみたときにソースをみて WordPress 製かどうかを確認する自分の行動に気がついたので、それを そのまんま extension として実装してみました。

たいしたことないです。 HTML の head をみて wp-content とかジェネレータとか WP っぽいシグネチャもっていたらステータスバーのアイコンをぴこん、させるだけです。 名前は、 Pikon!WP です。(笑)

pikonwp01 

さて、Firefox の拡張は .xpi というファイル形式で、要はプログラムを適切な形につめた、 .zip ファイルです。 (拡張子 .zip にして展開したらプログラム出てきます)

でもって、この形式ちょっとディレクトリ構成とかマニフェストファイルとかが特殊で間違えそうな感じだったので、ひな形を Eclipse の Firefox 拡張プロジェクトを生成してくれるプラグインでつくってもらいました。

Spket IDE – JavaScript Editor

Spket IDE is powerful toolkit for JavaScript and XML development.

The powerful editor for JavaScript, XUL/XBL and Yahoo! Widget development. The JavaScript editor provides features like code completion, syntax highlighting and content outline that helps developers productively create efficient JavaScript code.

SpketIDE のプラグインを Eclipse にいれると Firefox Extention Project が追加されます。

pikonwp02

これでつくると以下のように .xpi 用のひな形をつくってくれます。

pikonwp03

このプロジェクトディレクトリのパスをポイントファイルに書き込んで、Firefox のエクステンションディレクトリにいれてあげると Firefox が認識してくれます。(Firefox 外のディレクトリにリンクする形で拡張がかける機能がある)

いくつかの Firefox 、about:config 設定を修正追加するとホットデプロイできるようになります。 ソース書き換え後、Firefox で CTRL + N するだけで読み直してくれるようです。

設定やこの他のつくりかたは、こちらが分かりやすかったです。

Firefox 3ではじめる拡張機能開発:第1回 最小構成でインストール|gihyo.jp … 技術評論社

先日とうとうFirefox 3がリリースされましたが, 皆さんはすでにインストールしましたでしょうか。本連載では,簡単な拡張機能を題材としてFirefox 3で拡張機能を開発するための基本的な手順を解説します。

あとは、公式のドキュメントを。

メインページ – MDC

Firefox 3 がリリースされ、ダウンロード可能になりました。開発者向けの詳細情報は、開発者のための Firefox 3 を参照してください。

SpketIDE は、build.xml もつくってくれるので、run and debug が終わって配布形式の .xpi にしたいときは Eclipse から ant するだけで dist/ ディレクトの下に .xpi を生成してくれます。

一点注意するのが、chrome.manifest で開発中は

content   pikonwp    content/
locale    pikonwp    en-US    locale/en-US/

とふつうのパスにしておき、builde.xml 時は jar ファイルの中身を指定します。

content   pikonwp    jar:chrome/pikonwp.jar!/content/
locale    pikonwp    en-US jar:chrome/pikonwp.jar!/locale/en-US/

こういうふうに jar: つけるといいようです。

てなわけで、 参考になるかどうか分かりませんが、Pikon!WP のプロジェクトファイルごとおいてみます。

まぁ、使う人はいないとおもいますが dist の下の pikonwp.xpi を Firefox のアドイン画面にドロップすればインストールできます。 他のファイルは使うだけなら不要です。

pikonwp.tar.gz

他の CMS の判定とか、WP サイトみつけたら勝手にその URL 記録とかおもしろいなーとかも思いました。

もしかしたら、CMS 判定は既にあるかもですね。 ぼくの JavaScript 技術では無理なので、だれかお願いします(笑)

新しい PC が欲しい。

どうも最近忙しく、その日のうちに帰れればいいような生活パターンになってしまっているので、、まぁそれはいいとしてなにかと時間がたりないっす。 WordCamp もいけなかったし残念な限りであります。 趣味のひとなんだけどなー、こんなはずでは(笑)

読みたい本もたくさんあるし、つくりたいものもいっぱいあるんだけど、なかなか手が回らなくてくやしいわけです。

さて、関係ないですが新しい PC がほしくなってきました。

いまのきかいは、Athlon64 の 3000 だっけか。 ぼくは Eclipse がうごいていればいいくらいなので、別に CPU がおそいと思ったことはないのですが、さしている GeFocrce のファンが猛烈に回っているのがなんとも。。 どうも、このボード、リファレンスとファンコントロールの設計が違うらしく、nVidia のドライバで動作させると、ファンはいつもフル回転状態に。

いまさら、AGP のカードをかうのももったいないので、どーせならそろそろ買い換えたほうがよいかと・・・。 AMD Phenom のエラッタもとれたみたいなので、ここらで4コア CPU を。

shuttle01

ぼくは Shuttle の Cube と AMD の CPU を愛してやまないので、このへんになると思います。 Phenom は型番おしりに e がつくと低電圧版らしい。 2 万ちょいで 4コア CPU がかえちゃうんだからいい時代になったもんです。 このベアボーンが 3万円後半なので、あとディスクとメモリ 4G で7.5万円くらいでそろうかな?。

OS はこのまま Ubuntu。 nVidia から純正のチップセットドライバがでているので特に問題ないはず。 実はうちの PC はどれも Linux 化が視野にはいっていて、デスクトップ系は全部 nVidia のチップセットだったりします。

nVidia といえば 3D。 3D といえばメガデモ(?)。

Final Realty とか懐かしい限りですが、Linux でうごくものもいくつかあります。 なんとなくいまさしている GeForce (5800だっけか、すげーふるい) で動かしてみました。

Lightsmark_01

LIGHTSMARK – next generation lighting benchmark

multiplatform benchmark/demo with REALTIME GLOBAL ILLUMINATION and PENUMBRA SHADOWS

ええと、結果。 最大でも 14コマでした。(笑)

最近の GPU ならこれくらいどれもフルフレームでいけるのかな。 新しいのかったら試してみたいと思います。 🙂