SendMailでメールを受信したタイミングでプロセスを起動させる。
【環境】
- CentOS 5
- sendmail-8.13.8-8.el5
- 適当にプログラムを書く。今回はPHPで実験
- .forwardファイルをホームディレクトリに作成 SendMailは.forwardファイルを参照し、受信したメールのforward(転送)を行う。
- /etc/smrshディレクトリに作成したプログラムのシンボリックリンクを置く SendMailではforwardによる不正なプログラムの実行を制限しており、/etc/smrshディレクトリ配下に存在する実行ファイルしか実行できないようになっている。
- Apache 自宅サーバにおけるバーチャルホストの設定
- Sendmailメモ Gmailへのリレー
- ログのローテート
- Apache mod_rewriteをDSOで有効化
- linuxへのSubversionのインストール
$ cd $HOME/bin $ vi test.php #!/usr/bin/php -q <?php $filepath = "test.txt"; $filetext = "メールが届いたよ!"; $fp = fopen($filepath, "w"); @fwrite( $fp, $filetext, strlen($filetext) ); fclose($fp); ?>
転送のみではなく、パイプを使用して自作プログラムやシェルなどに渡すことも可能。
今回は上記のtest.phpに処理を渡す。
$ cd $HOME $ vi .forward "| [test.phpが置いてあるパス]/test.php"
尚、このファイルのアクセス権限を自ユーザのみread/write可能としておかないとforwardしてくれません。
/var/log/maillogで怒られます。
Jun 24 07:26:50 localhost sendmail[3783]: o5NMQnCE003782: forward /xxx/xxx/.forward: Group writable file
以下のように変更。
$ chmod 600 .forward
よってtest.phpのリンクを/etc/smrshに置く。
$ ln -s [test.phpが置いてあるパス]/test.php /etc/smrsh
■メモ
さくらインターネットの環境では、.forwardファイルの代わりに.mailfilterファイルを作成する。
以上。
関連するかもしれない記事
他のブログも読む



0 Responses
Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.