Apache сбрасывает "Return-Path: " на <nobody@server.com> в функции PHP mail()
Следующие заголовки отправляются с помощью PHP-функции mail():
$emailheaders = "From: " . $sender . "\n";
$emailheaders .= "Return-Path: " . $sender . "\n";
$emailheaders .= "MIME-Version: 1.0\n";
$emailheaders .= "Content-type: text/html; charset=UTF-8\r\n";
mail($email, $subject, $body, $emailheaders);
Работает нормально, кроме Return-Path:
сбрасывается на nobody@server.com
или, по крайней мере, это то, что появляется при просмотре расширенных заголовков для писем, полученных с использованием вышеуказанных заголовков. Естественно, это означает, что отказные письма не принимаются.
Apache сбрасывает заголовки, и в этом случае почему, или я использую mail()
неправильно?
Что я могу сделать, чтобы этого не случилось? С помощью mail()
пятый параметр (например, -f sender@server.com
) не может быть и речи, так как PHP находится в безопасном режиме, и поставщик не изменит этого. Я полагаю, что нет определенного способа разрешить использование пятого параметра для определенных пользователей, несмотря на то, что включен безопасный режим.
Сервер работает под управлением Apache 2.2.3 и PHP версии 5.1.6.
2 ответа
Агент передачи почты сервера (MTA) переопределяет return-path
, Например, если вы используете exim:
Установить return-path
в /etc/exim/exim.conf
конфигурационный файл:
return_path = sender@example.com
Если у вас нет доступа к конфигурации сервера или mail()
пятый параметр, то, вероятно, вы ничего не можете сделать.
Вы разделяете заголовки, используя \n
но в соответствии с PHP это должно быть \r\n (см. Какой разрыв строки в заголовке почты php, \r\n или \ n?).
Возможно, это причина, почему заголовок не отправляется правильно.