[sendmail-conf] check_relay_dialup_* и forged

Victor Ustugov victor на corvax.kiev.ua
Ср Ноя 3 14:39:48 EET 2004


Victor Ustugov wrote:

>> VU> check_relay_dialup, у которого есть параметр 
>> confCHECK_RELAY_DIALUP, у
>> VU> которого есть значения CLIENT_NAME и CLIENT_PTR.
>>
>> Обнаружилась неприятная вещь - при включении в конфиге CLIENT_PTR
>> опять перестали проходить письма от нерезолвящихся релеев. 8-( )
>>
>> Nov  3 10:55:42 bitty sendmail[84889]: iA37tcqs084889: 
>> ruleset=check_rcpt, arg1=
>> <ivc на bittu.org.ru>, relay=[219.249.57.178], reject=550 5.7.1 
>> <ivc на bittu.org.ru>.
>> .. Access denied. Too many digits in sender hostname
>>
>> Убрал этот параметр, все вернулось на свои места:
>>
>> Nov  3 11:08:11 bitty sendmail[85045]: iA387w3C085045: 
>> from=<tania на sstu.ru>, siz
>> e=85593, class=0, nrcpts=1, 
>> msgid=<003d01c4a917$c3f0d9e0$f606a8c0 на sstu.ru>, prot
>> o=ESMTP, daemon=MTA, relay=[212.193.48.22]
>> Nov  3 11:08:11 bitty sendmail[85053]: iA387w3C085045: 
>> to=<ivc на bittu.org.ru>, de
>> lay=00:00:12, xdelay=00:00:00, mailer=local, pri=115765, relay=local, 
>> dsn=2.0.0,
>>  stat=Sent
>>
>>  Увы, не могу днем экспериментировать... Будут какие-нибудь мысли ?
> 
> тестить и править буду вечером. сейчас слишком много работы

оказалось все очень просто

раньше я резолвил PTR запись переменной ${client_addr} и результат 
помещал в ${client_ptr}:

R $*                                    $: $1 $| $&{client_addr}
R $* $| [$-.$-.$-.$-]                   $: $1 $| $(dns_ptr 
$5.$4.$3.$2.IN-ADDR.ARPA. $: FAIL $)
R $* $| $+ <TMP>                        $: $1 $| $&{client_addr}
R $* $| FAIL                            $: $1 $| $&{client_addr}
R $* $| $* .                            $: $1 $| $2
R $* $| $*                              $: $1 $(macro {client_ptr} $@ $2 $)

если запись в реверсной зоне отсутствовала или в процессе резолвинга был 
получен defer, то переменной ${client_ptr} просто присваивалось значений 
переменной ${client_addr}. это и явилось стратегической ошибкой.

теперь в случае defer'а или отсутствия записи в реверсной зоне 
переменной ${client_ptr} присваивается значение ${client_addr}, взятое в 
квадратные скобки:

R $*                                    $: $1 $| $&{client_addr}
R $* $| [$-.$-.$-.$-]                   $: $1 $| $(dns_ptr 
$5.$4.$3.$2.IN-ADDR.ARPA. $: FAIL $)
R $* $| $+ <TMP>                        $: $1 $| [ $&{client_addr} ]
R $* $| FAIL                            $: $1 $| [ $&{client_addr} ]
R $* $| $* .                            $: $1 $| $2
R $* $| $*                              $: $1 $(macro {client_ptr} $@ $2 $)

изменился лишь HACK(`precheck_envelope')

-- 
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