LINUX.ORG.RU

Sendmail: как запретить пользователю принимать почту


0

0

Здравсвуйте! Вопрос по sendmail. Подскажите как запретить пользователю принимать почту, т.е. пользователь заведен в системе, но мне надо чтобы он не принимал почту из вне (интернет), а принимал только с локальной подсети. Можно ли средствами сендмейла сделать? Например чтобы он отправителю отправлял ошибку "user unknown" или что то типа того.

Спасибо!

anonymous

Насколько я знаю стандартными средствами sendmail ты этого не сделаешь, а вот через libmilter можно попробовать, потому что при приеме почты, тебе надо делать анализ откуда человек соединился.

mator ★★★★★
()

Ну, для начала, почту отдает не sendmail, а долее другой сервер pop3/imap и пр. Что у вас установлено. А чтоб извне почту не хавали, так это просто этому серверу надо сказать из какой сети к ним коннектиться можно. Ну и фаерволом прикрыть всяческие поползновения к 110 порту из вне.

vada ★★★★★
()

можно попробовать так:

LOCAL_CONFIG
Ksyslog syslog
#Получатели, которые могут получать только локальную почту :
KRcp regex -a@LIST ^user1|user2$
LOCAL_RULESETS

SLocal_check_rcpt
# empty address?
R<> $#error $@ nouser $: "553 User address required"
R$@ $#error $@ nouser $: "553 User address required"

#Добавляем адрес отправителя
R$* $: $&f $| $1

#Канонизируем адреса
R$* $| $* $: $2 $| $>Parse0 $>3 $1
R$* $| $* $: $2 $| $>Parse0 $>3 $1

#Проверяем, является ли локальный получатель тем самым юзером, к-й ограничен в правах.
R$+ $| $+<@$=w.> $: $1 $| $(Rcp $2 $:$2 $)
#Да - проверяем, кто отправитель:
R$+ $| @LIST $: $>CheckSender
#Другие варианты fqdn-адресов пропускаем (внеш-внеш, внутр-внеш, внеш-внутр)
R$+<@$+> $| $+<@$+> $@ $2
#Алиасы, MAILER-DAEMON и др. лок. получатели без доменной части - в ту же проверку
R$+ $| $+ $: $1 $| $(Rcp $2 $:$2 $)
#Да - проверяем, кто отправитель:
R$+ $| @LIST $: $>CheckSender

#Контрольная проверка - кто там не охвачен нашими правилами: если сработает - покажешь, подправим
R$* $: $(syslog syslog:PROBLEM: $1 $) $1

SCheckSender
#Если отправитель из локальной сети - завершаем работу набора правил
#(файл /etc/mail/relay-domains д.б. заполнен локальными адресами)
R$* $: $&{client_addr}
R$=R $* $@OK

#Нет - даем отлуп
R$* $#error $: 553 Sorry, you can not send letter to this user.
Пересобираем sendmail.cf и перезапускаем sendmail.
Не проверялось, написано на основе имеющихся заготовок.
Если будешь пробовать, сообщи о результате.

Sciurus
()
Ответ на: комментарий от Sciurus

Поправочка.
Поскольку в данном примере главное - адрес получателя и ip-адрес отправителя, то добавлять эл.адрес отправителя в рабочую область не нужно.

LOCAL_CONFIG
#Получатели, которые могут получать только локальную почту :
KRcp regex -a@LIST ^user1|user2$
LOCAL_RULESETS

SLocal_check_rcpt
# empty address?
R<> <TAB> $#error $@ nouser $: "553 User address required"
R$@ <TAB> $#error $@ nouser $: "553 User address required"

#Канонизируем адрес получателя
R$* <TAB> $: $>Parse0 $>3 $1

#Проверяем, является ли локальный получатель тем самым юзером, к-й ограничен в правах.
R$+<@$=w.> <TAB> $: $(Rcp $1 $:$1 $)
#Да - проверяем, кто отправитель:
R@LIST <TAB> $: $>CheckSender
#Другие варианты fqdn-адресов пропускаем
R$+<@$+> <TAB> $@ OK
#Алиасы, MAILER-DAEMON и др. лок. получатели без доменной части - в ту же проверку
R$+ <TAB> $: $(Rcp $1 $:$1 $)
#Да - проверяем, кто отправитель:
R@LIST <TAB> $: $>CheckSender
#Нет - пропускаем
R$* <TAB> $@ OK

SCheckSender
#Если отправитель из локальной сети - завершаем работу набора правил
#(файл /etc/mail/relay-domains д.б. заполнен локальными адресами)
R$* <TAB> $: $&{client_addr}
R$=R $* <TAB> $@ OK

#Нет - даем отлуп
R$* <TAB> $#error $: 553 Sorry, you can not send letter to this user.

Sciurus
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.