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

Не отрабатывает hosts...

Добавлено: 2009-02-20 11:31:36
kom26

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

   
hostlist relay_from_hosts = 127.0.0.1/8 : 172.16.0.0/16 : 10.132.253.0/24 : 192.168.15.0/24

acl_check_rcpt:

   warn    set acl_m307 = -1
           set acl_m308 = -1
   warn    set acl_m307 = ${lookup mysql{TEST_FOR_SPAM_EXISTS_USER_ALIAS}{$value}{0}}
           hosts        = !+relay_from_hosts
   warn    set acl_m308 = ${lookup mysql{TEST_FOR_SPAM_EXISTS_USER_MAILBOX}{$value}{0}}
           hosts        = !+relay_from_hosts
   warn    set acl_m309 = ${lookup mysql{TEST_FOR_SPAM_DEL_MAIL_STAT1}}
           hosts        = !+relay_from_hosts

   warn    set acl_m309 = -1
   warn    set acl_m309 = ${lookup mysql{TEST_FOR_SPAM_GET_MAIL_STAT}{$value}{0}}
           log_message  = "X-W-HS Host $sender_host_address get mailstat!"
           hosts        = !+relay_from_hosts
   warn    condition    = ${if and { {eq{$acl_m307}{0}} {eq{$acl_m308}{0}} {eq{$acl_m309}{0}} } {yes}{no}}
           set acl_m310 = ${lookup mysql{TEST_FOR_SPAM_INS_MAIL_STAT}}
           log_message  = "X-W-HS Host $sender_host_address insert mailstat!"
           hosts        = !+relay_from_hosts
   warn    condition    = ${if and { {eq{$acl_m307}{0}} {eq{$acl_m308}{0}} {>{$acl_m309}{0}} {<{$acl_m309}{25}} } {yes}{no}}
           set acl_m310 = ${lookup mysql{TEST_FOR_SPAM_UPD_MAIL_STAT}}
           log_message  = "X-W-HS Host $sender_host_address update mailstat!"
           hosts        = !+relay_from_hosts
   warn    condition    = ${if >={$acl_m309}{25} {true}{false}}
           log_message  = "X-W-HS Host $sender_host_address banned - too many ($acl_m309) mail for not exists users!"

accept
Суть - при попытках перебора ящиков - фиксируем это дело - и с БД (мускул) пишем - ip, кол-во попыток, дату амнистии(месяц)

Дык всё вроде хорошо - пашет - но проскакивает такое дело: в БД попадают ип-шники из внутренней сети (юзеры) - такое ощущение что не срабатывает hosts = !+relay_from_hosts - как лечить, куда пнуть?

Система: Linux Slackware 12.1 - Exim 4.69 + MySql Ver 14.12 Distrib 5.0.51b

Re: Не отрабатывает hosts...

Добавлено: 2009-06-07 17:19:19
Alex Keda
в отладку

Re: Не отрабатывает hosts...

Добавлено: 2009-09-08 8:58:38
kom26
смысле?

Re: Не отрабатывает hosts...

Добавлено: 2009-09-08 12:06:29
dikens3
Попробуйте логическую связку с отрицанием.
вот так:
!hosts = +relay_from_hosts
И ещё. Вы видимо не догоняете, что Exim обрабатывает ACL сверху вниз.

Т.е. для выполнения некоего действия (действия эти accept, warn, deny, drop и т.д.) нужно выполнение всех условий. (В том числе и hosts = !+relay_from_hosts)
Но, для выполнения действия в ACL, этого не требуется.

Объясню на примере:

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

   (1) warn
                        (2) set acl_m307 = ${lookup mysql{TEST_FOR_SPAM_EXISTS_USER_ALIAS}{$value}{0}}
                        (3) hosts        = !+relay_from_hosts
1. То, что будет выполнено, если 2 и 3 будут истинны. (общее действие для условия)
2. То, что выполняется первым.
3. То, что выполняется, если 2 истинно.

В вашем случае согласно пункту 2 выполняется некое правило (занос данных в mysql), но не выполняется общее, (пункт 1), т.к. пункт 3 не даёт истину.

Короче, строка
!hosts = +relay_from_hosts
должна быть первой во всех ACL.

Re: Не отрабатывает hosts...

Добавлено: 2009-09-09 8:34:14
Alex Keda
разве?
а помоему перемнная встанет тока если прочие условия верны....
пойду уточню

Re: Не отрабатывает hosts...

Добавлено: 2009-09-09 10:49:53
kom26
Решил проблему - порядок действительно влияет... http://forum.lissyara.su/viewtopic.php?f=20&t=20308