Здравствуйте!
Проблема такая:
Веб сервер, сайты могут слать почту, надо чтоб некоторые (в основном шлющие через sendmail) могли слать только по внутреннему домену, а аутентифицированные по smtp могли слать куда угодно.сделал в acl ограничение, что неаутентифицированные не могут слать никуда кроме local_domains и relay_to_domains, Но если слать через sendmail - прекрасно все уходит, т.к. нет SMTP сессии и ACL не используются...
Помогите советом пожалуйста!
а правило для localhost?
для него то нет ограничений по дефолту, а шлют ведь именно с него.
> т.к. нет SMTP сессии и ACL не используются...используются, только acl_not_smtp
Вам сюда
http://exim.org/exim-html-current/doc/html/spec_html/ch40.html
Спасибо всем откликнувшимся!to shadow_alone:
в acl_smtp_rcpt я прописал deny до принятия всех, так что в smtp все работает хорошо.
А вот где еще правило для принятия всего с локалхоста пока не нашел, не подскажете конкретней ?to ALex_hh:
спасибо за ссылку (прочитал вдумчиво, понял, сколько смог)! я попробовал для начала просто прописать
acl_not_smtp:
denyно sendmail (я проверяю им с консоли) как отправлял куда угодно, так и отправляет...
возможно эта проверка некорректна... подскажите пожалуйста, как правильно проверять non-SMTP соединения.
В мануале написано, что deny должно прерывать доставку сообщения по определению, но этого почему-то не происходит ....собственно у меня debian lenny, конфиг стандартный для системы "интернет сайт", с ограничением в начале acl_smtp_rcpt, для отбрасывания запросов на отправку в другие домены от неаутентифицированных пользователей. (ну и включена аутентификация)
>[оверквотинг удален]
>спасибо за ссылку (прочитал вдумчиво, понял, сколько смог)! я попробовал для начала
>просто прописать
>acl_not_smtp:
> deny
>
>но sendmail (я проверяю им с консоли) как отправлял куда угодно, так
>и отправляет...
>возможно эта проверка некорректна... подскажите пожалуйста, как правильно проверять non-SMTP соединения.
>В мануале написано, что deny должно прерывать доставку сообщения по определению, но
>этого почему-то не происходит ....что то я не понял, какой sendmail?
>что то я не понял, какой sendmail?ну его эмулирует exim, команда /usr/sbin/sendmail. как я понял это просто алиас на exim.
попробовал и просто командой mail - эффект тотже... все разрешено для не SMTPуже начинаю терять надежду :(
тока понял, что я не указал сам 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
acceptacl_check_not_smtp:
deny
condition = ${if def:acl_m0 {1}{0}}
accept
>тока понял, что я не указал сам acl_not_smtp, хотя сделал check для
>него :)ну ты даешь
>[оверквотинг удален]
> !authenticated = *
> set acl_m0 = bad
>
> accept
>
>acl_check_not_smtp:
> deny
> condition
> = ${if def:acl_m0 {1}{0}}
> acceptexim -bh ...
и смотри что он там выдает
Вашу задачу решить нельзя. Так как 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
Извините 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 errorusing ACL "acl_check_not_smtp"
processing "warn"
check !domains = +local_domains : +relay_to_domains
warn: condition test errorМожет Вы знаете как проверить адрес назначения ? может можно как-то через condition.
Заранее спасибо!
Кажется наконецто получилось :)
выглядит так:acl_check_not_smtp_start:
warn
!condition = ${if match{$recipients}{mydomain.ru}}
set acl_m0 = bad
log_message = TO BAD - $recipients
acceptacl_check_not_smtp:
deny
condition = ${if def:acl_m0 {1}{0}}
log_message = deny send to non mydomain.ru domainsaccept
ALex_hha и shadow_alone ОГРОМНОЕ спасибо за помощь!!!!
>Может Вы знаете как проверить адрес назначения ? может можно как-то через
>condition.
>Заранее спасибо!можно, смотри в сторону $recipients. Единственное, проблемы могут быть, если получателей много, с одним думаю проблем не будет