На главную

Библиотека Интернет Индустрии I2R.ru

Rambler's Top100

Малобюджетные сайты...

Продвижение веб-сайта...

Контент и авторское право...

Забобрить эту страницу! Забобрить! Блог Библиотека Сайтостроительства на toodoo
  Поиск:   
Рассылки для занятых...»
I2R » И2Р Программы » Мир Linux » Программы и Работа в Linux

Popsneaker - еще одна линия обороны от спама

Введение

Можно потратить десятки часов на то, чтобы придумать красочные эпитеты, описывающие интеллектуальный и моральный уровень спамеров. Мысль неплохая, но можно потратить это время с большей пользой и настроить ПО, которое поможет сэкономить ваше красноречие для более важных дел. Наиболее часто упоминаемым инструментом для борьбы со спамом является procmail. На самом деле, методов и инструментов намного больше – это связано с тем, что блокировать письма можно (как минимум) в трех точках движения спама:

  • на SMTP-сервере;
  • на POP-сервере;
  • при приеме почты на локальную машину.

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

Итак, рассмотрим более конкретный случай. У меня есть почтовый ящик у провайдера, к которому я подключен. Кроме этого я открыл на бесплатных почтовых серверах несколько почтовых ящиков и чтобы не идти через пол-Интернета за почтой к ним я настроил пересылку писем на мой почтовый ящик. Провайдер такого сервиса, как настройка блокирования входящей почты не предоставляет, поэтому почту приходится фильтровать при приеме используя procmail.

Введение в procmail, примеры настройки .procmailrc, manы на русском по procmail вы найдете здесь.

Однако, у этого метода есть один недостаток: если вы в файле .procmailrc перенаправили в почту в /dev/null, то это не приведет к тому, что программа приема почты немедленно удалит это письмо и перейдет к следующему. Нет, просто она примет все письмо, но не будет его сохранять (вернее сохранит в «черной дыре» файловой системы Linux, устройстве /dev/null). Поэтому разумным будет следующий подход: перед приемом почты «причесать» свой почтовый ящик у провайдера и удалить те письма, которые подходят под черный список по следующим критериям:

  • размер письма;
  • информация, содержащаяся в заголовке письма.

И только после этого начать прием оставшейся почты и обработку ее procmailом. В качестве «расчески» рассмотрим работу программы popsneaker. Автор программы – Stefan Baehre [popsneaker at ixtools.de]. Версия программы на момент написания статьи была 0.6.0.

Сборка пакета

Для компиляции и работы пакета требуется библиотека Tcp4u. Она распространятется вместе с дистрибутивом Debian GNU/Linux 2.2. На сайте http://www.ixtools.de/ вы можете найти deb-пакеты и rpm-пакеты этой библиотеки, либо исходники:

пакеты для Debian:
runtime пакет
development пакет

пакеты для Red Hat:
runtime пакет
development пакет

Исходники пакета popsneaker вы можете взять здесь. Если же вы не хотите заниматься самостоятельной сборкой пакета, то можете воспользоваться пакетами с уже откомпилированной программой:
в тарболах
в формате deb
в формате rpm

Если вы решили откомпилировать программу, то напоминаю вам «отче наш» для сборки из «сырцов» (последняя команда под правами root):

 ./configure
 make
 make install

На момент написания статьи исходники версии 0.6.0, которые были выложены на сайте, содержали ошибку, которая не позволяла собрать пакет из исходников – в файлах заголовков log.h и scanner.h пропущена ссылка на файл заголовков string.h:

#include 

Автор извещен, обещал исправить.

Настройка

При старте popsneaker ищет информацию о настройках конфигурации в следующих файлах и использует данные из первого встреченного им файла:

 ~/.popsneakerrc
 /etc/popsneakerrc
 /usr/etc/popsneakerrc
 /usr/local/etc/popsneakerrc

В программе существует пять типов фильтра: maxsize, accept, assume, deny и dupcheck:

 - maxsize
 синтаксис: maxsize [опции] <размер>
 используется для контроля размера входящей почты,
 например, правило:
 maxsize 10240
 заставит popsneaker удалять любые письма,
 чей размер больше, чем 10 Кб.

 - accept
 синтаксис: accept [опции] "правила"
 используется для разрешения приема важной почты,
 удаление которой
 нежелательно, например, правило:
 accept "^From: .*my\.friend@isp\.com"
 заставит принимать почту от .

 - assume
 синтаксис: assume [опции] "правила"
 используется для разрешения приема почты,
 которая удовлетворяет
 всем правилам перечисленным для assume, например:
 assume "^Message-ID: .*<.+@.+\..+>"
 assume "^(to|cc): .* ((privat1@my-isp\.com) |(iam@work\.com) |(@mydomain\.net))"
 почта будет принята только в том, случае если Message-ID:
 содержит корректное значение и в полях To: или Cc: указан
 один из почтовых адресов:
 , ,  или
 <любой_адрес@mydomain.net>.
 Пример взят из файла example.popsneakerrc.

 - deny
 синтаксис: deny [опции] "правила"
 используется для удаления почты, свойства которой удовлетворяют
 правилам, например, согласно правилам:
 deny -silent "^From: .*@buyers\.com"
 deny -case -silent "^Subject: .*MONEY"
 почта, которая содержит в теме слово MONEY или
 обратный адрес содержит доменное имя buyers.com.

 - dupcheck
 синтаксис: dupcheck -strict
 dupcheck -relaxed
 это правило используется для удаления дубликатов почтовых сообщений.
 Ключ
 -strict заставляет проверять поле Message-ID: проверяемой почты,
 если встречается совпадение, то сообщение удаляется. Ключ "-relaxed"
 проверяет почту по другим критериям: размер, тема письма, отправитель.
 Со вторым ключом нужно быть осторожным, потому что остается небольшой
 риск того, что все три параметра совпадут. Это возможно в том случае, если
 ваш респондент вышлет вам письма по одной теме, которые окажутся
 одинакового размера.

Описание регулярных выражений, которые используются в правилах для accept, assume и deny вы можете найти в man по regex:
man 7 regex

Ключей, которые применяются в фильтрах всего четыре. Они могут использоваться вместе с accept, assume, deny:

 - case – делает выражения чувствительными к регистру
 встречаемых символов;

 - nocase – делает выражения нечувствительными к регистру
 встречаемых символов (используется по умолчанию);

 - verbouse – при удалении сообщения пишется информация
 о нем в лог-файл.

 - silent – при удалении сообщения никакой информации об этом
 в лог-файл не пишется.
 

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

 restrict "to:" "cc:" "from:" "subject:"
 restrict "list-id:" "message-id"

Обратите внимание на следующее: если вы применили ограничение фильтрации по полям заголовков сообщений, то не забудьте в объявлении restrict описать все поля, для которых вы написали правила accept, assume и deny, иначе они работать не будут.

Немного о принципе построения правил фильтрации. Принцип прост – если правило первым описано, то оно и выполняется. Если у вас есть письмо с темой содержащей слово «test» и вы пропишите в файле конфигурации вот такие строки:
accept "^Subject: .*test"
deny "^Subject: .*test"

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

Теперь об оставшихся параметрах, описываемых в procmailrc:

 - logfile
 синтаксис: logfile "путь к лог файлу"
 определяет путь к лог-файлу (не забудьте про права доступа к файлу):
 logfile "/var/log/popsneaker.log"

 - debuglevel
 синтаксис: debuglevel <уровень>
 определяет объем отладочной информации; 0 – минимальный,
 5 – максимальный, по умолчанию – 3:
 debuglevel 3

 - timeout
 синтаксис: timeout <секунды>
 период тайм-аута для сетевых соединений; 0 – отключен,
 по умолчанию 300 сек:
 timeout 300

 - connections
 синтаксис: connection <количество каналов>
 определяет количество одновременно открытых каналов с почтовыми
 серверами; 1 – по умолчанию:
 connections 2

 - testmode
 синтаксис: testmode on/off
 включает/выключает отладочный режим; по умолчанию – отладка
 выключена, иначе правила будут выполнят, результаты операций
 записываться в лог, но реально удаляться из почтового ящика
 ничего не будет:
 testmode on

 - account
 синтаксис: account [опции] "имя сервера" "логин" "пароль"
 описывает настройки для подключения к вашему почтовому серверу,
 поддерживает два протокола pop3 и apop; по умолчанию используется
 pop3:
 account -protocol pop3 "pop.mail.ru" "ru_classic" "********"

Popsneaker и fetchmail

Если вы забираете почту при помощи fetchmail, то вы можете воспользоваться опцией preconnect, описав ее в файле fetchmailrc (пример взят из документации по popsneaker):

 poll pop.isp.com
 proto POP3
 user ваш_логин
 password ваш_пароль
 is ваше_локальное_имя
 options fetchall
 preconnect '/usr/local/bin/popsneaker pop.isp.com'
 

Обратите внимание на опцию «fetchall». Она необходима, т.к. после завершения работы popsneaker, все сообщения в вашем почтовом ящике буду с пометкой «прочтено». Без этой опции fetchmail не примет ни одного сообщения.

И последнее: если вы захотите просто очистить свой почтовый ящик, то укажите из правил фильтрации только одно:
maxsize 0

Анонсы статей сайта Softerra

Александр Куприн
Softerra

Лучшие статьи раздела читайте в еженедельном сетевом журнале
"I2R Computer"
Подпишитесь на рассылку
"Мир Linux. И2Р"
Подписка на Subscribe.Ru
Другие разделы
Идеология
Программы
Linux против Microsoft
Установка и первые шаги
Практикум в Linux
Фольклор
Новое в разделе
FAQ по Linux
I2R-Журналы
I2R Business
I2R Web Creation
I2R Computer
рассылки библиотеки +
И2Р Программы
Всё о Windows
Программирование
Софт
Мир Linux
Галерея Попова
Каталог I2R
Партнеры
Amicus Studio
NunDesign
Горящие путевки, идеи путешествийMegaTIS.Ru

2000-2008 г.   
Все авторские права соблюдены.
Rambler's Top100