2012年1月25日水曜日

.forwardでPHPにメールを食わせる

.forwardファイルを使ってPHP等のプログラムにメールを処理させることがありますが、ちょっと躓いたのでメモ。

まず、何もなければ、.forwardファイルに以下のように書けばいい。

> vi .forward
"| /usr/bin/php /home/john/sciptfile.php"

(john, scriptfile.phpあたりは任意でっせ。)

ところが、smrshが動作していると簡単には実行してくれません。
勝手にプログラム起動して処理するなということです。
smrshに許可してもらうには、/etc/smrsh内に実行ファイルのリンクを作成してやればよい。

こんなコマンド↓
> ln -s /usr/bin/php /etc/smrsh/php

とここまではよく見かけます。
しかし今回はこれでうまくいきませんでした。

.forwardファイル内の記述が問題のようで、絶対パスは無視されたりいろいろ制約があるようです。
詳細は偉い人に聞いてください。すいません。

でどうするかというと。

.forwardに記述する内容を単純化するためシェルスクリプトを1つ作成します。

> vi scriptcall.sh
#!/bin/sh
/usr/bin/php /home/john/sciptfile.php

↑こんな単純なファイル。

作成したシェルスクリプトに実行権限をつけて、smrshで実行できるようにシンボリックリンクを作成。

> chmod 755 /etc/smrsh/scriptcall.sh
> ln -s /usr/bin/scriptcall.sh /etc/smrsh/scriptcall.sh


.forwardファイルの内容を以下の用に変更

>vi .forward
|sciptcall.sh

以上でjohnさんにメールが来るとプログラムにメールが渡されます。

0 件のコメント: