Добрый день!
Можно ли как-то ограничить адреса отправителей, которым будет позволено отправлять почту на определенные (не все) локальные адреса?
Например, у меня есть пользователи вида userxx@mydomain.ru (xx-число)
Надо, чтобы им могли писать допустим только myuser1@mydomain.ru, aaa@mail.ru, bbb@yandex.ru, ... А остальным - отлуп.
>Например, у меня есть пользователи вида userxx@mydomain.ru (xx-число)
>Надо, чтобы им могли писать допустим только myuser1@mydomain.ru, aaa@mail.ru, bbb@yandex.ru, ... А
>остальным - отлуп.
Спасибо, Medlar, ссылка очень информативная
Начал разбираться с макро-языком, но что-то пока тяжело доходит.
Может гуру подскажут, как можно изменить пример, чтобы адреса отправителей и получателей брались из файлов?
Ну там же куча таких примеров!
#В этом файле перечисляем адреса получателей локальных:
KRcp hash /etc/mail/rcp
формат файла
user1 [TAB] LIST1
user2 [TAB] LIST1makemap hash rcp <rcp
#В этом файле перечисляем адреса отправителей внешних:
KSnd hash /etc/mail/snd
формат файла
user1 [TAB] LIST2
user2 [TAB] LIST2makemap hash snd <snd
Сорри, вот тут ошибочки, надо:
KRcp hash /etc/mail/rcp
формат файла
user1 [TAB] @LIST1
user2 [TAB] @LIST1KSnd hash /etc/mail/snd
формат файла
user1<@host.domain.ru.> [TAB] @LIST2
user2<@host.otherdomain.ru.> [TAB] @LIST2
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/rcpLOCAL_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
>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
### в ориигинале опечатка - скобочка ^Спасибо, исправлено.
>>STranslate
>>R$* $$| $*
>По-моему, это лишнее
Это для тестирования (sendmail -bt) - иначе не получается передать разделитель $|
В окончательном варианте можно убрать.