Сервис массовых специализированных E-Mail рассылок. Абузоустойчивый хостинг В EFA входят такие компоненты


Интернет-проекты активно используют email-рассылки для общения с клиентами.

  • Рекламные и информационные, по базе проверенных адресов
  • Автоматические: регистрация, оформление заказа, изменение статуса заказа.
  • Массовые спам-рассылки - письма, рассылаемые без согласия принимающей стороны

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

Мы следим за тем, чтобы наши клиенты не рассылали спам. Для этого действуют фильтры - они определяют вредоносные письма. Как только фильтр срабатывает, мы блокируем 25 порт, и сервер больше не может рассылать письма.

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

Белый список

Работает только для KVM-серверов. Чтобы вас добавили в белый список , напишите запрос в поддержку и сообщите нам:

  • Каким образом подписчики дают согласие на получение рассылки? Покажите скриншот с формой подписки на рассылку. Если человек соглашается с рассылками при регистрации в сервисе, то пришлите скриншот формы регистрации и выдержку про рассылки из правил пользования ресурсом.
  • Пример письма с рассылкой: оригинал (исходный код письма) и скриншот письма. В письме обязательно должна быть ссылка с возможностью отписаться от рассылки.
  • Скриншот страницы, которая открывается по ссылке выше. Отказ от рассылки должен происходить просто, без авторизации на сайте.

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


Спам не любят. Спам оставляет «чёрное пятно» на лице провайдера, когда его IP адреса вносят в блеклисты, от чего страдают все клиенты. Удалить IP из блеклистов - особый разговор. Но это одна сторона медали. Если вернуть репутацию IP адресу можно, то вернуть репутацию компании и доверие - намного сложнее.


Мы решили найти решение и внедрить в структуру Unihost комплекс по защите и предотвращению нежелательных рассылок. После мозговых штурмов и обсуждений, начали проверять и сравнивать, что может предложить сообщество SPAM/AV.


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

Популярные opensource-решения против спама

Rspamd

Он подходит для систем различного масштаба. Умеет интегрироваться в различные MTA (в документации описаны Exim, Postfix, Sendmail и Haraka) или работать в режиме SMTP-прокси.


Система оценки сообщений такая же, как в SpamAssassin, в частности на основании разных факторов: регулярных выражений, блок-листов DNS, белых, серых, черных списков, SPF, DKIM, статистики, хешей (fuzzy hashes) и прочего - только в работе используются другие алгоритмы.


В Rspamd поддерживается расширение при помощи плагинов.

Apache SpamAssassin

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


Легко интегрируется практически с любым почтовым сервисом. В SA доступны популярные технологии, которые подключаются как плагины: DNSBL, SPF, DKIM, URIBL, SURBL, PSBL, Razor, RelayCountry, автоматическое ведение белого списка (AWL) и другие.


Установка в общем не сложна. После установки SpamAssassin требует тонкой настройки параметров и обучения на спам-письмах.

ASSP

Платформно-зависимый SMTP-прокси-сервер, принимающий сообщения до MTA и анализирующий его на спам.


Поддерживаются все популярные технологии: белые и серые списки, байесовский фильтр, DNSBL, DNSWL, URIBL, SPF, DKIM, SRS, проверка на вирусы (с ClamAV), блокировка или замена вложений и многое другое. Обнаруживается кодированный MIME-спам и картинки (при помощи Tesseract). Возможности расширяются при помощи модулей.


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

MailScanner

MailScanner представляет собой решение «все включено» для борьбы с фишинговыми письмами и проверки почты на наличие вирусов и спама. Он анализирует содержание письма, блокируя атаки, направленные на email-клиентов и HTML-теги, проверяет вложения (запрещенные расширения, двойные расширения, зашифрованные архивы и прочее), контролирует подмену адреса в письме и многое другое.


MailScanner легко интегрируется с любым МТА, в поставке есть готовые конфигурационные файлы. Помимо собственных наработок, он может использовать сторонние решения. Для проверки на спам может использоваться SpamAssassin.

EFA-project

Есть еще один Open Source проект - «eFa-project» - Email Filter Appliance. EFA изначально разработан как виртуальное устройство для работы на Vmware или HyperV. Программа использует готовые пакеты MailScanner, Postfix, SpamAssasin (весь список ниже) для остановки спама и вирусов и они уже установлены и настроены для правильной работы в vm. Это значит, что костыли не нужны - все работает «из коробки».


В EFA входят такие компоненты:


В качестве MTA (mail transfer agent) выступает Postfix - надежный, быстрый, проверенный годами;
Ядро спам фильтра - MailScanner - плечом к плечу с антивирусом принимают на себя весь удар;
Спам фильтр - SpamAssassin - определяет письма-спам. В основу включено множество оценочных систем, MTA и наборы регулярных выражений;
ClamAV - антивирус, который работает с MailScanner;
MailWatch - удобный веб-интерфейс для работы с MailScanner и другими приложениями;
Фильтр контента - DCC - определяет массовую рассылку через отправку хеш-сумм тела писем на специальный сервер, который в свою очередь предоставляет ответ в виде числа полученных хешей. Если число превышает порог score=6, письмо считается спамом;
Pyzor и - помогают SpamAssassin точнее распознавать спам, используя сети по обнаружению спама;
Для grey-листинга используется - служба политики postfix, позволяющая снизить количество спама, которое может быть принято получателями;
Для распознавания изображений используется модуль ImageCeberus - определяет порно изображения и т.д.
Мы выбрали EFA, поскольку проект включает в себя все лучшие характеристики вышеперечисленных. К тому же наши администраторы уже имели некоторый опыт работы с ним, поэтому выбор остановили именно на EFA. Приступим к описанию установки.

Установка и последующая настройка EFA

Устанавливать решили на VPS с чистой CentOS 6.8 x64, который выступает в качестве relay-сервера. Первым делом, необходимо обновить все системные утилиты и компоненты до последних версий, которые доступны в репозиториях. Для этого используем команду:


yum -y update

Затем устанавливаем утилиты wget и screen, если они не были установлены:


yum -y install wget screen

После чего, скачаем скрипт, который выполнит установку EFA:


wget https://raw.githubusercontent.com/E-F-A/v3/master/build/prepare-build-without-ks.bash

Даем скрипту права на исполнение:


chmod +x ./prepare-build-without-ks.bash

Запускаем screen:


screen

И запускаем скрипт:


./prepare-build-without-ks.bash

Теперь можно свернуть наш скрин используя комбинацию Ctrl + A + D.


После установки нужно заново войти на сервер через ssh, используя данные для первого входа. Это нужно для запуска скрипта инициализации и первичной настройки EFA.


После входа, система предлагает ответить на несколько вопросов, чтобы настроить EFA.


Список вопросов выглядит следующим образом:


Функция Свойство
Hostname Указывается хостнейм машины
Domainname Домен, к которому относится машина. В сумме с хостнеймом, получится полный FQDN сервера
Adminemail Ящик администратора, который будет получать письма от самой системы (доступные обновления, различные отчеты и т.д.)
Postmasteremail Ящик человека, который будет получать письма, которые имеют отношение к MTA
IP address IP адрес машины
Netmask Маска
Default Gateway Шлюз
Primary DNS Первичный DNS сервер
Secondary DNS Вторичный DNS сервер
Local User Логин локального администратора. Используется для входа в систему и в веб-интерфейс MailWatch
Local User Password Пароль
Root Password Пароль для пользователя root
VMware tools Будет отображаться только, если установка происходит на виртуальную машину под управлением VMware. Она необходима для установки инструментов по работе с VMware
UTC Time Если Ваша машина находится в часовом поясе UTC, необходимо выбрать Yes
Timezone Тут можно выбрать другой часовой пояс, отличный от UTC
Keyboard Layout Раскладка клавиатуры, которая будет использоваться в системе
IANA Code Тут указывается код страны, в которой находится машина. Это необходимо для того, чтобы определить, с каких зеркал в будущем будут скачиваться обновления
Your mailserver Индивидуальный параметр. Используется в случае если EFA работает и на приём писем
Your organization name Название организации. Используется для заголовков в письмах
Auto Updates Задается политика автообновлений. По умолчанию установлено disabled. В этом случае, автообновлений не будет, но на емейл админа будут приходить уведомления о доступных обновлениях

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



По завершению конфигурирования, система перезагрузится и будет в полной боевой готовности.


  • Изменение сетевых параметров;
  • Настройка MailScanner;
  • Включение / выключение grey-листинг;
  • Включение / отключение автообновления;
  • Настройка системы как исходящего relay-сервера;
  • Изменение ящика Adminemail;
  • Добавление / удаление почтовых доменов;
  • Изменение настроек фильтров спама;
  • Восстановление mysql базу, в случае повреждения из-за аварийного завершения работы.
  • Это список основных опций EFA, которые недоступны для редактирования через веб-интерфейс MailWatch. Поэтому, хорошо знать, где их найти.

    Ручная настройка EFA

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


    Первым делом в файле main.cf настроек postfix добавили mynetworks, с которых принимались соединения по SMTP. Затем прописали ограничения по helo запросам, отправителям, получателям, и указали пути к картам с политиками ACCEPT или REJECT при соблюдении определенных условий. Также, inet_protocols был изменен на ipv4, чтобы исключить соединения по ipv6.


    Затем изменили политику Spam Actions на Store в конфигурационном файле /etc/MailScanner/MailScanner.conf. Это значит, что если письмо будет определено как спам, оно уйдет в карантин. Это помогает дополнительно обучать SpamAssassin.


    После таких настроек мы столкнулись с первой проблемой. На нас обрушились тысячи писем от адресатов [email protected], [email protected], [email protected] и т.д. Получатели были схожие. Также получили письма, отправленные MAILER-DAEMON, то есть фактически без отправителя.


    В итоге получили забитую очередь без возможности найти среди «красного полотна» нормальные, письма не-спам. Решили делать REJECT подобных писем, используя стандартный функционал Postfix карт: helo_access, recipient_access, sender_access. Теперь вредные адресаты и подобные стали успешно REJECT’иться. А те письма, которые отправлялись MAILER-DAEMON отфильтровываются по helo запросам.


    Когда очередь вычистили, а наши нервы успокоились, начали настраивать SpamAssassin.

    Обучение SpamAssassin

    Обучение SpamAssassin делается на письмах, которые уже попали в спам. Делать это можно двумя способами.

    Через веб-интерфейс

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


    Score Matching Rule Description
    -0.02 AWL Adjusted score from AWL reputation of From: address
    0.80 BAYES_50 Bayes spam probability is 40 to 60%
    0.90 DKIM_ADSP_NXDOMAIN No valid author signature and domain not in DNS
    0.00 HTML_MESSAGE HTML included in message
    1.00 KAM_LAZY_DOMAIN_SECURITY Sending domain does not have any anti-forgery methods
    0.00 NO_DNS_FOR_FROM Envelope sender has no MX or A DNS records
    0.79 RDNS_NONE Delivered to internal network by a host with no rDNS
    2.00 TO_NO_BRKTS_HTML_IMG To: lacks brackets and HTML and one image
    0.00 WEIRD_PORT Uses non-standard port number for HTTP

    Открыв письмо, можно поставить галку в чекбоксе «SA Learn» и выбрать одно из нескольких действий:

    • As Ham - пометить письмо как чистое (тренировка алгоритма Байеса);
    • As Spam - пометить письмо как спам (тренировка алгоритма Байеса);
    • Forget - пропустить письмо;
    • As Spam+Report - пометить письмо как спам и отправить информацию о нём в сети по обнаружению спама (razor + pyzor);
    • As Ham+Revoke - пометить письмо как чистое и отправить информацию о нём в сети по обнаружению спама (razor + pyzor).

    Через консоль

    Делается это просто. Команда выглядит следующим образом:


    sa-learn --ham /20170224/spam/0DC5B48D4.A739D

    В этой команде письмо с ID: 0DC5B48D4.A739D, которое находится в архиве спам писем за определенную дату /20170224/spam/, помечается как чистое (не спам) bash--ham .


    Бытует мнение, что достаточно обучать SpamAssassin только для эффективной фильтрации почты. Мы решили тренировать SpamAssassin, скармливая ему абсолютно все письма, как чистые, так и спам. В дополнение, мы нашли базу спам-писем и отдали SA на растерзание.


    Такая тренировка помогла более точно откалибровать Байесовский алгоритм. В результате фильтрация происходит гораздо эффективнее. Такие тренировки мы проводим тогда, когда почтовый трафик не очень высок, чтобы успеть проанализировать и захватить максимальное количество писем.


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

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


    Наверняка многие владельцы сайтов сталкивались с таким явлением как жалобы на их сайт. Это могут быть жалобы от правообладателей, на мошенничество, рассылку спама и т.д. При получении таких жалоб хостеры могут попросить удалить сайт, отключить хостинг или VPS. В такой ситуации, когда хостер не хочет предоставлять услуги для вашего сайта, остается единственный вариант, съезжать в другое место. Естественно постоянное скитание по хостингам не самое приятное занятие, это время, деньги и нервы. Да и ожидать блокировки после каждого перезда тоже не вариант. Специально для таких случаев существует абузоустойчивый или, как его еще называют, bulletproof хостинг.
    Это специальная услуга для размещения сайтов, на которые поступают жалобы. Хостер полностью игнорирует жалобы и гарантирует, что при получении абуз, с его стороны не будет никаких санкций. Также здесь можно разместить сайты, которые обычно запрещены на других хостингах. Оборудование эти компании размещаются в странах Европы с либеральным законодательством, например в Нидерландах, или где-то в азиатском регионе, например в Китае. Абузоустойчивый хостинг - это не обязательно именно виртуальный хостинг, это может быть VPS или выделенный сервер. Главное здесь не тип услуги, а политика компании по отношению к жалобам и контенту.

    Что можно размещать на абузоустойчивом хостинге

    Абузоустойчивый хостинг используют для размещения порно, торрент трекеров, онлайн кино, сайтов нарушающих авторские права и т.д., некоторые даже могут дать разместить фишинг, кардинг или продажу запрещенных веществ. Также, его используют как абузоустойчивый smtp сервер, для рассылки спама. Насколько такой абузоустойчивый smtp сервер работоспособен сказать сложно, поскольку при постоянной рассылке спама, IP адрес этого smtp сервера будет внесен во все возможные черные списки и письма просто будут отклоняться. Тем не менее, такая услуга предоставляется. Стоит понимать, что название абузоустойчивый хостинг не означает, что на нем можно разместить все что угодно, здесь также много чего размещать нельзя. На сайте хостера прямо указывается какой контент можно размещать, а какой нельзя, какие жалобы будут проигнорированы, а какие нет. В основном клиенты таких хостеров размещают порно, онлайн кино и торрент трекеры.

    Сколько стоит

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

    Процесс рассылки почты состоит в том, что Вы (автор) создаете сообщение в личном кабинете SmartBoxPro, и после нажатия на кнопку "Отправить" Ваше сообщение отправляется Вашим личным выделенным сервером через smtp протокол. Рассылка производится при помощи предоставляемых SmartBoxPro отдельных выделенных SMTP серверов каждому автору. Таким образом, после оплаты тарифного плана Вы получаете настроенный и подключенный VDS к Вашему аккаунту в SmartBoxPro. В каждом тарифе своя конфигурация VDS/VPS сервера в зависимости от требований к рассылке.

    Конфигурация сервера на тарифе PROFI

    • 2 Процессор
    • Оперативная память: 2048 Мб.
    • Место на жестком диске: 30 Гб.
    • 1 выделенный IP адреса
    • Панель управления сервером ISPmanager 5

    Благодаря тому, что рассылка производится через минимум 3 IP адреса и только одним автором, достигается высокий показатель процента доставляемости сообщений. Конечно, гарантировать высокий INBOX можно только в том, случае, когда сам автор рассылки не превращает процесс в СПАМ. Данный метод ведения рассылок идеален, как для небольшого количества подписчиков, так и для рассылок по крупным базам клиентов (например, интернет-магазинов).

    Вы получаете Ваш VDS в свободное пользование

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

    Для многих самостоятельное создание собственного сайта является все еще проблемой, но и тут Вам повезло - с помощью панели управления ISPmanager Вы в полностью автоматическом режиме сможете устанавливать десятки сайтов или интернет-магазинов на самых популярных CMS таких, как WordPress, Joomla, OpenCart и др.

    Таким образом, Вы получаете целых ДВЕ качественные услуги в ОДНОМ тарифе SmartBoxPro.


    Установка своего почтового сервера, как правило, не вызывает особых трудностей. В Сети доступно большое количество готовых инструкций. Буквально одна команда, и 25-й порт уже готов к работе. Весело становится, когда отправленные письма начинают возвращаться, а получатели жаловаться, что сообщения не доходят. Здесь уже хочешь не хочешь, но придется искать причины и вникать в технологии.

    Кто отправляет письма

    Сегодня возможность привязать свой домен к сервису предлагают многие веб-службы. Особо популярно размещение почты на Gmail или Яндексе. Все сообщения будут идти через предоставленный ими SMTP-сервер, проверенный поставщик услуг сам сформирует все необходимые заголовки и подписи, которые позволят пройти через любой спам-фильтр. Но такой вариант не всегда возможен. Например, организация имеет большое количество пользователей, нужны особые настройки для почты, недоступные в облачных сервисах. Или используется свой сервер с порталом, CMS или интернет-магазин, с которых нужно отправлять сообщения.

    По умолчанию все PHP-приложения используют для отправки почты функцию mail() , которая, в свою очередь, отправляет их через локальный SMTP-сервер, описанный в php.ini .

    Sendmail_path = /usr/sbin/sendmail -t -i

    Или в виртуальном хосте:

    Php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f [email protected]"

    И хотя там в 100% случаев написан sendmail, на самом деле это может быть симлинк, а почту отсылает Postfix или Exim. Чтобы отправить почту из приложения, можно выбрать один из трех вариантов:

    • Сам движок иногда позволяет указать внешний SMTP-сервер (в дефолтных настройках или через плагин, в WordPress это WP Mail SMTP или Easy WP SMTP). Достаточно просто указать данные аккаунта, и все проблемы решены.
    • Использование программы-прокладки, которая эмулирует работу локального SMTP-сервера и отправляет сообщения через почтовый аккаунт на стороннем сервере. Здесь очень популярна SSMTP.
    • Использование своего почтового сервера. Придется, конечно, его настроить, зато больше возможностей конфигурации.

    Нас интересует последний вариант. Разберем, как пробиться через антиспам-технологии и гарантированно доставить получателю сообщение. Сами фильтровать спам не будем. Это тема другой статьи. В качестве подопытного SMTP-сервера выберем Postfix и Exim, они популярны на хостингах, просты и понятны в настройках, хотя основные вопросы будут касаться всех SMTP-серверов.

    Как не попасть в спам

    Борьба со спамом - это головная боль всех администраторов почты. Причем в последнее время актуальна как раз обратная сторона медали: спам-фильтры буквально зверствуют. Поэтому спам в приходящей почте практически отсутствует, но вот нормальные сообщения постоянно куда-то пропадают, клиенты и руководство нервничают, и приходится дополнительно убеждаться, что сообщение дошло до адресата. И после установки SMTP-сервера с большой вероятностью придется еще повозиться, чтобы сообщения вообще хоть куда-то доходили. В частности, чтобы оценить настройки, следует посмотреть, доставляются ли письма в ящики основных почтовых систем Gmail, Яндекс, Mail.Ru. Обычно на этом этапе появляются первые сложности, и приходится решать все проблемы персонально.

    Почтовые сервисы используют многоуровневую систему фильтрации спама, причем настолько серьезную и засекреченную, что о принципах не знает даже их собственная техподдержка. И у каждого сервиса свои приоритеты. Хотя обычно некая подсказка о причине недоставки содержится в ответном письме сервиса. Также в анализе причин помогает сервис mail-tester.com , достаточно отправить письмо на указанный там адрес и затем после анализа получить результат и перечень проблем. Некоторые из них можно проверить и решить, еще не настраивая SMTP-сервер.

    Борьба со спамом породила множество технологий. Самая старая из них - blacklist, в который заносятся все IP и домены, занимавшиеся рассылкой спама, сюда же могут попасть открытые релеи, прокси и Dialup-адреса, используемые для удаленного доступа (то есть они теоретически не должны рассылать почту). Организованы такие blacklist по-разному. Популярностью пользуются DNSBL (DNS blacklist) - черные списки в формате DNS, которые легко опрашивать. На сегодня доступно множество баз, не все они популярны и используются. Проблема в том, что списка для конкретного почтового сервиса нет, сколько и какие они опрашивают - это тайна.

    Доменные имена, как и IP-адреса, сегодня могут быть «бэушными». Есть вероятность, что до тебя ими пользовался сервис рассылки сообщений или хост, размещенный на нем, был взломан и рассылал спам. Соответственно, они вполне могут попасть в какой-то из DNSBL и быть проблемой. Mail.Ru отбрасывал письма с одного IP именно из-за того, что тот находился в одном из таких полузабытых списков, попав туда в 2010 году. Причем Mail.Ru даже не утруждался проверять правильность SPF и DKIM. Дело сдвинулось, лишь когда IP убрали из блек-листа.

    Проверить IP или домен можно самостоятельно, отослав DNS-запрос к выбранному DNSBL-серверу при помощи утилиты dig:

    $ host -tA сайт.ex.dnsbl..ex.dnsbl.org not found: 3(NXDOMAIN)

    Но удобнее пользоваться онлайн-сервисами, проверяющими сразу в нескольких базах. IP можно проверить в dnsbl.info (59 баз) или whatismyipaddress.com (72 базы), домен, кроме того, - в mxtoolbox.com (107 баз), spamhaus.org или multirbl.valli.org . Если вдруг домен или IP окажется в списке, лучше сразу написать в поддержку и убрать свой адрес.


    Правильная DNS

    При получении сообщения удаленный SMTP-сервер анализирует прежде всего его заголовок. Почтовая программа отправляет только From, To, Date, Subject и X-Mailer. Они в общем понятны и просто указывают, от кого и куда слать. Остальной заголовок формируется как SMTP-сервером, так и приложением, его отправляющим. Это, кстати, тоже нужно учитывать, потому что письма, отправляемые через Telnet, могут уходить, а с Roundcube - нет, просто потому, что у них разный заголовок. Roundcube, например, подставляет свой HELO/EHLO на основании переменной server_name или localhost, если она не определена. Поэтому иногда нужно просто задать его явно:

    $rcmail_config["smtp_helo_host"] = "example.org";

    То же касается и самописных PHP-скриптов.

    При передаче письмо будет проходить минимум через два SMTP-сервера, каждый из которых тоже добавляет что-то от себя в заголовок. В первую очередь каждый сервер добавляет свой Received: from. Читать их лучше снизу вверх. Самое нижнее сообщение - это сервер отправителя, самый верхний - сервер получателя. Хотя на самом деле серверов может быть больше, особенно это актуально при работе с крупными провайдерами услуг, которые, приняв письмо, перебрасывают его дальше, или при использовании на пути SMTP-прокси. Для анализа пути сообщения можно использовать сервис от Google , который покажет в понятной форме все SMTP-серверы, время прохождения и тесты SPF, DKIM и DMARC (о них дальше).


    Заголовки Received отличаются, хотя есть общие правила. Типичный выглядит так:

    Received: from server.example.org (helo=server.example.org) by st15.provider.com with esmtps (Exim 4.80.1) (envelope-from )

    Здесь сообщение было получено с сервера, который называется server.example.org, имеет IP 1.2.3.4, в приветствии helo было использовано это же имя, получил его Exim 4.80.1 сервера st15.provider.com. Сообщение отправлено с [email protected]. Приняв такой заголовок, SMTP-сервер начинает проверять данные. Пробивает домен и IP по базам DNSBL. Проверяет наличие MX-записи у домена. MX изначально используется для поиска почтовых серверов, обслуживающих данный домен, ее наличие подтверждает, что домен отправляет почту.

    Дальше он производит обратное разрешение имени по IP через обратный DNS-запрос c помощью PTR-записи. То есть он узнает, сервер с каким именем должен быть по адресу, с которого пришло сообщение. Такое поведение было заложено в RFC 2505 от февраля 1999 года Anti-Spam Recommendations for SMTP MTAs. И хотя давно признано, что обратные зоны не являются достаточным условием для однозначного опознавания отправителя и часто приводят к ошибкам и задержкам, они все же поддерживаются. Поэтому они должны совпасть, иначе сообщение как минимум получит минус в рейтинге, а в худшем случае будет отброшено.

    В нашем примере за IP 1.2.3.4 должен быть закреплен server.example.org. DNS-запись выглядит так:

    1.2.3.4.in-addr.arpa. IN PTR server.example.org

    Для IPv6 используется ip6.arpa. В принципе, знать об особенностях PTR необязательно, так как PTR, за редким исключением, настраивает только хостинг-провайдер. И если оно не устраивает, то нужно просто обратиться в поддержку. Проверить PTR можно при помощи запроса:

    $ dig -x 1.2.3.4

    По факту PTR-запись после развертывания VDS может указывать на технический домен, представленный провайдером, вроде srv01.provider.net , в шаблоне VDS hostname вписан как Ubuntu1604 (меняется в /etc/hostname), в HELO/EHLO SMTP-сервер пишет вообще localhost.localdomain , а письмо идет от домена example.org. Вероятность доставки письма при таких условиях будет стремительно приближаться к нулю. Хотя некоторые сервисы отмечают подобные несоответствия как ошибку и проводят полную проверку.

    Особо хочется обратить внимание, что VDS обычно имеет два IPv4 и v6. Поэтому все сказанное касается обеих версий, так как письмо к одному серверу может идти по IPv4 и доставляться, а другой предпочитает использовать IPv6, и письмо может не доходить до получателя. При этом очень много провайдеров, предоставляя IPv6, абсолютно не утруждают себя настройкой PTR-записи, и ее проверка возвращает ошибку. Но Google, например, предпочитает IPv6 и сразу отбрасывает письмо, если PTR не совпадает с именем сервера. В ответном сообщении сервиса это выглядит так:

    Продолжение доступно только участникам

    Вариант 1. Присоединись к сообществу «сайт», чтобы читать все материалы на сайте

    Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score!