Помощь в написании скрипта/прави для фильтрации спама

EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Ghost_of_Net
рядовой
Сообщения: 18
Зарегистрирован: 2006-12-05 14:18:51

Помощь в написании скрипта/прави для фильтрации спама

Непрочитанное сообщение Ghost_of_Net » 2007-10-10 14:33:03

Доброго времени суток.

Обратил внимание на то что примерно 40% проходящего ко мне спама ломится провайдерских из сетей с динамическими ИП. То есть в HELO такие узлы подставляют что-то типа 083-045-217-34.board.corbina.ru или альтернативных.
Посему прошу оказать мне помощь в написании правила или скрипта в exim.
Алгоритм вижу таким:
1. Необходимо найти все циферные значения в имени узла, невзирая на разделители, и загнать их, например, в массив.
Примеры:
083-045-217-34.board.corbina.ru Массив: 083,045,217,34
083.045.217.34.board.corbina.ru Массив: 083,045,217,34
02.083-045-217-34.board034.corbina.ru Массив: 02,083,045,217,34,34
2. Необходимо убрать нули
3. Найти несоответствия ИП с массивом полностью или частично. Например для ИП 83.45.217.34 сравнение с массивом 2,83,45,217,34,34 должно вернуть True.
Ну и соотвественно правило для вызова из Exim.

Буду очень благодарен за оказанную помощь :oops:

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2460 рублей (8 CPU, 8Gb RAM, 2x500Gb HDD, RAID 3ware 9750):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Re: Помощь в написании скрипта/прави для фильтрации спама

Непрочитанное сообщение dikens3 » 2007-10-10 15:06:39

А можно заблокировать к примеру все IP-Адреса имеющие у себя слово board.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
Morty
ст. лейтенант
Сообщения: 1370
Зарегистрирован: 2007-07-17 23:25:12

Re: Помощь в написании скрипта/прави для фильтрации спама

Непрочитанное сообщение Morty » 2007-10-10 17:08:26

вот это простое но оно мне нравиться -))
(добавил его т.к. здесь http://www.mxtoolbox.com/index.aspx без этого правила говорили что я открытый релей)

Код: Выделить всё

  deny    condition     = ${if !eq{$sender_helo_name}{$sender_host_name}{yes}{no}}
          hosts         = !+relay_from_hosts : *
          !senders      = :
          message       = "We are not open relay"
а этим блочим то что не нравиться (добавляешь по надобности что хочешь)
мож поменять тут на $sender_helo_name и сделать подобную блокировку
с отдельным файлом

Код: Выделить всё

deny    condition       = ${lookup{$sender_host_name} \
                        wildlsearch{/usr/local/etc/exim/dialup_hosts} \
                        {yes}{no}}
        hosts           = !+relay_from_hosts : *
        message         = "Your domain is blocked !! "
файл /usr/local/etc/exim/dialup_hosts

Код: Выделить всё

^\.*dsl\.*
^\.*dialup\.*
^\.*dialin\.*
^\.*pool\.*
^\.*peer\.*
^\.*dhcp\.*
^\.*dynamic\.*
^\.*cable\.*
^\.*ppp\.*
^\.*static\.*

#
^\d+[-\.]\d+[-\.]\d+[-\.]
^\d{5,}

#
^.*([1-9]+)\\-([0-9]+)\\-([0-9]+)\\-([1-9]+).*
^.*([1-9]+).([0-9]+).([0-9]+).([1-9]+).*
^.*pool.*
^.*dial.*
^.*dyn.*
^.*ppp.*
^.*fbx.*
^.*cable.*
^.*dsl.*
^.*dynamic.*
^.*fibertel.*
^.*broadband.*
^.*hsd1.*
^.*telecable.*
^.*dhcp.*
^.*kabel.*
^.*client.*
^.*in-addr.*
^.*user.*
^.*cpe.*
^.*tampabay.*
^.*phx1.*
^.*static.*
^.*rev.*
^.*speedy.*
^.*genericrev.*
^.*cdma.*
^.*catv.*
^.*customer.*

# optional
^.*rima-tde\\.net
^.*comcast\\.net
^.*pppoe\\.mtu-net\\.ru
^.*proxad\\.net
^.*bezeqint\\.net
^.*arcor-ip\\.net
^.*novis\\.pt
^.*rr\\.com
^.*verizon\\.net
^.*chello\\.nl
^.*ono\\.com
^.*t-dialin\\.net
^.*telenet\\.be
^.*virtua.com\\.br
^.*veloxzone.com\\.br
^.*tpnet\\.pl
^.*com\\.au
^.*asianet\\.co\\.th
^.*interbusiness\\.it
^.*webandnetworksolutions\\.com
^.*xtra.co\\.nz
^.*atlanticbb\\.net
^.*sinor\\.ru
^.*tiscali\\.fr
^.*wanadoo\\.fr
^.*orange\\.fr
^.*pacbell\\.net
^.*prodigy\\.net
^.*charter\\.com
^.*barak-online\\.net
^.*qwest\\.net
^.*cm\\.vtr\\.net
^.*link\\.com\\.eg
^.*t-ipconnect\\.de
^.*mindspring\\.com
^.*telesp\\.net\\.br
^.*home\\.nl
^.*cable\\.ntl\\.com
^.*netvision\\.net\\.il
^.*btcentralplus\\.com
^.*surewest\\.net
^.*anteldata\\.net\\.uy
^.*mm\\.pl
^.*euskaltel\\.es
^.*satnet\\.net
^.*kabelbw\\.de
^.*skylink\\.ru
^.*consumerpcinc\\.com

Аватара пользователя
Morty
ст. лейтенант
Сообщения: 1370
Зарегистрирован: 2007-07-17 23:25:12

Re: Помощь в написании скрипта/прави для фильтрации спама

Непрочитанное сообщение Morty » 2007-10-10 17:12:16

чтото я погорячился наверно -))
вопшем это было для конфига экзима

Ghost_of_Net
рядовой
Сообщения: 18
Зарегистрирован: 2006-12-05 14:18:51

Re: Помощь в написании скрипта/прави для фильтрации спама

Непрочитанное сообщение Ghost_of_Net » 2007-10-10 17:39:42

dikens3 писал(а):А можно заблокировать к примеру все IP-Адреса имеющие у себя слово board.
Не пойдет, "board" приведено только для примера - в реальности зависимости нет.

To Morty
С отдельным файлом конечно интересно, но скрипт более универсален, да и позволяет исключить проблем с отлупом нормального домена в случае совпадения части имени из словаря.

shlash
проходил мимо

Re: Помощь в написании скрипта/прави для фильтрации спама

Непрочитанное сообщение shlash » 2007-10-14 15:13:43

Код: Выделить всё

begin acl

acl_check_connect:

 accept
  hosts = 127.0.0.1 : localhost : +relay_from_hosts

 deny
  message   = "RDNS lookup failed, noname hosts not permitted ($sender_host_address)."
  condition = ${if eq {$sender_host_name}{}{yes}{no}}

 deny
  message   = "The name of your host contains your IP address ($sender_host_name). Not permitted."
  condition = ${if match{$sender_host_name}{$sender_host_address}{yes}{no}}

 deny
  message   = "IP address in hostname ($sender_host_name). Not permitted."
  condition = ${if match{$sender_host_name}{\N\d+[\-\.]\d+\N}{yes}{no}}

 deny
  message   = "Dynamic, static, adsl, dialup and etc. home users ($sender_host_name) not permitted."
  condition = ${if match{$sender_host_name} \
{cdma|dyn|static|dial|pool|peer|dhcp|ppp|broad|user|cable|dsl|cust|port|host|range|data|access} \
               {yes}{no}}
 deny
  message   = "I simply do not like a name of your host ($sender_host_name)."
  condition = ${if or { \
                      {match{$sender_host_name}{\N([a-z]+\d+){2,}\N}} \
                      {match{$sender_host_name}{\N\d{4,}\N}} \
                     } {yes}{no}}

 deny
  message  = "Geographical domains are unacceptable for me ($sender_host_name)."
  hosts    = wildlsearch;/usr/local/etc/exim/reject_tld

 deny
  message  = "Spam blocked see: http://www.spamcop.net/w3m?action=checkblock&ip=$sender_host_address"
  dnslists = bl.spamcop.net

 deny
  message  = "Rejected because $sender_host_address is in a black list at $dnslist_domain - $dnslist_text"
  dnslists = list.dsbl.org

 deny
  message  = "Rejected because $sender_host_address is in a black list at $dnslist_domain - $dnslist_text"
  dnslists = dnsbl.njabl.org

 accept

acl_check_helo:
До проверки HELO они не доживают

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Re: Помощь в написании скрипта/прави для фильтрации спама

Непрочитанное сообщение dikens3 » 2007-10-14 15:37:26

До проверки HELO они не доживают
Не очень разумный подход, у Вас почты очень мало очевидно.

У меня есть динамический список E-Mail получателей, от которых нужно принимать письма. Очень удобно. В случае чего-либо мои пользователи просто отправляют письмо кривому почтовику, и назад ответы приходят без проблем.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

shlash
проходил мимо

Re: Помощь в написании скрипта/прави для фильтрации спама

Непрочитанное сообщение shlash » 2007-10-21 12:07:46

Этот набор правил у меня дома. Почты действительно очень мало - с работы и через бесплатные почтовые службы от знакомых. Зато дятлов, которые и привели, постепенно, к появлению этого набора правил, даже слишком много.
На работе такое не пойдёт :( Поразительно, насколько много почтовых систем настроены непойми как, с различными нарушениями.

P.S. Моё собственное имя, назначенное провайдером, попадает под одно из этих правил :wink:

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35066
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Помощь в написании скрипта/прави для фильтрации спама

Непрочитанное сообщение Alex Keda » 2007-10-21 12:08:58

собственно поэтому я давно не рубаю по правилам, а считаю очки и автоматические white-листы
Убей их всех! Бог потом рассортирует...

Valentaim
проходил мимо

Re: Помощь в написании скрипта/прави для фильтрации спама

Непрочитанное сообщение Valentaim » 2007-10-23 14:20:43

НАстроил антиспам-защиту по правилам и по блэклистам. но столкнулся с одной проблемой - письма от нормальных клиентов режуться. т.к. их серваки занесены в блэк-листы... Что посоветуете с этим делать?

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Re: Помощь в написании скрипта/прави для фильтрации спама

Непрочитанное сообщение dikens3 » 2007-10-23 14:38:09

Белый список. А что ещё?
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Valentaim
проходил мимо

Re: Помощь в написании скрипта/прави для фильтрации спама

Непрочитанное сообщение Valentaim » 2007-10-24 9:54:31

А куда запихнуть проверку на белый лист. есть у меня например файлик White.txt (в нем забиты адресса клиентов), в какое правило запихнуть, чтобы Exim сначало проверил отправителя по этому списку и если там находил его, то не применял больше никаких правил, а доставлял адрессату?