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

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



At Wed, 07 Jan 2004 09:08:11 +0900,
HAYAKAWA Hiroshi wrote:
> 前回のメールに記したPHP-cli内でのシェルエラーの場合も、
> PHP-cliのプログラム自体のエラーの場合も、
> 元メールの差出人にはエラーメールは返りません。
> ブラックホールのように吸い込まれてしまいます。
> それでぜひとも検出されるようにしないとと思っているわけなんです。

test: |/.../testd.php || exit 71

で、testd.php が 0 以外の終了コードを返した場合に
ちゃんとバウンスしませんか? 「71」の出所は /usr/include/sysexits.h。
# Postfix が、「|」で指定したコマンドをシェル (/bin/sh) 経由で
# 起動するのかどうかは調べていない…。:-X

エラーメッセージを取得したいなら、

test: |/.../testd.php 2>&1|/path/to/mailifin -s 'testd.php error' postmaster

とかして、以下のスクリプトを /path/to/mailifin に置くとか?

#!/bin/sh
##
## Mail if stdin is not null
## Copyright (c) 2002-2004 SATOH Fumiyasu. All rights reserved.
##
## Date: 2004-01-06, since 2002-04-16
## License: GNU General Public License version 2
##

## FIXME:
##	Support Bcc: recipient(s).
##	Prevent read (builtin command) to escape backslashes in the first line.

set -u
PATH="/bin:/usr/bin:/sbin:/usr/sbin:/usr/lib:/var/qmail/bin"
export PATH

sender=""
subject=""
header=""
header_file=""
footer_file=""

usage="Usage: `basename $0` [options] recipient [...]

Options:
    -f sender		Sender address
    -s subject		Subject field
    -h header		Additional header field(s)
    -H file		Header file for message
    -F file		Footer file for message
"
#    -b recipient	Send blind carbon copies (bcc) to recipient

## Parse options
while getopts f:s:h:H:F: opt; do
    case "$opt" in
    f)
	sender="$OPTARG"
	;;
    s)
	subject="$OPTARG"
	;;
    h)
	header="${header:+$header
}$OPTARG"
	;;
    H)
	header_file="$OPTARG"
	;;
    F)
	footer_file="$OPTARG"
	;;
    *)
	echo "$usage" 1>&2
	exit 100
	;;
    esac
done
shift `expr $OPTIND - 1`

if test $# -eq 0; then
    echo "$usage" 1>&2
    exit 100
fi

## Set sendmail's options and arguments
if test -n "$sender"; then
    set -- -f "$sender" ${1:+"$@"}
fi

## Read from stdin
if read line; then
    :
else
    ## No message in stdin
    exit 0
fi

## Mail message with some suitable header fields
(
    test -n "$subject" && echo "Subject: $subject"
    test -n "$sender" && echo "From: $sender"
    for recip in "$@"; do
	echo "To: $recip"
    done
    test -n "$header" && echo "$header"
    echo
    test -n "$header_file" && cat "$header_file"
    echo "$line"
    cat -
    test -n "$footer_file" && cat "$footer_file"
) |sendmail -oi ${1:+"$@"}
exit $?

-- 
-- Name: SATOH Fumiyasu  -- Home: http://www.sfo.jp (in Japanese only)
-- Mail: fumiya at net-thrust.com, samba.gr.jp, namazu.org or ...

Follow-Ups
[postfix-jp:03822] Re: コマン ド起動のエラーメッセージ の取得方法, HAYAKAWA Hiroshi
References
[postfix-jp:03811] Re: コマン ド起動のエラーメッセージ の取得方法, B<tommy@xxxxxxxx>
[postfix-jp:03817] Re: コマン ド起動のエラーメッセージ の取得方法, HAYAKAWA Hiroshi

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