メールドリブンな Web アプリ

送られてきた電子メールに対して何らかのアクションを実行する場合、普通は smtpd の設定で特定のアカウント宛てのメッセージを別のプログラムの標準入力に喰わせるのですが、僕のようにメールサーバの運用などしたくない人間にとって、これはちょっと難しい話です。
かといって cron で受信&処理を行うプログラムを走らせるのはリアルタイム性に欠けるし、Web アプリ側でリクエストの度にメールチェックなどもってのほかです。


ではどうするか。
「そのアプリのためだけに特化した smtpd を立てる」
どう考えても普通に postfix あたりを使った方が無難かつ簡単そうです。
がしかし、Twisted で HTTP サーバといっしょに SMTP サーバも動かせばよりスマートにメールドリブンな Web アプリを作れるかもしれません。
「かもしれません」この歯切れの悪さは実際に Twisted を使ってないから。でもイケそう。


そして PHP ならどうするか。
HTTP だけなら nanoweb という Pure PHP な Web サーバがありますが、Pure PHPSMTP サーバというのは見たことないです。つまりは PEAR::Net_Server を継承するなどして、自前でデーモンを書く必要あり。RFC の熟読必須。
また、PHP には Windows では使えない pcntl 機能拡張を使って子プロセスを生成する以外に非同期処理を行う方法が存在しないので、Windows をサーバ OS としている場合は極めて困難になります。
ノンブロッキングコールかマルチスレッドが PHP に導入される日は果たして来るのでしょうか。7 あたりで来るといいなあ。