LINUX.ORG.RU
ФорумAdmin

Задачка по sendmail.cf


0

0

Идет спам с обратным адресом типа s_e_m_i_nar, i_n_f_o и т.д.
Адреса разные, ip-адреса тоже разные, но символ "_" везде присутствует
Я уже использую разные способы блокировки спама, но ни один не подходит для решения именно этой проблемы.
Для проверки на наличие символа "_" в адресе редактирую sendmail.cf:
добавляю в SLocal_check_mail:

C{badchar}_
R$* $: $>3 $1
R$={badchar}$* $#error $@ 5.7.1 $: "SPAM"

В maillog (если в поле From: _@domain.ru):
sendmail[24794]: ruleset=check_mail,arg1=<_@domain.ru>,..., reject=553 5.3.0 <_@domain.ru>... SPAM
Но адреса _user@domain.ru проходят проверку и принимаются к приему.
Варианты:
R$={badchar} $* <$*> $#error $@ 5.7.1 $: "SPAM"
R$={badchar}$*<$*> $#error $@ 5.7.1 $: "SPAM"
тоже не дают результата.
Я не знаток синтаксиса sendmail.cf, может, кто подскажет правильную запись?


Я тоже не большой знаток, но мне кажется, что "_" в данном случае не
является лексемой. В правилах должны указываться лексемы (что это
такое и какие бывают - смотреть доки, citforum.ru,...), а "_user"
оно похоже интерпретирует не как 2 лексемы "_" и "user", а как одну
- "_user", которая соответственно никак не равна "_".

А сделать можно попробовать так: заставить sendmail интерпретировать
"_" как разделитель (delimiter):

# delimiter (operator) characters (old $o macro)
O OperatorChars=.:%@!^/[]+_

Из citforum.ru:
Набор "операторов" в адресах. Список знаков, которые могут быть
рассмотрены как обозначения, и которые будут разделять значения во
время анализа. Например, если "@" было в макросе $o, то ввод "a@b"
будет просканирован как три обозначения: "a," "@," и "b." По
умолчанию ".:@[]", минимально необходимые для анализа по RFC 822;
более богатый набор операторов - ".:%@!/[]", добавляющий поддержку
для UUCP, %-hack, и адресов X.400.

Тогда переписать так:
R$* $={badchar} $*                   $#error $@ 5.7.1 $: "SPAM"
или лучше как минимум для 2-х вхождений :
R$* $={badchar} $* $={badchar} $*    $#error $@ 5.7.1 $: "SPAM"

spirit ★★★★★
()
19 мая 2003 г.

ДА,так оно и есть.
Для тех, кто пойдет по моим стопам, вот пример антиспам-фильтра на основе regex
для sendmail www.anrb.ru/linux/regex.html

Sciurus
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.