Рассылка собственными силами и средствами битрикса, или как не попадать в SPAM. Битрикс спам


почему письма попадают в спам? — Toster.ru

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

Поэтому вопрос к сообществу:

- Подключена почта от яндекса(pdd)- Формируем через CRM ответ лиду по e-mail, письмо с задержкой 20-30 минут тихо падает в спам- Кроме всего прочего лид указан адресатом 2 раза(To:)

Полные заголовки письма:

Received: from mxfront12g.mail.yandex.net ([127.0.0.1]) by mxfront12g.mail.yandex.net with LMTP id cRQxLe5A for <[email protected]>; Tue, 19 Sep 2017 14:12:02 +0300 Received: from mail-001.bitrix24.com (mail-001.bitrix24.com [46.235.53.71]) by mxfront12g.mail.yandex.net (nwsmtp/Yandex) with ESMTPS id pR94AZBLb6-Bu78jWwh; Tue, 19 Sep 2017 14:11:56 +0300 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client certificate not present) Return-Path: [email protected] X-Yandex-Front: mxfront12g.mail.yandex.net X-Yandex-TimeMark: 1505819516 Authentication-Results: mxfront12g.mail.yandex.net; spf=pass (mxfront12g.mail.yandex.net: domain of aparser.bitrix24.ru designates 46.235.53.71 as permitted sender, rule=[ip4:46.235.53.71]) [email protected] X-Yandex-Spam: 4 Received: from mon-ru.bitrix24.ru (mon-ru.bx24.net [10.10.10.2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail-001.bitrix24.com (Postfix) with ESMTPS id 83A6C4400C for <[email protected]>; Tue, 19 Sep 2017 14:11:56 +0300 (MSK) Received: from cp.bitrix24.com (unknown [10.10.10.36]) by mon-ru.bitrix24.ru (Postfix) with ESMTP id 45C19206BA for <[email protected]>; Tue, 19 Sep 2017 14:11:56 +0300 (MSK) Received: from cp-linx-015 (localhost [127.0.0.1]) by cp.bitrix24.com (Postfix) with SMTP id 3C5742015A; Tue, 19 Sep 2017 14:11:56 +0300 (MSK) To: [email protected] Subject: =?UTF-8?B?dGVzdCBsaWRh?= From: =?UTF-8?B?0JzQuNGF0LDQuNC7INCu0YDRjNC10LLQuNGH?= <[email protected]> Reply-To: =?UTF-8?B?0JzQuNGF0LDQuNC7INCu0YDRjNC10LLQuNGH?= <[email protected]> To: [email protected] Subject: test lida Message-Id: <[email protected]> X-Priority: 3 (Normal) Date: Tue, 19 Sep 2017 14:11:56 +0300 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Yandex-Forward: fc21fd3b66f459c28acb802b1618a148 test 2<img src="http://aparser.bitrix24.ru/bitrix/tools/track_mail_read.php?tag=crm.eyJ1cm4iOiI0OC0wVlZBSzEifQ%3D%3D" border="0" alt="Read" />

Тех поддержка битрикса отправила меня разбираться в Яндекс :) не смотря на то что почта уходит с их сервера.Вопрос - куда смотреть, кто виноват, что делать, как с этим жить?

toster.ru

Рассылка собственными силами и средствами битрикса, или как не попадать в SPAM

Казалось бы, произвести рассылку со своего сайта дело нехитрое - в битриксе давно уже есть модуль рассылок, а сейчас появился и еще один - с модным названием "E-mail маркетинг". Но постойте... Почему же тогда до сих пор процветают различные сервисы рассылок, а компании ими активно пользуются? Одна из причин вполне понятна и заключается в предоставлении этими сервисами различных полезных услуг вроде статистики открываемости писем и пр. Но она не является основной. Например, меня не особо интересует эта статистика (у меня просто нет времени ее просматривать :)), возможно вы меня поймете).

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

Например, я при первой проверке своей рассылки сервисом mail-tester увидел такое:

Т.е. если вы пытаетесь производить рассылку и не настраивали соответствующим образом сервер, существует большая вероятность попадания ваших писем в спам.

Далее я расскажу о всех настройках, связанных с почтовой системой на вашем сайте.

PTR запись

PTR запись (обратная NDS запись, reverse DNS record) - это домен, указываемый владельцем IP адреса как основной доверенный домен для этого IP адреса. Поэтому указывается он не там где остальные записи DNS, а на стороне хостинга.

Вообще запись PTR выглядят следующим образом для адреса 1.2.3.4 (т.е. это IP адрес наоборот плюс некая загадочная строка ".in-addr.arpa.")

4.3.2.1.in-addr.arpa. IN PTR ВАШ_ДОМЕН
Но на деле, например, на хостинге FastVps вы просто выбираете ваш виртуальный сервер, нажимаете кнопку "Изменить записи PTR",

и в открывшемся окошке прописываете домен для IP адреса вашего сервера.

Кстати, для одного IP адреса можно указать только один домен, поэтому если у вас несколько сайтов на одном сервере, то для всех сайтов, с которых вы собираетесь производить рассылки, желательно (но не обязательно нужно) завести отдельный IP адрес со своей PTR записью.

SPF запись

Если вы используете собственный почтовый сервер, то просто добавьте запись вида

"v=spf1 ip4:1.2.3.4 ~all"
можно указать и несколько серверов
"v=spf1 ip4:1.2.3.4 ip4:1.2.3.5 ~all"
Если же вы используете сторонний почтовый сервер, например, mail.ru, то скорее всего придется покопаться в справке данного сервиса

Например, в справке biz.mail.ru я нашел вот это:

"v=spf1 ip4:ВАШ_IP_АДРЕС a mx include:_spf.mail.ru ~all"
У почты яндекса:
"v=spf1 ip4:ВАШ_IP_АДРЕС1 ip4:ВАШ_IP_АДРЕС2 ip4:ВАШ_IP_АДРЕС3 include:_spf.yandex.net ~all"
Запись DMARC

Запись DMARC во многих мануалах обходят стороной, возможно потому, что этот стандарт все еще считается достаточно новым. Dns txt запись DMARC определяет правила, которым нужно следовать в случае, если письма с вашего адреса признаны поддельными, должны ли они быть пропущены, положены в папку "Спам" или вообще не приняты почтовым сервером.

Тот же сервис mail-tester.com рекомендует добавить TXT запись

_dmarc.your-domain.com со значением

Именно так, в кавычках, хотя на многих DNS сервисах кавычки для TXT записей подставляются автоматически. Эта запись означает, что поддельные письма нужно пропускать. Также можно указать E-mail на который следует направлять жалобы в случае обнаружения поддельных писем, например:
"v=DMARC1; p=none; rua=mailto:[email protected]"
Могут быть и другие варианты, если хотите подробностей, то вам сюда https://dmarc.org/

DKIM подпись

С DKIM подписью все немного сложнее, т.к. она, помимо DNS записи, которую она тоже требует, требует еще и установки необходимого ПО на сервер. Если ваша панель управления хостингом не позволяет устанавливать и настраивать DKIM, придется покопаться в консоли (в ISP Manager ищите пункт "Настройки сервера > Возможности"). Инструкции по настройке подписи могут отличаться для разных серверов, например, для моего Debian Squeeze (smtp - postfix) отлично сработала эта http://www.codenet.ru/webmast/dkim-postfix-debian/

Для проверки самой подписи могу порекомендовать этот тестер http://dkimcore.org/tools/keycheck.html В поле "Selector" там необходимо ввести селектор, который вы устанавливаете сами при настройке по на сервере, например, для поддомена "site._domainkey" этот селектор - "site".

Результатом этих манипуляций должна стать строка "DKIM Check: pass" в результатах проверки на указанных сервисах либо в исходном коде письма, принятого, например, на gmail.

Домен отправителя

Домен отправителя должен соответствовать домену, указанному в PTR записи. Обычно он устанавливается в конфигурационных файлах smtp-сервера. Например, в случае с сервером "postfix", в файле "/etc/postfix/main.cf" в параметре "myhostname". По умолчанию, там может быть задано что угодно, например, в моем случае было "debian-6-64-isplite.ru". Верстка и формат

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

Вообще я не рекомендую самостоятельно верстать письма, а лучше воспользоваться одним из наборов готовых шаблонов, например Foundation for emails http://foundation.zurb.com/emails/docs/ . Он адаптивный (responsive), т.е. рассчитан на отображение на всех устройствах и содержит все необходимое для верстки html-писем.

Имейте в виду, что при использовании шаблонов Foundation for emails, после верстки писем и проверки их в браузере, перед тестовой отправкой нужно проделать следующее

  1. Зайти сюда и преобразовать стили в инлайновые (кнопку "Copy to clipboard" не нажимать, копировать через Ctrl-C, иначе может появится такое "&amp;nsbp;"). Если этого не сделать, то письмо будет отображаться корректно только в почтовых клиентах, но не в веб-интерфейсах почтовых сервисов.
  2. Проверить поиском нет ли лишних или пустых тегов <style>. Даже закомментированный тег <style> внутри <body>, который почему-то присутствует в шаблонах от Foundation, вызывает ошибку "STYLE_GIBBERISH - Nonsense in HTML" (стилевая абракадабра - нет смысла в HTML, вот так вот!! :) ) и снижает оценку известного спам фильтра SpamAssassin на целых 4 пункта!
Также на оценку спам-фильтров влияет наличие текстовой версии писем (т.е. внутри одного письма может находится и html, и текстовая версия, рассчитанная на устройства, которые не могут отображать html). К сожалению, ни старый модуль 1С-Битрикс "Подписка, рассылки", ни новый "E-mail маркетинг" (в версии 15) не умеют отправлять текстовые версии писем, поэтому если вы хотите отправлять текстовые версии, вам придется решать эту проблему самостоятельно.

База адресов

Одна из главных рекомендаций, которые дают все почтовые сервисы - это необходимость поддержания базы адресов в актуальном состоянии. Т.е. рассылки не должны производится на несуществующие адреса (хотя и непонятно, жалко им что ли :)). Поэтому после отправки очередного выпуска рассылки всегда нужно проверять, на какие адреса не удалось отправить почту и своевременно удалять (или деактивировать) их в базе. Чтобы найти проблемные адреса, я, например, после отправки выпуска запускаю в терминале команду mailq - она показывает адреса, которые "зависли" в очереди на отправку.

Репутация "рассыльщика"

Все крупные почтовые сервисы имеют специальные инструменты, позволяющие узнать некоторую информацию о доставке ваших рассылок (каждый из них требует подтверждения того, что вы являетесь владельцем домена, mail.ru и яндекс - загрузкой в корень сайта определенного html-файла, google - добавлением txt записи в dns).

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

Результат

В результате выполнения вышеуказанных действий мне удалось изменить результат проверки mail-tester с 0 до 8 (8 а не 10 потому что я не отправлял текстовую версию письма и плюс к тому оказалось, что мой домен находится в одном черном списке).

g-rain-design.ru

1С-Битрикс. Защита от спама в регистрации без капчи

Не редкость, когда боты начинают регистрироваться на сайтах и захламлять списки пользователей своим присутствием. В «1С-Битрикс» можно включить капчу для защиты от спама. Но порой и капча не спасает, да и заставлять пользователей вводить код с капчи, я считаю, не гуманно. Воспользуемся другим трюком.

Этот трюк давно известен: в форму добавляется скрытое или невидимое поле. Если это поле заполнено, значит бот, если нет, значит обычный пользователь.

Разберем на основе регистрации

Скопируем шаблон системного компонента bitrix:system.auth.registration.

В файле template.php этого шаблона добавим новое поле, примерно так:

<tr> <td><?=GetMessage("AUTH_FAKE_NAME")?></td> <td><input type="text" name="<?php echo OlegPro\UserRegister::FAKE_FIELD_NAME1 ?>" maxlength="50" value="<?php echo $arResult[OlegPro\UserRegister::FAKE_FIELD_NAME1] ?>" /></td> </tr>

В файле стилей шаблона надо прописать правила, чтобы скрыть это поле.

.urdn, .urdn td { display: none; }

В файл result_modifier.php добавим обработку нашего фейкового поля:

<?php use OlegPro\UserRegister; $arResult[UserRegister::FAKE_FIELD_NAME1] = isset($_POST[UserRegister::FAKE_FIELD_NAME1]) ? htmlspecialcharsbx($_POST[UserRegister::FAKE_FIELD_NAME1]) : '';

В файл lang/язык_сайта/template.php в папке скопированного шаблона добавим название фейкового поля:

$MESS['AUTH_FAKE_NAME'] = "Имя пользователя:";

В файл /bitrix/php_interface/handlers/user_register.php добавим хэндлер-детектор ботов. Он будет срабатывать на событие OnBeforeUserRegister модуля main. Если наше фейковое поле заполнено, то выбросим битриксовкий эксепшн и добавим сообщение об ошибке.

<?php namespace OlegPro; class UserRegister{ const FAKE_FIELD_NAME1 = 'NAME'; @param @return public static function OnBeforeUserRegister(&$arFields){ global $APPLICATION; if(isset($_REQUEST[self::FAKE_FIELD_NAME1]) && strlen(trim($_REQUEST[self::FAKE_FIELD_NAME1])) > 0){ \CEventLog::Add(array( "SEVERITY" => "SECURITY", "AUDIT_TYPE_ID" => "USER_REGISTER_FAIL", "MODULE_ID" => "main", "ITEM_ID" => "UNKNOWN", "DESCRIPTION" => sprintf("Попытка регистрации ботом. Код ошибки [FK1].\n%s", var_export($_REQUEST, true)), )); $APPLICATION->ThrowException('Ошибка регистрации. Код ошибки [FK1].'); return false; } return true; } }

В /bitrix/php_interface/init.php добавим автозагрузку нашего обработчика и навесим обработчик:

\Bitrix\Main\EventManager::getInstance()->AddEventHandler('main', 'OnBeforeUserRegister', array('OlegPro\UserRegister', 'OnBeforeUserRegister')); CModule::AddAutoloadClasses( '', array( 'OlegPro\UserRegister' => '/bitrix/php_interface/handlers/user_register.php', ) );

Результат

Теперь в журнале событий вот такая картина:

P.S.Кстати, этот способ работает и у меня в блоге, в форме добавления комментария к посту.

www.olegpro.ru

1С-Битрикс. Кастомный валидатор поля веб-формы или защита от спама в модуле «Веб-формы» без капчи

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

Защищаться будем по схеме, описанной в заметке про регистрацию, а именно: добавляем в форму невидимое поле, если поле заполнено — к нам пришёл бот.

Предположим, форма у вас создана, поля(в понятии модуля форм — «вопросы») для неё заведены и настроены. Заведём ещё одно, служебное, с типом text (поля типа hidden боты иногда игнорируют и не заполняют). В свойствах «Символьный идентификатор» ему надо придумать, как обычному полю, например user или name. Не стоит называть его antibot.

В поле «Текст ответа» чтобы не писать название, можно считерить и вписать неразрывный пробел (в юникоде: Alt + 0160).

Как вы помните, нам нужно проверять поле на пустоту. По умолчание доступны валидаторы:

Вроде бы подходит валидатор text_len. У него в настройках есть 2 параметра: «Минимальная длина», «Максимальная длина». Но для настройки «Максимальная длина» минимум можно указать 1, а нам нужно 0. Можно поставить и 1, но я решил написать свой валидатор, тем более, что я никогда этого не делал.

Документация по написанию своих валидаторов тут. Там всё просто: пишем PHP-класс с нужными методами и подвешиваем его на нужное событие.

Получился вот такой класс валидатора:

<?php namespace Olegpro; use \Bitrix\Main\EventManager; class FormValidatorStringEmpty { function getDescription() { return array( 'NAME' => 'empty_string', 'DESCRIPTION' => 'Пустая строка', 'TYPES' => array('text'), 'SETTINGS' => array(__CLASS__, 'getSettings'), 'CONVERT_TO_DB' => array(__CLASS__, 'toDB'), 'CONVERT_FROM_DB' => array(__CLASS__, 'fromDB'), 'HANDLER' => array(__CLASS__, 'doValidate') ); } function getSettings() { return array(); } function toDB($arParams) { return serialize($arParams); } function fromDB($strParams) { return unserialize($strParams); } function doValidate($arParams, $arQuestion, $arAnswers, $arValues) { global $APPLICATION; foreach ($arValues as $value) { if (strlen(trim($value)) > 0) { $APPLICATION->ThrowException('Ошибка заполнения полей формы. Код ошибки [FKWF1].'); return false; } } return true; } }

Положил я его по пути: /bitrix/php_interface/handlers/form_validator_string_empty.php

Ну а подключить его нужно в файле /bitrix/php_interface/init.php

use \Bitrix\Main\EventManager; use \Bitrix\Main\Loader; EventManager::getInstance()->addEventHandlerCompatible('form', 'onFormValidatorBuildList', array('Olegpro\FormValidatorStringEmpty', 'getDescription') ); Loader::registerAutoLoadClasses(null, array( 'Olegpro\FormValidatorStringEmpty' => '/bitrix/php_interface/handlers/form_validator_string_empty.php', ));

После этого у поля на вкладке «Валидаторы» появится новый валидатор «[empty_string] Пустая строка»:

Его-то и нужно добавить к нашему полю для защиты от спама.

Последнее что осталось: скрыть это поле через CSS, чтобы пользователи его не видели.

www.olegpro.ru


Prostoy-Site | Все права защищены © 2018 | Карта сайта