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