Проблема с отправкой писем.

Вот мне Дед Мороз подкинул подарочек.......


Есть скрипт. Находится в /html/cron/mail.php
В нем написано так
mail("olga***@ya.ru", 'Тема', 'Текст'); 
die('== test ==');
Т.е. отправить мне письмо.



Если я выполняю его через браузер по ссылке

То мне приходит письмо.

Далее запускаю его на прямую интерпретатором php, мне ничего не приходит. При этом ошибок в логах никаких нет!

Это я сюда, вам, более ясно описала проблему. Хостеры же читали чуть другой текст и ничего не поняли. Единственное, что они смогли порекомендовать -  это

не правильно отрабатывается перевод каретки то есть когда вы из http запроса - пхп код отрабатывает модуль апача, когда же используете /usr/bin/php непосредственно сам интерепретатор пхп то есть сходу по запросу в яндексе находим возможный вариант вашей проблемы



Глюк с переводом каретки. Если вы создаете файл (mail.php) в Windows/DOS и потом копируете по FTP на сервер, глюк будет. Если создать файл прямо из консоли сервера каким-нибудь редактором (vi, joe, mc), то глюка не будет. Глюк заключается в разных переводых каретки. Причем надо конвертировать перевод каретки не во всем файле, а только в первой строке: #!/usr/bin/php. Глюк не имеет отношения к ПХП, а к Юниксам в целом. К сожалению, разработчики линуксов и прочего вместо того, чтобы профикситить сей давний глюк, особо проявившийся с появлением веба, занимаются не понятно чем. Чтобы исправить глюк, сравните на пререводы каретки у любого файла с сервера (не из веб-каталога) и файла с Windows. Итак решение по шагам:
создать файл в Windows с текстом, приведенным выше не под именем mail.php, а под именем mail2.php
переписать в свой домашний каталог файл mail2.php
запустить телнет, перейти в домашний каталог и выполнить fromdos < mail2.php > mail.php (если у вас нет телнета - попросите админа о такой мелочи)
стереть mail2.php (и останется только mail.php в правильном виде)


Я, к сожалению ни слова не поняла. Пришел мой знакомый, вытер мне слезы и за пять минут объяснил.
Сделали следующее (привожу ответ из переписки с хостерами).

По Вашему совету скрипт был перекодирован программой dos2unix (программы fromdos нет в репозитарии). Все неправильные переводы каретки исчезли.

Теперь я запускаю скрипт через браузер по ссылке http://novosibirsk.auction10.ru/cron/lot_complete.php На экран выводится нужный текст (#!/usr/bin/php == test ==). Письмо приходит нормально. В файле/var/log/mail/php_mail.log появляется запись о срабатывании функции mail(). После этого запускаю скрипт командой ./lot_complete.php из каталога /var/www/html/cron Отрабатывает без ошибок, в консоль выводится тот же текст, что и в браузере, в файле /var/log/mail/php_mail.log появляется запись о срабатывании функции mail(). НО ПИСЬМО НЕ ПРИХОДИТ!

Внимание, вопрос! Чем же отличается выполнение php-файла апачем от выполнения его же интерпретатором php напрямую???????


Возможно вы недоумеваете, почему я вообще должна заниматься этим, а не хостер. Объясню. У нас VPS и нет админа, пожтому все проблемы - это мои проблемы.

Мой знакомый не успокоился. Он все равно продолжил рыться.
Забыла где отрыли лог отправки писем, разглядывал его, разглядывал...
Выяснилось, что при отправки писем апачем, он указывает from почтовый адрес (не тот, что я указываю в письме как отправитель, а другого, грамотное его название не знаю :( ). 
Сами ищите 10 отличай, админы понимают, что тут написано, я - нет


Это верная отправка апачем:
Jan  5 00:55:34 site sendmail[25902]: q04HtYFD025902: Authentication-Warning: site.ru: apache set sender to admin@site.ru using -f
Jan  5 00:55:34 site sendmail[25902]: q04HtYFD025902: from=admin@site.ru, size=92, class=0, nrcpts=1, msgid=<201201041755.q04HtYFD025902@site.ru>, relay=apache@localhost
Jan  5 00:55:34 site sendmail[25903]: STARTTLS=server, relay=localhost.localdomain [127.0.0.1], version=TLSv1/SSLv3, verify=NO, cipher=DHE-RSA-AES256-SHA, bits=256/256
Jan  5 00:55:34 site sendmail[25902]: STARTTLS=client, relay=[127.0.0.1], version=TLSv1/SSLv3, verify=FAIL, cipher=DHE-RSA-AES256-SHA, bits=256/256
Jan  5 00:55:35 site sendmail[25903]: q04HtYfZ025903: from=<admin@site.ru>, size=431, class=0, nrcpts=1, msgid=<201201041755.q04HtYFD025902@site.ru>, proto=ESMTP, daemon=MTA, relay=localhost.localdomain [127.0.0.1]
Jan  5 00:55:35 site sendmail[25902]: q04HtYFD025902: to=olga***@ya.ru, ctladdr=admin@site.ru (503/503), delay=00:00:01, xdelay=00:00:01, mailer=relay, pri=30092, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (q04HtYfZ025903 Message accepted for delivery)
Jan  5 00:55:36 site sendmail[25905]: q04HtYfZ025903: to=<olga***@ya.ru>, ctladdr=<admin@site.ru> (505/503), delay=00:00:01, xdelay=00:00:01, mailer=esmtp, pri=120431, relay=mx.yandex.ru. [77.88.21.89], dsn=2.0.0, stat=Sent (Ok: queued on mxfront5.mail.yandex.net as u9EC7vLG-u9ECO2LO)

Это ошибочная
Jan  5 00:57:26 site sendmail[26142]: q04HvQ6V026142: from=root, size=92, class=0, nrcpts=1, msgid=<201201041757.q04HvQ6V026142@site.ru>, relay=root@localhost
Jan  5 00:57:26 site sendmail[26142]: STARTTLS=client, relay=[127.0.0.1], version=TLSv1/SSLv3, verify=FAIL, cipher=DHE-RSA-AES256-SHA, bits=256/256
Jan  5 00:57:26 site sendmail[26143]: STARTTLS=server, relay=localhost.localdomain [127.0.0.1], version=TLSv1/SSLv3, verify=NO, cipher=DHE-RSA-AES256-SHA, bits=256/256
Jan  5 00:57:27 site sendmail[26142]: q04HvQ6V026142: to=olga***@ya.ru, ctladdr=root (0/0), delay=00:00:01, xdelay=00:00:01, mailer=relay, pri=30092, relay=[127.0.0.1] [127.0.0.1], dsn=5.6.0, stat=Data format error
Jan  5 00:57:27 site sendmail[26142]: q04HvQ6V026142: q04HvQ6W026142: DSN: Data format error
Jan  5 00:57:27 site sendmail[26143]: q04HvQnT026143: <root@site.ru>... No such user here
Jan  5 00:57:27 site sendmail[26142]: q04HvQ6W026142: to=root, delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=31116, relay=[127.0.0.1], dsn=5.3.0, stat=User unknown
Jan  5 00:57:27 site sendmail[26143]: q04HvQnT026143: from=<>, size=1116, class=0, nrcpts=0, proto=ESMTP, daemon=MTA, relay=localhost.localdomain [127.0.0.1]
Jan  5 00:57:27 site sendmail[26142]: q04HvQ6W026142: q04HvQ6X026142: return to sender: User unknown
Jan  5 00:57:27 site sendmail[26143]: q04HvQnV026143: <postmaster@site.ru>... No such user here
Jan  5 00:57:27 site sendmail[26142]: q04HvQ6X026142: to=postmaster, delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=32140, relay=[127.0.0.1] [127.0.0.1], dsn=5.3.0, stat=User unknown
Jan  5 00:57:27 site sendmail[26143]: q04HvQnV026143: from=<>, size=2140, class=0, nrcpts=0, proto=ESMTP, daemon=MTA, relay=localhost.localdomain [127.0.0.1]
Jan  5 00:57:27 site sendmail[26142]: q04HvQ6W026142: Losing ./qfq04HvQ6W026142: savemail panic
Jan  5 00:57:27 site sendmail[26142]: q04HvQ6W026142: SYSERR(root): savemail: cannot save rejected email anywhere

Далее лезем в настройки апача /etc/httpd/conf/httpd.conf и разглядываем....
<VirtualHost ххх.хх.хх.хх:80>
...
php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f admin@auction10.ru"
......
</VirtualHost>
Далее лезем в настройки php /etc/php.ini и ищем sendmail_path
Оказалось, что там запись пустая, т.е
sendmail_path "/usr/sbin/sendmail -t -i
Записали тоже самое, что и в апаче И ОП ЛЯ РАБОТАЕТ

Делов на 5 секунд, из-за отсутствия информации потрачены нервы и день.

Комментарии

Популярные сообщения