Page 1 of 2

PHP mail(); уходит в пустоту

Posted: Mon Nov 21, 2016 10:19 pm
by sashabeep
Почта через phpmailer уходит в никуда. Eе вообще нет. error.log говорит, что все нормально, if внутри PHP - тоже. Но почта пропадает в никуда. Где ее найти и как сделать, чтобы работало?

Re: PHP mail(); уходит в пустоту

Posted: Tue Nov 22, 2016 1:39 am
by Stesh
sashabeep wrote:Почта через phpmailer уходит в никуда. Eе вообще нет. error.log говорит, что все нормально, if внутри PHP - тоже. Но почта пропадает в никуда. Где ее найти и как сделать, чтобы работало?
Почитать /var/log/exim/main.log (точный путь зависит от дистрибутива). Вот там и будет самое интересное.

Re: PHP mail(); уходит в пустоту

Posted: Tue Nov 22, 2016 7:11 am
by sashabeep
Там полно вот такого

Code: Select all

2016-11-22 07:00:00 1c8xPV-0000Sp-TD Message is frozen
и вот такого

Code: Select all

2016-11-22 06:55:02 1c92Ag-0005c4-5R <= [email protected] U=admin P=local S=735
2016-11-22 06:55:02 1c92Ag-0005c4-5R ** [email protected] R=dnslookup T=remote_smtp X=TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128: SMTP error from remote mail server after end of data: host gmail-smtp-in.l.google.com [74.125.206.26]: 550-5.7.1 [XX.XX.XX.XX] The IP addre$
2016-11-22 06:55:02 1c92Ag-0005c9-HP <= <> R=1c92Ag-0005c4-5R U=Debian-exim P=local S=2029
2016-11-22 06:55:02 1c92Ag-0005c4-5R Completed
2016-11-22 06:55:02 1c92Ag-0005c9-HP ** [email protected]: Unrouteable address
2016-11-22 06:55:02 1c92Ag-0005c9-HP Frozen (delivery error message)
Ранее задал hostname командой hostname
Почта не уходит на несколько разных почтовых сервисов

Re: PHP mail(); уходит в пустоту

Posted: Tue Nov 22, 2016 1:00 pm
by skurudo
Перенесено в "Почтовый сервер"

Прошу ознакомиться:
viewtopic.php?f=31&t=11280

Re: PHP mail(); уходит в пустоту

Posted: Wed Nov 23, 2016 1:26 pm
by xlandhost
skurudo wrote:Перенесено в "Почтовый сервер"

Прошу ознакомиться:
viewtopic.php?f=31&t=11280
заметка хорошая, еще надо добавить
для php.ini:
sendmail_path = "/usr/sbin/sendmail -f [email protected] -t -i"
или раскоментировать строчку
php.ini
mail.force_extra_parameters = -[email protected]

для httpd.conf
php_admin_value sendmail_path "/usr/sbin/sendmail -[email protected] -t -i"
для .htaccess.conf
php_value sendmail_path "/usr/sbin/sendmail -[email protected] -t -i"

также очень важно если сборка apache+cgi(fcgi) то
" 1. В конфигурации по доменам (/home/login/conf/web/apache2.conf или /home/login/conf/web/httpd.conf - внутри Directory) сделать корректную отправку с обратным адресом (желательно, чтобы этот адрес существовал): "

не сработает, и надо добавлять в php.ini или создать файл .user.ini

Re: PHP mail(); уходит в пустоту

Posted: Wed Nov 23, 2016 1:44 pm
by Mr.Erbutw
xlandhost wrote: заметка хорошая, еще надо добавить
для php.ini:
sendmail_path = "/usr/sbin/sendmail -f [email protected] -t -i"
или раскоментировать строчку
php.ini
mail.force_extra_parameters = -[email protected]

для httpd.conf
php_admin_value sendmail_path "/usr/sbin/sendmail -[email protected] -t -i"
Создаться все нормально, не могу подтвердить что отсутствует, строка
Image
Не правильно указано в таких случаях работать не будет.

Code: Select all

php_admin_value sendmail_path "/usr/sbin/sendmail [email protected] -t -i"
нет пробела между-f info

Re: PHP mail(); уходит в пустоту

Posted: Wed Nov 23, 2016 1:59 pm
by sashabeep
Спасибо за ответы. Судя по всему, надо много что допилить, у меня нет PTR, например. Мой домен припаркован с использованием стороннего ns-сервера, (не яндекс.пдд) и там часть ip не совпадает. Буду пробовать по написанному, сначала припаркую реальный домен

Re: PHP mail(); уходит в пустоту

Posted: Wed Nov 23, 2016 4:25 pm
by Stesh
sashabeep wrote:Спасибо за ответы. Судя по всему, надо много что допилить, у меня нет PTR, например. Мой домен припаркован с использованием стороннего ns-сервера, (не яндекс.пдд) и там часть ip не совпадает. Буду пробовать по написанному, сначала припаркую реальный домен
Не играет роли, куда припаркован домен. Главное чтобы записи в доменной зоне были корректные.
А PTR - это исключительно вопрос к хостингу, где арендуется VDS, ptr прописывается именно там.
Из опыта - ptr далеко не самая критичная часть. Желательно чтобы он совпадал с hostname сервера, но из без ptr почта бегает, spf+dkim+dmarc для почтовиков приоритетней.

Re: PHP mail(); уходит в пустоту

Posted: Fri Nov 25, 2016 12:26 am
by xlandhost
Mr.Erbutw wrote:
xlandhost wrote: заметка хорошая, еще надо добавить
для php.ini:
sendmail_path = "/usr/sbin/sendmail -f [email protected] -t -i"
или раскоментировать строчку
php.ini
mail.force_extra_parameters = -[email protected]

для httpd.conf
php_admin_value sendmail_path "/usr/sbin/sendmail -[email protected] -t -i"
Создаться все нормально, не могу подтвердить что отсутствует, строка
Image
Не правильно указано в таких случаях работать не будет.

Code: Select all

php_admin_value sendmail_path "/usr/sbin/sendmail [email protected] -t -i"
нет пробела между-f info

если сайт работает в режиме cgi но он не будет хавать значение в http.conf юзера, точнее будет но это будет как подмена, и в исходном коде письма будет писать от [email protected] а вот Return-path [email protected]
потом надо прописывать в главном пхп конфиге домен какой то главный для почты который коректно настроен со всеми записями и который в Return-path будет светится и гугл и прочии не будут письма в спам бросать
когда буду новую вдску настраивать то сделаю со скриншотами статью и тут напишу

Re: PHP mail(); уходит в пустоту

Posted: Fri Nov 25, 2016 4:55 pm
by xlandhost
пример
сервер centos 7
Vesta Vesta 0.9.8-17
dns записи dkim dmark ptr прописаны
главный домен domain1.ru
домен юзера domain2.ru
создал под юзером почту [email protected]

тестовый скрипт для проверки пхп почты mail.php
<?php
ini_set( 'display_errors', 1 );
error_reporting( E_ALL );
$from = "[email protected]";
$to = "[email protected]";
$subject = "PHP Mail Test script";
$message = "This is a test to check the PHP Mail functionality";
$headers = "From:" . $from;
mail($to,$subject,$message, $headers);
echo "Test email sent";
?>

тест1:
domain2.ru в режиме apache
Web Template:default
Proxy Support:yes
Proxy Template:default

видим что Return-Path: <[email protected]>
добавляем php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f [email protected]"
в /home/admin/conf/web/httpd.conf (юзер у нас админ)
тестируем
Return-Path: <[email protected]>
вывод - работает!
тест2:
domain2.ru в режиме apache
Web Template:phpfcgid
Proxy Support:yes
Proxy Template:default

Return-Path: <[email protected]>
тестируем с php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f [email protected]"
в /home/admin/conf/web/httpd.conf
Return-Path: <[email protected]>
вывод не работает

пробуем пофиксить
создаем .user.ini
не помогло
пробуем .htaccess
не помогло
пробуем создать в папке домена php.ini
не помогло
в итоге чтоб сработало надо прописать в пхп ини главном