Доброго времени суток.
Есть у меня в 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