The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Борьба со спамом на почтовых серверах."
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Скрипты, настройки и файлы конфигурации. (Public)
Изначальное сообщение [Проследить за развитием треда]

"Борьба со спамом на почтовых серверах."  
Сообщение от Camb email on 19-Фев-03, 14:47 

Так понимаю, что спам, обычно отправляется с одноразовых ip (из диапазона провов). Так, можно запрещать, общение с такими ip-ями, для которых нет PTR в dns записи (reject_unknown_client) но это приводит к тому, что некоторые "номальные" отправители отпинываются.. пришлось убрать...
(а может стоило определенные "плохие" но "нужные" ip сделать типа trusted)

Или вот: (извне) MAIL FROM:some@[192.168.0.1] - проходит :((
...принимает если укзать MAIL FROM:some@[213.24.121.145]  (хотя при этом этот ip реально опущен ...)

то ли сложные филтры писать? (bahs, rehexp... etc)

В общем, уважаемый All, поделитесь, пожалуйста, как бороться... (еще раз - у меня postfix)

Спасибо за внимание!

С уважением, Camb.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "RE: Борьба со спамом на почтовых серверах."  
Сообщение от lavr email on 19-Фев-03, 14:48 
Postfix + amavis + spamassasin

http://www.ordb.org/faq/#usage_postfix
http://spam.abuse.net/adminhelp/
http://mail-abuse.org/rbl/usage.html

создаешь в своей зоне rbl,dnsbl,dul и тд и тп все что хочешь и
можешь заносить туда свою клиентуру и скачивать зоны с внешних free-rbl
или dnsbl серверов, пишешь нужные автоматы и пользуешь свой dns в
maps_rbl_domains
В своих картах правишь все как хочешь.

PS. Без PTR я обычно почту не принимаю, разве что если приходит
официальный запрос на разрешение пропускать с такого-то mx без реверса

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "RE: Борьба со спамом на почтовых серверах."  
Сообщение от Igor on 19-Фев-03, 14:49 
Извините за очень длинное письмо, но тема уж больно интересная.
---
Я сам сейчас сейчас пробую разные подходы для решения этой проблемы.
Выработать универсальные рекомендации - сложно,
поскольку специфика работы разных организаций/пользователей (а также цели, политика и т.д.) -
разные. Да и характер спама, приходящего в разные места - разный.
То что можно сделать в одном случае - не пройдёт в другом.

Например, на одном полюсе такая ситуация -
есть контора, кот. использует email для деловой переписки
внутри фирмы и для общения с узким кругом партнёров -- в этом случае можно
пропускать только письма с "известных" адресов (email, IP etc.) и резать
все остальные.

На другом полюсе такая --
приёмная комиссия университета или PR - отдел - они по роду
работы должны держать свои адреса "открытыми для всех" - даже в
рекламной информации может быть что-то интересное или полезное.

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


Если это, по каким-то причинам не возможно, приходится использовать смешанные
стратегии борьбы со спамом:

1) фильтрация по ip, доменам и т.д - статический список или динамический,
кот. будет автоматически обновляться из Internet (напр. RBL другие списки на основе DNS) --
но в моём случае это работает частично - я поддерживаю и свой статический список адресов и
шаблонов адресов и доменов, с которых регулярно приходят "левые" письма, но использовать
публичные списки спаммеров из Internet не могу, поскольку в них, как правило, "светятся" все
публичные mail - сервера типа hotmail.com, а мы получаем много писем с таких адресов.

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

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

Реализовать это можно при помощи напр. tmda (http://tmda.sourceforge.net/)
или qconfirm  (http://smarden.org/qconfirm/).


2) использовать всякие характерные черты спаммерских писем для его определения и блокирования -
например использовать tarpitting и т.д. (imho мало эффективно)

3) использовать напр. регулярные выражения для анализа письма целиком (мало эффективно) -
лучше использовать пакет, который может обучаться/настраиваться, например на основе
нейронных сетей (к сожалению, ничего такого готового не нашёл, но читал, что люди работают,
и может быть, что-то уже и есть),
или на основе статистического анализа - алгоритм Баеса (автор идеи Paul Graham, http://www.paulgraham.com/spam.html -
стоит прочитать - очень интересно).
Я поставил такой у себя, пока в тестовом режиме, http://sourceforge.net/projects/bmf/.
Проблема с такими средствами в том, что их нужно обучать и контролировать, т.е. они после анализа
помечают письмо как спам или как не-спам и далее с ним что-то делают. Но они могут делать ошибки и
им надо указывать, что такое-то письмо, помеченное как спам, спамом не является (или наоборот),
что-бы этот пакет изменил свои настройки (обучение).
Проблема в том, что я не могу подстраивать bmf для других пользователей
т.к. не могу просматривать чужую почту,
поэтому установить такую систему на все почтовые ящики сервера сложно.
В идеале каждый должен работать с таким фильтром сам и обучать его сам -
но для этого нужно обучать пользователей, а это сложно, а иногда и не возможно.

Вообще хороший обзор пакетов для борьбы со спамом и источники информации
можно найти на http://www.qmail.org/top.html#spam

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

18. "RE: Борьба со спамом на почтовых серверах."  
Сообщение от Gemini email on 03-Дек-03, 16:17 
> Извините за очень длинное письмо, но тема уж больно интересная.
>...

Что Вы посоветуете в такой ситуации: письма приходят пользователям но с другими адресами.
Например, на gemini@savatex.kiev.ua приходят письма адресованные Director@savatex.kiev.ua, причем не только Director...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "RE: Борьба со спамом на почтовых серверах."  
Сообщение от mc email on 19-Фев-03, 15:07 
Ниже выборка сообщений из форума, в которых lavr делится своими рекомендациями по борьбе со спамом:

http://www.opennet.me/openforum/vsluhforumID1/17285.html#2
http://www.opennet.me/openforum/vsluhforumID1/21911.html
http://www.opennet.me/openforum/vsluhforumID1/19124.html#1
http://www.opennet.me/openforum/vsluhforumID1/21911.html#3
http://www.opennet.me/openforum//vsluhforumID1/26405.html
http://www.opennet.me/openforum/vsluhforumID1/25976.html

http://www.opennet.me/cgi-bin/opennet/ks.cgi?mask=spam+relay&tsort=1&dir=19&zoom=forum

------------------------------
Несколько выборок по блокирвке спама в sendmail от lavr:

http://unix1.jinr.ru/~lavr/webmail/sendmail_common.mc

DNSBL, RHSBL если 8.12.x (extended dnsbl)
или создай на основе своего DNS
Все ссылки и указания в sendmail_common.mc, там
найдешь русский проект, почитай и сделай как указано, про named-based метод вместо DNSBL тоже
по ссылкам описано как делать

мне пока хватает:
dnl ORDB Anti-Spam Database http://www.ordb.org/
dnl FEATURE('dnsbl', 'relays.ordb.org', 'Spam bloked - see http://ordb.org/')dnl
FEATURE('dnsbl', 'relays.ordb.org', 'Spam bloked - see http://ordb.org/')dnl
dnl ORBZ Anti-Spam Database http://orbz.org/sysadmin-lightside.php
FEATURE(dnsbl,'inputs.orbz.org', 'Input Spam bloked - see http://orbz.org/')dnl
dnl uncomment below for filter output mail/lavr
dnl FEATURE(dnsbl,'outputs.orbz.org', 'Output Spam bloked - see http://orbz.org/')dnl
dnl SPAMCOP - http://spamcop.net/bl.shtml
FEATURE(dnsbl,'bl.spamcop.net', 'Spam blocked - see http://spamcop.net/bl.shtml?$&{client_addr}')dnl
dnl DNSBL - http://www.dnsbl.org/ - DNSbl
FEATURE(dnsbl,'ex.dnsbl.org', 'Spam bloked - see http://www.dnsbl.org/')dnl
dnl OSIRUSOFT - http://relays.osirusoft.com/ - union anti-spam databases dnl Five in One, see below
FEATURE(dnsbl, 'relays.osirusoft.com', 'Spam bloked - see http://relays.osirusoft.com/')dnl


...
define('confMAX_HEADERS_LENGTH',16384)
define('confMAX_MIME_HEADER_LENGTH', '256/128')
define('confNO_RCPT_ACTION', 'add-to-undisclosed')
define('confPRIVACY_FLAGS', 'authwarnings,noexpn,novrfy,noetrn')
...
define('confMAX_RCPTS_PER_MESSAGE', '25') - максимальное число получателей, поставь сколько считаешь нужным, например 10
...

MAX_HEADERS и MAX_MIME - чтобы в через заголовки не засирали спамом


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "RE: Борьба со спамом на почтовых серверах."  
Сообщение от Camb email on 19-Фев-03, 15:20 
а как на счет MTA Postfix?

пока что то не попдались статьи...

спасибо за любую помощь...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "RE: Борьба со спамом на почтовых серверах."  
Сообщение от Maxim Chirkov email on 20-Фев-03, 11:02 
>а как на счет MTA Postfix?
>пока что то не попдались статьи...

http://www.opennet.me/cgi-bin/opennet/ks.cgi?mask=postfix+spam

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "RE: Борьба со спамом на почтовых серверах."  
Сообщение от Serge email on 27-Фев-03, 16:59 
А что делать в Sendmail 8.9.3?
Здесь такое похоже не проходит:

FEATURE('rbl','relays.ordb.org')dnl
FEATURE('rbl','inputs.orbz.org')dnl

В полученном .cf-файле присутствует только последнее правило, а все предыдущие rbl'ы теряются.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Мои замечания..."  
Сообщение от Dimka on 02-Мрт-03, 03:27 
   Речь идет о фильтрации на стороне провайдера.

1. Есть большое количество спорных хостов, которые для одного пользователя могут быть полезны, а для другого вредны.  Например я без каких либо разбирательств немедленно отправляю в REJECT весь домен любую рассылку! В том числе spylog который просто разослал инфу тем кто зарегистрировал у них счетчики, дебильных менеджеров softline.ru, и т.д.  Другим клиентам письма с этих адресов могут быть полезны...

Вывод: нужен ~/access

Не встречал ли кто код для .cf заставляющий сендмайла обрабатывать персональные access в home-каталоге юзверя?
То есть, получил RCPT TO, отрезольвил по virtusertable и aliases, посмотрел общий access и потом еще ~/access
Было бы очень полезно...
procmail просьба не вспоминать, письма принимаются и уничтожаются
создавая ненужный траффик :-(  Отшибать надо еще при приеме заголовка.

2. Замечено что на некоторых письмах подпадающих под REJECT по получателю или под user unknown  - sendmail пишет в лог size=некий_размер...
Это что, посылка DATA перед RCPT TO?
Можно пофиксить что бы при попытке послать DATA перед RCPT TO тут же отфудболивало не принимая лишний траффик?
На кривые MTA мне плевать.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "RE: Мои замечания..."  
Сообщение от uldus on 02-Мрт-03, 22:51 

>1. Есть большое количество спорных хостов, которые для одного пользователя могут быть
>полезны, а для другого вредны.  

Мне кажется, что на самом деле принять решения гораздо проще: блокируем только если поступила жалоба на приходи инфомрации на которую пользователь явно не подписывался собственными руками, или подписался и не может отписаться, spylog к таковым отнесен быть не может. Плюс желательно подождать пока придет ответ на abuse@,  если ответа нет - заносим IP (или всю подчиненную этому abuse@ сеть) в список блокировки.


>Не встречал ли кто код для .cf заставляющий сендмайла обрабатывать персональные access
>в home-каталоге юзверя?

Собственными силами пишется milter фильтр смотрящий на наличие ~/.access или проще блокировать через procmail. Для экономии трафика, нужно рассматривать факт блокировки на этапе до посылки DATA, т.е. патчить sendmail.


>procmail просьба не вспоминать, письма принимаются и уничтожаются
>создавая ненужный траффик :-(  Отшибать надо еще при приеме заголовка.

Вот-вот, остается патчить sendmail или смотреть в сторону фильтров в postfix.


>2. Замечено что на некоторых письмах подпадающих под REJECT по получателю или
>под user unknown  - sendmail пишет в лог size=некий_размер...
>Это что, посылка DATA перед RCPT TO?
>Можно пофиксить что бы при попытке послать DATA перед RCPT TO тут
>же отфудболивало не принимая лишний траффик?

DATA никакой MTA без предварительного RCPT TO принимать не будет, могут просто мусора накидать или начать перебирать RCPT TO.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "RE: Мои замечания..."  
Сообщение от Dimka on 04-Мрт-03, 18:06 
>DATA никакой MTA без предварительного RCPT TO принимать не будет, могут просто
>мусора накидать или начать перебирать RCPT TO.

А это?  Или в данном случае в лог попадает не фактическая длина тела письма, а то что было предъявлено в SIZE HELO-сессии?

Feb 28 09:37:59 people sendmail[28506]: h1S7bp6U028506: <btrade@people.dn.ua>... User unknown
Feb 28 09:38:00 people sendmail[28506]: h1S7bp6U028506: from=<galina@nd.ru>, size=158144,
class=0, nrcpts=0, proto=ESMTP, daemon=MTA, relay=[62.141.70.170]

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "RE: Мои замечания..."  
Сообщение от uldus on 05-Мрт-03, 10:38 
>А это?  Или в данном случае в лог попадает не фактическая
>длина тела письма, а то что было предъявлено в SIZE HELO-сессии?

Приведи все сообщения с id h1S7bp6U028506, самое вероятное, что письмо было сразу нескольким локальным пользователям и один из них "User unknown". Ты уверен, что отлуп происходит до DATA ? Похоже что DATA проходит и, уже закачавшись, блокируется фильтром, в size по идее должен быть реальный размер.


[ul@ mority]# telnet themail.ru 25
Trying 195.58.55.244...
Connected to themail.ru.
Escape character is '^]'.
220 bluehosting.net ESMTP Sendmail 8.11.1/8.11.1; Wed, 5 Mar 2003 10:28:28 +0300 (MSK)
HELO test
250 bluehosting.net Hello mority [192.168.1.16], pleased to meet you
MAIL FROM: test@mail.ru
250 Ok
RCPT TO: test1234333@themail.ru
550 <test1234333@themail.ru>: User unknown
DATA
554 Error: no valid recipients

В логах только reject, без size=, размер будет только в случае прохождения хотябы одного RCPT TO

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

11. "RE: Мои замечания..."  
Сообщение от Dmitry on 06-Мрт-03, 09:28 
>Приведи все сообщения с id h1S7bp6U028506, самое вероятное, что письмо было сразу нескольким локальным пользователям и один из них "User unknown".

Проверил несколько случаев, две строчки как в примере, получатель один.
То есть ситуация стабильна, в одних случаях size=0, в других некое число.

> Ты уверен, что отлуп происходит до DATA ? Похоже что DATA проходит и,
> уже закачавшись, блокируется фильтром, в size по идее должен
> быть реальный размер.

Влез телнетом, DATA перед RCPT TO не принимает, после неверного RCPT TO
тут же об этом говорит и DATA не принимает.
Загадка...
Сниффер что ли вешать?

Кстати, узрел еще одну интересную особенность...
При ответе на EHLO (протокол ESMTP) MTA в том числе говорит
250-SIZE xxx
где xxx - максимальный размер письма в байтах задефайненый в .cf
Какого спрашивается черта, писатели почтовых клиентов не пользуют эту фичу?  Любимый Зе-мыш (естественно безуспешно) пытается вгоняет на релай письма в десятки метров длинной не смотря на ограничение :-(

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

12. "RE: Мои замечания..."  
Сообщение от uldus on 06-Мрт-03, 09:46 
>Влез телнетом, DATA перед RCPT TO не принимает, после неверного RCPT TO
>тут же об этом говорит и DATA не принимает.
>Загадка...
>Сниффер что ли вешать?

Судя по всему это самый простой способ определить в чем кроется загвоздка.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

13. "RE: Мои замечания..."  
Сообщение от Dmitry on 07-Мрт-03, 00:32 
Извиняюсь, это понты, вот как оно происходит:

EHLO people.dn.ua
250-people.dn.ua Hello localhost [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE 3000000
250-DSN
250-ETRN
250-DELIVERBY
250 HELP
MAIL FROM:<root@localhost> SIZE=5555
250 2.1.0 <root@localhost>... Sender ok
RCPT TO: ffff@people.dn.ua
550 5.1.1 ffff@people.dn.ua... User unknown
QUIT
221 2.0.0 people.dn.ua closing connection

Mar  6 23:22:36 people sendmail[96956]: h26LLkKS096956: from=<root@localhost>, size=5555,
class=0, nrcpts=0, proto=ESMTP, daemon=MTA, relay=localhost [127.0.0.1]

Как я и предполагал, sendmail в этом случае пишет в лог не фактическую
длину, а задекларированную удаленным MTA в MAIL FROM

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

14. "RE: Мои замечания..."  
Сообщение от uldus on 07-Мрт-03, 11:16 
>Как я и предполагал, sendmail в этом случае пишет в лог не
>фактическую длину, а задекларированную удаленным MTA в MAIL FROM

Что я могу сказать, еще одно подтверждение, что не зря я уже 4 года как полностью избавился от sendmail на своих почтовых серврах.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

15. "Фильтрить пробелы в sendmail.cf?"  
Сообщение от Dmitry on 17-Мрт-03, 08:50 
   Помогите правильно записать в sendmail.cf проверку темы письма!
Нужно режектить письма у которых в Subject: есть несколько пробелов подряд, но если в приведенном ниже примере xxx заменить на три пробела - sendmail отфутболивает письма содержащие в теме хотя бы один пробел :-(

LOCAL_RULESETS
HSubject: $>CheckSubject
SCheckSubject
R$*xxx$* $#error $@ 5.7.1 $: "554 Antispam policy!"

Появился новый спам, рассылается с разных IP-шников в разных сетях (дешевый ADSL за бугром), адрес отправителя всегда разный в формате случайный_набор_букв@реальный.домен, контактная информация содержит только телефоны (в Москве).  Единственный способ опознания - в конце темы несколько пробелов подряд, и за ними несколько случайных символов.
Задолбали уже! :-(

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

17. "Фильтрить пробелы в sendmail.cf?"  
Сообщение от OffJustOff email on 02-Май-03, 00:05 
>   Помогите правильно записать в sendmail.cf проверку темы письма!

Kparse_subj regex -a<SPAM> [ ]{5,}[a-zA-Z0-9]+$

HSubject: $>+CheckSubject

SCheckSubject
R$*                     $: $(parse_subj $1 $)
R<SPAM>         $#error $@ 5.7.1 $: "554 Antispam policy!"

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

16. "RE: Мои замечания..."  
Сообщение от Camb email on 02-Апр-03, 19:08 
>>Как я и предполагал, sendmail в этом случае пишет в лог не
>>фактическую длину, а задекларированную удаленным MTA в MAIL FROM
>
>Что я могу сказать, еще одно подтверждение, что не зря я уже
>4 года как полностью избавился от sendmail на своих почтовых серврах.
>

пару вопросов:
- как добавить friend domains в постфикс?
- какие rbl ты используешь?

Спасибо!

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

19. "MAIL FROM: claims to be us ?"  
Сообщение от Dmitry (??) on 12-Июл-04, 00:59 
sendmail 8.12.11 принимает почту от левых хостов (не перечисленных как RELAY в access), которые предъявляют мне в MAIL FROM: мой же домен!
То есть:
MAIL FROM: <мой_юзверь@мой_домен>
RCPT TO: <мой_юзверь@мой_домен>
По моему это безобразие!
Чем бы побороть?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

21. "Не пашет $ в regex ?"  
Сообщение от Dmitry (??) on 28-Июл-04, 16:38 
Что то не пойму,
LOCAL_CONFIG

Kdsl7                   regex -a@MATCH test\.people\.dn\.ua
так работает,

Kdsl7                   regex -a@MATCH test\.people\.dn\.ua$
а так правило не срабатывает :-(
Где грабли?
Как в данном случае правильно указать конец строки в regex($)?

дальше написано
LOCAL_RULESETS
SLocal_check_relay
R$*                     $: < $&{client_name} >
R$*                     $: $(dsl7 $1 $)
R@MATCH                 $#error $@ 5.7.1 $: "554 test"

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

22. "(Postfix)  Как с помощью smbclient сообщить о новом письме"  
Сообщение от _Timur (ok) on 29-Июл-04, 15:47 
На сервере (slackware 9.1) установлен Postfix. На этом же сервере стоит Samba. Что нужно изменить в настройках Postfix, чтобы при поступлении нового письма он смотрел в файл, где имеется соответствие почтового адреса получателя и NetBios имени Windows-машины, и  выполнялась например команда:
   echo "Пришла почта" | smbclient -M "NetBios имя Windows-машины"
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

23. "Подскажите как сделать исключение для адресов попадпющих в ф..."  
Сообщение от Eraser email on 28-Май-05, 02:17 
MTA = sendmail
в конфиге прописано:

FEATURE(dnsbl, `blackholes.five-ten-sg.com',`550 I not recive SPAM!!!-1')dnl
FEATURE(dnsbl, `cbl.abuseat.org',`550 I not recive SPAM!!!-2')dnl

несколько адресов распознаются как спамерские.

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

Спасибо!

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

24. "Борьба со спамом на почтовых серверах."  
Сообщение от jdspb email on 18-Июл-05, 19:11 
Месяц назад я попробовал новый почтовик XMail v 1.21 /все в одном флаконе, smtp, pop3, imap и т.д. http://www.xmailserver.com /.
Заработало через 5 мин. после подстройки конфига, все достаточно ясно и прозрачно. Для машины выделил несколько доменов, на которые из-за особенностей их владельцев сыпалось довольно много спама /точнее - только спам/.
Основной сервер работает с MTA sendmail и его пока трогать боязно, т.к. об XMail практически нет никаких отзывов, а которые есть, часто путают с одноименной программой под X11-unix. Так вот - спам полился широкой речкой...
Идеи, которые заложены в статье http://www.anrb.ru/linux/regex.html были реализованы уже давно, помогали конечно, но недостаточно.

В xmail есть возможность обрабатывать письма на стадии соединения  - делается это просто: название фильтра включается в файл filters.pre-data.tab, в котором указывается внешняя программа обработчик.

Короче, взяв в руки логи, за пару дней написал собственный фильтр-обработчик писем. За основу был взят тезис, что нормальный почтовый сервер должен иметь нормальные атрибуты.

а теперь bash и регекспы...конспективно

Фильтру на вход передаются два параметра File=$1 и RemoteAddress=$2

1. Отсекаем локальные адреса
if [ "$RemoteAddress" == "127.0.0.1" ]; then exit; fi

2. Whitelist - список своих левых адресов /правые и так проходят нормально :-) /
Found=`cat /var/XMailRoot/filters/whitelist.ip|grep $RemoteAddress|wc -l|sed -e 's/ //g'`

3. Определяем обратную запись
Relay=`dig -x $RemoteAddress | grep PTR |grep in-addr.arpa.| awk  '{print $5}'`

--- a теперь начинаем резать ---

4. Считаем минусы в имени: 2-допустимо, больше - режем...
Minuses=`echo "$Relay" | sed -e 's/[a-z A-Z 0-9 .]*//g' | wc -m|sed -e 's/ //g'`

5. Считаем группы цифр: режем, ежели больше трех...
DigGroups=`echo "$Relay" | sed -e 's/[0-9]\{2,\}/+/g' -e  's/[a-z A-Z]//g' -e 's/-//g' -e 's/\.//g' -e 's/[0-9]//g' | wc -m|sed -e 's/ //g

6. Скурпулезно считаем точки: у порядочного сервера больше трех не бывает.../или я не прав?/
Dots=`echo "$Relay" | sed -e 's/[0-9 a-z A-Z -]//g' | wc -m|sed -e 's/ //g'`

7. И последнее, проверяем на "неприличные" слова из списка
BadWords="dsl. dslam. dial cable. ppp dhcp pool node dyn- host- host. home. dynamic try user client customer \-gw. modem dynip bbtec"

Заработало практически сразу, я даже числа знаков и точек не подбирал.

Спам конечно проходит, но это уже единицы, и их можно обработать руками.

Итог работы: за 15 дней июля на сервер пришло 5557 запросов на доставку /100%/

Из них, отвергнуто без обработки 2799 /50%/ по списку "spammers.tab", составленному по логам работы этого фильтра - это так называемый рецидив;

1008 /18%/ писем сервер отверг по внешним спамерским спискам. Статистика такова: из 17 прописанных серверов реально работают только пять

list.dsbl.org    727
bl.spamcop.net   249
sbl.spamhaus.org  25
dul.ru             6
relays.ordb.org    1

1346 /24%/ писем сервер отверг благодаря работе фильтра. Это т.н. новые спам-письма Из них:
566 - не прописан ДНС;
442 - слишком много минусов;
241 - много точек;
73  - группы чисел;
24  - из списка слов.

пример из лога для каждого случая:
2005-07-11 03:26:27     58.19.43.13     No DNS entry
2005-07-11 03:26:27     201.2.154.46    Minuses=3       201-002-154-046.osrce204.dial.brasiltelecom.net.br
2005-07-11 03:35:27     195.5.144.26    Dots =3         ppp-144-26.dialup.metrocom.ru
2005-07-11 04:03:47     200.124.28.78   DigGroups=7     cm-200.124.28.78.cableonda.net.28.124.200.in-addr.arpa.
2005-07-04 10:30:31     195.98.67.39    Bad Word        uas1-pool-39.vrn.ru.

Через фильтры просочилось 404 письма, из них 15х24=360 - это служебные, ежечасно отправляемые с самого сервера отчеты.

Выводы: система фильтрации "пропустила" 100%*(404-15*24)/(5557-15*24)=0,85% спам-писем, о чем честно сделала записи в логах, типа
2005-07-13 10:45:02     195.208.235.29  Pass thru...    relay02.infobox.ru.

Мне кажется, что данный алгоритм можно использовать и для других MTA.
Двигаемся дальше...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

25. "Борьба со спамом на почтовых серверах."  
Сообщение от antoshkin (ok) on 22-Июл-05, 12:11 
Классно! А как сделать такую же тему на сендмэйле? Или невозможно?
Сам недавно настраивал сендмэйл, спам валился как из ведра, подключил списки RBL, стал проверять helo (мой ип, мой хост, неправильное имя) - спаму почти не стало, но всё равно просачивается.
Вот если б еще прикрутить сюда проверку на "плохие слова", типа adsl, ppp и т.п., ну и точки бы посчитать - было б классно.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

26. "Борьба со спамом на почтовых серверах."  
Сообщение от dmart on 11-Ноя-05, 12:49 
Вот же параноик!!! gw. -то чем тебе не угодило?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

27. "Борьба со спамом на почтовых серверах."  
Сообщение от Влад email(??) on 07-Сен-07, 17:52 
Определение обратной записи предлагаю заменить на
Relay=`dig -x $RemoteAddress +noquestion +noauthority +noadditional +nocomments +nostats +nocmd | grep PTR -m 1 | awk  '{print $5}'`
Это избавит от двух ошибок:
1) для одного ip несколько PTR
2) когда PTR является алиасом на запись не содержащую in-addr.arpa.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру