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

Есть у меня в Exim разные списки (черные, белые, серые ...) в MySQL.
Я когда-то сделал проверку и обновление метки времени разными запросами.
Все работало хорошо.
И тут захотелось объединить SELECT и UPDATE в одно условие.
Ни к чему хорошему это не привело.

В табличке два поля - IP и дата внесения (или обновления) записи в таблице.

Есть два макроса:
SELECT_WHITELIST = SELECT 1 from `whitelist` where sender_ip='${quote_mysql:$sender_host_address}'; UPDATE_WHITELIST = UPDATE whitelist set date=now() where sender_ip='${quote_mysql:$sender_host_address}';

И есть правило:
warn condition = ${lookup mysql{SELECT_WHITELIST}}
     set acl_m_white = 1
     condition = ${lookup mysql{UPDATE_WHITELIST}}

Все работает как задумано - отрабатывает select и update.


Но решил заменить два макроса на один. Типа так:
CHECK_WHITELIST = UPDATE whitelist set date=now() where sender_ip='${quote_mysql:$sender_host_address}';

Если IP нет в таблице - обновлять нечего. Возвращается 0.
Если IP есть - обновляется время изменения и возвращается 1.

И в "тепличных условиях" оно так и работает. А на практике нет :(
Иногда хост, который в табличке whitelist, попадает на спам-фильтр.

--
Golub Mikhail

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

Ответить