[sendmail-conf] is_outgoing.m4 и access_db

Victor Ustugov victor на corvax.kiev.ua
Ср Окт 27 21:52:45 EEST 2004


Sergey Korolew wrote:

> VU> полезно проверять все в sendmail -bt -d21.12

> Да я вот только более-менее -bt пользоваться научился - чтобы и
> макросы задать и рулесет нужный прогнать с параметрами. Кстати,
> нормальный способ передать на вход разделитель $| существует ?

существует

######################################################################
###
### use Translate rule for checking relays and check_compat:
### Translate,checkrelay zuka.ru.ru $| 1.2.3.4
### Translate,check_compat sender на address.tld $| recipient на address.tld
###
######################################################################

STranslate
R $* $$| $*                             $: $1 $| $2

взято из третьего издания орейлевой книги по сендмылу

> Сейчас (как ты здесь показывал) делаю тестовый рулесет:
> STest
> R $* <?> $*       $: $>Local_check_relay $1 $| $2
> и ему на вход параметры, разделенные <?>... Некрасиво.

для двух параметров годится вышеприведенный Translate
а я примерял правило с <?> для трех параметров, т. к. в облом было для 
одного раза делать вариант правила Translate с тремя параметрами

> VU> и контроллировать, чтобы хак в случае, когда не нужно реагировать на
> VU> письмо, а передавать управление дальше, возвращал из правила то же
> VU> значение, которое ему и передавалось.

> Увы, отладка в голове подвела.

если хак громоздкий, то в голове не всегда реально отладись :)

> VU> кстати, а что за хак самодельный? в чем идея?

> Да ты в курсе, мы в ru.unix.bsd на эту тему общались, ты и реализацию
> подкинул. Суть в том, чтобы для писем, уходящих из локалки, прятать
> адрес релея (для скрытия внутренней структуры сети) и заменять его на
> localhost в Received:
> Вот как это выглядит:
> Received: from ds.dialup.bittu (localhost [127.0.0.1])
>     by bitty.balakovo.info with ESMTP id i9J7dUV8022660
>     for <test на balakovo.info>; Tue, 19 Oct 2004 11:39:31 +0400 (MSD)

да, помню, было такое когда-то...

> хотя на самом деле ds.dialup.bittu имеет адрес 192.168.90.1.

да, да, было

> Если кому-то будет интересно:
> divert(-1)
> #
> # Convert host address in Received: to localhost for relayed domains
> #
> # Конвертируем адреса в хидере Received: для отправляемых изнутри писем
> # Было:  Received: from ds (ds.dialup.bittu [192.168.90.1])
> # Стало: Received: from ds (localhost [127.0.0.1])
> # Управление в access: 
> # HideIP:1.2.3.4   HIDE
> # HideIP:1.2.3.    HIDE
> # HideIP:1.2.      HIDE

я бы сделал немного не так. то, что нужно скрывать IP, видно и из 
квалификатора HideIP. в качестве значения справа можно юзеть YES и NO. 
NO можно использовать для исключений.

или другой вариант - в качестве значения можно использовать A/PTR записи 
рилея, которые будут использованы при подмене

> #
> dnl
> divert(0)
> VERSIONID(`$Id: masq_as_localhost.m4,v 8.12-0.02 2004/04/11 17:46:00 DS Exp $')dnl

я бы наверное назвал anonymize :)

> divert(-1)
> dnl
> ifdef(`_ACCESS_TABLE_', `', `
> errprint(`*** ERROR: HACK(masq_as_localhost) requires FEATURE(access_db)
> ')')
> dnl
> define(`confRECEIVED_HEADER',dnl
> $?sfrom $s $.$?{hide_ip}(localhost [127.0.0.1])$|$?_($?s$|from $.$_)$.$.
>     $?{auth_type}(authenticated$?{auth_ssf} bits=${auth_ssf}$.)
>     $.by $j$?r with $r$. id $i$?{tls_version}
>     (version=${tls_version} cipher=${cipher} bits=${cipher_bits} verify=${verify})$.$?u
>     for $u; $|;
>     $.$b)dnl
> dnl
> LOCAL_RULESETS
> dnl
> dnl
> SLocal_check_relay
> dnl workspace: {client_name} $| {client_addr}
> R $* $| $+              $: <$(access HideIP:$2 $: ? $)> $1 $| $2
> R <?> $* $| $-.$-.$-.$- $: <$(access HideIP:$2.$3.$4. $: ? $)> $1 $| $2.$3.$4.$5
> R <?> $* $| $-.$-.$-.$- $: <$(access HideIP:$2.$3. $: ? $)> $1 $| $2.$3.$4.$5
> R <HIDE> $*             $: $(macro {hide_ip} $@ yes $) $1
> R <$*> $*               $: $2

я думаю, что переделав на один рекурсивный лукап в access_db можно 
вполне положить хак в паровоз

-- 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Best wishes Victor Ustugov   mailto:victor на corvax.kiev.ua
public GnuPG/PGP key:        http://victor.corvax.kiev.ua/corvax.asc
ICQ UIN: 77186900, 32418694  nic-handle: CRV2-RIPE, CRV-UANIC




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