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

Есть список блокируемых хостов. Хранится в 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

Ответить