Спам уже давно занял прочную позицию в нашей жизни и никуда от него не деться.
Однако, с ним можно эффективно бороться не прибегая к дорогостоящим коммерческим системам фильтрации спама.
Сперва небольшая предыстория...
Вся история началась с того, что за нежеланием «работать на дядю» я занялся фрилансом — помогал предпринимателям нашего региона размещать их товары/услуги в сети. Сами сайты клиентов хостились у одного мелкого и недорого хостинг-провайдера, с которым я работал. Первое время сайтов было не много и провайдер меня вполне устраивал. Однако уже через пол года бизнес начал набирать более серьезные обороты — фриланс перерос в веб-студию, а клиенты всё больше жаловались на огромное количество спама, да и наш e-mail тоже разошелся по всем спам-базам и ящик постоянно был завален рекламой.
SpamAssassin — попытка номер раз
Само собой назрело решение об аренде физически выделенных серверов и использовании какой-нибудь системы фильтрации спама. Мы нашли хорошего хостинг-провайдера, у которого была своя собственная разработка по фильтрации спама (что-то на подобие совмещения нескольких технологий и ПО для лучшей фильтрации), и цена за её использование была вполне адекватной. Было арендовано 2 сервера, но сразу мы не собирались прикручивать к ним платный антиспам, сперва опробовали открытую разработку — SpamAssassin. После месяца тестирования она показала себя с очень плохой стороны, фильтровала плохо, было много ложных срабатываний. Пляски с обучением на отфильтрованных вручную письмах и игры с настройкой уровня фильтрации (required level) ожидаемого результат не дали. Наперёд хочу заметить, что конфиги были стандартными (понадеялись на то, что по умолчанию разработчики уже установили самые благоприятные параметры). Было решено исправить эту ситуацию — мы подключили услугу по фильтрации, которую предлагал наш провайдер. В процессе работы анти-спам система показала себя с очень хорошей стороны и поток нежелательных писем сократился с ~200 до 3-5 (в день / на 1 e-mail), клиенты были очень довольны. В итоге, эта система фильтрации спама нам обошлась в 7200у.е. за 2 сервера в год (300 в мес. за 1 сервер). Не хило, правда?
SpamAssassin — попытка номер два
Спустя год мы накопили достаточный капитал для покупки дорогостоящего быстрого сервера и размещения его в одном из дата-центров. Мне совсем не хотелось опять каждый год тратить такие большие деньги на коммерческий анти-спам и я решил снова попробовать SpamAssassin. Опустим нюансы установки, она предельно простая и не занимает много времени. Один момент — ко времени покупки сервера я уже получил достаточные знания в области администрирования и смог заняться его настойкой в полной мере.
Итак, собственно, само исследование.
Мы имеем установленный SpamAssassin как часть exim и море непрекращающегося спама на наш сервер.
Во время первого тестирования конфиг SpamAssassin не редактировался, порог срабатывания (required level) был установлен в 5 единиц. За неделю я получил кучу спама и этот вариант выглядел совсем не привлекательным.
Во время второго тестирования был установлен порог в 3 единицы. Поток спама сильно уменьшился, но появились лишние срабатывания, что недопустимо! Этот вариант меня, конечно, так же не устроил.
Найдя время я подробно изучил заголовки писем, причины ложных срабатываний, разобрался как и за что добавляются спам-очки для приходящих писем. Изучил более глубоко документацию по SpamAssassin и начал играться с настройками. Итак, во время третьего тестирования был установлен порог в 5 баллов, а в файл /etc/mail/spamassassin/local.cf были вписаны следующие настройки:
Коротко о том, что это такое — каждая строка, это имя события, при срабатывании которого письму начисляется указанное рядом число «плохих баллов». По окончании обработки письма эти баллы суммируются и система решает — поступившее письмо оказалось спамом или нет.
А теперь подробнее:
1 строка — проверка на динамический ip у отправителя.
2 строка — проверка реверсной записи DNS для ip отправителя, т.е. соответствует ли его ip адрес какому-либо домену.
3-5 строка — проверка присутствия ip отправителя в различных спам-базах.
Вторая строка для нас представляет наибольший интерес. Крупные гиганты, такие как Mail.ru, Rambler и т.д., вообще не принимают почту с таких серверов. Сам нарвался на это когда-то, попробовав отправить почту с домашнего почтового демона (windows программка). Почтовые провайдеры поменьше уже настраивают это по собственному усмотрению и я не могу говорить о какой-либо статистики по этому поводу. Как сейчас с этим — не знаю.
Но, основываясь на своём опыте, хочу сказать, что во времена когда ip нашего сервера не имел реверсной записи, к нам приходила куча сообщений о недоставке писем из-за определения их как спам.
С этими настройками сервер простоял так же около недели. Я полагал, что любой нормальный сервер имеет реверсную запись, и только спамеры рассылают письма с динамических ip и серверов без так называемой «Reverse DNS record».
И все бы хорошо, но уже через день после тестирования среди удаленного спама я нашел письмо от платежной системы Z-Payment, которое было черти как составлено, имело кривые заголовки, неправильный формат, было отправлено с сервера без RDNS и потому конечно было распознано как злостный спам. Я, если вы заметили выше, назначил для параметра RDNS_NONE 5.1 баллов. Это, как вы понимаете, больше установленного порога и такие письма сразу удалялись как спам. После этого случая я поменял свое мнение о реверсных записях — если уж такие компании как Z-Payment присылают кривые письма с «бездомного» ip, то что говорить о других, и я пошел дальше.
Опытным путем я выяснил, что SpamAssassin ставит довольно большие баллы (1-3) за такие нарушения, как неверно сформированные заголовки, кучу пустых строк, неуказание кодировки и другие схожие недостатки. Такие явления как «говнокод» и «горе-программисты» всегда были, есть и будут, и как показала статистика, таких кривых писем приходит много. Но ведь они нам нужны — это не спам!
Что я сделал? В файл /etc/mail/spamassassin/local.cf были вписаны следующие настройки:
В настройках Exim(/etc/exim.conf) раскомментирована строка:
Подробно не буду объяснять что означает каждый пункт, но говоря простыми словами я установил для мелких нарушений минимальный спам-рейтинг, а для грубых нарушений(как наличие в спам-базах) установил рейтинг в 5.1 единиц.
Итак, последнее тестирование. Был установлен порог опять же в 5 баллов (ну вот люблю я эту цифру еще со школы). В файлах конфигурации прописаны настройки указанные чуть выше. После недели работы сервера с такими настройками проблема спама исчезла, а кривые письма стали попадать по назначению.
Заключение
С тех пор прошло 3 года, полет нормальный! :) Те же 5-7 спам-писем в день, что и при использовании коммерческой системы фильтрации, и никаких ложных срабатываний! Идеально! Настройки проверены временем, и не только на наших, но и на других серверах наших «коллег по цеху».
Итог всей это статьи — неграмотность или простое незнание может привести к большой потере денег на ненужные вам услуги.
Администраторам на заметку: указанные настройки в этой статье помогут вам избежать головной боли и траты лишних денег.
Еще раз убеждаюсь, что «Open Source» ничем не хуже коммерческих разработок, а порой даже и лучше.
P.s. Это мой первый пост тут. Сам читаю Хабр уже два года, но решил вступить в ряды его пользователей только сейчас. Критика или дополнения приветствуются.
Однако, с ним можно эффективно бороться не прибегая к дорогостоящим коммерческим системам фильтрации спама.
Сперва небольшая предыстория...
Вся история началась с того, что за нежеланием «работать на дядю» я занялся фрилансом — помогал предпринимателям нашего региона размещать их товары/услуги в сети. Сами сайты клиентов хостились у одного мелкого и недорого хостинг-провайдера, с которым я работал. Первое время сайтов было не много и провайдер меня вполне устраивал. Однако уже через пол года бизнес начал набирать более серьезные обороты — фриланс перерос в веб-студию, а клиенты всё больше жаловались на огромное количество спама, да и наш e-mail тоже разошелся по всем спам-базам и ящик постоянно был завален рекламой.
SpamAssassin — попытка номер раз
Само собой назрело решение об аренде физически выделенных серверов и использовании какой-нибудь системы фильтрации спама. Мы нашли хорошего хостинг-провайдера, у которого была своя собственная разработка по фильтрации спама (что-то на подобие совмещения нескольких технологий и ПО для лучшей фильтрации), и цена за её использование была вполне адекватной. Было арендовано 2 сервера, но сразу мы не собирались прикручивать к ним платный антиспам, сперва опробовали открытую разработку — SpamAssassin. После месяца тестирования она показала себя с очень плохой стороны, фильтровала плохо, было много ложных срабатываний. Пляски с обучением на отфильтрованных вручную письмах и игры с настройкой уровня фильтрации (required level) ожидаемого результат не дали. Наперёд хочу заметить, что конфиги были стандартными (понадеялись на то, что по умолчанию разработчики уже установили самые благоприятные параметры). Было решено исправить эту ситуацию — мы подключили услугу по фильтрации, которую предлагал наш провайдер. В процессе работы анти-спам система показала себя с очень хорошей стороны и поток нежелательных писем сократился с ~200 до 3-5 (в день / на 1 e-mail), клиенты были очень довольны. В итоге, эта система фильтрации спама нам обошлась в 7200у.е. за 2 сервера в год (300 в мес. за 1 сервер). Не хило, правда?
SpamAssassin — попытка номер два
Спустя год мы накопили достаточный капитал для покупки дорогостоящего быстрого сервера и размещения его в одном из дата-центров. Мне совсем не хотелось опять каждый год тратить такие большие деньги на коммерческий анти-спам и я решил снова попробовать SpamAssassin. Опустим нюансы установки, она предельно простая и не занимает много времени. Один момент — ко времени покупки сервера я уже получил достаточные знания в области администрирования и смог заняться его настойкой в полной мере.
Итак, собственно, само исследование.
Мы имеем установленный SpamAssassin как часть exim и море непрекращающегося спама на наш сервер.
Во время первого тестирования конфиг SpamAssassin не редактировался, порог срабатывания (required level) был установлен в 5 единиц. За неделю я получил кучу спама и этот вариант выглядел совсем не привлекательным.
Во время второго тестирования был установлен порог в 3 единицы. Поток спама сильно уменьшился, но появились лишние срабатывания, что недопустимо! Этот вариант меня, конечно, так же не устроил.
Найдя время я подробно изучил заголовки писем, причины ложных срабатываний, разобрался как и за что добавляются спам-очки для приходящих писем. Изучил более глубоко документацию по SpamAssassin и начал играться с настройками. Итак, во время третьего тестирования был установлен порог в 5 баллов, а в файл /etc/mail/spamassassin/local.cf были вписаны следующие настройки:
score RDNS_DYNAMIC 5.1
score RDNS_NONE 5.1
score RCVD_IN_PBL 5.1
score RCVD_IN_XBL 5.1
score RCVD_IN_SBL 5.1Коротко о том, что это такое — каждая строка, это имя события, при срабатывании которого письму начисляется указанное рядом число «плохих баллов». По окончании обработки письма эти баллы суммируются и система решает — поступившее письмо оказалось спамом или нет.
А теперь подробнее:
1 строка — проверка на динамический ip у отправителя.
2 строка — проверка реверсной записи DNS для ip отправителя, т.е. соответствует ли его ip адрес какому-либо домену.
3-5 строка — проверка присутствия ip отправителя в различных спам-базах.
Вторая строка для нас представляет наибольший интерес. Крупные гиганты, такие как Mail.ru, Rambler и т.д., вообще не принимают почту с таких серверов. Сам нарвался на это когда-то, попробовав отправить почту с домашнего почтового демона (windows программка). Почтовые провайдеры поменьше уже настраивают это по собственному усмотрению и я не могу говорить о какой-либо статистики по этому поводу. Как сейчас с этим — не знаю.
Но, основываясь на своём опыте, хочу сказать, что во времена когда ip нашего сервера не имел реверсной записи, к нам приходила куча сообщений о недоставке писем из-за определения их как спам.
С этими настройками сервер простоял так же около недели. Я полагал, что любой нормальный сервер имеет реверсную запись, и только спамеры рассылают письма с динамических ip и серверов без так называемой «Reverse DNS record».
И все бы хорошо, но уже через день после тестирования среди удаленного спама я нашел письмо от платежной системы Z-Payment, которое было черти как составлено, имело кривые заголовки, неправильный формат, было отправлено с сервера без RDNS и потому конечно было распознано как злостный спам. Я, если вы заметили выше, назначил для параметра RDNS_NONE 5.1 баллов. Это, как вы понимаете, больше установленного порога и такие письма сразу удалялись как спам. После этого случая я поменял свое мнение о реверсных записях — если уж такие компании как Z-Payment присылают кривые письма с «бездомного» ip, то что говорить о других, и я пошел дальше.
Опытным путем я выяснил, что SpamAssassin ставит довольно большие баллы (1-3) за такие нарушения, как неверно сформированные заголовки, кучу пустых строк, неуказание кодировки и другие схожие недостатки. Такие явления как «говнокод» и «горе-программисты» всегда были, есть и будут, и как показала статистика, таких кривых писем приходит много. Но ведь они нам нужны — это не спам!
Что я сделал? В файл /etc/mail/spamassassin/local.cf были вписаны следующие настройки:
score RDNS_DYNAMIC 5.1
score RDNS_NONE 2.0
score RCVD_IN_PBL 5.1
score RCVD_IN_XBL 5.1
score RCVD_IN_SBL 5.1
score RCVD_IN_SORBS_DUL 5.1
score HELO_DYNAMIC_DHCP 2.0
score RCVD_IN_SORBS_WEB 5.1
score SUBJ_ALL_CAPS 0.1
score SUBJ_ILLEGAL_CHARS 0.1
score MIME_HTML_ONLY 0.1
score SUBJECT_NEEDS_ENCODING 0.1
score MIME_HEADER_CTYPE_ONLY 0.1
score HTML_MIME_NO_HTML_TAG 0.1В настройках Exim(/etc/exim.conf) раскомментирована строка:
require verify = senderПодробно не буду объяснять что означает каждый пункт, но говоря простыми словами я установил для мелких нарушений минимальный спам-рейтинг, а для грубых нарушений(как наличие в спам-базах) установил рейтинг в 5.1 единиц.
Итак, последнее тестирование. Был установлен порог опять же в 5 баллов (ну вот люблю я эту цифру еще со школы). В файлах конфигурации прописаны настройки указанные чуть выше. После недели работы сервера с такими настройками проблема спама исчезла, а кривые письма стали попадать по назначению.
Заключение
С тех пор прошло 3 года, полет нормальный! :) Те же 5-7 спам-писем в день, что и при использовании коммерческой системы фильтрации, и никаких ложных срабатываний! Идеально! Настройки проверены временем, и не только на наших, но и на других серверах наших «коллег по цеху».
Итог всей это статьи — неграмотность или простое незнание может привести к большой потере денег на ненужные вам услуги.
Администраторам на заметку: указанные настройки в этой статье помогут вам избежать головной боли и траты лишних денег.
Еще раз убеждаюсь, что «Open Source» ничем не хуже коммерческих разработок, а порой даже и лучше.
P.s. Это мой первый пост тут. Сам читаю Хабр уже два года, но решил вступить в ряды его пользователей только сейчас. Критика или дополнения приветствуются.