В последнее время приходит огромное кол-во спама с неверными id в заголовках и первых received - smtp.wanadoo.frReceived: 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Может ли мне кто-нибудь помочь с написанием регулярного выражения для фильтрации таких писем?
>В последнее время приходит огромное кол-во спама с неверными 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}}
># Осторожно! многие рассылки пренебрегают 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 я только наполовину понимаю, к сожалению. :( Читаю доку, вижу значения метасимволов и квантификаторов, а понять не могу.
>> 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, но это излишне.
кстати анализ всех заголовков делать нельзя...только от последнего соединения (в общем случае)
Я только понял о чем вы :)
Вообще-то, мне было важно отсеять письма по id в поле receivedReceived: 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.
>Я только понял о чем вы :)
>Вообще-то, мне было важно отсеять письма по 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;
$
# echo "id l0IGCU1d003821;"|egrep "^|\bid\S+(\w+)-\;|$"
Illegal variable name.
up
Скажите, вот такой кондишн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;)?