Кажется, нашел в чем причина.

select now();
+---------------------+
| now()               |
+---------------------+
| 2013-02-21 12:47:04 |
+---------------------+

Запросы приходили в базу в течении одной секунды.
И лукап возвращал 0 при следующем запросе в течении секунды.


-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Golub Mikhail
Sent: Wednesday, February 20, 2013 6:03 PM
To: 'Exim MTA на русском'
Subject: [Exim-users] Странное поведение drop в acl

Доброго времени суток.

Есть список блокируемых хостов. Хранится в MySQL.

Правило, которое блокирует прием письма при выполнении условия.

drop  message = $sender_host_address is in local black list.
           condition = ${lookup mysql{UPDATE_SPAMMERS}}

UPDATE_SPAMMERS = UPDATE `spammers` set last_access_time=now() where
(INET_ATON('${quote_mysql:$sender_host_address}') & `mask`) = `net` limit 1;

Все работает хорошо ...
Но иногда один и тот же хост проскакивает.
По логу вижу, что 100 раз заблокирован и один раз из сотни проскочил.
Какие-либо "смягчающие обстоятельства" (белый список, например) не
применяются.
Выполняю с консоли exim -bh от IP того же хоста - все блокируется, как
задумано.

Почему такое поведение может быть?
SQL не вернул истину? Не должен.
Нельзя в такой краткой форме писать правило? - так срабатывает же.

P.S. Exim version 4.80.1
ОС - FreeBSD.
MySQL - 5.5

P.P.S. Заменил drop на deny - за пол дня ложных пропусков небыло.


Табличка в MySQL создавалась так.

CREATE TABLE IF NOT EXISTS spammers (
 net varchar(64) NOT NULL default '',
 mask varchar(64) NOT NULL default '255.255.255.0',
 comment text character set koi8r,
 `date` timestamp NOT NULL default CURRENT_TIMESTAMP,
 `last_access_time` timestamp NULL default NULL,
 UNIQUE KEY `net_ip` (`net`))
 ENGINE=MyISAM  DEFAULT CHARSET=koi8r;

----------------
Голуб Михаил
Компания "Инком"


_______________________________________________
Exim-users mailing list
[email protected]
http://mailground.net/mailman/listinfo/exim-users

_______________________________________________
Exim-users mailing list
[email protected]
http://mailground.net/mailman/listinfo/exim-users

Ответить