メールを受信したら、その内容を解釈して処理するための方法。
処理するのは php スクリプト。
受信したメールを処理するスクリプトは hoge.php とする。
ホームディレクトリ直下に置いてあるものとする。
まず、ホームディレクトリにこのような .forward を作る。
.forward
これで、メールを受けとった sendmail が、.forward の中身に沿って処理してくれる。
.forward のアクセス権は、緩いと処理されない場合がある。
644 では動作しなかったが、 600 にしたら動いたというケースがある。
ただし、このままだとエラーになる。
sendmail から起動する場合、smrsh という制限付きのシェルが立ち上がるからだ。
この制限のおかげで、意図せずに sendmail が動作した場合でも、ファイルが消えたりして大変なことになるのが避けられる。
大変なことを避けられるのはよいが、制限がきつすぎて php が起動できないのは問題だ。
そこで、smrsh で、php を許可することにする。
smrsh から起動できるプログラムは、以下のフォルダに格納されている。
ここに、php のシンボリックを入れておけばよい。
こうすれば、.forward の中で php を起動できる。
受信したメールは、PEAR :: Mail_mimeDecode を使うと便利。
マルチパートでないテキストのメールだったら、こんな感じで処理できる。
これで、メールから php スクリプトを起動できる。
ちなみに、スクリプトを起動しつつ、メールの転送もしたい、という場合はどうするか。
.forward に行単位で並べていけばよい。
.forward
処理するのは php スクリプト。
受信したメールを処理するスクリプトは hoge.php とする。
ホームディレクトリ直下に置いてあるものとする。
まず、ホームディレクトリにこのような .forward を作る。
.forward
"| php hoge.php"
これで、メールを受けとった sendmail が、.forward の中身に沿って処理してくれる。
.forward のアクセス権は、緩いと処理されない場合がある。
644 では動作しなかったが、 600 にしたら動いたというケースがある。
ただし、このままだとエラーになる。
sendmail から起動する場合、smrsh という制限付きのシェルが立ち上がるからだ。
この制限のおかげで、意図せずに sendmail が動作した場合でも、ファイルが消えたりして大変なことになるのが避けられる。
大変なことを避けられるのはよいが、制限がきつすぎて php が起動できないのは問題だ。
そこで、smrsh で、php を許可することにする。
smrsh から起動できるプログラムは、以下のフォルダに格納されている。
/etc/smrsh/
ここに、php のシンボリックを入れておけばよい。
こうすれば、.forward の中で php を起動できる。
受信したメールは、PEAR :: Mail_mimeDecode を使うと便利。
マルチパートでないテキストのメールだったら、こんな感じで処理できる。
require_once 'Mail/mimeDecode.php';
$params = array(
'include_bodies' => true,
'decode_bodies' => true,
'decode_headers' => true,
'input' => file_get_contents("php://stdin"),
'crlf' => "\r\n",
);
$structure = Mail_mimeDecode::decode($params);
$from = $structure->headers['from'];
$to = $structure->headers['to'];
$subject = $structure->headers['subject'];
switch(strtolower($structure->ctype_primary)){
case "text":
$body = $structure->body;
break;
default:
$body = "";
}
これで、メールから php スクリプトを起動できる。
ちなみに、スクリプトを起動しつつ、メールの転送もしたい、という場合はどうするか。
.forward に行単位で並べていけばよい。
.forward
"| php hoge.php"このようにしておけば、hoge.php が実行されて、さらに piyo@gmail.com と buhi@yahoo.co.jp にメールが転送される。
piyo@gmail.com
buhi@yahoo.co.jp
コメントする