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

Исходное сообщение
"помогите разобраться с exim ACL"

Отправлено ZM_Michael , 22-Июл-09 00:21 
Здравствуйте!
Проблема такая:
Веб сервер, сайты могут слать почту, надо чтоб некоторые (в основном шлющие через sendmail) могли слать только по внутреннему домену, а аутентифицированные по smtp могли слать куда угодно.

сделал в acl ограничение, что неаутентифицированные не могут слать никуда кроме local_domains и relay_to_domains, Но если слать через sendmail - прекрасно все уходит, т.к. нет SMTP сессии и ACL не используются...

Помогите советом пожалуйста!


Содержание

Сообщения в этом обсуждении
"помогите разобраться с exim ACL"
Отправлено shadow_alone , 22-Июл-09 00:56 
а правило для localhost?
для него то нет ограничений по дефолту, а шлют ведь именно с него.

"помогите разобраться с exim ACL"
Отправлено ALex_hha , 22-Июл-09 11:47 
> т.к. нет SMTP сессии и ACL не используются...

используются, только acl_not_smtp

Вам сюда

http://exim.org/exim-html-current/doc/html/spec_html/ch40.html


"помогите разобраться с exim ACL"
Отправлено ZM_Michael , 23-Июл-09 00:21 
Спасибо всем откликнувшимся!

to shadow_alone:
в acl_smtp_rcpt я прописал deny до принятия всех, так что в smtp все работает хорошо.
А вот где еще правило для принятия всего с локалхоста пока не нашел, не подскажете конкретней ?

to ALex_hh:
спасибо за ссылку (прочитал вдумчиво, понял, сколько смог)! я попробовал для начала просто прописать
acl_not_smtp:
  deny

но sendmail (я проверяю им с консоли) как отправлял куда угодно, так и отправляет...
возможно эта проверка некорректна... подскажите пожалуйста, как правильно проверять non-SMTP соединения.
В мануале написано, что deny должно прерывать доставку сообщения по определению, но этого почему-то не происходит ....

собственно у меня debian lenny, конфиг стандартный для системы "интернет сайт", с ограничением в начале acl_smtp_rcpt, для отбрасывания запросов на отправку в другие домены от неаутентифицированных пользователей. (ну и включена аутентификация)


"помогите разобраться с exim ACL"
Отправлено ALex_hha , 23-Июл-09 18:31 
>[оверквотинг удален]
>спасибо за ссылку (прочитал вдумчиво, понял, сколько смог)! я попробовал для начала
>просто прописать
>acl_not_smtp:
>  deny
>
>но sendmail (я проверяю им с консоли) как отправлял куда угодно, так
>и отправляет...
>возможно эта проверка некорректна... подскажите пожалуйста, как правильно проверять non-SMTP соединения.
>В мануале написано, что deny должно прерывать доставку сообщения по определению, но
>этого почему-то не происходит ....

что то я не понял, какой sendmail?


"помогите разобраться с exim ACL"
Отправлено ZM_Michael , 23-Июл-09 21:48 
>что то я не понял, какой sendmail?

ну его эмулирует exim, команда /usr/sbin/sendmail. как я понял это просто алиас на exim.


"помогите разобраться с exim ACL"
Отправлено ZM_Michael , 23-Июл-09 23:14 
попробовал и просто командой mail  - эффект тотже... все разрешено для не SMTP

уже начинаю терять надежду :(


"помогите разобраться с exim ACL"
Отправлено ZM_Michael , 24-Июл-09 00:21 
тока понял, что я не указал сам acl_not_smtp, хотя сделал check для него :)
переделал и оказалось, что нельзя проверять имена доменов в acl_not_smtp, но вроде можно в acl_not_smtp_start, пытаюсь проверив там, передать параметр в acl_not_smtp следующей конструкцией, но всеравно не работает (

acl_check_not_smtp_start:
  warn
        domains = !+local_domains : !+relay_to_domains
        !authenticated = *
        set acl_m0 = bad
  accept

acl_check_not_smtp:
  deny
        condition     = ${if def:acl_m0 {1}{0}}
  accept


"помогите разобраться с exim ACL"
Отправлено ALex_hha , 24-Июл-09 11:32 
>тока понял, что я не указал сам acl_not_smtp, хотя сделал check для
>него :)

ну ты даешь

>[оверквотинг удален]
>        !authenticated = *
>        set acl_m0 = bad
>
>  accept
>
>acl_check_not_smtp:
>  deny
>        condition    
> = ${if def:acl_m0 {1}{0}}
>  accept

exim -bh ...

и смотри что он там выдает


"помогите разобраться с exim ACL"
Отправлено ALex_hha , 24-Июл-09 16:22 
Вашу задачу решить нельзя. Так как authenticated не имеет смысла в acl_not_smtp.

Только что проверил

acl_check_not_smtp_start:
    warn
        message = Authenticated - $authenticated_sender
accept

Вот что в логах

17:26:17 10286 using ACL "acl_check_not_smtp_start"
17:26:17 10286 processing "warn"
17:26:17 10286 expanding: Authenticated - $authenticated_sender
17:26:17 10286    result: Authenticated - root@centos5.w3.lan


"помогите разобраться с exim ACL"
Отправлено ZM_Michael , 24-Июл-09 22:56 
Извините ALex_hha, я вот сейчас посмотрел на свой пост и понял что надо раньше мне ложится спать... конечно ненадо проверять никакие не authenticated в non_smtp, они проверяются в smtp, а локальные всегда уже аутентифицированы.
Проверять надо адрес назначения - входит ли он в список разрешенных получателей или нет.
Но, как мне кажется, это тоже невозможно т.к. domains работает только в smtp после команды RCPT.

using ACL "acl_check_not_smtp_start"
processing "warn"
check !domains = +local_domains : +relay_to_domains
warn: condition test error

using ACL "acl_check_not_smtp"
processing "warn"
check !domains = +local_domains : +relay_to_domains
warn: condition test error

Может Вы знаете как проверить адрес назначения ? может можно как-то через condition.
Заранее спасибо!


"помогите разобраться с exim ACL"
Отправлено ZM_Michael , 24-Июл-09 23:17 
Кажется наконецто получилось :)
выглядит так:

acl_check_not_smtp_start:
  warn
        !condition = ${if match{$recipients}{mydomain.ru}}
        set acl_m0 = bad
        log_message = TO BAD - $recipients
  accept

acl_check_not_smtp:
  deny
        condition     = ${if def:acl_m0 {1}{0}}
        log_message = deny send to non mydomain.ru domains

  accept


ALex_hha и shadow_alone ОГРОМНОЕ спасибо за помощь!!!!


"помогите разобраться с exim ACL"
Отправлено ALex_hha , 24-Июл-09 23:17 
>Может Вы знаете как проверить адрес назначения ? может можно как-то через
>condition.
>Заранее спасибо!

можно, смотри в сторону $recipients. Единственное, проблемы могут быть, если получателей много, с одним думаю проблем не будет