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

Исходное сообщение
"sendmail ограничения"

Отправлено cub0 , 03-Мрт-05 13:03 
Добрый день!
Можно ли как-то ограничить адреса отправителей, которым будет позволено отправлять почту на определенные (не все) локальные адреса?
Например, у меня есть пользователи вида userxx@mydomain.ru (xx-число)
Надо, чтобы им могли писать допустим только myuser1@mydomain.ru, aaa@mail.ru, bbb@yandex.ru, ... А остальным - отлуп.

Содержание

Сообщения в этом обсуждении
"sendmail ограничения"
Отправлено Medlar , 03-Мрт-05 13:18 
>Например, у меня есть пользователи вида userxx@mydomain.ru (xx-число)
>Надо, чтобы им могли писать допустим только myuser1@mydomain.ru, aaa@mail.ru, bbb@yandex.ru, ... А
>остальным - отлуп.


http://www.anrb.ru/linux/sendmail.html#4


"sendmail ограничения"
Отправлено cub0 , 04-Мрт-05 10:59 
Спасибо, Medlar, ссылка очень информативная
Начал разбираться с макро-языком, но что-то пока тяжело доходит.
Может гуру подскажут, как можно изменить пример, чтобы адреса отправителей и получателей брались из файлов?


"sendmail ограничения"
Отправлено Medlar , 04-Мрт-05 13:19 
Ну там же куча таких примеров!
#В этом файле перечисляем адреса получателей локальных:
KRcp hash /etc/mail/rcp
формат файла
user1  [TAB] LIST1
user2  [TAB] LIST1

makemap hash rcp <rcp

#В этом файле перечисляем адреса отправителей внешних:
KSnd hash /etc/mail/snd
формат файла
user1  [TAB] LIST2
user2  [TAB] LIST2

makemap hash snd <snd


"sendmail ограничения"
Отправлено Medlar , 04-Мрт-05 13:27 
Сорри, вот тут ошибочки, надо:
KRcp hash /etc/mail/rcp
формат файла
user1  [TAB] @LIST1
user2  [TAB] @LIST1

KSnd hash /etc/mail/snd
формат файла
user1<@host.domain.ru.>  [TAB] @LIST2
user2<@host.otherdomain.ru.>  [TAB] @LIST2



"sendmail ограничения"
Отправлено cub0 , 05-Мрт-05 07:15 
Medlar, спасибо еще раз
Вобщем, разобрался маленько с правилами
Получилось 2 варианта, вроде работают оба
-------------------- 1 --------------------------
LOCAL_CONFIG
F{snd1}                /etc/mail/snd1
F{rcp1}                /etc/mail/rcp1
LOCAL_RULESETS
STranslate
R$* $$| $*             $1 $| $2
Scheck_compat
R$+ $| $+              $: $2 $| $>3 $1 canonicalize sender
R$+ $| $+              $: $2 $| $>3 $1 canonicalize recipient
R$={snd1} $| $+        $: $>CheckRcpt $2
$*                     $@OK
SCheckRcpt
R$={rcp1}              $#error $: 553 You cannot send letter to this user
R$*                    $@OK
-------------------
содержимое rcp1:
userxx<@mydomain.ru.>

содержимое snd1 (этим будет запрещено слать на ящики, перечисленные в rcp1):
baduser<@mydomain.ru.>

-------------------------- 2 ------------------------
LOCAL_CONFIG
KSnd hash /etc/mail/snd
KRcp hash /etc/mail/rcp

LOCAL_RULESETS
STranslate
R$* $$| $*                      $1 $| $2
Scheck_compat
R$* $| $*               $: $2 $| $>Parse0 $>3 $1
R$* $| $*               $: $2 $| $>Parse0 $>3 $1
R$+ $| $+<@$=w.>        $: $1 $| $(Rcp $2 $:$2 $)
R$+ $| YES              $: $>CheckSender $1
###  в ориигинале опечатка - скобочка    ^
R$*                     $@OK
SCheckSender
R$+                     $: $(Snd $1 $:$1 $)
RYES                    $@ OK
R$*                     $#error $: 553 You cannot send letter to this user
---------------
Формат snd (Этим будет разрешено слать на [rcp] - остальным нет.
myuser1<@maria-ra.ru.>  YES

Формат rcp
userxx                  YES


"sendmail ограничения"
Отправлено Medlar , 05-Мрт-05 12:28 
>Medlar, спасибо еще раз
>Вобщем, разобрался маленько с правилами
>Получилось 2 варианта, вроде работают оба
Я рада :) Если подружиться с синтаксисом sendmail.cf, можно такого наворочать! :)

>STranslate
>R$* $$| $*    
По-моему, это лишнее

>R$={snd1} $| $+        $: $>CheckRcpt $2
Так действительно проще, чем во 2 варианте, только следует иметь в виду,
что синтаксис $= означает совпадение _фразы_, что нам и нужно, а вот если нужно _несовпадение_, то синтаксис $~ тут уже не подойдет, т.к. он опредлен только для _слова_:
http://www.opennet.me/docs/RUS/sendmail2/sendmail5.html#toc51

>R$+ $| YES              $: $>CheckSender $1
###  в ориигинале опечатка - скобочка    ^

Спасибо, исправлено.


"sendmail ограничения"
Отправлено cub0 , 07-Мрт-05 07:00 
>>STranslate
>>R$* $$| $*    
>По-моему, это лишнее
Это для тестирования (sendmail -bt) - иначе не получается передать разделитель $|
В окончательном варианте можно убрать.