[ главная ]   [ рейтинг статей ]   [ справочник радиолюбителя ]   [ новости мира ИТ ]



Ответов: 0
25-02-12 07:01







   Web - программирование
PHP


ASP






XML



CSS

SSI





   Программирование под ОС











   Web - технологии








   Базы Данных









   Графика






Данные




Операционные системы / Linux /

Sendmail vs. spam

Александр Михайлов

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

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

Для реализации этого мы воспользуемся возможностями почтового сервера Sendmail входящего в поставку FreeBSD и Linux по умолчанию и поэтому наиболее часто используемого (порядка 75% от общего числа почтовых серверов обслуживаются с помошью SendMail).

База доступа Sendmail

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

Самый простой способ сделать это - использовать базу доступа, которая находится в файле /etc/mail/access/. С помощью базы доступа можно ограничить ретрансляцию почты через свой сервер. Она должна содержать список почтовых адресов, доменов и ip-адресов узлов которым разрешено или, наоборот, запрещено отправлять почту, используя данный сервер.

При установке Sendmail вместе с операционной системой (как это происходит обычно с FreeBSD) конфигурационный файл sendmail.cf обычно уже содержит необходимые команды для использования базы доступа, но иногда приходится включать эту опцию вручную.

Для этого добавьте команду FEATURE(access_db)dnl в ваш файл sendmail.mc и с помошью препроцессора m4 создайте новый конфигурационный файл sendmail.cf

m4 ./sendmail.mc > sendmail.cf

А затем скопируйте новый файл конфигурации в каталог /etc/mail, не забыв сохранить (на всякий случай) предыдущий вариант.

mv /etc/mail/sendmail.cf /etc/mail/sendmail.cf.old
cp ./sendmail.cf /etc/mail/sendmail.cf

И перезапустите Sendmail:

killall -HUP sendmail

Файл базы доступа (/etc/mail/access) состоит из строк содержащих пары значений, разделенных пробелами или табуляцией. Первое значение должно являться электронным адресом, именем домена или ip-адреcом (можно задавать целые сети), второе - кодовым обозначением действия. Действие может быть следующим:

  • REJECT - соединение с передающим узлом немедленно разрывается.
  • DISCARD - сервер примет сообщение, и "проглотит" его, сообщив об успешной доставке отправителю, но не доставит письмо.)
  • OK - разрешает доступ (обычно используется для переопределения других условий)
  • RELAY - разрешает пересылку почты
  • Код ошибки и ее описание: аналогично REJECT, но позволяет создавать собственные сообщения об ошибках.
Типовой файл access обычно выгдядит так:
# наша локальная сеть - адреса 192.168.x.x 
192.168 RELAY 

# сервера, находящиеся в вашем домене
domain.ru RELAY 

# некто, кому разрешено пользоваться нашим
# почтовым сервисом откуда угодно
masha@mail.ru RELAY

# домены спаммеров
cyberspammer.com 550 Spam 
listbuilder.com 550 Spam 
spamer.com 550 Spam 

#чья-то сеть из которой активно рассылают спам.
195.161.xxx.xxx 550 Spam

# нехорошо закрывать весь mail.ru, поэтому приходится
# закрывать отдельные адреса 
spam@mail.ru 550 Spam

Вместо сообщения <550 Spam> можно написать REJECT, поведение SendMail от этого не изменится, но подробные сообщения об ошибках могут быть полезными при анализе лог-файлов Sendmail (/var/log/maillog).

Для ускорения обработки писем SendMail использует хеширование базы доступа в формате BerkeleyDB, которое производится с помошью утилиты makemap:

makemap hash /etc/mail/access.db < /etc/mail/access

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

Блокировка <Черных> списков

Для решения проблемы ведения списков серверов, с которых рассылается спам в SendMail 8.9 была введена поддержка <списков DNSBL> (DNS-based blacklists). Черные списки так называемых <открытых релеев>, т.е. серверов с помощью которых спамеры могут безнаказанно рассылать миллионы писем поддерживаются различными организациями как на коммерческой основе, так и в свободном доступе. Первая система такого рода была создана Полом Викси и в настоящее время преобразована в коммерческую службу. Стоимость подписки на услуги mail-abuse.org составляет около 1500$ в год, являясь довольно значительной для маленьких компаний. К счастью существуют другие, некоммерческие организации, предоставляющие схожий сервис. Рассмотрим использование подобных сервисов на примере системы Open Realy Database (ordb.org).

В системах основанных на DNSBL ip адреса открытых релеев хранятся в базе DNS сервера в виде записей типа А (Address) в обратном порядке. Например, если сервер имеет ip-адрес 1.2.3.4 то в базе ORDB будет такая запись:

4.3.2.1.relays.ordb.org IN A 127.0.0.2

В данном случае наличие подобной записи указывает на то, что сервер 1.2.3.4 допускает свободную пересылку почты кем угодно и почта с него должна быть заблокирована. Адрес 127.0.0.2 используется лишь в качестве заполнителя (т.к. поле адреса в DNS не может быть пустым).

Для того, чтобы Ваш сервер Sendmail блокировал почту с узлов, ip адреса которых содержаться в в базе данных relays.ordb.org необходимо добавить следующую директиву в Ваш файл конфигурации sendmail.mc:

A затем пересобрать и установить новый файл sendmail.cf

Для SendMail 8.8 и ниже для добавления этой возможности Вам придется вручную редактировать файл sendmail.cf (он располагается в каталоге /etc/mail). Добавьте в процедуру Basic_check_relay (она обозначена заглавной буквой S - SBasic_check_relay) следующие правила:

R$* $: $&{client_addr} 
R$-.$-.$-.$- $:  $(host ....relays.ordb.org. $: OK $) 
R  OK $: OKSOFAR 
R  $+ $#error $@ 5.7.1 $: Rejected - see http://ordb.org/

Обратите внимание, что добавлять эти правила нужно после всех существующих правил в этой процедуре. Определить, где кончаются правила, помещенные в процедуру SBasic_check_relay, можно по по началу следующей процедуры, имя которой обозначено символом <S>, например SLocal_check_mail (обычно именно Local_check_mail идет сразу после Basic_check_relay, если конечно Sendmail не настроен как-нибудь очень нестандартно).

После того, как будет готов новый файл конфигурации, вам необходимо перезапустить SendMail:

killall -HUP sendmail 

В настоящее время получил распространение еще один способ рассылки спама, использующий не открытые почтовые сервера, а прямую доставку на сервер получателя (эта возможность есть в таких программах массовой рассылки, как Advanced Direct Remailer, Advanced Mass Sender). Такая рассылка обычно производится с использованием анонимного Dial-Up подключения, спамер покупает карточку доступа в интернет, рассылает множество писем и бесследно исчезает. Для борьбы с такого рода рассылками необходимо блокировать почту приходящую с адресов, принадлежащих непосредственно модемным пулам провайдеров доступа. Такого рода сервис в российском сегменте поддерживает проект Dial-Up Users List. Провайдеры, поддерживающие эту инициативу вносят в общую базу ip-адреса, выдаваемые при подключении к их модемным пулам.

Настройка Вашего сервера для использования сервиса dul производится аналогично ordb (что собственно и не удивительно, т.к. оба используют один и тот-же механизм dnsbl), в файл sendmail.mc добавьте:

Для SendMail 8.10 и выше:
FEATURE(`dnsbl', `dul.ru')dnl 

Для SendMail 8.9:
FEATURE(`rbl', `dul.ru')dnl 

Существует еще большое число подобных сервисов, о многих из них рассказано на сайте spamhaus.org, также там поддерживается система под названием The Spamhaus Block List.

Из Российских систем блокирования спама интересна DRBL - Distributed Real-time Blocking List, она использует не центральный сервер, а распределенную сеть блокирующих серверов, в которую могут вступить все желающие. К сожалению, система довольно сложна в установке и настройке.

Вспомогательные меры

Кроме подобных <радикальных> методов борьбы может быть полезным применение вспомогательных средств, таких как блокировка определенных почтовых программ и блокировка писем, не содержащих поля To: или содержащих в нем значение (Sendmail вставляет это значение, если в заголовках принимаемого письма нет поля To).

Блокировку писем рассылаемых с помощью программ массовой рассылки можно производить при помощи заголовка X-Mailer. Обычные письма содержат в этом заголовке название почтовой программы отправителя. Например или . Многие программы массовой рассылки позволяют произвольно задавать этот заголовок или просто не указывают его. Тем не менее в настройках по умолчанию у многих программ такой заголовок присутствует и многие начинающие спамеры его не меняют. Так что шанс выловить спам с помошью подобных фильтров существует. Как показывает практика обычно ловится Advanced Mass Sender.

Для фильтрации известных программ массовой рассылки на основании заголовка X-Mailer включите в ваш файл sendmail.mc в раздел LOCAL_RULES следующие правила:

# Настоящий Outlook имеет версию вида: 5.0.23123244
RMicrosoft Outlook Express 5.0 $#error $@ 5.7.1 $: "554 Spam (Microsoft Outlook Express 5.0)"
RVersion 5.0 $#error $@ 5.7.1 $: "554 Spam (Version 5.0)"

 
# Заблокируем все мейлеры с названием только из одного слова: 
Rnethack $@ OK 
RZ-Mail-SGI $@ OK 
RDipost $@ OK 
R$- $#error $@ 5.7.1 $: "554 Spam (one-word mailer)"

# Заблокируем письма с пустым заголовком
R$* $: <  > 
R< > $#error $@ 5.7.1 $: "554 Illegal header (empty header)" 
R$* $@ OK

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

Также можно блокировать письма с пустым заголовком и с пустым или неправильно сформированным полем Message-ID (оно должно быть в формате идентификатор@домен). Скорее всего они отправлены спамерами. Это можно сделать с помощью следующих правил:

Другие методы борьбы со спамом

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

1. Использование Procmail

Procmail - это гибкое и мощное средство фильтрации почты. Procmail сопобен фильтровать почту по большому числу правил и может справится и со спамом. Программа SpamBouncer использует возможности Procmail для блокировки писем по определенным правилам, а именно блокируются письма:

  • Содержащие адреса известных спамеров
  • Отправленные с хорошо известных спамерских сайтов, доменов и узлов
  • Отправленные с узлов тех провайдеров, которые зарекомендовали себя нежеланием разбираться с клиентами-спамерами.
  • Отправленные с использованием известных программ массовой рассылки, применяемых спамерами.
  • Содержащие строки в заголовке или теле, которые однозначно идентифицируют их как спам (уже известный программе)
  • Содержащие строки в заголовке или теле, которые свидетельствуют о том, что это письмо - результат деятельности почтового червя (например пресловутого Klez.h или Sircam)

2. Использование MilterAPI

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

Проект SpamAssassin Milter Plugin использует возможности пакета SpamAssassin для идентификации спама и MilterIP для его уничтожения.

SpamAssasin - система, созданная исключительно для идентификации спама, а его блокировка обычно осуществляется сторонними программами, например с помощью правил Procmail. SpamAssassin использует набор правил, а также черные списки DNSBL для максимально точного распознавания спамеров.

Заключение

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




Комментарии

 Ваш комментарий к данному материалу будет интересен нам и нашим читателям!



Последние статьи: Операционные системы / Linux /

Linux - начало
28-05-2010   

Пользователь, поставивший Linux тут же задается вопросом: “А что дальше?”. Сейчас я постараюсь ответить на этот вопрос. Итак, с первой задачей, установкой системы, вы видимо уже справились... подробнее

Кол. просмотров: общее - 3602 сегодня - 0

Консольные команды
28-05-2010   

Итак, Linux, операционная система, где консоль играет наиважнейшую роль. Есть масса людей, которые и вовсе не ставят Х-сервер и работают на черном экранчике с белыми буквами (на самом деле консоль можно модернизировать, так что и KDE позавидует:))... подробнее

Кол. просмотров: общее - 3481 сегодня - 0

Оффис в Linux
28-05-2010   

Оффисные приложения в операционной системе Linux развиты на сегодняшний день достаточно чтобы полностью заменить оные в Винде. И это не шутка! Офис в Linux ничуть не уступает своему конкуренту от Microsoft... подробнее

Кол. просмотров: общее - 3319 сегодня - 0

Мультимедиа возможности пингвина
28-05-2010   

Сегодня Linux уже не просто консоль – пингвин обладает на данный момент массой великолепных графических оболочек. При этом естественно и мультимедиа возможности Линукса тоже сильны... подробнее

Кол. просмотров: общее - 3484 сегодня - 0

Интернет и Linux
27-05-2010   

О как близки два этих понятия! Интернет и Линукс. Линукс великолепно подходит вам если вы хотите серфить глобальные просторы интренет. В “пингвине” можно найти все... подробнее

Кол. просмотров: общее - 3448 сегодня - 1



  WWW.COMPROG.RU - 2009-2012 | Designed and Powered by Zaipov Renat | Projects