プロが教える店舗&オフィスのセキュリティ対策術

Apache 1.3.33
PHP Version 4.4.1

$header = "From:".$_from;
$header .= "Return-Path:".$_from;
のようにヘッダー部を設定し、mail関数を使っています。
$result = mail($_email, $subject, $message, $header);
しかし、Return-Pathが反映されていないようで、
メールが届かない場合などの、
「failure notice」メールが
Apache側で設定されているメールアドレスに
送信されてしまいます。

どのように設定すればよろしいのでしょうか?

またパラメータを使って
$header = "From:".$_from;
$para ="-f".$_from;
$result = mail($_email, $subject, $message, $header,$para)

上記のように記述してみたのですが、だめでした。

よろしくお願いいたします。

A 回答 (4件)

No.1回答者です



No.3回答者さんの言うように
mail()関数第4パラメータにReturn-Path をつけないと、
メールクライアントでのReturn-Pathにはサーバーの設定したメールアドレスになっていました。
逆に付けると、Return-Pathで指定したアドレスになりました
メールサーバーのログを見ると、
Return-Path を付けた場合には
msg aaaaa bytes from (Return-Pathのアドレス)
付けない場合には
msg aaaaa bytes from (サーバーのアドレス)
でした。これがEnvelopeFrom に相当

私のところの環境ではEnvelopeFrom に対してどうやら上書きするようです。

>SMTP server response: 451
私のところでは出なかったのでメールサーバーの環境によって違うのかもしれません。

参考にならなくて申し訳ないです
    • good
    • 0
この回答へのお礼

とんでもない。ありがとうございました。

お礼日時:2005/12/07 18:38

Return-Path: ヘッダは送信側でつけるヘッダではなく、最終的に受信するメールサーバーが EnvelopeFrom からつけるものです(そのサーバーの設定によりつけないこともある)。

また、メールサーバーのエラーメッセージはReturn-Pathヘッダをみてそこに返しているわけではなく、EnvelopeFromのアドレスに返しているので、送信側でReturn-Pathというヘッダを作っても無意味です。

ここまでは経験者・自信あり。以下は一般人・自信なし。

EnvelopeFrom は sendmail の -f オプションで設定できるはずですが、効かないということは、/etc/php.ini の sendmail_path ですでに -f が指定されているのではないでしょうか?
    • good
    • 0
この回答へのお礼

ありがとうございます。
Return-Pathを設定してもだめですか。(-_-;)
php.iniはレンタルサーバですので変更できないから
だめですね。

お礼日時:2005/12/07 18:40

#1の方のmb_send_mailを単にmailにするだけで行きませんか?


第4引数が追加ヘッダーになっているので、そこに追加すれば良さそうな気がしますが・・・

参考URL:http://www.php.net/manual/ja/function.mail.php
    • good
    • 0
この回答へのお礼

ありがとうございます。
メールヘッダーを見ると

Return-Path: <****1@.co.jp>
・・・
Return-Path: ****2@.co.jp

と表示されています。
はじめに表示される
****1@.co.jpはApache側で設定されているメールアドレスで、
複数行下に表示されている
****2@.co.jpは実際に利用したいメールアドレスです。

上の
Return-Path: <****1@.co.jp>
を消したいのですが。

お礼日時:2005/12/07 09:19

使用している関数は違いますが以下のようにしてエラーメールが Return-Path: に指定したアドレスに返ってきます。



mb_send_mail($send_mail_to, "社内掲示板にメッセージが投稿されました", $message_body,
"From: webmaster@{$_SERVER['SERVER_NAME']}\r\n" .
"Return-Path: $email\r\n" .
"Date: ".date("r")."\r\n" .
"Reply-To: webmaster@{$_SERVER['SERVER_NAME']}\r\n" .
"X-Mailer: PHP/" . phpversion() . "\r\n");

$email にエラーが返る。

ちなみに PHP-4.3.11 です。
    • good
    • 0
この回答へのお礼

ありがとうございます。
私も以前mb_send_mail関数を使っていましたが、
バグがあるようなことが書いてあったので、
mail関数に変更しました。
上記のように変更し実行すると
Warning: mb_send_mail(): SMTP server response: 451 See http://pobox.com/~djb/docs/smtplf.html. in ****
のエラーが出てしまいます。

以前も出た気がします。

お礼日時:2005/12/06 18:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!