Сведения о вопросе

1234123213

21:41, 9th August, 2020

PHP-функция mail(), 5-й аргумент?

Просмотров: 368   Ответов: 6

Универсальный почтовый скрипт PHPMailer при отправке письма с помощью функции mail() в качестве 5-го аргумента функции подставляет строку "-oi -f mail@example.com".

Популярный фреймворк CodeIgniter делает тоже самое, только без флага "-oi".



Но valuehost.ru не отправляет письмо, если в 5-м параметре есть ключ "-f".



Не хочется (да и неправильно это) изменять код фреймворка. Правильнее было бы внести нужные изменения в настройки сервера, я думаю. Проблема в том, что я не знаю, какие это должны быть настройки (надеюсь, админы валюхоста пойдут навстречу, если я им подскажу, что и где исправить).



Кто-нибудь сталкивался с такой проблемой? Кто-нибудь знает, по каким причинам mail() может отказываться работать с ключом "-f"?



Заранее очень благодарю :)



  Сведения об ответе

ASSembler

23:52, 18th August, 2020

я как бывший суппорт хостера с проблемой знаком. У нас почтовиком был exim. Суть происшествия в том, что почтовый сервер запрещает подставлять в поле Sender любое имя, а только то, от кого запускается процесс (РНР). Также можно включить разрешение такой подстановки, но лично я бы на сервере массового хостинга этого не делал. Такой запрет помогает отслеживать спаммеров и взломанных клиентов. А вот на ВПСах и колокейшене часто отключали такую проверку.


  Сведения об ответе

ЯЯ__4

07:10, 23rd August, 2020

Читаем тут описание 5 параметра (additional_parameters).
Суть — пятый параметр используется для передачи дополнительных флагов программе, используемой для отправки почты. Например, этот параметр можно использовать, чтобы установить адрес конвертного отправителя при использовании sendmail с флагом -f.
Там же идет отдельное указание. Пользователь, под которым работает веб-сервер, должен быть добавлен в «доверенные» (trusted) в конфигурации sendmail, чтобы предотвратить добавление заголовка «X-Warning», когда отправитель задается с помощью флага -f. Для пользователей sendmail, этот файл — /etc/mail/trusted-users.
В итоге для подробностей ответа на ваш вопрос стоит почитать документацию по программе, отправляющей почту на сервере.


  Сведения об ответе

pumpa

19:30, 11th August, 2020

С PHP 4.2.3 этот параметер запрещён в безопасном режиме и функция mail() будет выдавать предупреждающее сообщение, и возвращать FALSE, если вы попытаетесь использовать её.
Возможно это ваш случай и valuehost.ru использует безопасный режим


  Сведения об ответе

lesha

08:22, 25th August, 2020

А почему не воспользоваться функцией sendmail того-же CodeIgniter?
$config['protocol'] = 'sendmail';
$config['mailpath'] = '/usr/sbin/sendmail';

$this->email->initialize($config);
...


  Сведения об ответе

fo_I_K

12:21, 11th August, 2020

вам надо как-то отучить вашу CMS вставлять 5-ый аргумент.
В доке codeigniter.com/user_guide/libraries/email.html написано, что есть возможность в конфиге config/email.php (по умолчанию не существует) задать настройки отправки почты. В т.ч. можно сделать отправку через SMTP-соединение, а не локальный почтовый сервер.
Попробуйте пойти этим путём.


  Сведения об ответе

DAAA

08:07, 29th August, 2020

А может стоит задуматься нужен ли вам вообще valuehost.ru?
Я конечно не отговариваю, но когда я делал один проэктец в котором заказчик уже озаботился доменом и хостингом (да-да, valuehost) — обплевался при работе. Начиная от того что они не привязали домен к аккаунту (как такое вообще возможно?), потом привязали его криво (вводим адрес сайта и… попадаем на какой-то немецкий паркинг-пейдж), заканчивая бесконечными «да, это особенности конфигов нашего сервера, нет, менять никто не будет, наша freeBSD самая freeBSD из всех free и BSD», хотя на 3х других хостингах все прекрасно работало и бегало :(


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться