エラーメールの届き先 Envelope From | おぼえがき

エラーメールの届き先 Envelope From

http://www.stackasterisk.jp/tech/php/searchAction.do?cid=19


■ エラーメールの届き先

エラーメールは Envelope From 宛に届きます(Errors-To などではありません!)。 mail 関数を使った場合、nobody@www.example.com などといった、httpd の設定や実行ユーザに依存した宛先に届いてしまいます(試していませんが、sendmail_path の設定(sendmail に渡すオプション)によって、Envelope From を操作することは可能かと思われます。ただし、その場合は動的に Envelope From を変更することはできません)。

PHP プログラムからメールを送信し、エラーメールを特定のアドレスで受け取りたい場合には、パイプを使った方法でメールを送信するのがお勧めの方法になります。

上記 Tips 提供者:松嶋@ITBoost [2002/01/20]

■ エラーメールの届き先(2)

mail関数、mb_send_mail関数を使用した場合、エラーメールの届き先はhttpd の設定や実行ユーザに依存した宛先になります。(例: nobody@host.domain)

これを回避するには、mail関数の第5引数を使用することです。

mail(
"nobody@example.com",
"the subject",
$message,
"From: webmaster@$SERVER_NAME",
"-fwebmaster@$SERVER_NAME"
)

-f オプションは、envelope sender を指定するための sendmail コマンドのオプションです。

sendmail以外のMTAが使用されている場合には第5引数の内容はこれとは変わってくるでしょう。 man や、http://www.php.net/manual/ja/function.mail.php を参考にしてください。

もちろん、mail関数を使わずにパイプを使った方法などで独自のメール送信関数やクラスを作ってしまうというのも有効な方法です。

ゆうさん、Tipsのご提供ありがとうございます。

この他にも、php.ini の sendmail_path をオプション付きで

sendmail_path = /usr/sbin/sendmail -fwebmaster@host.domain

のように指定するという方法もあります。

但し、sendmail_path は ini_set 関数では設定できませんので、こちらの方法はプログラムやリクエスト毎にアドレスを変更するということはできません。

上記 Tips 提供者:ゆう 様 [2002/08/27]