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

EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
kom26
проходил мимо
Сообщения: 5
Зарегистрирован: 2009-02-20 11:15:27

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

Непрочитанное сообщение kom26 » 2009-02-20 11:31:36

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

   
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

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2520 рублей (8 CPU, 8Gb RAM, 2x500Gb HDD, RAID 3ware 9750):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35019
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

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

Непрочитанное сообщение Alex Keda » 2009-06-07 17:19:19

в отладку
Убей их всех! Бог потом рассортирует...


Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

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

Непрочитанное сообщение dikens3 » 2009-09-08 12:06:29

Попробуйте логическую связку с отрицанием.
вот так:
!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.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35019
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

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

Непрочитанное сообщение Alex Keda » 2009-09-09 8:34:14

разве?
а помоему перемнная встанет тока если прочие условия верны....
пойду уточню
Убей их всех! Бог потом рассортирует...

kom26
проходил мимо
Сообщения: 5
Зарегистрирован: 2009-02-20 11:15:27

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

Непрочитанное сообщение kom26 » 2009-09-09 10:49:53

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