[sendmail-conf] check_relay_dialup и forged IP

Victor Ustugov victor на corvax.kiev.ua
Пн Авг 30 10:15:34 EEST 2004


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




Подробная информация о списке рассылки sendmail-conf