Courier Mail Server Forum Index Courier Mail Server
www.courierms.ru
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Антиспам в CMS
Goto page Previous  1, 2, 3, 4, 5, 6  Next
 
Post new topic   Reply to topic    Courier Mail Server Forum Index -> Courier Mail Server 2.xx
View previous topic :: View next topic  
Author Message
GrAnd
CMS Master
CMS Master


Joined: 21 Oct 2005
Posts: 766
Location: г. Коломна

PostPosted: 02 Oct 2013 10:13 (Wed)    Post subject: Reply with quote

NAMOR wrote:
Условие: *To:"(^|\s)([""']?)([-\w.]+)\2\s*<?<\3@"
Описание: получатели вида "user <user@", ""user" <user@" и "user <<user@"

Хорошее условие. Надо будет внедрить. Только зачем двойная угловая скобка в последнем примере?
NAMOR wrote:
Условие: *To:"([^@]*@){6}" | *Cc:"([^@]*@){6}"
Описание: рассылка на 6 и более адресов

А вот это очень вредное и ненужное условие. Проверять количество получателей в поле "To:" слишком рискованная идея.
Дело в том, что соискатели вакансий могут отправлять свои резюме сразу в несколько десятков мест одновременно. Так же предложения о сотрудничестве могут идти сразу в адреса нескольких организаций, указанных в этом поле. Так что, массовую рассылку надо искать в конверте по команде "RCPT TO:" - если слишком много получателей в одном корпоративном домене.
NAMOR wrote:
Условие: *Subject:"(([a-z][а-я]|[а-я][a-z]).*){2,}"
Описание: два или более сочетаний ru- и en-букв

А смысл иметь два сочетания? Достаточно одного. Иначе будут просачиваться письма, у которых заменена на транслит только первая или последняя буква в теме. Или только в одном слове полностью написано траслитом начало или конец.
NAMOR wrote:
Условие: *Subject:"знаком(ст|к|ь|им|ит|ят)"
Описание: знакомства, незнакомки, знакомьтесь, познакомимся, познакомится

У меня тоже раньше были такие правила и по знакомствам и по перевозкам и по арендам и т.д. Но сейчас почти все отключил - слишком малоэффективны, редко такие письма просачиваются. Только логи загромождают все эти проверки.
NAMOR wrote:
Условие: *Subject:"(^|\D)\d{3}([\W_])\d{2}\2?\d{2}($|\D)"
Описание: номер телефона вида nnn?nn?nn или nnn?nnnn

За последние полгода ни разу не приходило письмо с номером телефона в теме.
NAMOR wrote:
Условие: *Subject:"(р|p).(а|a).(с|c).(с|c)"
Описание: P?A?C?C [ылки]

Условие: *Subject:"(mail|ж(б|6)(а|a)).*(р|p).?(а|a).?(с|c).?(с|c)"
Описание: "Не дорогие e-mail рассылки", "Служба почтовых рассылок"

Условие: *Subject:"[a-zа-я]([^a-zа-я])([a-zа-я]\1){2,}"
Описание: "Р.Е.К.Л.А.М.А.", "E - M A I L РАССЫЛКА", "с*П*А*м"

ИМХО, это можно объединить и упростить. Как-то они пересекаются.
NAMOR wrote:
90% спама (у меня) "убивается" этими правилами и "Разрешёнными адресами получателей" в свойствах внешних почтовых ящиков. (Внешнюю почту принимаю только по POP3.)

В этом-то и разница, что у меня всё приходит по SMTP в несколько десятков адресов-получателей. А структура спама, просачивающегося через PTR-проверку, несколько другая. В частности, русскоязычного спама проходит не более 5-10% от общего количества пропущенного. Основная доля пропущенного - англоязычный текстовый спам примерно такого вида:
Code:

Return-Path: <>
Received: from [192.168.0.114] ([192.168.0.114])
   by mx.teplo-kolomna.ru (Courier Mail Server 3.01) with ESMTP id 02W00015
   for <grig@teplo-kolomna.ru>; Tue, 01 Oct 2013 07:06:03 +0400
Received: from 111-241-172-94.dynamic.hinet.net ([114.25.58.188])
   by [192.168.0.114] (Courier Mail Server 3.02) with SMTP id 0E400090
   for <grig@teplo-kolomna.ru>; Tue, 01 Oct 2013 07:06:02 +0400
Received: from unknown (HELO localhost) (cmskbk816@motorola.com@132.108.104.26)
   by 114.25.58.188 with ESMTPA; Tue, 1 Oct 2013 11:03:55 +0800
From: cmskbk816@motorola.com
To: *@*.*
Subject: This stock is getting ready to run hard for a second time
Old-X-EsetId: D0BDC93CC240747781F899
Old-X-EsetId: D0BDC93CC240747781F899
X-EsetScannerBuild: 15324
Old-X-EsetId: D0BDC93CC240747781F998
Old-X-EsetId: D0BDC93CC240747781FA91
X-EsetId: D0BDC93CC240747781FA94

Bonus Pick Of The Week Inside! HUGE Market Opportunity!!!

Company: SIGA RESOURCES INC.
Current price: $0.019
Short Term Target Price: .20
Date: October, 1st
Stock: S_G_A E

Momentum Alert!!! This Presents A Bottom Bounce Play Opportunity. See Why
Inside...

_________________
Все, что началось хорошо, закончится плохо.
Все, что началось плохо, закончится еще хуже.
Если вам кажется, что все идет хорошо, значит вы чего-то не замечаете.
Если все закончилось хорошо, то, значит, это еще не конец!
Back to top
View user's profile Send private message
NAMOR
CMS Developer


Joined: 15 Oct 2005
Posts: 1079

PostPosted: 02 Oct 2013 11:53 (Wed)    Post subject: Reply with quote

GrAnd wrote:
NAMOR wrote:
Условие: *To:"(^|\s)([""']?)([-\w.]+)\2\s*<?<\3@"
Описание: получатели вида "user <user@", ""user" <user@" и "user <<user@"

Хорошее условие. Надо будет внедрить. Только зачем двойная угловая скобка в последнем примере?

У меня накопилось достаточно много спама с двойной угловой скобкой в поле To, поэтому я её и добавил.
Сейчас посмотрел — давно такого не приходило. Можно первую угловую скобку "<?" убрать.

GrAnd wrote:
NAMOR wrote:
Условие: *To:"([^@]*@){6}" | *Cc:"([^@]*@){6}"
Описание: рассылка на 6 и более адресов

А вот это очень вредное и ненужное условие. Проверять количество получателей в поле "To:" слишком рискованная идея.
Дело в том, что соискатели вакансий могут отправлять свои резюме сразу в несколько десятков мест одновременно. Так же предложения о сотрудничестве могут идти сразу в адреса нескольких организаций, указанных в этом поле. Так что, массовую рассылку надо искать в конверте по команде "RCPT TO:" - если слишком много получателей в одном корпоративном домене.

Давайте не будем столь категоричны. Я специально написал: "...бороться со спамом "в общем" непросто, это процесс во многом индивидуальный и творческий. Вам может приходить один спам, мне — совершенно другой. Письма с каким-то словом для меня — 100% спам, а для вас — обычная деловая переписка."
Для меня это очень полезное и нужное условие.
Как я написал выше, каждое правило "чёрного списка" у меня проверяется на "хороших" письмах. Специально проверил ещё раз — данное условие не сработало ни для одного из 13825 писем.
Какие-то правила "чёрного списка" могут срабатывать и для "хороших" писем, но такие письма у меня принимаются по "белому списку" и до проверки "чёрным" не доходят.

Проверить получателей одного домена не проблема:
*To:"([^@]*@domain\.ru){6}" | *Cc:"([^@]*@domain\.ru){6}"

Конверт письма есть не у всех, а только у принимающих напрямую из интернета по SMTP. В отличие от поля To.

GrAnd wrote:
NAMOR wrote:
Условие: *Subject:"(([a-z][а-я]|[а-я][a-z]).*){2,}"
Описание: два или более сочетаний ru- и en-букв

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

Любая, не только первая или последняя.
На данный момент у меня нашлось 17 "хороших" писем с "перепутанной" буквой. А вот с двумя буквами — ни одного. Поэтому и добавлена именно такая проверка.
Как и следовало ожидать, почти во всех найденных письмах "перепутана" буква "С": русская вместо латинской и наоборот. Так что можно попробовать сделать проверку на одну букву, за исключением "С", для которой оставить проверку на две буквы.

GrAnd wrote:
NAMOR wrote:
Условие: *Subject:"(р|p).(а|a).(с|c).(с|c)"
Описание: P?A?C?C [ылки]

Условие: *Subject:"(mail|ж(б|6)(а|a)).*(р|p).?(а|a).?(с|c).?(с|c)"
Описание: "Не дорогие e-mail рассылки", "Служба почтовых рассылок"

Условие: *Subject:"[a-zа-я]([^a-zа-я])([a-zа-я]\1){2,}"
Описание: "Р.Е.К.Л.А.М.А.", "E - M A I L РАССЫЛКА", "с*П*А*м"

ИМХО, это можно объединить и упростить. Как-то они пересекаются.

Я предпочитаю иметь три относительно простых в понимании правила, чем одного сложное.

GrAnd wrote:
NAMOR wrote:
90% спама (у меня) "убивается" этими правилами и "Разрешёнными адресами получателей" в свойствах внешних почтовых ящиков. (Внешнюю почту принимаю только по POP3.)

В этом-то и разница, что у меня всё приходит по SMTP в несколько десятков адресов-получателей. А структура спама, просачивающегося через PTR-проверку, несколько другая.

Конечно, я и говорю, что к спаму нужно индивидуально подходить, а не слепо копировать чужие правила.
Свои правила я привёл не в качестве догмы, а как основу для творческой переработки под конкретные условия.
Back to top
View user's profile Send private message Send e-mail Visit poster's website
GrAnd
CMS Master
CMS Master


Joined: 21 Oct 2005
Posts: 766
Location: г. Коломна

PostPosted: 02 Oct 2013 13:09 (Wed)    Post subject: Reply with quote

NAMOR wrote:
У меня накопилось достаточно много спама с двойной угловой скобкой в поле To, поэтому я её и добавил.
Сейчас посмотрел — давно такого не приходило. Можно первую угловую скобку "<?" убрать.

Я проверил - у меня с двойной угловой скобкой не было, но встречались письма, в которых в поле "To:" и имя и адрес были заключены в угловые скобки.
Quote:
Проверить получателей одного домена не проблема:
*To:"([^@]*@domain\.ru){6}" | *Cc:"([^@]*@domain\.ru){6}"

А можно как-нибудь сделать имя домена в общем виде, чтобы не забивать конкретное? Работают ли в регулярных выражениях ленивые квантификаторы "*?" вместо жадных "*"? Ибо, без них как-то сложновато.
Quote:
Любая, не только первая или последняя.
На данный момент у меня нашлось 17 "хороших" писем с "перепутанной" буквой. А вот с двумя буквами — ни одного. Поэтому и добавлена именно такая проверка.

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

И это верно, хоть и отчасти. Три простых правила не только легче администрировать, но и работают они быстрее. Зато они в логах занимают три строчки (если ни одно из них не сработает) вместо одной. Что тоже бывает неприятно.

_________________
Все, что началось хорошо, закончится плохо.
Все, что началось плохо, закончится еще хуже.
Если вам кажется, что все идет хорошо, значит вы чего-то не замечаете.
Если все закончилось хорошо, то, значит, это еще не конец!
Back to top
View user's profile Send private message
NAMOR
CMS Developer


Joined: 15 Oct 2005
Posts: 1079

PostPosted: 02 Oct 2013 18:05 (Wed)    Post subject: Reply with quote

GrAnd wrote:
Quote:
Проверить получателей одного домена не проблема:
*To:"([^@]*@domain\.ru){6}" | *Cc:"([^@]*@domain\.ru){6}"

А можно как-нибудь сделать имя домена в общем виде, чтобы не забивать конкретное? Работают ли в регулярных выражениях ленивые квантификаторы "*?" вместо жадных "*"? Ибо, без них как-то сложновато.

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

GrAnd wrote:
Quote:
Любая, не только первая или последняя.
На данный момент у меня нашлось 17 "хороших" писем с "перепутанной" буквой. А вот с двумя буквами — ни одного. Поэтому и добавлена именно такая проверка.

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

Если вы имеете в виду регулярное выражение (([a-z][а-я]|[а-я][a-z]).*){2,}, то и в первом случае совпадений оно не найдёт, поскольку поиск второго повторения начнётся с символа, следующего за последним найденным в первом повторении, то есть с "в".
Back to top
View user's profile Send private message Send e-mail Visit poster's website
GrAnd
CMS Master
CMS Master


Joined: 21 Oct 2005
Posts: 766
Location: г. Коломна

PostPosted: 02 Oct 2013 20:24 (Wed)    Post subject: Reply with quote

NAMOR wrote:
А как регулярное выражение "в общем виде" узнает имя вашего конкретного домена, массовую рассылку в который оно призвано распознать?

Имеется в виду многократное повторение любого доменного имени.

_________________
Все, что началось хорошо, закончится плохо.
Все, что началось плохо, закончится еще хуже.
Если вам кажется, что все идет хорошо, значит вы чего-то не замечаете.
Если все закончилось хорошо, то, значит, это еще не конец!
Back to top
View user's profile Send private message
NAMOR
CMS Developer


Joined: 15 Oct 2005
Posts: 1079

PostPosted: 02 Oct 2013 23:05 (Wed)    Post subject: Reply with quote

Условие: *To:"(@([-\w]+\.)+[-\w]+)(.+\1){5}" | *Cc:"(@([-\w]+\.)+[-\w]+)(.+\1){5}"
Описание: рассылка на адреса, среди которых не менее 6 находятся в одном и том же домене
Back to top
View user's profile Send private message Send e-mail Visit poster's website
GrAnd
CMS Master
CMS Master


Joined: 21 Oct 2005
Posts: 766
Location: г. Коломна

PostPosted: 03 Oct 2013 8:59 (Thu)    Post subject: Reply with quote

NAMOR wrote:
Условие: *To:"(@([-\w]+\.)+[-\w]+)(.+\1){5}" | *Cc:"(@([-\w]+\.)+[-\w]+)(.+\1){5}"
Описание: рассылка на адреса, среди которых не менее 6 находятся в одном и том же домене

Однозначно в мемориз! Т.е., в настройки антиспама!
А оно работает-то без ленивых квантификаторов?

_________________
Все, что началось хорошо, закончится плохо.
Все, что началось плохо, закончится еще хуже.
Если вам кажется, что все идет хорошо, значит вы чего-то не замечаете.
Если все закончилось хорошо, то, значит, это еще не конец!
Back to top
View user's profile Send private message
NAMOR
CMS Developer


Joined: 15 Oct 2005
Posts: 1079

PostPosted: 03 Oct 2013 10:12 (Thu)    Post subject: Reply with quote

Работает, проверял.
Back to top
View user's profile Send private message Send e-mail Visit poster's website
GrAnd
CMS Master
CMS Master


Joined: 21 Oct 2005
Posts: 766
Location: г. Коломна

PostPosted: 05 Oct 2013 17:29 (Sat)    Post subject: Reply with quote

NAMOR wrote:
Работает, проверял.

Хорошее правило. Удаляет около 2/3 спама, просочившегося после проверки PTR-записи. Надобность во внешней утилите, подсчитывающей число SMTP-команд "MAIL TO:" в конверте, практически отпала, т.к. случаи прихода писем, у которых получателей много, а в поле "To:" перечислены 1-2, единичны и часто отсеиваются другими правилами.

Только параметр {5} заменил на {2}, т.к. обычно никто в 3 или более адресов нам письма не шлет.

_________________
Все, что началось хорошо, закончится плохо.
Все, что началось плохо, закончится еще хуже.
Если вам кажется, что все идет хорошо, значит вы чего-то не замечаете.
Если все закончилось хорошо, то, значит, это еще не конец!
Back to top
View user's profile Send private message
NAMOR
CMS Developer


Joined: 15 Oct 2005
Posts: 1079

PostPosted: 05 Oct 2013 21:34 (Sat)    Post subject: Reply with quote

Рад, что правило оказалось столь полезным. Господа админы, берите на вооружение Wink
Back to top
View user's profile Send private message Send e-mail Visit poster's website
GrAnd
CMS Master
CMS Master


Joined: 21 Oct 2005
Posts: 766
Location: г. Коломна

PostPosted: 15 Oct 2013 11:47 (Tue)    Post subject: Reply with quote

Маленький отчет о работе черного списка за неделю.

Почта принимается исключительно по SMTP. Около 80% спама отсекается при проверке PTR-записи отправителя. Более 90% оставшегося спама задерживаются следующими правилами:

Code:
Antispam (black list)
Date   Count   Condition
14.10.2013   988   *To:"(@([-\w]+\.)+[-\w]+)(.+\1){2}" | *Cc:"(@([-\w]+\.)+[-\w]+)(.+\1){2}"
14.10.2013   157   Return-Path:"<>"|Message-ID:""&In-Reply-To:""
14.10.2013   126   *To:"(^|\s)([""']?)([-\w.]+)\2\s*<\3@"
11.10.2013   18   *Subject:"(([a-z][а-я]|[а-я][a-z]).*){2,}"

Очет получен при помощи утилиты анализа работы антиспама: http://www.courierms.ru/forum/viewtopic.php?t=876

Пояснения:
1. Число получателей в полях "To:" или "Cc:" больше 2.
2. Пустышка в поле "Return-Path:" или одновременно отсутствуют поля "Message-ID:" и "In-Reply-To:".
3. Имя получателя совпадает с его локальным почтовым адресом (левой частью до собаки).
4. Не менее двух латинских символов в составе слов, написанных кириллицей.

Есть еще отдельные правила, но они специфические - ловят рассылки с некоторых сайтов или настроены на определенные слова в темах. Да и срабатывают они не очень часто.

Таким образом, при помощи проверки PTR и этими четырьмя правилами можно отсечь около 98% спама.

_________________
Все, что началось хорошо, закончится плохо.
Все, что началось плохо, закончится еще хуже.
Если вам кажется, что все идет хорошо, значит вы чего-то не замечаете.
Если все закончилось хорошо, то, значит, это еще не конец!
Back to top
View user's profile Send private message
OMEN
Subscriber
Subscriber


Joined: 06 Jul 2010
Posts: 22
Location: Жуковский

PostPosted: 05 Nov 2013 16:05 (Tue)    Post subject: Reply with quote

GrAnd wrote:
Маленький отчет о работе черного списка за неделю.

Около 80% спама отсекается при проверке PTR-записи отправителя.
А эта проверка PTR-записи отправителя происходит автоматом или нужно писать какие-то правила?
_________________
Рег. номер: ***62DE0
Back to top
View user's profile Send private message
GrAnd
CMS Master
CMS Master


Joined: 21 Oct 2005
Posts: 766
Location: г. Коломна

PostPosted: 05 Nov 2013 20:19 (Tue)    Post subject: Reply with quote

OMEN wrote:
А эта проверка PTR-записи отправителя происходит автоматом или нужно писать какие-то правила?

Нет, в самом простом случае никаких правил писать не надо. Проверка заключается в том, что MTA (в данном случае CMS) обращается к доверенному сервису с вопросом: "А кто это такой? Ты его знаешь?" В роли доверенного сервиса выступает глобальная служба DNS. Если сервер DNS отвечает, что не знает никакого домена под этим IP или обнаруживаются несоответствия в прямой и обратной записях для этого домена, то соединение со стороны такого клиента признается нелигитимным и рвется с оповещением отказа. В самом деле, отправлять напрямую письма без промежуточных релеев должны только организации с собственными MTA (в т.ч. с публичными или открытыми). Но для нормального функционирования таких MTA необходимо иметь зарегистрированный и правильно оформленный домен. Иначе смысла такого использования нет - одни расходы. Если же домен не зарегистрирован, либо оформлен кое-как, то с вероятностью 99,999% коннект производится со стороны частного компьютера или даже рядового компьютера организации (не MTA), зомбированного спамботом.

В более сложном случае можно дополнительно отсекать по шаблону доменные имена, соответствующие динамическим пулам или Dial-Up соединениям. Для этого достаточно в настройках SMTP-сервера CMS поставить соответствующую галочку. Пока что я у себя не вижу в этом необходимости, но надо будет проанализировать внимательнее пропущенный спам. Может быть и включу.

Это и есть единственное дополнительное правило фильтрации. Можно написать свое, можно пользоваться готовым.

_________________
Все, что началось хорошо, закончится плохо.
Все, что началось плохо, закончится еще хуже.
Если вам кажется, что все идет хорошо, значит вы чего-то не замечаете.
Если все закончилось хорошо, то, значит, это еще не конец!
Back to top
View user's profile Send private message
OMEN
Subscriber
Subscriber


Joined: 06 Jul 2010
Posts: 22
Location: Жуковский

PostPosted: 07 Nov 2013 11:03 (Thu)    Post subject: Reply with quote

Спасибо за развернутый ответ.
_________________
Рег. номер: ***62DE0
Back to top
View user's profile Send private message
vgkuser
Newbie
Newbie


Joined: 25 Oct 2005
Posts: 3

PostPosted: 23 Dec 2013 7:59 (Mon)    Post subject: Reply with quote

[/quote]А эта проверка PTR-записи отправителя происходит автоматом или нужно писать какие-то правила?[/quote]

День добрый

Что искать в логах, чтобы понять отказ по PTR-записи ?
Почта приходит на один комп(там стояла спам оборона), а с него уже на основной. Проверка работает в этом случае?
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Courier Mail Server Forum Index -> Courier Mail Server 2.xx All times are GMT + 4 Hours
Goto page Previous  1, 2, 3, 4, 5, 6  Next
Page 5 of 6

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2005 phpBB Group