The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Фильтрование соединений по имени хоста в sendmail (mail filter regex spam sendmail)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: mail, filter, regex, spam, sendmail,  (найти похожие документы)
Date: Thu, 09 Sep 2004 20:28:58 +0600 From: Victor Ustugov <corvax@falbi.ua.> Newsgroups: ftn.ru.unix Subject: Фильтрование соединений по имени хоста в sendmail > LOCAL_CONFIG > Kdsl1 regex -a@MATCH ([0-9].*){5,} длинный регексп я пропустил, для примера остальных хватит > Kdsl3 regex -a@MATCH [0-9a-f]{8,} > > Kdsl4 regex -a@MATCH (^|\.)[0-9] все регекспы с однотипными сообщениями можно объединить, указывая после @MATCH номер регекспа для вывода в сообщении об ошибке: Kdsl1 regex -a@MATCH.1 ([0-9].*){5,} Kdsl3 regex -a@MATCH.3 [0-9a-f]{8,} Kdsl4 regex -a@MATCH.4 (^|\.)[0-9] Kdslpat sequence dsl1 dsl3 dsl4 > LOCAL_RULESETS > > SLocal_check_relay > > R$* $: < $&{client_resolve} > вот этого не нужно делать. я не имею ввиду поверку результатов резолвинга, я имею ввиду затирание передаваемых правилу данных. возможно, позже будет добавлен feature/hack, в котором тоже будет правило Local_check_relay. и данные ему будут переданы совершенно левые > R<TEMP> $#error $@ 4.7.1 $: "450 Relaying temporarily denied. > R<TEMP> IP name lookup failed for " $&{client_addr} > > R<FAIL> $#error $@ 5.7.1 $: "550 Relaying denied. IP name > R<FAIL> lookup failed for " $&{client_addr} > > R<FORGED> $#error $@ 5.7.1 $: "550 Relaying denied. IP name > R<FORGED> forged (PTR and A records mismatch) for " > R<FORGED> $&{client_addr} лучше примерно так: R $* $| $* $: $1 $| $2 $| < $&{client_resolve} > R $* $| $* $| <TEMP> $#error $@ 4.7.1 $: "bla-bla" $&{client_addr} R $* $| $* $| <FAIL> $#error $@ 4.7.1 $: "bla-bla" $&{client_addr} R $* $| $* $| <FORGED> $#error $@ 4.7.1 $: "bla-bla" $&{client_addr} R $* $| $* $| $* $: $1 $| $2 > R$* $: $(nondsl1 $&{client_name} $) > > R@MATCH $@ OK > > R$* $: $(nondsl2 $&{client_name} $) > > R@MATCH $@ OK 1. лучше не оканчивать проверку рилея при совпадении имени хоста с регекспом. ибо может быть потом нужно будет выполнить другого рода проверку в Local_check_relay 2. если не ломать передаваемые в правило данные, то ${client_name} уже есть в левой части 3. если необходимо не проводить проверку регекспами на основании проверки другими регекспами, то эти другие можно объединить в sequence. тогда при добавлении нового регекспа в исключения нужно будет делать изменения в одном месте конфига (при описании этого регекспа и включении его в sequence) с учетом всего этого: LOCAL_CONFIG Knondsl1 regex -a@SKIP (^|[0-9.-])(mail|mailrelay|mta|mx|relay|smtp)[0-9.-] Knondsl2 regex -a@SKIP \.(hotmail\.com|rax\.ru|planeta)$ Knondsl sequence nondsl1 nondsl2 LOCAL_RULESETS R $* $| $* $: $1 $| $2 $| $(nondsl $1 $: CHECK $) после этого в строки с исключаемыми именами хостов добавится третьим полем слово @SKIP. в остальных строках будет слово CHECK > R$* $: $(dsl1 $&{client_name} $) > > R@MATCH $#error $@ 5.7.1 $: "554 DSL or DialUp sender " > $&{client_name} " [" $&{client_addr} "] (1), please use Provider SMTP" > > R$* $: $(dsl2 $&{client_name} $) > > R@MATCH $#error $@ 5.7.1 $: "554 DSL or DialUp sender " > $&{client_name} " [" $&{client_addr} "] (2), please use Provider SMTP" длинная череда таких вот проверок с единообразным сообщением клиенту заменяется одной проверкой: # предварительно помеченные для проверки словом CHECK строки # проверяем регекспом (серией регекспов) R $* $| $* $| CHECK $: $1 $| $2 $| CHECK $| $(dslpat $1 $) # возвращаем ошибку в случае совпадения с одним из регекспов # номер в скобках будет браться из настроек регекспа # (число после @MATCH.) R $* $| $* $| CHECK $| @MATCH.$- $#error $@ 5.7.1 $: "554 bla-bla " ($3) # убираем результат проверки, оставляя метку CHECK # для проверки следующей серией регекспов R $* $| $* $| CHECK $| $* $: $1 $| $2 $| CHECK # после всех поверок восстанавливаем данные, переданные в правило R $* $| $* $| $* $: $1 $| $2 писал все это без тестов, прямо сюда. так что не исключены описки

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру