Об отправке почты

У нас нельзя отправлять почту просто функцией PHP mail, потому что спамеры, регулярно взламывающие незащищенные Joomla и Wordpress сайты используют домены клиентов для своих рассылок и затем уже почта добросовестных клиентов совершенно не доходит получателям.

Рекомендуем следующие скрипты для отправки почты:

Библиотека smtp-func.php

<?php

function smtpmail($mail_to, $subject, $message, $headers='') {

        //Настройки почты
        $config['smtp_username'] = '[email protected]';  //Смените на имя своего почтового ящика из ISPManager.
        $config['smtp_password'] = 'Пароль от почтового ящика из панели ISPManager';  //Измените пароль.
        $config['smtp_from']     = 'Test Mailbox'; //Ваше имя - или имя Вашего сайта. Будет показывать при прочтении в поле "От кого".
        //Обычно эти настройки менять не стоит
        $config['smtp_host']     = 'localhost';  //Сервер для отправки почты (для наших клиентов менять не требуется).
        $config['smtp_port']     = '25'; // Порт работы. Не меняйте, если не уверены.
        $config['smtp_debug']    = false;  //Если Вы хотите видеть сообщения ошибок, укажите true вместо false.
        $config['smtp_charset']  = 'UTF-8';   //Кодировка сообщений.

        $SEND =   "Date: ".date("D, d M Y H:i:s") . " +0300\r\n";
        $SEND .=   'Subject: =?'.$config['smtp_charset'].'?B?'.base64_encode($subject)."=?=\r\n";
        if ($headers) $SEND .= $headers."\r\n\r\n";
        else
        {
                $SEND .= "Reply-To: ".$config['smtp_username']."\r\n";
                $SEND .= "MIME-Version: 1.0\r\n";
                $SEND .= "Content-Type: text/plain; charset=\"".$config['smtp_charset']."\"\r\n";
                $SEND .= "Content-Transfer-Encoding: 8bit\r\n";
                $SEND .= "From: \"".$config['smtp_from']."\" <".$config['smtp_username'].">\r\n";
                $SEND .= "To: $mail_to <$mail_to>\r\n";
                $SEND .= "X-Priority: 3\r\n\r\n";
        }
        $SEND .=  $message."\r\n";
         if( !$socket = fsockopen($config['smtp_host'], $config['smtp_port'], $errno, $errstr, 30) ) {
            if ($config['smtp_debug']) echo $errno."<br>".$errstr;
            return false;
         }

            if (!server_parse($socket, "220", __LINE__)) return false;

            fputs($socket, "EHLO " . $config['smtp_host'] . "\r\n");
            if (!server_parse($socket, "250", __LINE__)) {
               if ($config['smtp_debug']) echo '<p>Не могу отправить EHLO!</p>';
               fclose($socket);
               return false;
            }
            fputs($socket, "AUTH LOGIN\r\n");
            if (!server_parse($socket, "334", __LINE__)) {
               if ($config['smtp_debug']) echo '<p>Не могу найти ответ на запрос авторизации!</p>';
               fclose($socket);
               return false;
            }
            fputs($socket, base64_encode($config['smtp_username']) . "\r\n");
            if (!server_parse($socket, "334", __LINE__)) {
               if ($config['smtp_debug']) echo '<p>Логин авторизации не был принят сервером!</p>';
               fclose($socket);
               return false;
            }
            fputs($socket, base64_encode($config['smtp_password']) . "\r\n");
            if (!server_parse($socket, "235", __LINE__)) {
               if ($config['smtp_debug']) echo '<p>Пароль не был принят сервером как верный! Ошибка авторизации!</p>';
               fclose($socket);
               return false;
            }
            fputs($socket, "MAIL FROM: <".$config['smtp_username'].">\r\n");
            if (!server_parse($socket, "250", __LINE__)) {
               if ($config['smtp_debug']) echo '<p>Не могу отправить команду MAIL FROM:</p>';
               fclose($socket);
               return false;
            }
            fputs($socket, "RCPT TO: <" . $mail_to . ">\r\n");

            if (!server_parse($socket, "250", __LINE__)) {
               if ($config['smtp_debug']) echo '<p>Не могу отправить команду RCPT TO:</p>';
               fclose($socket);
               return false;
            }
            fputs($socket, "DATA\r\n");

            if (!server_parse($socket, "354", __LINE__)) {
               if ($config['smtp_debug']) echo '<p>Не могу отправить команду DATA!</p>';
               fclose($socket);
               return false;
            }
            fputs($socket, $SEND."\r\n.\r\n");

            if (!server_parse($socket, "250", __LINE__)) {
               if ($config['smtp_debug']) echo '<p>Не могу отправить тело письма. Письмо не было отправлено!</p>';
               fclose($socket);
               return false;
            }
            fputs($socket, "QUIT\r\n");
            fclose($socket);
            return TRUE;
}
function server_parse($socket, $response, $line = __LINE__) {
        global $config;
        $server_response="";
    while (substr($server_response, 3, 1) != ' ') {
        if (!($server_response = fgets($socket, 256))) {
                   if ($config['smtp_debug']) echo "<p>Проблемы с отправкой почты!</p>$response
$line
";
                   return false;
                }
    }
    if (!(substr($server_response, 0, 3) == $response)) {
           if ($config['smtp_debug']) echo "<p>Проблемы с отправкой почты!</p>$response
$line
";
           return false;
        }
    return true;
}

//Отправить почту сразу нескольким получателям, ящики получателей пишем через запятую.

function smtpmassmail($mail_to, $subject, $message, $headers='')
{
$mailaddresses=explode(",",$mail_to);
foreach ($mailaddresses as $mailaddress) smtpmail($mailaddress,$subject,$message,$headers);
}

?>


и сам файл отправки mailer.php

<?php
//Замените настройки на нужные.
$mail_to = '[email protected]'; //Вам потребуется указать здесь Ваш настоящий почтовый ящик, куда должно будет прийти письмо.
$type = 'plain'; //Можно поменять на html; plain означает: будет присылаться чистый текст.
$charset = 'UTF-8';

include('smtp-func.php');
if ($_REQUEST['message'])
{
   $name = $_REQUEST['name'];
   $phone = $_REQUEST['phone'];
   $message = $_REQUEST['message'];
   $replyto = '[email protected]';
   $headers = "To: \"Administrator\" <$mail_to>\r\n".
              "From: \"$replyto\" <$mail_from>\r\n".
              "Reply-To: $replyto\r\n".
              "Content-Type: text/$type; charset=\"$charset\"\r\n";
   $sended = smtpmail($mail_to, $name, $message, $headers);
   
   echo '<html>
        <head>
        <meta http-equiv="content-type" content="text/html; charset='.$charset.'">
        </head>
              <body>';
   if (!$sended) echo 'Письмо не удалось отправить. Пожалуйста свяжитесь с администратором сайта по адресу: '.$mail_to;
   else echo 'Письмо было успешно отправлено.';
   echo '</body>';
   exit;
}
?>
Читать дальше

Критическая уязвимость в OpenSSL 1.0.1 и 1.0.2-beta

08.04.2014 сотрудники The OpenSSL Project выпустили бюллетень безопасности, в котором сообщается о критической уязвимости CVE-2014-0160 в популярной криптографической библиотеке OpenSSL.

Уязвимость связана с отсутствием необходимой проверки границ в одной из процедур расширения Heartbeat (RFC6520) для протокола TLS/DTLS. Из-за этой маленькой ошибки одного программиста кто угодно получает прямой доступ к оперативной памяти компьютеров, чьи коммуникации «защищены» уязвимой версией OpenSSL. В том числе, злоумышленник получает доступ к секретным ключам, именам и паролям пользователей и всему контенту, который должен передаваться в зашифрованном виде. При этом не остается никаких следов проникновения в систему.

Некто, знавший об уязвимости, мог прослушивать «зашифрованный» трафик почти во всем интернете с марта 2012 года, когда вышла версия OpenSSL 1.0.1. В то время была продемонстрирована успешная атака на TLS (BEAST), и многие перешли на защищенную версию TLS 1.2, появление которой совпало с выходом OpenSSL 1.0.1.

Уязвимая версия OpenSSL используется в популярных веб-серверах Nginx и Apache, на почтовых серверах, IM-серверах, VPN, а также во множестве других программ. Ущерб от этого бага исключительно велик.

Некоторые дистрибутивы операционных систем с уязвимой версией OpenSSL:
  • Debian Wheezy (стабильная), OpenSSL 1.0.1e-2+deb7u4)
  • Ubuntu 12.04.4 LTS, OpenSSL 1.0.1-4ubuntu5.11)
  • CentOS 6.5, OpenSSL 1.0.1e-15)
  • Fedora 18, OpenSSL 1.0.1e-4
  • OpenBSD 5.3 (OpenSSL 1.0.1c) и 5.4 (OpenSSL 1.0.1c)
  • FreeBSD 8.4 (OpenSSL 1.0.1e) и 9.1 (OpenSSL 1.0.1c)
  • NetBSD 5.0.2 (OpenSSL 1.0.1e)
  • OpenSUSE 12.2 (OpenSSL 1.0.1c)

Дистрибутивы с более ранними версиями OpenSSL: Debian Squeeze (oldstable), OpenSSL 0.9.8o-4squeeze14, SUSE Linux Enterprise Server.

Баг присутствует во всех версиях веток OpenSSL 1.0.1 и 1.0.2-beta, включая 1.0.1f и 1.0.2-beta1. Исправленная версия — 1.0.1g, которую всем пострадавшим необходимо установить немедленно, после чего сгенерировать новые ключи и сертификаты и предпринять прочие меры безопасности. Пользователей следует предупредить о возможной утечке их паролей. В случае невозможности немедленного апдейта на исправленную версию следует перекомпилировать OpenSSL с флагом -DOPENSSL_NO_HEARTBEATS.

Уязвимость обнаружили специалисты по информационной безопасности из компании Codenomicon, а также, независимо от них, Нил Мехта (Neel Mehta) из подразделения Google Security. Именно последний сообщил разработчикам The OpenSSL Project, что нужно срочно исправить код. Ребята из компании Codenomicon подготовили подробное описание бага и даже открыли для него отдельный сайт Heartbleed.com с изображением кровоточащего сердца.

Пользователям shared-хостинга нет повода для беспокойства. Утром OpenSSL был обновлен на всех серверах, где использовалась эта версия. Владельцев виртуальных выделенных серверов и физических серверов в дата центре просим обратить внимание на данную уязвимость и обновить OpenSSL.

possible.lv/tools/hb/ — этот сервис проверит наличие уязвимости.
Читать дальше

PHP Fatal error: Call-time pass-by-reference has been removed in /var/www/user

При обновлении PHP с 5.3 на 5.4 некоторые клиенты, использующие старые версии популярных CMS столкнулись с подобной ошибкой. Подобный вызов функции с версии PHP 5.3 вызывал предупреждение на странице, а в версии 5.4 передача переменной по ссылке стала невозможна. Рассмотрим решение данной проблемы на примере одного из сайтов клиента:

Смотрим в журнал ошибок:

[Thu Apr 03 10:48:17 2014] [error] [client XXX.XXX.XXX.XXX] PHP Fatal error:  Call-time pass-by-reference has been removed in /var/www/userXXXXX/data/www/xx-xxx.org/phpshop/class/core.class.php on line 541, referer: http://xx-xxx.org/


Или включаем вывод ошибок php в браузере:


Загружаем файл core.class.php на ПК, открываем текстовым редактором и находим в нем 541 строку:


537       function setHook($class_name, $function_name, $data = false, $rout = false) {
538       if ((phpversion() * 1) >= '5.0')
539       return $this->PHPShopModules->setHookHandler($class_name, $function_name, $this, $data, $rout);
540       else
541       return $this->PHPShopModules->setHookHandler($class_name, $function_name, &$this, $data, $rout);
542       }


Нам нужно убрать & из строки №541. Такой вызов функции более не поддерживается.

В итоге получается так:


537       function setHook($class_name, $function_name, $data = false, $rout = false) {
538       if ((phpversion() * 1) >= '5.0')
539       return $this->PHPShopModules->setHookHandler($class_name, $function_name, $this, $data, $rout);
540       else
541       return $this->PHPShopModules->setHookHandler($class_name, $function_name, $this, $data, $rout);
542       }


Сайт снова работает! :)
Читать дальше

Изменение положения о регистрации доменов .RU и .РФ (Неделегированные домены)

Уважаемые господа!

Согласно документации координационного центра национального домена сети Интернет (http://www.cctld.ru/ru/docs/ Раздел — «Документы, вступающие в силу 21 апреля 2014 года»), необходимо делегировать доменные имена .RU и.РФ в течении 20 (двадцати) дней с момента регистрации.

Доменные имена, не прошедшие процедуру делегирования на NS-серверы провайдера будут заблокированы в связи с неиспользованием.

В настоящее время у клиентов CISHost более 400 доменов в зоне .RU находятся в статусе «Не делегирован». Эти доменные имена могут перестать существовать с 21 апреля. Проверьте, в каком статусе Ваши домены. Рассылки из биллинговой системы приходят не всегда и не всем.

Если Вы не хотите в данный момент пользоваться доменом, но и не хотите его лишиться — мы предлагаем новую возможность «Паркинг доменов».
Чтобы воспользоваться бесплатной услугой установите в качестве DNS Вашего домена наши серверы:
  1. park1.cishost.ru
  2. park2.cishost.ru

Данные серверы содержат уникальное ПО, которое не требует настройки и автоматически распознает Ваше доменное имя и не позволит ему быть заблокированным и снятым с регистрации.

Можете проверить работоспособность серверов при помощи команд:
  • nslookup ваш_домен.ru park1.cishost.ru
  • nslookup ваш_домен.ru park2.cishost.ru
Команды действуют аналогично в Windows и Linux системах.

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

DDoS атака на сервере g6.cishost.ru

Уважаемые пользователи, сервер g6.cishost.ru находится под воздействием сильной DDoS атаки. Мы принимаем все возможные меры по ее предотвращению и сотрудничаем со специалистами дата центра. Приносим извинения за доставленные неудобства.
Читать дальше

Сбой электропитания

Уважаемые пользователи хостинга!
На серверах(хостинг, vds), размещенных в России произошла техническая неполадка. На текущий момент официального заявления от дата центра не было, предварительно — произошел сбой питания, наша стойка не перешла в режим работы через источник бесперебойного питания. В результате данного происшествия не исключены проблемы с базами данных. В случае возникновения последствий в виде потери файлов просим обратится в центр поддержки.

UPD: Ответ дата центра от 20.03.2014

В отношении аварии, произошедшей 09 марта 2014 г. в 16:30 нами, при содействии
компании интегратора установленных ИБП, было проведено расследование, краткие
результаты которого приведены ниже:
09.03.14 в 16:25 после кратковременного отключения внешнего питания, на одном из
ИБП в кластере, к которому подключена ваша стойка, произошел сбой в работе платы
управления, в результате которого проблемный источник начал переводить нагрузку с
внешней сети на батареи и обратно, при разрядке батареи подзаряжались в быстром
режиме, высоким током, что в итоге привело к взрыву одной из батарей. Выпрямитель
аварийного источника, не выдержав перегрузки сгорел, короткое замыкание возникшее в
результате взрыва транзисторов выпрямителя, перебросилась с выпрямителя на
инвертор перегрузив систему всего кластера и выбив защитный автомат данного ИБП.
Из-за перегрузки все ИБП перевели нагрузку на статический байпас (грязную сеть). Но
просадка напряжения, возникшая на входе в систему из-за короткого замыкания, привела к
временному отключению питания на всем кластере. Через 2 секунды питание было
восстановлено.
Для исключения подобных аварий в будущем, мы заменили сбойную управляющую
плату и проблемный ИБП, в ближайшее время будут заменены все АКБ, которые были
подключены к неисправному источнику (в данный момент они выведены из цепи резервного
электропитания). Так же, мы планируем в кратчайшие сроки ввести дополнительный комплекс
мер по контролю за состоянием ИБП и его компонентов.
Еще раз приносим извинения за данный инцидент и надеемся на дальнейшее
плодотворное сотрудничество.
Читать дальше

Новое оборудование

Уважаемые пользователи!
Наша компания всегда стремится повысить качество предоставляемых услуг и теперь уже в новом году мы будем предоставлять Вам хостинг на SSD дисках в России.
Все новые серверы будут укомплектованы SSD дисками.
Рады работать для Вас!
Читать дальше

Новые поступления

Все новые клиенты, заказавшие услугу хостинга в США будут размещены на новом 8-ми ядерном сервере, с 32Gb оперативной памяти и на новых дисках Samsung SSD 840 EVO 250GB!
Поторопитесь, количество места на диске ограничено!
Читать дальше

Тарифы Битрикс-хостинга

Уважаемые клиенты! Мы получили компетенцию «Рекомендуемый хостинг-партнер» 1C-Bitrix и рады предоставить Вам 2 новых тарифных плана, разработанных специально для размещения CMS 1C-Bitrix.

www.cishost.ru/Hosting-CISHOST/bitrix-hosting.html


Читать дальше

Виртуальные серверы

Улучшены характеристики виртуальных серверов тарифных планов: «Микро (VDS)», «Минимальный (VDS)», «Начальный (VDS)». Обращаем Ваше внимание на тот факт, что виртуальные серверы управляются гипервизором KVM, что полностью исключает оверселлинг.
www.cishost.ru/Virtualnie-serveri/tarifs-vds.html
Читать дальше
,