URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 69978
[ Назад ]

Исходное сообщение
"check_compat в sendmail"

Отправлено DJ_Kill , 01-Ноя-06 17:29 
Version 8.13.6

Нужно чтобы определённый пользователь мог отсылать почту только внутри локального домена.

Попробовал через FEATURE(`compat_check')
Но с ней можно указать только что нельзя слать на определённый ящик, а запретить слать на всё, кроме трёх доменов (локальных) не проходит.
Compat:test@domain1.ru<@>*@* DISCARD
и прочие комбинации в access результата не дают.

Потом попробовал через m4 (тут я пока плохо разбираюсь):

LOCAL_CONFIG
KSender regex -a@LIST restricted_user

LOCAL_RULESETS
R$* $| $*             $: $2 $| $>Parse0 $>3 $1
R$* $| $*             $: $2 $| $>Parse0 $>3 $1
CheckLocalMail.
R$+<@$=w.> $| $+             $: $(Sender $1 $:$1 $) $| $3
R@LIST $| $+             $: $>CheckLocalMail $1
R$* $| $*              $@ OK

SCheckLocalMail
R$+<@$=w.>              $@ OK
R$*              $#error $: 553 Sorry, you cannot send a mail to non-local address. Please, contact to postmaster

Говорит что бесконечный цикл в первом правиле compat_check и почта пользователя ходит свободно.

Ткните носом где я накосорезил.


Содержание

Сообщения в этом обсуждении
"check_compat в sendmail"
Отправлено DJ_Kill , 01-Ноя-06 18:01 
Сам нашёл и косяк и другое решение. :))))

Косяк в том, что у меня локальных доменов несколько. Решение:

LOCAL_CONFIG
F{Internal}/etc/mail/intern.only
F{Domains}/etc/mail/relay-domains

LOCAL_RULESETS
SLocal_check_rcpt
R$*                $: $1 $| $>3 $&f
R$* $| <>            $@ OK
R$* $| $={Internal} <@$=w.>    $: $1
R$* $| $={Internal} <@$={Domains}>    $: $1
R$* $| $={Internal}        $: $1
R$* $| $*            $@ OK
R$*                $: $>3 $1
R$+<@$=w.>            $@ OK
R$+<@$+>            $#error $@ 5.1.8 $: "553 Sorry, you cannot send a mail to non-local address. Please, contact to postmaster."