Страница 1 из 1

Не работают ACL в Exim

Добавлено: 2008-01-21 13:48:11
Midnight-cat
У меня не работают все ниже написанные acl, ошибок в логах никаких нет, просто молча не работает и все тут. Задержек нет, письма моментально доходят, на цифры в HELO тоже ни разу не ругался.
Проверяла на рабочей связке Exim+KAV+Spamassasin. Потом специально поставила с нуля тестовый exim 4.69 без довесков, на нем тоже не работает. OS Slackware 10.0
acl следующие:

Код: Выделить всё

 deny    message       = "Не надо пихать свой IP в качестве HELO!"
          hosts         =  *:!+relay_from_hosts
          condition     = ${if eq{$sender_helo_name}\
                          {$sender_host_address}{true}{false}}

deny    condition     = ${if match{$sender_helo_name}\
                          {\N^\d+$\N}{yes}{no}}
          hosts         = !127.0.0.1:!localhost:*
          message       = "В HELO не могут быть тока цифры!"

 warn
        # ставим дефолтовую задержку в 20 секунд
        set acl_m0 = 20s

Re: Не работают ACL в Exim

Добавлено: 2008-01-21 14:57:12
dikens3

Код: Выделить всё

#!/bin/sh

# Тестирование от mail.ru
#(echo "EHLO mxs.mail.ru"; echo "MAIL FROM:user@mail.ru"; echo "RCPT TO: postmaster@ТВОЙ_ДОМЕН.ru"; echo "DATA"; echo "Subject: test"; echo "."; echo "QUIT";) \
#| exim -d -bhc 194.67.23.20 > testlog 2>&1
И смотри что там в логах по твоей теме.

Должно быть примерно следующее.

Код: Выделить всё

processing "deny"
check !senders = :
address match: subject=user@mail.ru pattern=
mail.ru in ""? no (end of list)
user@mail.ru in ":"? no (end of list)
check condition = ${if eq{$sender_helo_name}{}{yes}{no}}
                = no
deny: condition test failed

Re: Не работают ACL в Exim

Добавлено: 2008-01-21 15:35:57
Midnight-cat
Вот что в выводе:

Код: Выделить всё

require: condition test succeeded
processing "warn"
check set acl_m0 = 40s
warn: condition test succeeded
processing "deny"
deny: condition test succeeded
SMTP>> 550 "Free"
LOG: MAIN REJECT
  H=mxs.mail.ru [194.67.23.20] F=<user@mail.ru> rejected RCPT admin@domen.ua: "Free"
SMTP<< DATA
SMTP>> 503-All RCPT commands were rejected with this error:
SMTP>> 503-"Free"
SMTP>> 503 Valid RCPT command must precede DATA
SMTP<< Subject: test
LOG: smtp_syntax_error MAIN
  SMTP syntax error in "Subject: test" H=mxs.mail.ru [194.67.23.20] unrecognized command
SMTP>> 500 unrecognized command
SMTP<< .
LOG: smtp_syntax_error MAIN
  SMTP syntax error in "." H=mxs.mail.ru [194.67.23.20] unrecognized command
SMTP>> 500 unrecognized command
SMTP<< QUIT
SMTP>> 221 domen.ua closing connection
LOG: smtp_connection MAIN
  SMTP connection from mxs.mail.ru [194.67.23.20] closed by QUIT
search_tidyup called
>>>>>>>>>>>>>>>> Exim pid=24196 terminating with rc=0 >>>>>>>>>>>>>>>>
250-domen.ua Hello mxs.mail.ru [194.67.23.20]
250-SIZE 17825792
250-PIPELINING
250 HELP
250 OK
550 "Free"
503-All RCPT commands were rejected with this error:
503-"Free"
503 Valid RCPT command must precede DATA
500 unrecognized command
500 unrecognized command
221 domen.ua closing connection

Re: Не работают ACL в Exim

Добавлено: 2008-01-21 16:16:56
dikens3
H=mxs.mail.ru [194.67.23.20] F=<user@mail.ru> rejected RCPT admin@domen.ua: "Free"
Это что за фильтр, который выдаёт это сообщение?

И это самое, что за фильтр такой из одной команды deny?
processing "deny"
deny: condition test succeeded

Re: Не работают ACL в Exim

Добавлено: 2008-01-21 16:46:43
Midnight-cat
Ошибочка вышла, забыла убрать всякие тестовые фильтры, но суть это не меняет, асл все равно не ходит, хотя логи поменялись:

Код: Выделить всё

using ACL "acl_check_rcpt"
processing "accept"
check hosts = :
host in ":"? no (end of list)
accept: condition test failed
processing "deny"
check domains = +local_domains
domen.ua in "domen.ua"? yes (matched "domen.ua")
domen.ua in "+local_domains"? yes (matched "+local_domains")
check local_parts = ^[.] : ^.*[@%!/|]
admin in "^[.] : ^.*[@%!/|]"? no (end of list)
deny: condition test failed
processing "deny"
check domains = !+local_domains
cached yes match for +local_domains
cached lookup data = NULL
domen.ua in "!+local_domains"? no (matched "!+local_domains" - cached)
deny: condition test failed
processing "accept"
check local_parts = postmaster
admin in "postmaster"? no (end of list)
accept: condition test failed
processing "deny"
check hosts = *:!+relay_from_hosts
host in "*:!+relay_from_hosts"? yes (matched "*")
check condition = ${if eq{$sender_helo_name}{$sender_host_address}{true}{false}}
                = false
deny: condition test failed
processing "warn"
check set acl_m0 = 140s
warn: condition test succeeded
processing "require"
check verify = sender


Re: Не работают ACL в Exim

Добавлено: 2008-01-21 17:40:12
dikens3
check condition = ${if eq{$sender_helo_name}{$sender_host_address}{true}{false}}
= false
Ну 2-е переменные не совпадают, что тут не так?

К примеру можно записать эти переменные в читабельном виде используя logwrite (К примеру в panic).
deny message = "Не надо пихать свой IP в качестве HELO!"
hosts = *:!+relay_from_hosts
logwrite = :panic:"HELO=$sender_helo_name, HOST=$sender_host_address"
condition = ${if eq{$sender_helo_name}\
{$sender_host_address}{true}{false}}

Re: Не работают ACL в Exim

Добавлено: 2008-01-21 18:02:09
Midnight-cat
dikens3 писал(а):
check condition = ${if eq{$sender_helo_name}{$sender_host_address}{true}{false}}
= false
Ну 2-е переменные не совпадают, что тут не так?
Так после несовпадения должна быть реакция в виде отбрасывания таких писем, или для этого еще что-то надо дописать?

Код: Выделить всё

deny: condition test failed
Вот это значит, что тест провален и дальше пропускает письмо.

И почему задержка по времени не работает, непонятно.

Код: Выделить всё

check set acl_m0 = 140s
warn: condition test succeeded
Т.е. все прекрасно, тест пройден, а задержка по времени где?

Re: Не работают ACL в Exim

Добавлено: 2008-01-22 0:34:22
dikens3
Так после несовпадения должна быть реакция в виде отбрасывания таких писем, или для этого еще что-то надо дописать?
deny: condition test failed
Непонимание работы ACL. (*читать тут )

accept, deny, warn и т.п. - действие при выполнении всех перечисленных условий!!!

Код: Выделить всё

deny
      Чё-то там
      Чё-то там
      check condition = ${if eq{$sender_helo_name}{$sender_host_address}{true}{false}}
      = false
Как думаешь все условия выполнены или же последнее НЕвыполнено?
check set acl_m0 = 140s
warn: condition test succeeded

Т.е. все прекрасно, тест пройден, а задержка по времени где?
Во время тестирования задержка не работает.
И пишется правильно так:

Код: Выделить всё

warn   delay = 30s
А в твоём случае переменной m0 присвоено значение 140s - и всё. :-)

Re: Не работают ACL в Exim

Добавлено: 2008-01-22 11:38:36
Midnight-cat
Поняла, где ошибка с задержкой. Я эту строчку вообще забыла дописать.

Код: Выделить всё

warn   delay = 30s
Про acl уже читаю. Как всегда, проблема собственной невнимательности и криворукости :oops:
Спасибо большое за подсказки!

Re: Не работают ACL в Exim

Добавлено: 2008-01-22 11:55:40
Alex Keda
Midnight-cat писал(а):Поняла, где ошибка с задержкой. Я эту строчку вообще забыла дописать.
ники нынче абстрактные...
тока по тексту и догадаешься кто какого пола =)