Назад | Перейти на главную страницу

Apache, виртуальные хосты и отправитель по умолчанию для sendmail

Итак, вот моя проблема ... У меня есть два сайта, размещенных на одной машине, с использованием виртуальных хостов apache. Я хочу отправлять электронные письма с двух разных сайтов (domain.com и domain2.com), используя соответствующие адреса электронной почты. В настоящее время у меня есть это значение в php.ini:

sendmail_path = /usr/sbin/sendmail -t -i -fuser@domain.com

Но когда я пытаюсь отправить электронное письмо из скрипта на domain2.com, очевидно, что оно доставляется с From: user@domain.com заголовок. Apache не позволяет вам устанавливать подобное правило изнутри <VirtualHost> директива:

php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -fuser@domain2.com"

Итак, как лучше всего этого добиться? Я пробовал установить php_admin_value mail.force_extra_parameters "-fuser@domain2.com" из домена domain2.com <VirtualHost> директива, но все электронные письма по-прежнему приходят с domain.com. Любые идеи?

Хотя вам не разрешено устанавливать sendmail_path из <VirtualHost> директива, вы жестяная банка установить его в <Directory> директива. У меня просто есть что-то вроде этого:

<VirtualHost *:80>
    Standard stuff goes here

    <Directory /dir/to/your/web/root>
        php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -fuser@domain2.com"
    </Directory>

</VirtualHost>

Я не уверен, самый правильный или элегантный способ добиться этого, но он определенно сработал. Извините, что на ответ потребовалось так много времени, я не часто езжу в SF и забыл об этом вопросе.

У меня возникла проблема, когда я попытался изменить свой sendmail_path с помощью php_value или ini_set / ini_get (даже с выключенным safe_mode! Я действительно не знаю почему - PHP 5.3.3). Однако я перечитал php mail () функция, и это решение было связано с функцией.

bool mail (строка $ to, строка $ subject, строка $ message [, строка $ additional_headers [, строка $ additional_parameters]])

Таким образом, последний параметр разрешает дополнительные параметры. Я изменил свой почтовый код php с mail ($ to, $ subject, $ message, implode ("\ r \ n", $ headerFields), "-f". $ от);

Я думаю это Джефф вы найдете это умнее.

Надеюсь на эту помощь.

Вы должны удалить -fuser@domain.com из вашего php.ini. А затем измените почта функция для каждого сценария, который отправляет почту для каждого хоста соответствующим образом. Таким образом вы можете передать правильный аргумент -f для каждого виртуального хоста.