URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 71603
[ Назад ]

Исходное сообщение
"Exim+regex"

Отправлено SubGun , 22-Янв-07 10:35 
В последнее время приходит огромное кол-во спама с неверными id в заголовках и первых received - smtp.wanadoo.fr

Received: from [84.240.59.9] (port=1046 helo=intellec-cd6035.skynet.lt)
        by mail.pac.ru with esmtp (Exim 4.63 (FreeBSD))
        (envelope-from <quek@wanadoo.fr>)
        id 1H8d1j-000Duk-1M; Sun, 21 Jan 2007 16:46:34 +0300
Received: from 80.12.242.3 (HELO smtp.wanadoo.fr)
     by pac.group.ru with esmtp (05EW(200 83B.5H)
     id *678.:-+..*05-3.
     for erol@pac.group.ru; Sun, 21 Jan 2007 13:53:53 -0120

Может ли мне кто-нибудь помочь с написанием регулярного выражения для фильтрации таких писем?


Содержание

Сообщения в этом обсуждении
"Exim+regex"
Отправлено bass , 22-Янв-07 11:14 
>В последнее время приходит огромное кол-во спама с неверными id в заголовках
>и первых received - smtp.wanadoo.fr
>
>Received: from [84.240.59.9] (port=1046 helo=intellec-cd6035.skynet.lt)
>        by mail.pac.ru with esmtp
>(Exim 4.63 (FreeBSD))
>        (envelope-from <quek@wanadoo.fr>)
>        id 1H8d1j-000Duk-1M; Sun, 21
>Jan 2007 16:46:34 +0300
>Received: from 80.12.242.3 (HELO smtp.wanadoo.fr)
>     by pac.group.ru with esmtp (05EW(200 83B.5H)
>     id *678.:-+..*05-3.
>     for erol@pac.group.ru; Sun, 21 Jan 2007 13:53:53
>-0120
>
>Может ли мне кто-нибудь помочь с написанием регулярного выражения для фильтрации таких
>писем?

# Осторожно! многие рассылки пренебрегают Message-Id                                                                            
    deny   message = RFC compliant Message-Id required.                                                                
    log_message    = Message-Id required.                                                                    
        hosts      = !+white_hosts                                                                                      
        condition  = ${if !match{$h_message-id:}{\N<.+@.+>\N}{yes}{no}}                                                
                                                                                                                        
    deny   message = RFC compliant Message-Id required.                                                                
        log_message  = 550 Right Message-Id required.                                                        
        hosts      = !+relay_from_hosts                                                                    
        condition  = ${if match{$h_message-id:}{\N^<.+@(.+\.)?ваш_домен\.ru>$\N}{yes}{no}}    


"Exim+regex"
Отправлено SubGun , 22-Янв-07 12:12 
># Осторожно! многие рассылки пренебрегают Message-Id
>    deny   message = RFC compliant Message-Id required.
>    log_message    = Message-Id required.
>    hosts      = !+white_hosts
>    condition  = ${if !match{$h_message-id:}{\N<.+@.+>\N}{yes}{no}}                                                
>
>    deny   message = RFC compliant Message-Id required.
>        log_message  = 550 Right Message-Id required.
>        hosts      = !+relay_from_hosts
>        condition  = ${if match{$h_message-id:}{\N^<.+@(.+\.)?ваш_домен\.ru>$\N}{yes}{no}}    


Спасибо большое за ответ.
Не могли бы вы объяснить, что обозначает каждый regex? Насколько я понимаю, смысл первого состоит в том, что $h_message-id не должен содержать любой набор символов до собаки и любой набор символов после. Я правильно понимаю?
Второй regex я только наполовину понимаю, к сожалению. :( Читаю доку, вижу значения метасимволов и квантификаторов, а понять не могу.


"Exim+regex"
Отправлено bass , 22-Янв-07 13:15 
>>    deny   message = RFC compliant Message-Id required.
>>    log_message    = Message-Id required.
>>    hosts      = !+white_hosts
>>    condition  = ${if !match{$h_message-id:}{\N<.+@.+>\N}{yes}{no}}                                                

отбросить сообщение если $h_message-id не соответствует маске

>>    deny   message = RFC compliant Message-Id required.
>>        log_message  = 550 Right Message-Id required.
>>        hosts      = !+relay_from_hosts
>>        condition  = ${if match{$h_message-id:}{\N^<.+@(.+\.)?ваш_домен\.ru>$\N}{yes}{no}}    
>
>
>Спасибо большое за ответ.
>Не могли бы вы объяснить, что обозначает каждый regex? Насколько я понимаю,
>смысл первого состоит в том, что $h_message-id не должен содержать любой
>набор символов до собаки и любой набор символов после. Я правильно
>понимаю?

rfc822
message-id: local-part "@" domain


если $h_message-id не совпадает с rfc822 то deny кроме white_hosts где например рассылки с subscribe.ru


>Второй regex я только наполовину понимаю, к сожалению. :( Читаю доку, вижу
>значения метасимволов и квантификаторов, а понять не могу.

если в $h_message-id в поле domain присутствует название вашего домена, то тоже deny, кроме тех у кого он должен присутствовать

можно конечно проанализировать ещё local-part, но это излишне.

кстати анализ всех заголовков делать нельзя...только от последнего соединения (в общем случае)


"Exim+regex"
Отправлено SubGun , 22-Янв-07 13:43 
Я только понял о чем вы :)
Вообще-то, мне было важно отсеять письма по id в поле received

Received: from 80.12.242.3 (HELO smtp.wanadoo.fr)
     by pac.group.ru with esmtp (05EW(200 83B.5H)
     id *678.:-+..*05-3.
     for erol@pac.group.ru; Sun, 21 Jan 2007 13:53:53 -0120

вот тут id не соответствует RFC.


"Exim+regex"
Отправлено bass , 23-Янв-07 08:29 
>Я только понял о чем вы :)
>Вообще-то, мне было важно отсеять письма по id в поле received

да, что-то я тоже ступил :)

>Скажите, вот такой кондишн
>
>deny   message = RFC compliant Message-Id required.
>     log_message  = 550 Right Message-Id required.
>
>     hosts      =
>!+relay_from_hosts
>     condition  = ${if !match{$h_received:}{\N^|\bid\S+(\w+)-\;|$\N}{yes}{no}}
>
>Пропустит вот такой id (id l0IGCU1d003821;)?

простая проверка
$ echo "id l0IGCU1d003821;"|egrep "^|\bid\S+(\w+)-\;|$"
id l0IGCU1d003821;
$



"Exim+regex"
Отправлено SubGun , 25-Янв-07 12:50 
# echo "id l0IGCU1d003821;"|egrep "^|\bid\S+(\w+)-\;|$"
Illegal variable name.

"Exim+regex"
Отправлено SubGun , 25-Янв-07 18:07 
up

"Exim+regex"
Отправлено SubGun , 22-Янв-07 17:07 
Скажите, вот такой кондишн

deny   message = RFC compliant Message-Id required.
     log_message  = 550 Right Message-Id required.
     hosts      = !+relay_from_hosts
     condition  = ${if !match{$h_received:}{\N^|\bid\S+(\w+)-\;|$\N}{yes}{no}}

Пропустит вот такой id (id l0IGCU1d003821;)?