URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 79544
[ Назад ]

Исходное сообщение
"php не отправляет почту"

Отправлено Blood Angel , 31-Мрт-08 12:47 
есть форум, который отправлял почту. крутился на freebsd 6.2 перенес на новый сервер под управлением centos. отвалилась почта. диагностика с форума говорит:
Почтовая функция возвратила ошибку при попытке отправить почту.
Обнаружены следующие ошибки PHP при попытке отправить почту:


Warning: fsockopen() [function.fsockopen]: unable to connect to IPADDRESS:25 (Permission denied) in /includes/class_mail.php on line 604

Warning: Unable to connect to SMTP server in /includes/class_mail.php on line 586

почтовый сервер не менялся (внешний по отношению к обоим вариантам форума


PHP Version 5.1.6 с нового сервака

System  Linux forum 2.6.18-53.el5 #1 SMP Mon Nov 12 02:14:55 EST 2007 x86_64  
Build Date  Sep 20 2007 10:05:56  
Configure Command  './configure' '--build=x86_64-redhat-linux-gnu' '--host=x86_64-redhat-linux-gnu' '--target=x86_64-redhat-linux-gnu' '--program-prefix=' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib64' '--libexecdir=/usr/libexec' '--localstatedir=/var' '--sharedstatedir=/usr/com' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--cache-file=../config.cache' '--with-libdir=lib64' '--with-config-file-path=/etc' '--with-config-file-scan-dir=/etc/php.d' '--disable-debug' '--with-pic' '--disable-rpath' '--without-pear' '--with-bz2' '--with-curl' '--with-exec-dir=/usr/bin' '--with-freetype-dir=/usr' '--with-png-dir=/usr' '--enable-gd-native-ttf' '--without-gdbm' '--with-gettext' '--with-gmp' '--with-iconv' '--with-jpeg-dir=/usr' '--with-openssl' '--with-png' '--with-pspell' '--with-expat-dir=/usr' '--with-pcre-regex=/usr' '--with-zlib' '--with-layout=GNU' '--enable-exif' '--enable-ftp' '--enable-magic-quotes' '--enable-sockets' '--enable-sysvsem' '--enable-sysvshm' '--enable-sysvmsg' '--enable-track-vars' '--enable-trans-sid' '--enable-yp' '--enable-wddx' '--with-kerberos' '--enable-ucd-snmp-hack' '--with-unixODBC=shared,/usr' '--enable-memory-limit' '--enable-shmop' '--enable-calendar' '--enable-dbx' '--enable-dio' '--with-mime-magic=/etc/httpd/conf/magic' '--without-sqlite' '--with-libxml-dir=/usr' '--with-xml' '--with-apxs2=/usr/sbin/apxs' '--without-mysql' '--without-gd' '--without-odbc' '--disable-dom' '--disable-dba' '--without-unixODBC' '--disable-pdo' '--disable-xmlreader' '--disable-xmlwriter'  
Server API  Apache 2.0 Handler  
Virtual Directory Support  disabled  
Configuration File (php.ini) Path  /etc/php.ini  
Scan this dir for additional .ini files  /etc/php.d  
additional .ini files parsed  /etc/php.d/gd.ini, /etc/php.d/mysql.ini, /etc/php.d/mysqli.ini, /etc/php.d/ncurses.ini, /etc/php.d/pdo.ini, /etc/php.d/pdo_mysql.ini, /etc/php.d/pdo_sqlite.ini  
PHP API  20041225  
PHP Extension  20050922  
Zend Extension  220051025  
Debug Build  no  
Thread Safety  disabled  
Zend Memory Manager  enabled  
IPv6 Support  enabled  
Registered PHP Streams  php, file, http, ftp, compress.bzip2, compress.zlib, https, ftps  
Registered Stream Socket Transports  tcp, udp, unix, udg, ssl, sslv3, sslv2, tls  
Registered Stream Filters  string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, convert.iconv.*, bzip2.*, zlib.*  


Содержание

Сообщения в этом обсуждении
"php не отправляет почту"
Отправлено PavelR , 31-Мрт-08 13:20 

На данном хостинге нельзя скриптами отправлять почту на внешние смтп-сервера прямым подключением на 25 порт.Это сделано для ограничения возможностей по рассылке спама скриптами. Так бывает.

"php не отправляет почту"
Отправлено Blood Angel , 31-Мрт-08 13:29 
>
>На данном хостинге нельзя скриптами отправлять почту на внешние смтп-сервера прямым подключением
>на 25 порт.Это сделано для ограничения возможностей по рассылке спама скриптами.
>Так бывает.

нет, все открыто, да и как они собираются анализировать телнетом/smtp ли я отправляю или через скрипт?


"php не отправляет почту"
Отправлено PavelR , 31-Мрт-08 13:37 
>>
>>На данном хостинге нельзя скриптами отправлять почту на внешние смтп-сервера прямым подключением
>>на 25 порт.Это сделано для ограничения возможностей по рассылке спама скриптами.
>>Так бывает.
>
>нет, все открыто, да и как они собираются анализировать телнетом/smtp ли я
>отправляю или через скрипт?

Я не столь уверен в том, что все открыто, как Вы.
А анализировать ничего не надо. Надо просто закрыть исходящие на 25 порт от пользователя апач.



"php не отправляет почту"
Отправлено Blood Angel , 31-Мрт-08 13:44 
>Я не столь уверен в том, что все открыто, как Вы.
>А анализировать ничего не надо. Надо просто закрыть исходящие на 25 порт
>от пользователя апач.

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


"php не отправляет почту"
Отправлено Blood Angel , 31-Мрт-08 13:32 
Более того, указывая в качестве smtp сервера localhost - получаем ту же самую ошибку. что-то я видимо в php недокрутил :(


"php не отправляет почту"
Отправлено Blood Angel , 31-Мрт-08 15:52 
>Более того, указывая в качестве smtp сервера localhost - получаем ту же
>самую ошибку. что-то я видимо в php недокрутил :(

А указывая например 80 порт - все нормально, пытаемся установить соединение куда угодно....


"php не отправляет почту"
Отправлено vapetrov , 01-Апр-08 06:11 
>>Более того, указывая в качестве smtp сервера localhost - получаем ту же
>>самую ошибку. что-то я видимо в php недокрутил :(
>
>А указывая например 80 порт - все нормально, пытаемся установить соединение куда
>угодно....

Возможно SMTP-сервер не слушает порт на 127.0.0.1:25, с слушает только внешний интерфейс.
Попробуй посмотреть
netstat -l -n -p


А еще мне кажется странным сообщение об ошибке. Было бы интересно посмотреть на /includes/class_mail.php on line 604 и увидеть с каким параметрами там вызывается функция fsockopen ?


"php не отправляет почту"
Отправлено Blood Angel , 01-Апр-08 07:22 
>[оверквотинг удален]
>
>Возможно SMTP-сервер не слушает порт на 127.0.0.1:25, с слушает только внешний интерфейс.
>
>Попробуй посмотреть
>netstat -l -n -p
>
>
>А еще мне кажется странным сообщение об ошибке. Было бы интересно посмотреть
>на /includes/class_mail.php on line 604 и увидеть с каким параметрами там
>вызывается функция fsockopen ?

слушает, слушает...
в 604 строке          $this->smtpSocket = fsockopen($this->smtpHost, $this->smtpPort, $errno, $errstr, 30);

более того такой вот простейший тест
<?php
$fp = fsockopen("IPADDRESS", 25, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
    $out = "GET / HTTP/1.1\r\n";
    $out .= "Host: www.example.com\r\n";
    $out .= "Connection: Close\r\n\r\n";

    fwrite($fp, $out);
    while (!feof($fp)) {
        echo fgets($fp, 128);
    }
    fclose($fp);
}
?>
тоже не проходит. указываем к примеру там 80 порт или 53 проходит. а 25, 1153 да и вообще какие-нибудь левые - фиг. в том числе и на локал хост.


"php не отправляет почту"
Отправлено Blood Angel , 01-Апр-08 13:34 
вылечилось следующим:
setsebool -P httpd_can_network_connect 1