Sergey wrote:
> Я правильно понимаю, что в случае
>> Received: from localhost (Dynamic-IP-cr697948137.cable.net.co [69.79.48.137] (may be forged))
> by xxx.xxxxxx.xxx (8.13.1/8.13.1) with SMTP id i7RICrxp005666;
> Fri, 27 Aug 2004 23:13:46 +0500
>> проверка получается неудачной ?
да
> Оно явно должно было нарваться на
> ^(.+\.)*(dsl|dhcp|cable|dslam|user|client|pool|subnet|network)(\.|-|[0-9]|_)
в случае несовпадения записей рилея в прямой и реверсной зоне DNS в
Received дописывается "may be forged", а значение ${client_name},
которое проверяется в check_relay_dialup регекспами, равно IP адресу
рилея (${client_addr}), взятому в квадратные скобки.
проверку таких рилеев в access_db я уже когда-то делал
(check_relay_forged.m4), проверку регекспами - еще нет.
в 8.13 появилась новая переменная - ${client_ptr}, которой присваивается
значение PTR записи рилея вне зависимости от того, совпадают ли записи в
реверсной и прямой зонах.
на выходных я модифицировал precheck_envelope.m4 с целью создания такой
же переменной в 8.12. соответствующим образом уже переделан
check_relay_forged.m4, он практически приведен к виду, используемому в 8.13
остается придумать, как указывать, какие переменные (${client_name} или
${client_ptr} или обе) проверять регекспами.
одновременно можно решить вопрос о вынесении диалапных регекспов из
cfhead.m4. ибо возможно не все захотят проверять адреса рилеев теми
регекспами, которые описаны в моем cfhead, а корректировать его каждый
раз неудобно.
итак, наброски новой схемы проверок:
1. из cfhead.m4 выносится regex sequence dulpat, по которой раньше
${client_name} и $s проверялись на принадлежность к
dial-up/dsl/cable/other shit сетям
2. для проверки ${client_name} регекспами надо использовать
HACK(`check_relay_dialup'), в котором будут реализованы разнообразные
исключения
3. все регекспы для проверки ${client_name} указываются в sendmail.mc,
используя HACK(`check_relay_dialup_regex'), проверка по dulpat из cfhead
больше производится не будет
4. надо ли по тем же регекспам проверять и ${client_ptr}, можно указать
какой-либо отдельной переменной.
5. для проверки $s (HELO/EHLO) регекспами надо перед использованием
HACK(`check_helo') внести в подстроку `DIALUP' в значение переменной
confCHECK_HELO
6. все регекспы для проверки $s (HELO/EHLO) указываются в sendmail.mc,
используя HACK(`check_helo_dialup_regex'), проверка по dulpat из cfhead
больше производится не будет
если такая схема не встретит возражений, я за сегодня/завтра ее реализую
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Best wishes Victor Ustugov mailto:victor на corvax.kiev.ua
public GnuPG/PGP key: http://victor.corvax.kiev.ua/corvax.asc
ICQ: 77186900, 32418694 CRV2-RIPE, CRV-UANIC