Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » Настройка mail() в PHP

Модерирует : lynx, Crash_Master, dg, emx, ShriEkeR

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

SlyfoX



XPrienced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Добрый день, товарищи!
 
Довольно долго (пусть не самым упорным образом) мучаюсь с настройкой функции mail() в PHP под Линуксом. Перерыл кучу документации, перечитал довольно много FAQ-ов, нигде ничего полезного найти не удалось.
В общем, переходим ближе к делу. Есть сервер под Линуксом, есть Apache 1.3.19, есть PHP 4.2.1 (прикрученный и работающий на ура), есть Sendmail 8.12.3. Полностью отказывается работать функция mail(), хотя вроде бы как всё настроено так, как положено. Путь в sendmail_path в php.ini указан правильно (экспериментировал и с путём, и с аргументами - ничего не помогает). Сам Sendmail письма отсылает отлично и без никаких проблем.
В PHP функция mail() просто возвращает 0 и условие в if-е не выполняется само собой. Письмо не отсылается. Ошибки в синтаксисе в PHP исключены, код абсолютно правильный.
Уже не знаю, на что остаётся грешить. Думается мне, что случай не совсем из обычных, раз информации полезной найти нигде не удаётся.
Просьба не советовать заменять sendmail на аналоги типа qmail, старая версия PHP тоже не хотела отсылать почту.
Любые советы и идеи приветствуются.
Заранее спасибо.

Всего записей: 1027 | Зарегистр. 20-04-2001 | Отправлено: 13:53 17-06-2002
greys



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
SlyfoX
а как был установлен sendmail? в смысле, из пакета, или скомпилял ручками? Какие у него атрибуты и права доступа? И из под кого запускается Apache/PHP? Я клоню к тому, что вполне возможно, что у Apache/PHP нет прав доступа к sendmail.  
 
А что это за Linux-бокс у тебя, кто-нибудь еще почту отправляет, кроме root'а? А то, может, просто suid не стоит на sendmail'е?
 
Если тут все в порядке - пиши, дальше поищем что ж за напасть такая. И, если можно, напиши тот кусок кода, который не хочет посылать почту mail'ом из php, и как ты его проверяешь if-условием.
 
Удачи,
greys

Всего записей: 590 | Зарегистр. 18-10-2001 | Отправлено: 15:56 17-06-2002
new yorik



Lame®
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
на сколько я помню функция mail не юзает сендмыл ни коим образом, её нужен именно SMTP сервер.

Всего записей: 2623 | Зарегистр. 31-12-2001 | Отправлено: 18:09 17-06-2002
quamque



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SlyfoX
Заставь скрипт выводить сообщения об ошибках и узнаешь почему mail() возвращает  0.  А может, как заметил уже new yorik, ты забыл в php.ini раскоментировать переменную SMTP ?

Всего записей: 227 | Зарегистр. 19-12-2001 | Отправлено: 18:30 17-06-2002
SlyfoX



XPrienced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
quamque

Цитата:
Заставь скрипт выводить сообщения об ошибках и узнаешь почему mail() возвращает  0.

Не выводит ни ошибки, ни предупреждения.
 
new yorik

Цитата:
на сколько я помню функция mail не юзает сендмыл ни коим образом, её нужен именно SMTP сервер.

Под Виндой она использует только SMTP, под Линуксом же по умолчанию (не знаю, можно ли изменить это) она использует сендмайл.
Но как бы то ни было, в php.ini проставлены и путь до сендмайла, и адрес SMTP-сервера, и обратный адрес.
 
greys

Цитата:
в смысле, из пакета, или скомпилял ручками?

Ручками компилил.
 

Цитата:
Какие у него атрибуты и права доступа?

Права доступа -r-xr-sr-x
Что имеется ввиду под атрибутами? где можно глянуть?
 

Цитата:
И из под кого запускается Apache/PHP?

Запускается из-под nobody.
 

Цитата:
А что это за Linux-бокс у тебя, кто-нибудь еще почту отправляет, кроме root'а? А то, может, просто suid не стоит на sendmail'е?  

Спасибо за наталкивание на здравую мысль . Тут уже интереснее. В принципе настроек по умолчанию на счёт того, кто может отсылать почту я нигде не менял (просто не видел, где менять). Сейчас попробовал отправить почту из-под нерутовского эккаунта, вот сие мне творение выдал сендмайл в консоли:

Цитата:
WARNING: RunAsGid for MSP ignored, check group ids (egid=105, want=100)
can not write to queue directory /var/spool/clientmqueue/ (RunAsGid=0, required=105): Permission denied

Судя по всему где-то ему что-то не даёт посылать письмо из под не-рута. Это изменяется в конфиге где-то? в какую сторону копать?
 
Добавлено
Посмотрел конфиг сендмайла. В trusted users уже проставлен nobody. Продолжаю копать .
 
Добавлено
Вызывается mail() и проверяется if-ом обычным способом:
 

Цитата:
error_reporting(15);
if (mail("foxxx@navigators.lv", "My Subject", "Line 1\nLine 2\nLine 3")) {
echo "mail sent"; } else { echo "Mail delivery failed"; }

Всего записей: 1027 | Зарегистр. 20-04-2001 | Отправлено: 19:05 17-06-2002
greys



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Сначала попробуй из-под рута сделать chmod u+s /usr/bin/sendmail или где там у тебя лежит sendmail. Потому что SUID должен стоять на пользовательском уровне, а у тебя судя по маске, стоит по группам.
Так что сделай chmod который я вверху написал, он должен suid для пользователей установить. Потом пробуй, должно заработать. Если не заработает (что уже будет странновато...), то пробуй дальше:
 
как быстрый фикс, сделай chmod a+w /var/spool/clientmqueue из-под рута, и попробуй снова посылать!  
 
Удачи,
greys

Всего записей: 590 | Зарегистр. 18-10-2001 | Отправлено: 19:30 17-06-2002
SlyfoX



XPrienced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
О да ! Помогло Благодарю покорно!
Итак, что сделал.
Во-первых, chmod u+s /usr/sbin/sendmail
Во-вторых, закомментировал назад sendmail_path в php.ini.
В-третьих, chmod a+w /var/spool/clientmqueue (хотя это с точки зрения безопасности меня немного смущает - есть способы обойти a+w?).
В-четвёртых, не знаю, помогло ли это реально, добавил в группу smmsp юзера nobody.
Вот в принципе и всё. Ещё раз спасибо.

Всего записей: 1027 | Зарегистр. 20-04-2001 | Отправлено: 19:47 17-06-2002
greys



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
SlyfoX
а ты промежуточные проверки делал между каждым шагом? По идее, после chmod u+s /usr/sbin/sendmail тебе уже вовсе и необяательно было делать chmod a+w на каталог с очередью, потому что, как ты и сказал, это очень нехорошо в целях секьюриты. Но как фикс сработало Попробуй поменять пермишены на /var/spool/clienmqueue обратно, и посмотри - sendmail все равно должен работать

Всего записей: 590 | Зарегистр. 18-10-2001 | Отправлено: 14:31 18-06-2002
Alex N

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Очень здорово что наткнулся на это обсуждение!!! Всё сделал, заработало... Вот только ставит в очередь сообщения, и отправляет через пол-часа. В очереди находится со статусом Deferred.
Как его так сделать, чтобы уходило немедленно?

Всего записей: 3 | Зарегистр. 06-09-2002 | Отправлено: 15:08 09-09-2002
quamque



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
2lynx
Я помню, что учавствовал в этой теме, но она древняя и к тому же, не вижу  здесь никакого ответа на мой вопрос.  
Совсем необязательно менять суид для /usr/sbin/sendmail. На других серверах где я ставил Постфикс всё прекрасно отправляется и без суид.  
 
Хотя проблема связана с правами пользователей. Если я запускаю скрипт из-под рута то всё работает, письмо приходит, а если из-под Apache, то не приходит не фига.

Всего записей: 227 | Зарегистр. 19-12-2001 | Отправлено: 12:14 27-02-2003
Gumanoid



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
new yorik

Цитата:
функция mail не юзает сендмыл ни коим образом, её нужен именно SMTP сервер.

немного не точно  
под Линухом РНР юзает сендмыл
под виндой СМТП

----------
Возмем план и в космос...
Сайт IRC-канала #muravlenko IRC.Muravlenko.ru:6667

Всего записей: 1664 | Зарегистр. 17-01-2002 | Отправлено: 18:40 27-02-2003
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » Настройка mail() в PHP


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru