The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"     Как именно средствами Sendmail запретить прием внешних пис"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Почта / Linux)
Изначальное сообщение [ Отслеживать ]

"     Как именно средствами Sendmail запретить прием внешних пис"  +/
Сообщение от HanTengry email(ok) on 13-Июл-10, 13:07 
На форуме поднимали такую тему (к сожалению только для чтения, поэтому задаю свой вопрос здесь):

    >Как именно средствами Sendmail запретить прием внешних писем от своего домена
    >Ну примерно так:

    Slocal_check_mail
    R$+         $1 $| $&{client_name}
    R$+ $| $=w  $@ $1   # local connection
    R$+ $|              # local mail
    R $* $| $*      $: $1 $| $>CheckLocalNet $2
    R $* $| $*      $: $1 $| $2 $>CheckLocalUser $1
    R $* $| $* $*   $: $1 $| $3 $2
    R $* $| CONN_REMOTE USER_REMOTE       $@ $1    
    R $* $| CONN_LOCAL  USER_REMOTE       $@ $1
    R $* $| CONN_LOCAL  USER_LOCAL        $@ $1
    R $* $| CONN_REMOTE USER_LOCAL        $#error $@ 5.7.1 $: "571 foreign host " $&{client_name} " can not send mail from local user " $>decanonify $1
    R $*           $#error $@ 4.5.1 $: "451 unknown internal error"

    SCheckLocalNet
    R $=w                   $@ CONN_LOCAL
    R $=R                   $@ CONN_LOCAL
    R $+. $=R               $@ CONN_LOCAL
    R $*                    $@ CONN_REMOTE

    SCheckLocalUser
    R $*                    $: $>canonify $1
    R $* < @ $=w . >        $@ USER_LOCAL
    R $* < @ $=R . >        $@ USER_LOCAL
    R $* < @ $+ . $=w . >   $@ USER_LOCAL
    R $* < @ $+ . $=R . >   $@ USER_LOCAL
    R $* < @ $+ . >         $@ USER_REMOTE
    R $*                    $@ USER_LOCAL


Есть ли решения не для гуру? Например в .mc сделать то же самое можно? Совсем не понимаю как вставлять в свой конфиг этот кусок - что из старого заменить, что оставить, что стереть.. :(  

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "     Как именно средствами Sendmail запретить прием внешних пис"  +/
Сообщение от Medlar email(ok) on 13-Июл-10, 13:52 
УзнаЮ руку уважаемого Z0termaNN :)

В sendmail.mc дописываете:
LOCAL_CONFIG
LOCAL_RULESETS
Далее то, что вы нашли

ПЕресобираете конфиг, рестартуете sendmail, все.


Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

2. "     Как именно средствами Sendmail запретить прием внешних пис"  +/
Сообщение от HanTengry email(ok) on 13-Июл-10, 15:07 
>УзнаЮ руку уважаемого Z0termaNN :)
>
>В sendmail.mc дописываете:
>LOCAL_CONFIG
>LOCAL_RULESETS
>Далее то, что вы нашли
>
>ПЕресобираете конфиг, рестартуете sendmail, все.

А если у меня уже был в sendmail.cf пункт SLocal_check_mail(вижу что там есть такой пунк но с другими правилами). При перегенерации sendmail.mc со старым пунктом что случиться?


Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

3. "     Как именно средствами Sendmail запретить прием внешних пис"  +/
Сообщение от Medlar email(ok) on 13-Июл-10, 15:15 
Новые правила надо "вплетать" в  старые.
Покажите, что у вас было
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

4. "     Как именно средствами Sendmail запретить прием внешних пис"  +/
Сообщение от HanTengry email(ok) on 13-Июл-10, 17:30 
>Новые правила надо "вплетать" в  старые.
>Покажите, что у вас было

Ниже как у меня щас работает:
(попутно вопрос: Почему в правиле которое я нашел SLocal_check_mail пишется так: Slocal_check_mail - нет разницы?)

######################################################################
###  check_mail -- check SMTP `MAIL FROM:' command argument
######################################################################

SLocal_check_mail
Scheck_mail
R$*            $: $1 $| $>"Local_check_mail" $1
R$* $| $#$*        $#$2
R$* $| $*        $@ $>"Basic_check_mail" $1

SBasic_check_mail
# check for deferred delivery mode
R$*            $: < $&{deliveryMode} > $1
R< d > $*        $@ deferred
R< $* > $*        $: $2

# authenticated?
R$*            $: $1 $| $>"tls_client" $&{verify} $| MAIL
R$* $| $#$+        $#$2
R$* $| $*        $: $1

R<>            $@ <OK>            we MUST accept <> (RFC 1123)
R$+            $: <?> $1
R<?><$+>        $: <@> <$1>
R<?>$+            $: <@> <$1>
R$*            $: $&{daemon_flags} $| $1
R$* f $* $| <@> < $* @ $- >    $: < ? $&{client_name} > < $3 @ $4 >
R$* u $* $| <@> < $* >    $: <?> < $3 >
R$* $| $*        $: $2
# handle case of @localhost on address
R<@> < $* @ localhost >    $: < ? $&{client_name} > < $1 @ localhost >
R<@> < $* @ [127.0.0.1] >
            $: < ? $&{client_name} > < $1 @ [127.0.0.1] >
R<@> < $* @ localhost.$m >
            $: < ? $&{client_name} > < $1 @ localhost.$m >
R<@> < $* @ localhost.UUCP >
            $: < ? $&{client_name} > < $1 @ localhost.UUCP >
R<@> $*            $: $1            no localhost as domain
R<? $=w> $*        $: $2            local client: ok
R<? $+> <$+>        $#error $@ 5.5.4 $: "553 Real domain name required for sender address"
R<?> $*            $: $1
R$*            $: <?> $>CanonAddr $1        canonify sender address and mark it
R<?> $* < @ $+ . >    <?> $1 < @ $2 >            strip trailing dots
# handle non-DNS hostnames (*.bitnet, *.decnet, *.uucp, etc)
R<?> $* < @ $* $=P >    $: <OKR> $1 < @ $2 $3 >
R<?> $* < @ $j >    $: <OKR> $1 < @ $j >
R<?> $* < @ $+ >    $: <? $(resolve $2 $: $2 <PERM> $) > $1 < @ $2 >
R<? $* <$->> $* < @ $+ >
            $: <$2> $3 < @ $4 >

# check sender address: user@address, user@, address
R<$+> $+ < @ $* >    $: @<$1> <$2 < @ $3 >> $| <F:$2@$3> <U:$2@> <D:$3>
R<$+> $+        $: @<$1> <$2> $| <U:$2@>
R@ <$+> <$*> $| <$+>    $: <@> <$1> <$2> $| $>SearchList <+ From> $| <$3> <>
R<@> <$+> <$*> $| <$*>    $: <$3> <$1> <$2>        reverse result
# retransform for further use
R<?> <$+> <$*>        $: <$1> $2    no match
R<$+> <$+> <$*>        $: <$1> $3    relevant result, keep it

# handle case of no @domain on address
R<?> $*            $: $&{daemon_flags} $| <?> $1
R$* u $* $| <?> $*    $: <OKR> $3
R$* $| $*        $: $2
R<?> $*            $: < ? $&{client_addr} > $1
R<?> $*            $@ <OKR>            ...local unqualed ok
R<? $+> $*        $#error $@ 5.5.4 $: "553 Domain name required for sender address " $&f
                            ...remote is not
# check results
R<?> $*            $: @ $1        mark address: nothing known about it
R<$={ResOk}> $*        $@ <OKR>    domain ok: stop
R<TEMP> $*        $#error $@ 4.1.8 $: "451 Domain of sender address " $&f " does not resolve"
R<PERM> $*        $#error $@ 5.1.8 $: "553 Domain of sender address " $&f " does not exist"
R<$={Accept}> $*    $# $1        accept from access map
R<DISCARD> $*        $#discard $: discard
R<QUARANTINE:$+> $*    $#error $@ quarantine $: $1
R<REJECT> $*        $#error $@ 5.7.1 $: "550 Access denied"
R<ERROR:$-.$-.$-:$+> $*        $#error $@ $1.$2.$3 $: $4
R<ERROR:$+> $*        $#error $: $1
R<<TMPF>> $*        $#error $@ 4.3.0 $: "451 Temporary system failure. Please try again later."
R<$+> $*        $#error $: $1        error from access db

######################################################################
###  check_rcpt -- check SMTP `RCPT TO:' command argument
######################################################################

Так выглядит cf после генерации из mc:

Верхний блок остался и добавилось ниже это:

######################################################################
###  authinfo: lookup authinfo in the access map
###
###    Parameters:
###        $1: {server_name}
###        $2: {server_addr}
######################################################################
Sauthinfo
R$*        $: $1 $| $>D <$&{server_name}> <?> <! AuthInfo> <>
R$* $| <?>$*    $: $1 $| $>A <$&{server_addr}> <?> <! AuthInfo> <>
R$* $| <?>$*    $: $1 $| <$(access AuthInfo: $: ? $)> <>
R$* $| <?>$*    $@ no                no authinfo available
R$* $| <$*> <>    $# $2


SLocal_check_mail
    R$+         $1 $| $&{client_name}
    R$+ $| $=w  $@ $1   # local connection
    R$+ $|              # local mail
    R $* $| $*      $: $1 $| $>CheckLocalNet $2
    R $* $| $*      $: $1 $| $2 $>CheckLocalUser $1
    R $* $| $* $*   $: $1 $| $3 $2
    R $* $| CONN_REMOTE USER_REMOTE       $@ $1    
    R $* $| CONN_LOCAL  USER_REMOTE       $@ $1
    R $* $| CONN_LOCAL  USER_LOCAL        $@ $1
    R $* $| CONN_REMOTE USER_LOCAL        $#error $@ 5.7.1 $: "571 foreign host " $&{client_name} " can not send mail from local user " $>decanonify $1
    R $*           $#error $@ 4.5.1 $: "451 unknown internal error"

    SCheckLocalNet
    R $=w                   $@ CONN_LOCAL
    R $=R                   $@ CONN_LOCAL
    R $+. $=R               $@ CONN_LOCAL
    R $*                    $@ CONN_REMOTE

    SCheckLocalUser
    R $*                    $: $>canonify $1
    R $* < @ $=w . >        $@ USER_LOCAL
    R $* < @ $=R . >        $@ USER_LOCAL
    R $* < @ $+ . $=w . >   $@ USER_LOCAL
    R $* < @ $+ . $=R . >   $@ USER_LOCAL
    R $* < @ $+ . >         $@ USER_REMOTE
    R $*                    $@ USER_LOCAL


#
######################################################################
######################################################################
#####
#####            MAIL FILTER DEFINITIONS
#####
######################################################################
######################################################################

При попытке запустить Sendmail с новым конфигом ошибка в логах messages, ругается одинаково на SCheckLocalNet и SCheckLocalUser: ..../sendmail.cf: line 1172: unknown configuration line "\n SCheckLocalNet\n      R \001=w.......

Если не хватает информации по конфигу скажите скину весь..

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

5. "     Как именно средствами Sendmail запретить прием внешних пис"  +/
Сообщение от HanTengry email(ok) on 14-Июл-10, 12:11 
Помогите объеденить конфиги кто-нибудь, горит!
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

6. "     Как именно средствами Sendmail запретить прием внешних пис"  +/
Сообщение от Medlar email(ok) on 14-Июл-10, 14:43 
SLocal_check_mail
Scheck_mail
говорит о том, что секция Local была пустая. Так что ничего вплетать не надо.

По поводу ошибок: ва швывод показывает наличие лишнего пробела в добавляемом рулсете.
Во-вторых, надеюсь, вы не забыли поставить табуляцию между левыми и правыми частями правил


Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

7. "     Как именно средствами Sendmail запретить прием внешних пис"  +/
Сообщение от HanTengry email(ok) on 14-Июл-10, 17:53 
>По поводу ошибок: ва швывод показывает наличие лишнего пробела в добавляемом рулсете.
>
>Во-вторых, надеюсь, вы не забыли поставить табуляцию между левыми и правыми частями
>правил

В этом варианте(см. Вариант 1 ниже) у меня Sendmail запускается(в Webmin я нажимаю кнопку старта), но при попытке отправить письмо через outlook или через SMTP диалог ошибка:


Задача '192.168.XXX.XXX - отправка' сообщила об ошибке (0x800CCC78) : 'Не удается отправить сообщение. Проверьте адрес электронной почты в свойствах учетной записи.  Отклик сервера: 554 5.3.0 rewrite: expansion too long', что означает: результат применения правила не помещается в буфер - в чем проблема, в неправильно расставленной табуляции при разделении правил?


Вариант 1
SLocal_check_mail
R$+    $1 $| $&{client_name}
R$+ $| $=w    $@ $1    # local connection
R$+    $|
R $* $| $*    $: $1 $| $>CheckLocalNet $2
R $* $| $*    $: $1 $| $2 $>CheckLocalUser $1
R $* $| $* $*    $: $1 $| $3 $2
R $* $| CONN_REMOTE USER_REMOTE    $@ $1    
R $* $| CONN_LOCAL  USER_REMOTE    $@ $1
R $* $| CONN_LOCAL  USER_LOCAL    $@ $1
R $* $| CONN_REMOTE USER_LOCAL    $#error $@ 5.7.1 $: "571 foreign host " $&{client_name} " can not send mail from local user " $>decanonify $1
R $*    $#error $@ 4.5.1 $: "451 unknown internal error"

SCheckLocalNet
R $=w    $@ CONN_LOCAL
R $=R    $@ CONN_LOCAL
R $+. $=R    $@ CONN_LOCAL
R $*    $@ CONN_REMOTE


SCheckLocalUser
R $*    $: $>canonify $1
R $* < @ $=w . >    $@ USER_LOCAL
R $* < @ $=R . >    $@ USER_LOCAL
R $* < @ $+ . $=w . >    $@ USER_LOCAL
R $* < @ $+ . $=R . >    $@ USER_LOCAL
R $* < @ $+ . >        $@ USER_REMOTE
R $*            $@ USER_LOCAL

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

8. "     Как именно средствами Sendmail запретить прием внешних пис"  +/
Сообщение от HanTengry email(ok) on 15-Июл-10, 08:01 
>Задача '192.168.XXX.XXX - отправка' сообщила об ошибке (0x800CCC78) : 'Не удается отправить
>сообщение. Проверьте адрес электронной почты в свойствах учетной записи.  Отклик
>сервера: 554 5.3.0 rewrite: expansion too long', что означает: результат применения
>правила не помещается в буфер - в чем проблема, в неправильно
>расставленной табуляции при разделении правил?

Эта ошибка перестает появляться если закомментировать здесь (не понимаю правда что творю):
#Scheck_mail
#R$*            $: $1 $| $>"Local_check_mail" $1
#R$* $| $#$*        $#$2
#R$* $| $*        $@ $>"Basic_check_mail" $1

Sendmail запускается. НО все равно получается отправить почту от имени своего домена.
Проверяю я это так(SMTP диалог):
telnet ccc.vvv.bbb.nnn 25
HELO mydomain.ru
...please to meet you..
MAIL FROM:sergey@mydomain.ru
..Sender ok..
RCPT TO:sergey@mydomain.ru
DATA
HI! HOW ARE YOU?
...Message accepted for delivery
QUIT


Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

9. "Как именно средствами Sendmail запретить прием внешних пис"  +/
Сообщение от Medlar email(ok) on 15-Июл-10, 15:27 
У меня не будет времени разобраться с рулсетом уважаемого Z0termaNN'a,
поэтому я могу вам помочь лишь своим решением этой проблемы -
http://linux.anrb.ru/sendmail3.html#29

У меня работает один из указанных там вариантов.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

10. "Как именно средствами Sendmail запретить прием внешних пис"  +/
Сообщение от HanTengry (ok) on 20-Июл-10, 20:29 
>У меня не будет времени разобраться с рулсетом уважаемого Z0termaNN'a,
>поэтому я могу вам помочь лишь своим решением этой проблемы -
>http://linux.anrb.ru/sendmail3.html#29
>
>У меня работает один из указанных там вариантов.

Огромное спасибо! Ваше правило помогло! ("5.1. Общий случай." .)

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру