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?).

Возможно, это причина, почему заголовок не отправляется правильно.

Другие вопросы по тегам