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

Для тех, кто ленится смотреть 45 минутное видео по настройке SMTP на VDS

Подготовительный этап

1) Регистрируем почтовый ящик (на который будем регить все сервисы). Заносим все данные файлик, чтобы не растерять.

2) Регистрируемся на reg.domainik.ru (или любой другой сервис регистрации доменов) и покупаем домен. Если вы хотите получить домен бесплатно, то читаете статью
DNS Сервера прописываем ns1.firstvds.ru и ns2.firstvds.ru (ну или NS вашего хостинга)

3) На firstvds.ru (или вашем хостинге) берем VDS сервер (самый простой — 150р для теста пойдет, хотя профи покупают самый дорогой). Промо код для скидки 25%: 648439800. Подтверждение номера в аккаунте через сервис sms-reg.com Шаблон сервера выбираем «Debian amd64» без ISPmanager. После оплаты нужно подождать пока статус сервера станет в состояние «Активен» и присвоится IP

Настройка сервера

2) После регистрации заходим в раздел Лицензии ISPSystem и вводим IP нашей VDS. Далее заходим на хостинг(VDS) в раздел «Виртуальные серверы»-жмем на наш сервер и сверху кнопку «В панель». Там выделяем наш сервер — «Переустановить» и выбираем Debian-amd64-ispmngr и указываем пароль, который был прислан после активации VDS. Далее немного подождать. В разделе «Контейнеры» жмем «ISPmgr» и вас должно перекинуть в ISPmanager

3) В ISPmanager вашего VDS заходим «Пользователи» — «Создать» и создаете пользователя, в шагах указываете ваш домен, который купили.

4) Далее заходите «Домены-Доменные имена» — там должен быть уже ваш домен, выбираете его и жмете NSы — «Создать» и указываете данные, которые пришли в письме на почту, которую указывали при регистрации VDS. Заголовок письма «Изменение параметров доступа DNS….» из письма вводите все данные, включая ns1.firstvds.ru и ns2.firstvds.ru и ставите галочку «Применить к существующим»

6) Создаете в разделе «Почтовые ящики» 4-5 почтовых ящика.

Настройка DKIM

1) В ISP панели ВАШЕГО VDS сервера в разделе заходите в «Настройки-Програмное обеспечение» находите «Почтовый сервер» (SMTP) он должен быть «exim», если нет — жмете кнопку «Удалить», потом «Установить» и выбираете «exim-daemon-heavy» жмем «Далее»-«Далее»-«Завершить». Установка завершена. Далее выбираем «Opendkim — фильтр DKIM» жмем «Установить» (если в процессе требуется обновить ПО, то обновляем). Когда все установится (SMTP и DKIM) статус будет «лампочка желтая»

2) Идем в «Домены-Почтовые домены» выбираем наш домен, 2 раза кликаем и ставим галочку «Включить DKIM»

3) Идем в «Домены-Доменные имена» и смотри «Записи» там должна появится длинная запись DKIM

Сокрытие IP

1)В ISP панели ВАШЕГО VDS сервера «Система-Менеджер файлов» жмем «Назад» — далее папка etc, далее exim4 и выбираем файл exim.conftemplate 2 раза жмем на него и редактируем.
Вставляем код после строчки +smtp_protocol_error и перед строчкой TLS/SSL и жмем «Сохранить»

received_header_text = Received: \ ${if !def:authenticated_id \ {${if def:sender_rcvhost \ {from $sender_rcvhost\n\t} \ {${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name)\n\t}}}}\ }}\ by $smtp_active_hostname \ ${if def:received_protocol {with $received_protocol}} \ ${if def:tls_cipher {($tls_cipher)\n\t}}\ (Exim $version_number)\n\t\ id $message_exim_id

2)На VDS сервере в разделе «Контейнеры» жмем «Перезапуск»

Отправка с помощью ePochta Mailer

1) В ePochta Mailer жмем Настройки-SMTP ставим «Только SMTP» жмем + и добавляем наш сервер.
Вставляем IP порт 587. «Авторизация» — AUTH PLAIN(устаревшая). Шифрование — «Нет». Логин — одна из наших почт(которую регили в панели на VDC) и пароль её и вставляем нашу почту в имейл отправителя. «Потоков» 1. Для теста «Ждать» ставим 1 секунду. «После» 1 писем. Жмем Ок.

2) Пишем любое письмо и жмем «Проба» и проверяем доставляемость на свои ящики (яндекс,мейлру)

3) По аналогии добавляются остальные почтовые ящики

4) Рекомендации при рассылке в первые дни слать не более 3000 писем\день на Мейлру.Настройка «Ждать» — 7 секунд. Так же рекомендуется использовать
«Подстановка текста» для рандомизации письма. Если домен банится, то по инструкциям добавляется и настраивается новый домен

Расходы на всё это дело 250 рублей.
Экономия на просмотре курса 1,5 часа времени.

Желаю всем удачи!

Практически па всех наших серверах мы используем для отправки почты сервис под названием Exim.
Exim - это так называемый MTA (Mail Transfer Agent), агент передачи сообщений, в просторечии – почтовик или почтовый сервер, использующийся во многих операционных системах семейства Unix.

У каждого письма, которое проходит через почтовый сервис есть свой идентификатор или по-другому уникальный номер письма. Идентификаторы сообщений в очередях Exim, представляют из себя буквенно-цифровые последовательности в верхнем и нижнем регистра, например "1TrXS1-0003SL-3h", и используются большинством команд администрирования очереди и логгирования в Exim.

Теперь рассмотрим краткий список команд ssh по управлению почтой и почтовой очередью. Важно! Все команды нужно выполнять от root и они доступны только для VPS/Dedicated

Вывести количество сообщений в почтовой очереди (то, что мы видим в мониторинге):

Печать списка сообщений в очереди . Выводятся, время постановки в очередь, размер, ID сообщения, отправитель, получатель:

Пример такого списка:
4h 791 1TrXgs-0004t8-0W
Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.

4h 1.8K 1TrXgu-0004tZ-5w
Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.

Соответственно идентификаторы этих двух сообщений: 1TrXgs-0004t8-0W и 1TrXgu-0004tZ-5w

Удалить сообщение из очереди: exim -Mrm
(Пример: exim -Mrm 1TrXgs-0004t8-0W, удалит из очереди сообщение с переданным идентификатором)

Просмотреть заголовки сообщений : exim -Mvh

Просмотреть тело сообщений: exim -Mvb

Просмотр логов сообщения : exim -Mvl

Удалить все заблокированные сообщения в почтовой очереди: exipick -z -i | xargs exim -Mrm

Удалить все сообщения из почтовой очереди, где домен отправителя domain: exipick -f @domain -i | xargs exim -Mrm

Удалить все сообщения из почтовой очереди, где домен получателя domain: exipick -r @domain -i | xargs exim -Mrm

Удалить все сообщения из почтовой очереди: exipick -i | xargs exim -Mrm

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

rm -rfv /var/spool/exim4/input/
rm -rfv /var/spool/exim4/msglog/

Теперь рассмотрим как найти кто и каким образом рассылает спам на сервере и как это заблокировать?

Для этого мы делаем следующее:
Вывести список сообщений в почтовой очереди с помощью команды

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

Если спам идет со взломанного почтового ящика – отключить его, либо сменить пароль ящика в его свойствах в разделе Почтовые ящики

Если спам идет с крон-задания – удалить такое задание в разделе Планировщик Cron
Если с сайта – Найденный WWW домен нужно либо заблокировать либо заблокировать почту для этого www домена, сайт при этом будет работать – не работать будет только почта, отправленная скриптом php mail – для режимов работы php cgi и apache это делается по разному:
- для режима php apache в общем конфиге apache2 сервера под root /etс/apache2/apache2.conf найти блок Virtualhost нужного домена и в строчке
php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f
сменить в пути /usr/sbin/sendmail слово sendmail на sendmoil.

Либо сделать та же в разделе www домены в свойствах конфига apache2. После этого нужно перезагрузить сервис apache2 чтобы изменения вступили в силу. После этого php mail только для этого сайта и только в режиме php apache работать не будет и скрипты не смогут рассылать письма.

Для режима php cgi под пользователем – владельцем сайта в файле php-bin/php.ini в строчке sendmail_path = "/usr/sbin/sendmail -t -i -f меняем в пути /usr/sbin/sendmail слово sendmail на sendmoil. При этом перезагружать ничего не нужно и указанная блокировка будет распространятся на ВСЕ www домены данного пользователя, которые работают в режиме php cgi, а не на какой-то конкретный.
Еще раз хотелось бы отметить, что такая блокировка распространяется только на скрипты и крон с помощью которых распространяется почта – ящики, созданные на этом же домене будут работать.

Если определить кто шлет спам с помощью очереди не удалось, можно воспользоватся еще несколькими командами:

tail -n 1000 /var/log/nginx/access.log | grep POST

выведет список POST запросов всех сайтов , в которых можно определить вредоносный файл, который генерирует рассылку.

Увидели файл скрипта? Ищем его на сервере командой

find / -name filename

ps axu | grep ssh

которая выведет все ssh подключения к серверу. Затем наберите команду

которая выведет все активные соединения. Обычно пользователь, которого нет в выводе этой команде, но есть в выводе предыдущей взломан – в таком случае просто смените пароль пользователя либо его ftp аккаунта

команда killall -u user закроет все открытые ssh соединения пользователя user

Если вместо логина пользователя указаны цифры либо ftp-аккаунт пользователя, которого в Пользователях не видно, найти можно в файле /etc/group либо /etc/passwd

Еще рассылать спам можно запуская скрипты через cron. Быстро просмотреть все cron всех пользователей можно в папке /var/spool/cron/crontabs

Если на сервере установлен не Exim a postfix, можно воспользоваться следующими командами
mailq вывод почтовой очереди

postsuper -d ALL чистка почтовой очереди

Также в панели управления ISP Manager 4 для работы с почтовой очередью есть возможность установить и использовать плагин, который называется Почтовая очередь.
Установить плагин можно только из под root в разделе Плагины – нажмите Установить справа вверху, из списка выберите ispmque и установите его. После этого обновите панель управления и в разделе Инструменты появится новый раздел Почтовая очередь. В этом разделе можно полностью просматривать всю очередь и все записи каждого письма в очереди, а также чистить очередь и повторять отправку отдельных писем, то есть по сути все то же что и описанным выше методом по ssh.

Источник - https://thehost.ua/wiki/SPAM

Процесс рассылки почты состоит в том, что Вы (автор) создаете сообщение в личном кабинете 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!


Нашей причиной стали многократные жалобы на спам, исходящий от наших клиентов хостинга и 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 различных писем. Поэтому наберитесь терпения и приступайте к тренировке.

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