メール(qmail)を受信してPHPプログラムを実行

空メール登録システムや、自動メール返信システムなどを作成したい場合メールを受信して、そのままプログラムを動作させる必要があります。本記事ではqmailのSMTPサーバーにメールが届くと、PHP(CGIではありません)のプログラムが実行されるというシステムの構築方法をご紹介します。

実行するプログラムはどんなものでも問題ありませんが、ここでは実行されたか確認しやすいプログラムとして以下のPHPプログラムを例として挙げます。

 

「あなたのメールアドレス」というところには、あなたが普段利用しているメールアドレスを入力してください。このプログラムが実行されれば、指定したメールアドレスに、”testsubject”という件名のメールが届きます。もし、メールの送信の設定ができていない場合は、ファイルを生成するプログラムなどを作成しても確認しやすいと思います。

上記のファイルを qmail_test.php というファイル名で、/home/httpd/vhosts/あなたのドメイン(私の場合は、what-linux.seesaa.jpということで)/以下に作成することにします。

もちろん、あなたの好きな場所に設置してくれてもかまいませんが、パーミッションは必ず755にしてください。とにかく、「その他のユーザ」が実行の権限があるようにしてください。また、親ディレクトリのパーミッションに制限がある場合も気を付けましょう。ちなみにパーミッションの変更には、chmodというコマンドを利用します。

まずは、作成したプログラムが正常に動作するのか確認してみましょう。

 $php /home/httpd/vhosts/what-linux.seesaa.jp/qmail_test.php

最初の php ってなんだ?って思った方。詳しくは「CLI」というキーワードを検索すれば、いろいろとでてきますので、それで勘弁してください。とりあえずは、テキストファイルのPHPプログラムを php というインタプリンタにかけて実行するとイメージして頂いて結構です。よけいにわかりにくかったらごめんなさい・・。

ちなみに、/usr/bin/ の下にこの php というがあるはずです。

では、qmail側を少しいじります。まずは、目的のディレクトリまで移動します。

$cd /var/qmail/mailnames/あなたのドメイン/あなたのユーザ(私の場合は、testuserということで)/

ここで選んだ「あなたのユーザ」がメールを受信するメールユーザになります。いよいよ、メールを受信したらPHPプログラムを実行するための仕掛けを書くために.qmailというファイルを編集します。

$vi .qmail

私はviエディタを使いましたが、使い慣れたテキストエディタでかまいません。viの使い方に関しては「viエディタの必要最低限の操作」を御覧ください。

テキストエディタで開いた.qmailというファイルの最後の行に(っと言っても3行目ぐらいと思いますが)

 | /usr/bin/php /home/httpd/vhosts/what-linux.jp/qmail_test.php

と追加して、保存して、閉じます。

一番左の | はエルでもイチでもアイでもないので注意してください。その右の /usr/bin/php というは、PHPのインタプリンタのフルパスですね。そして、最後の部分は、先ほど設置した実行させたいphpプログラムのフルパスです。

以上で完了です。

私の場合は、 testuser@what-linu.seesaa.jp 宛に空メールを送ると、seikou@what-linux.seesaa.jpにtestsubjectという件名のメールがとどきます。