[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[postfix-jp:03804] コマンド 起動のエラーメッセージの 取得方法



早川@名古屋 です。

Postfix自体の問題ではない気もするのですが、
メールからのコマンド起動に関してちょっと悩んでいます。
お知恵をお貸しください。

/etc/postfix/aliasesに

test:   |/.../testd.php

の様に記述し、メールの受信によってプログラムが実行されるようにしています。
(設定・修正後にはもちろんnewaliasesを実行します)
しかし、プログラムにバグがあったりして異常終了した場合、
このままでは検知できません。

crontabでプログラムを実行した場合には、
プログラムが異常終了したときには通常メールが自動送信されますが、
これと同様のことを実現したいと思っています。

test:   |"/.../testd.php 2>&1 | mail -s 'testd warn/error' hogehoge"

とするとエラー時にエラーの内容をメール送信することはできますが、
(後述の場合とは異なり、メール全文については含まれない)
正常に処理された場合にも空のメールが送信されてしまいます。

test:   |"/.../testd.php 2>&1 || mail -s 'testd warn/error' hogehoge"
もしくは
test:   |"/.../testd.php || mail -s 'testd warn/error' hogehoge"

とした場合、プログラムであるPHP-cliのエラーのときには
メール全文(ヘッダも含めて)が送信されますが、
(正常に処理された場合にはメールは送信されない)
プログラム中でのシェルのエラーだったときには送信されません。
具体的には、PHP(4.3.4-cli)のmail()関数に関して

sh: -c: line 3: syntax error: unexpected end of file

というエラーが起きることを知っているので
これを意図的に発生させて確認していますが、
このメッセージを得ることができません。

Postfixによるコマンド起動を利用されているみなさんは
どのように設定されていますでしょうか?



ちなみに上記のmail()関数でのエラーは
追加パラメータの指定の際に、
$mail_params = "-f anybody@example.com\n";
のように最後に改行コードがついている場合で、
PHPのバージョンが4.3.4の場合に起こるものです。
mb_send_mail()関数では同様の現象は発生しませんし、
4.2.2, 4.2.3, 4.1.2のmail()関数では起きません。

http://jp2.php.net/manual/ja/function.mail.php


-----
With your dreaming, with your smile.
Hayakawa, Hiroshi <hayakawa@xxxxxxxxxxxxxxx>
Nagoya,Aichi,JAPAN ☆彡

Follow-Ups
[postfix-jp:03805] Re: コマン ド起動のエラーメッセージ の取得方法, Takahiro Kambe

[検索ページ] [Postfix-JP ML Home]