Mail Tester - Тестируем письма на попадание в спам


Бывает, что при регистрации на сайте, письмо с активацией уч. записи пользователя попадает в спам, или вовсе не доходит… Чтобы заблаговременно проверить отправку и убедиться, что все ок! как раз таки и существуют эти сервисы.

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

Настройка почты smtp

Здравствуйте!
Подскажите — при попытке отправить почту на вновь поставленном движке и настроенном на smtp yandex происходит как бы зависание и почт не отправляется.
В логах апача следующая строка
PHP Fatal error: Class 'SMTP' not found in /var/www/html/engine/lib/external/phpMailer/class.phpmailer.php on line 1443, referer: toptray.ru/talk/read/2/

пробовал nginx — то же самое.
Может кто нибудь сталкивался?

Рассылка уведомлений. Рассылаются старые посты.

Доброго времени суток.
Такая проблема. Долгое время не работала рассылка уведомлений.
Сегодня снова все настроил, включил и пошли рассылаться уведомления начиная с апреля месяца.
Как отключить старые уведомления? Что почистить? Чтобы шли уведомления только о свежесозданных топиках и комментариях.

[решено] Не отправляется письмо mail

Активация пользователей.
Не приходит письмо для подтверждении регистрации пользователя. Как настроить?




Решил

в config.local.php — $config['general']['reg']['activation'] = true;
в config.php

$config['sys']['mail']['type']             = 'smtp';                 // Какой тип отправки использовать
$config['sys']['mail']['from_email']       = 'ваш_емаил@yandex.ru';      // Мыло с которого отправляются все уведомления
$config['sys']['mail']['from_name']        = 'YourSite';  // Имя с которого отправляются все уведомления
$config['sys']['mail']['charset']          = 'UTF-8';                // Какую кодировку использовать в письмах
$config['sys']['mail']['smtp']['host']     = 'smtp.yandex.ru';            // Настройки SMTP - хост
$config['sys']['mail']['smtp']['port']     = 465;                     // Настройки SMTP - порт
$config['sys']['mail']['smtp']['user']     = 'ваш_емаил@yandex.ru';                     // Настройки SMTP - пользователь
$config['sys']['mail']['smtp']['password'] = 'ваш_пароль_от_емейла';                     // Настройки SMTP - пароль
$config['sys']['mail']['smtp']['secure']   = 'ssl';                     // Настройки SMTP - протокол шифрования: tls, ssl
$config['sys']['mail']['smtp']['auth']     = true;                   // Использовать авторизацию при отправке
$config['sys']['mail']['include_comment']  = true;                   // Включает в уведомление о новых комментах текст коммента
$config['sys']['mail']['include_talk']     = true;                   // Включает в уведомление о новых личных сообщениях текст сообщения

Отправитель письма при использовании sendmail

При отправки писем движком LiveStreet используя sendmail есть один нюанс, что отправителем письма (Return-Path) является какой-нибудь nobody@localhost или www-data@localhost или ещё что-то в подобном духе. (всё зависит от настроек сервера, но при виртуальном хостинге возможность исправить настройки сервера отсутствуют).

Изза чего письма могут оседать на некоторых спам фильтрах. или в некоторых webmailах или почтовых программах высвечиваться типа ваш@мейл On Behalf Of: nobody@localhost, что в принципе не кошерно.

Решение проблемы достаточно простое. (я думаю этот момент стоит внести в штатную сборку LiveStreet)

в файле engine/modules/mail/Mail.class.php

176 строка файла
в функции Init() находим
$this->oMailer->From=$this->sFrom;

и добавляем
$this->oMailer->Sender=$this->sFrom;


т.е. вот так выглядить функция после исправлений
	public function Init() {
		/**
		 * Настройки SMTP сервера для отправки писем
		 */
		$this->sHost     = Config::Get('sys.mail.smtp.host');
		$this->iPort     = Config::Get('sys.mail.smtp.port');
		$this->sUsername = Config::Get('sys.mail.smtp.user');
		$this->sPassword = Config::Get('sys.mail.smtp.password');
		$this->bSmtpAuth = Config::Get('sys.mail.smtp.auth');
		$this->sSmtpSecure = Config::Get('sys.mail.smtp.secure');
		/**
		 * Метод отправки почты
		 */
		$this->sMailerType=Config::Get('sys.mail.type');
		/**
		 * Кодировка писем
		 */
		$this->sCharSet=Config::Get('sys.mail.charset');
		/**
		 * Мыло от кого отправляется вся почта
		 */
		$this->sFrom=Config::Get('sys.mail.from_email');
		/**
		 * Имя от кого отправляется вся почта
		 */
		$this->sFromName=Config::Get('sys.mail.from_name');

		/**
		 * Создаём объект phpMailer и устанвливаем ему необходимые настройки
		 */
		$this->oMailer = new phpmailer();
		$this->oMailer->Host=$this->sHost;
		$this->oMailer->Port=$this->iPort;
		$this->oMailer->Username=$this->sUsername;
		$this->oMailer->Password=$this->sPassword;
		$this->oMailer->SMTPAuth=$this->bSmtpAuth;
		$this->oMailer->SMTPSecure=$this->sSmtpSecure;
		$this->oMailer->Mailer=$this->sMailerType;
		$this->oMailer->WordWrap=$this->iWordWrap;
		$this->oMailer->CharSet=$this->sCharSet;

		$this->oMailer->From=$this->sFrom;
		$this->oMailer->Sender=$this->sFrom; // 176 строка. фиксит return-path
		$this->oMailer->FromName=$this->sFromName;
	}

Тонкая настройка почты

Столкнулся с тем, что при добавлении топиков, происходят достаточно сильные тормоза. После проведённого анализа выяснилось, что проблема тормозов ПОЧТА. При публикации топика происходит рассылка по всем пользователям, которые имеют отношение к блогу, в который происходит размещение материала.

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

В конфиге config/config.local.php добавляем следующие настройки

// Указывает на необходимость использовать режим отложенной рассылки сообщений на email
$config['module']['notify']['delayed'] = true;
// Если опция установлена в true, систему будет собирать записи заданий удаленной публикации, для вставки их в базу единым INSERT
$config['module']['notify']['insert_single'] = true;
// Количество отложенных заданий, обрабатываемых одним крон-процессом
$config['module']['notify']['per_process'] = 10;


Далее исправляем файл classes/modules/notify/Notify.class.php

Находим в нём функцию

public function Send($oUserTo,$sTemplate,$sSubject,$aAssign=array(),$sPluginName=null) {


В этой функции находим строчку

if(Config::Get('module.notify.delayed')) {


И заменяем её на

$isNotifyDelayed = Config::Get('module.notify.delayed');
if (($sTemplate == "notify.registration_activate.tpl") || ($sTemplate == "notify.registration.tpl") || ($sTemplate == "notify.reactivation.tpl") || ($sTemplate == "notify.reminder_code.tpl") || ($sTemplate == "notify.reminder_password.tpl")) { $isNotifyDelayed = false; }
if($isNotifyDelayed) {


PS: Возможно разместил топик не в тот блог, но в другие писать к сожалению не могу. Видимо не хватает рейтинга или силы.

Небольшое дополнение:
Кто-то может забыть, поэтому напоминаю, что необходимо по крону запускать скрипт include/cron/notify.php

есть 2 варианта запуска.

1. используя HTTP.

для этого необходимо поправить .htaccess в папке include/cron/
содержание должно быть

Order Deny,Allow
Deny from all
Allow from XXX.XXX.XXX.XXX


вместо XXX.XXX.XXX.XXX укажите IP, с которого будет производиться HTTP запрос.
и в крон можно внести следующую запись

*/5 * * * *   wget -O- http://www.livestreet.ru/include/cron/notify.php >> /dev/null


2. либо из консоли.

и в крон можно внести следующую запись

*/5 * * * *   /usr/bin/php /vhosts/site.ru/www/include/cron/notify.php


Пути указывайте в соответствии с настройками вашего сервера.

Отложенная отправка почты и регистрация.

// Модуль Notify
$config['module']['notify']['delayed']        = true;  // Указывает на необходимость использовать режим отложенной рассылки сообщений на email
$config['module']['notify']['insert_single']  = true;  // Если опция установлена в true, систему будет собирать записи заданий удаленной публикации, для вставки их в базу единым INSERT
$config['module']['notify']['per_process']    = 10;     // Количество отложенных заданий, обрабатываемых одним крон-процессом

Тип отправки почты mail. smtp метот не в какую не хочет работать чёрт знает почему. Использовал свой сервер почты. (С ним всё ок, скажу сразу). Добавить бы логирование отправленных почтовых сообщений, скажем так для отладки.
Однако, пока не вызвать скрипт /include/cron/notify.php письмо не будет доставлено.
Собственно я думаю письма подтверждения регистрации как в принципе и отправку писем с восстановлением пароля стоило бы отправлять наверно сразу.

Кстати, буду благодарен сообществу за помощь в написании хотя-бы тестового скрипта, который бы использовал функции отправки почты из движка. Думаю многим был бы он полезен и упростил бы жизнь. Спасибо.

Переехал на hetzner есть пару вопросов.

Привет, наконец то переехал на DS. Поставил nginx(фронт)+apache2 rpaf(бэк), мускулы. Memcache пока не ставил.

Создал новую бд, экспортировал ее с сайта
Загрузил чистую лс + диры uploads, plugins и templates
Поставил.

Все бы ничего, только сайт стал нормально запускатся только после того, как я сделал chmod -R 0777 на диры templates, plugins и uploads. Вот тут у меня возник вопрос, тут же права на запись всем, по идее это плохо для безопасности, правильно? Или наоборот, все в порядке и так и надо было сделать? Если все таки не правиьно посоветуйте пожалуйста как обезопасится.

И следом вопрос номер 2.
На предыдущем shared хостинге для того чтобы настроить почту мне нужно было зайти через веб интерфейс создать ее и прописать в конфиг ls. Как бы мне теперь сделать чтобы на чистом дебиане тоже был сервер почты, который бы высылал инвайты пользователям.
Читать дальше →

Плагин авторизации Loginza для LiveStreet

Как то ранее, я запрашивал у сообщества разработку плагина авторизации для LiveStreet, основанного на нашем сервисе Loginza. В итоге мы в Loginza решили реализовать данный плагин самостоятельно, да и растущий интерес пользователей к нему, только подталкивал на реализацию.

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