Установка и настройка велокомпьютера на электровелосипеде E-Trail
Добиться высоких результатов в спорте можно только путём ежедневного совершенствования, превосходя предыдущие показатели...
Интернет-проекты активно используют email-рассылки для общения с клиентами.
Да, некоторые наши клиенты рассылают спам . Почтовые сервисы борются с ним - добавляют IP-адреса рассылающих серверов в блок-листы. Почта с таких адресов больше никогда не попадает в почтовые ящики, а сразу удаляется.
Мы следим за тем, чтобы наши клиенты не рассылали спам. Для этого действуют фильтры - они определяют вредоносные письма. Как только фильтр срабатывает, мы блокируем 25 порт, и сервер больше не может рассылать письма.
Автоматические фильтры срабатывают и на письма, не являющиеся спамом . Чтобы этого не произошло, заранее подайте заявку на добавление в белый список.
Работает только для KVM-серверов. Чтобы вас добавили в белый список , напишите запрос в поддержку и сообщите нам:
Практически па всех наших серверах мы используем для отправки почты сервис под названием 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
Установка своего почтового сервера, как правило, не вызывает особых трудностей. В Сети доступно большое количество готовых инструкций. Буквально одна команда, и 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-сервера выберем 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 окажется в списке, лучше сразу написать в поддержку и убрать свой адрес.
При получении сообщения удаленный 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 не совпадает с именем сервера. В ответном сообщении сервиса это выглядит так:
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score!
Нашей причиной стали многократные жалобы на спам, исходящий от наших клиентов хостинга и VPS. Не всегда можно с уверенностью сказать, были ли это умышленные действия клиентов или они сами не подозревали, что стали жертвой спам-ботов. Что бы там ни было, проблему пришлось решать.
Спам не любят. Спам оставляет «чёрное пятно» на лице провайдера, когда его IP адреса вносят в блеклисты, от чего страдают все клиенты. Удалить IP из блеклистов - особый разговор. Но это одна сторона медали. Если вернуть репутацию IP адресу можно, то вернуть репутацию компании и доверие - намного сложнее.
Мы решили найти решение и внедрить в структуру Unihost комплекс по защите и предотвращению нежелательных рассылок. После мозговых штурмов и обсуждений, начали проверять и сравнивать, что может предложить сообщество SPAM/AV.
Вариантов на рынке много. Однако, большинство качественных решений платные с тарификацией 1 лицензия на 1 сервер или даже на количество исходящих/входящих писем, что привело бы к удорожанию тарифов. Поэтому выбирали только среди opensource.
Он подходит для систем различного масштаба. Умеет интегрироваться в различные MTA (в документации описаны Exim, Postfix, Sendmail и Haraka) или работать в режиме SMTP-прокси.
Система оценки сообщений такая же, как в SpamAssassin, в частности на основании разных факторов: регулярных выражений, блок-листов DNS, белых, серых, черных списков, SPF, DKIM, статистики, хешей (fuzzy hashes) и прочего - только в работе используются другие алгоритмы.
В Rspamd поддерживается расширение при помощи плагинов.
Известность SA получил благодаря использованию технологии байесовской фильтрации. Каждое сообщение при прохождении тестов получает определенный балл и при достижении порога помещается в спам.
Легко интегрируется практически с любым почтовым сервисом. В SA доступны популярные технологии, которые подключаются как плагины: DNSBL, SPF, DKIM, URIBL, SURBL, PSBL, Razor, RelayCountry, автоматическое ведение белого списка (AWL) и другие.
Установка в общем не сложна. После установки SpamAssassin требует тонкой настройки параметров и обучения на спам-письмах.
Платформно-зависимый SMTP-прокси-сервер, принимающий сообщения до MTA и анализирующий его на спам.
Поддерживаются все популярные технологии: белые и серые списки, байесовский фильтр, DNSBL, DNSWL, URIBL, SPF, DKIM, SRS, проверка на вирусы (с ClamAV), блокировка или замена вложений и многое другое. Обнаруживается кодированный MIME-спам и картинки (при помощи Tesseract). Возможности расширяются при помощи модулей.
Документация проекта не всегда внятная, а инструкции нередко уже устаревшие, но при наличии некоторого опыта разобраться можно.
MailScanner представляет собой решение «все включено» для борьбы с фишинговыми письмами и проверки почты на наличие вирусов и спама. Он анализирует содержание письма, блокируя атаки, направленные на email-клиентов и HTML-теги, проверяет вложения (запрещенные расширения, двойные расширения, зашифрованные архивы и прочее), контролирует подмену адреса в письме и многое другое.
MailScanner легко интегрируется с любым МТА, в поставке есть готовые конфигурационные файлы. Помимо собственных наработок, он может использовать сторонние решения. Для проверки на спам может использоваться SpamAssassin.
Есть еще один 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. Приступим к описанию установки.
Устанавливать решили на VPS с чистой CentOS 6.8 x64, который выступает в качестве relay-сервера. Первым делом, необходимо обновить все системные утилиты и компоненты до последних версий, которые доступны в репозиториях. Для этого используем команду:
Затем устанавливаем утилиты wget и screen, если они не были установлены:
После чего, скачаем скрипт, который выполнит установку EFA:
Даем скрипту права на исполнение:
Запускаем screen:
И запускаем скрипт:
Теперь можно свернуть наш скрин используя комбинацию 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. Система начнет процесс автонастройки.
По завершению конфигурирования, система перезагрузится и будет в полной боевой готовности.
Это список основных опций EFA, которые недоступны для редактирования через веб-интерфейс MailWatch. Поэтому, хорошо знать, где их найти.
Мы же пошли сложным путем, но более гибким. Настройку 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 делается на письмах, которые уже попали в спам. Делать это можно двумя способами.
Первый способ - через веб-интерфейс 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» и выбрать одно из нескольких действий:
Делается это просто. Команда выглядит следующим образом:
В этой команде письмо с ID: 0DC5B48D4.A739D, которое находится в архиве спам писем за определенную дату /20170224/spam/, помечается как чистое (не спам) bash--ham .
Бытует мнение, что достаточно обучать SpamAssassin только для эффективной фильтрации почты. Мы решили тренировать SpamAssassin, скармливая ему абсолютно все письма, как чистые, так и спам. В дополнение, мы нашли базу спам-писем и отдали SA на растерзание.
Такая тренировка помогла более точно откалибровать Байесовский алгоритм. В результате фильтрация происходит гораздо эффективнее. Такие тренировки мы проводим тогда, когда почтовый трафик не очень высок, чтобы успеть проанализировать и захватить максимальное количество писем.
Для того, чтобы SpamAssassin начал работать на полную мощность, на старте ему необходимо скормить около 1000 различных писем. Поэтому наберитесь терпения и приступайте к тренировке.
Пока еще рано говорить о полной победе над спамом. Однако, сейчас количество жалоб на спам с наших серверов равно нулю. Более детально рассказывать о самом процессе обучения сейчас не будем- не хочется раскрывать все фишки. Хотя, если поковыряться в настройках, разобраться не сложно.