web-dev-qa-db-ja.com

Apache、仮想ホスト、およびsendmailのデフォルトの送信者

これが私の問題です... Apacheの仮想ホストを使用して1台のマシンで2つのサイトをホストしています。適切なメールアドレスを使用して、2つの異なるサイト(domain.comとdomain2.com)からメールを送信したいと思います。私は現在php.iniにこの値を持っています:

sendmail_path = /usr/sbin/sendmail -t -i [email protected]

しかし、domain2.comのスクリプトからメールを送信しようとすると、明らかにFrom: [email protected]ヘッダーが付いて配信されます。 Apacheでは、<VirtualHost>ディレクティブ内から次のようなルールを設定することはできません。

php_admin_value sendmail_path "/usr/sbin/sendmail -t -i [email protected]"

では、これを達成するための最良の方法は何ですか? domain2.comのphp_admin_value mail.force_extra_parameters "[email protected]"ディレクティブ内から<VirtualHost>を設定しようとしましたが、すべての電子メールはまだdomain.comから送信されています。何か案は?

1
Jeff

<VirtualHost>ディレクティブ内からsendmail_pathを設定することは許可されていませんが、can<Directory>ディレクティブ内で設定できます。だから私は単にこのようなものを持っています:

<VirtualHost *:80>
    Standard stuff goes here

    <Directory /dir/to/your/web/root>
        php_admin_value sendmail_path "/usr/sbin/sendmail -t -i [email protected]"
    </Directory>

</VirtualHost>

これを達成するための最も適切な方法かエレガントな方法かはわかりませんが、間違いなく機能しました。申し訳ありませんが、回答に時間がかかりました。SFに頻繁に行くことはなく、この質問を忘れてしまいました。

6
Jeff

Php_valueまたはini_set/ini_getを使用してsendmail_pathを変更しようとしたときに問題が発生しました(safe_modeがオフの場合でも!理由はよくわかりません-PHP 5.3.3)。 php mail()関数 を読み直してください。解決策は関数にありました。

bool mail(string $ to、string $ subject、string $ message [、string $ additional_headers [、string $ additional_parameters]])

したがって、最後のパラメーターは追加のパラメーターを許可します。 PHPメールコードをmail($ to、$ subject、$ message、implode( "\ r\n"、$ headerFields)、 "-f"。$ from);

私はそれが ジェフ あなたがこれをより賢く見つけるだろうと思います。

この助けを願っています。

0
Karamba

Php.iniから[email protected]を削除する必要があります。次に、各ホストにメールを適切に送信する各スクリプトの mail 関数を変更します。そうすれば、仮想ホストごとに正しい-f引数を渡すことができます。

0
adamo