InfoCity
InfoCity - виртуальный город компьютерной документации
Реклама на сайте



https://f-service.su стоимость фискального накопителя. Какой фискальный накопитель.



Размещение сквозной ссылки

 

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. На сайте 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

Источник: http://www.softerra.ru/freeos/17696/


Реклама на InfoCity

Яндекс цитирования



Финансы: форекс для тебя








1999-2009 © InfoCity.kiev.ua