Базы данныхИнтернетКомпьютерыОперационные системыПрограммированиеСетиСвязьРазное
Поиск по сайту:
Подпишись на рассылку:

Назад в раздел

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

div.main {margin-left: 20pt; margin-right: 20pt}Popsneaker - еще одна линия обороны от спама
Автор: Александр Куприн, ru_classic@mail.ru
Опубликовано: 30.04.2002
Оригинал: http://www.softerra.ru/freeos/17696/

Введение

Можно потратить десятки часов на то, чтобы придумать красочные эпитеты, описывающие интеллектуальный и моральный уровень спамеров. Мысль неплохая, но можно потратить это время с большей пользой и настроить ПО, которое поможет сэкономить ваше красноречие для более важных дел. Наиболее часто упоминаемым инструментом для борьбы со спамом является 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




  • Главная
  • Новости
  • Новинки
  • Скрипты
  • Форум
  • Ссылки
  • О сайте




  • Emanual.ru – это сайт, посвящённый всем значимым событиям в IT-индустрии: новейшие разработки, уникальные методы и горячие новости! Тонны информации, полезной как для обычных пользователей, так и для самых продвинутых программистов! Интересные обсуждения на актуальные темы и огромная аудитория, которая может быть интересна широкому кругу рекламодателей. У нас вы узнаете всё о компьютерах, базах данных, операционных системах, сетях, инфраструктурах, связях и программированию на популярных языках!
     Copyright © 2001-2024
    Реклама на сайте