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 

v2,3| Проверка числа получателей

 
Post new topic   Reply to topic    Courier Mail Server Forum Index -> Готовые решения
View previous topic :: View next topic  
Author Message
GrAnd
CMS Master
CMS Master


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

PostPosted: 03 Apr 2007 16:40 (Tue)    Post subject: v2,3| Проверка числа получателей Reply with quote

С недавних пор количество засвеченных п/я нашего предприятия достигло таких величин, что в спамерских базах они стали объединяться в группы, и письма стали приходить сразу на 3-4 адреса каждое.

Т.к. крайне редко реально нужное письмо отправляется такому числу получателей, то этот косвенный признак можно было бы использовать для отсечения спама. Однако в CMS пока не реализован механизм удаления и перенаправления писем с большим количеством получателей. Даже если установить опцию "Максимальное число получателей письма ("Сервисы|SMTP|Дополнительно"), то это приведет лишь к тому, что лишние получатели будут проигнорированы и письмо будет доставлено нескольким получателям, находящимся в начале списка.

Вот почему я написал маленькую консольную программку, которая анализирует число получателей в .inf-файле и возвращает его в коде возврата. Этот код может быть далее проанализирован в пакетном файле и на его основании письмо либо удаляется, либо переносится в нужную папку. Если в .inf-файле не указан получатель, то возвращается нулевой код.

Программа работоспособна начиная с версии CMS 2.04, т.к. использует библиотеку работы с файлами в формате XML, а более ранние версии CMS использовали формат файлов, несколько отличающийся от XML.

Ниже приводится сама программа, ее исходник на Delphi и пример пакетного файла.

Библиотеку SimpleXML можно скачать отсюда.



RcptNum.rar
 Description:
Утилита определения числа получателей.

Download
 Filename:  RcptNum.rar
 Filesize:  70.6 KB
 Downloaded:  4505 Time(s)


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


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

PostPosted: 04 Apr 2007 14:52 (Wed)    Post subject: Reply with quote

Сегодня я написал более-менее цивильный пакетный файл.
Теперь он создает запись в .log-файле только если пост был удален. В отчет заносится время удаления, название обработанного .inf-файла и его содержимое.
На каждую дату создается свой собственный .log-файл.

Команды пакетника написаны так, что предполагают размещение утилиты подсчета получателей и файла отчета в корневой папке CMS. Однако, IMHO, лучше под утилиты (думаю, что эта - не последняя) создать собственную подпапку, а в ней - подпапку для отчетов. У себя я так и сделал.
Кстати, даже если утилит будет несколько, удобно будет использовать единый файл отчета для всех.



RcptNum.rar
 Description:
Новый, улучшенный пакетный файл.

Download
 Filename:  RcptNum.rar
 Filesize:  332 Bytes
 Downloaded:  3729 Time(s)


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


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

PostPosted: 23 Apr 2013 10:32 (Tue)    Post subject: Reply with quote

Сегодня обратил внимание, что данный батничек не работает уже достаточно давно - с момента перехода на шлюзе с Win2K Server на Win2K3 Server.

Дело в разном формате даты, выдаваемой по командн date /t - в Win2K дата предварялась буквенным обозначением дня недели.

Поэтому строчку

FOR /F "delims=. tokens=1,2,3" %%l IN ("%%j")

надо заменить на строчку

FOR /F "delims=. tokens=1,2,3" %%l IN ("%%i")

- букву j заменить на i.

Необходимость проверки работоспособности скрипта была вызвана тем, что в последнее время MTA бомбардируется большим числом писем в несколько (5-10) адресов каждое. Адреса выбираются из списка имен и должностей по алфавиту, поэтому некоторые просачиваются. Не помогает даже проверка PTR - рассылка идет в т.ч. с зарегистрированных доменов.

Кстати, если кто не догадался, то число 3 в строке

IF ERRORLEVEL 3 GOTO Invalid

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

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


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

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

Данная утилита является морально устаревшей, т.к. с появлением возможности задавать в условиях антиспама регулярные выражения стало эффективнее и проще подсчитывать число получателей по полю "To:" или "Cc:" письма при помощи правила черного списка
Code:
*To:"(@([-\w]+\.)+[-\w]+)(.+\1){N}"|*Cc:"(@([-\w]+\.)+[-\w]+)(.+\1){N}"

где вместо N следует подставить максимально разрешенное число получателей в этих полях.

Иногда, правда, возникают ситуации, когда в полях "To:"и "Cc:" получателей перечислено мало, а в команде "RCPT TO:" их гораздо больше. В этом случае утилита сработала бы лучше. Но такие случаи редки и единичны.

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

_________________
Все, что началось хорошо, закончится плохо.
Все, что началось плохо, закончится еще хуже.
Если вам кажется, что все идет хорошо, значит вы чего-то не замечаете.
Если все закончилось хорошо, то, значит, это еще не конец!
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 -> Готовые решения All times are GMT + 4 Hours
Page 1 of 1

 
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