Exim + MySQL Auto White List

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

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
Oloremo
ефрейтор
Сообщения: 60
Зарегистрирован: 2008-06-18 12:07:47
Откуда: Москва

Exim + MySQL Auto White List

Непрочитанное сообщение Oloremo » 2008-07-14 17:05:34

Пытаюсь интегрировать первый скрипт из полезных скриптов.
С автором скрипта сегодня связатся не удалось так что решил написать сюда.
Что сделано:

В MySQL создана БД exim с таблицей auto-whitelist.
Дальше с соответствующими изменениями я добавляю в configure:

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

hide mysql_servers = localhost/exim/exim/123

MYSQL_MYLIST = INSERT INTO auto-whitelist(src_email,dst_email,record_expires) VALUES ('$sender_address','$acl_m4@$acl_m5',DATE_ADD(now(), INTERVAL 10 DAY))

MYSQL_UPDATEMYLIST = UPDATE auto-whitelist SET record_expires=DATE_ADD(now(), INTERVAL 10 DAY) WHERE src_email='$sender_address' AND dst_email='$acl_m4@$acl_m5'

MYSQL_DELMYLISTEXPIRED = DELETE FROM auto-whitelist WHERE record_expires < now()

MYSQL_TESTMYLIST = SELECT CASE WHEN now() - record_expires > 0 THEN 2 ELSE 1 END FROM auto-whitelist WHERE src_email='$sender_address' AND dst_email='$acl_m4@$acl_m5'

MYSQL_TESTCLIENTMYLIST = SELECT CASE WHEN now() - record_expires > 0 THEN 2 ELSE 1 END FROM auto-whitelist WHERE dst_email='$sender_address' AND src_email='$local_part@$domain'
Далее в оригинале лукап делается из MySQL вот таким образом:

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

SELECT domain FROM domains WHERE domain='${quote_mysql:$domain}' AND active='Y' LIMIT 1
Я заменил это на

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

warn  set acl_m3    = ${lookup {$domain}lsearch{/usr/local/etc/exim/lists/local_domains}}
Но происходит что-то странное.
В файле local_domains одна запись - domain.off.
Когда я отсылаю письмо для admin@domain.off он в логах пишет следующее:

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

file lookup required for domain.off
  in /usr/local/etc/exim/lists/local_domains
lookup yielded:
check set acl_m3 = ${lookup {$domain}lsearch{/usr/local/etc/exim/lists/local_domains}}
                 =
Почему пусто? Ведт он должен был найти $domain и присвоить acl_m3 это значение... или я не понял что-то?

Следующую проблему напишу после решения этой. ;-)
Последний раз редактировалось Oloremo 2008-07-14 19:05:00, всего редактировалось 3 раза.

Хостинговая компания 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/
Выделенные сервера, Россия, Москва, от 2460 рублей (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
стреляли...
Сообщения: 35045
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Exim + MySQL Auto White List

Непрочитанное сообщение Alex Keda » 2008-07-14 18:32:15

оформите сообщение нормально.
Убей их всех! Бог потом рассортирует...

Аватара пользователя
Oloremo
ефрейтор
Сообщения: 60
Зарегистрирован: 2008-06-18 12:07:47
Откуда: Москва

Re: Exim + MySQL Auto White List

Непрочитанное сообщение Oloremo » 2008-07-14 19:04:04

lissyara писал(а):оформите сообщение нормально.
Извиняюсь.
Добавил code.
Что-нибудь ещё нужно переделать?

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

Re: Exim + MySQL Auto White List

Непрочитанное сообщение dikens3 » 2008-07-14 23:40:09

С автором скрипта сегодня связатся не удалось так что решил написать сюда.
Удалось..
Почему пусто? Ведь он должен был найти $domain и присвоить acl_m3 это значение... или я не понял что-то?
Правильно понял. Так должно быть в оригинале.

Предполагаемая ошибка - Неправильный запрос ( ${lookup {$domain}lsearch{/usr/local/etc/exim/lists/local_domains}} ) или данные в файле. ( /usr/local/etc/exim/lists/local_domains )
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

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

Re: Exim + MySQL Auto White List

Непрочитанное сообщение Alex Keda » 2008-07-14 23:42:59

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

Аватара пользователя
Oloremo
ефрейтор
Сообщения: 60
Зарегистрирован: 2008-06-18 12:07:47
Откуда: Москва

Re: Exim + MySQL Auto White List

Непрочитанное сообщение Oloremo » 2008-07-15 11:09:39

lissyara писал(а):лукап ничё не принёс...
Это понятно - вопрос "почему?".
В /usr/local/etc/exim/lists/local_domains - одна запись domain.off
Я отправляю письмо для admin2@domain.off

А лукап приезжает пустым.
Сам лукаб делал по офф документации и он вроде совершенно правильный.

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

Re: Exim + MySQL Auto White List

Непрочитанное сообщение dikens3 » 2008-07-15 11:54:32

Файл должен быть немного другой:

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

domain.off: domain.off
domain2.ru: domain2.ru
...
В документации написано:
“lsearch”: Данный файл - текстовый файл, по которому линейно ищется строка, начинающаяся с искомого ключа, законченную двоеточием, или пробелом, или концом строки. Используется первое найденное совпадение. пустое место между ключом и двоеточием разрешается. Остаток строки, после удаления начального и конечного пустого пространства является данными.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
Oloremo
ефрейтор
Сообщения: 60
Зарегистрирован: 2008-06-18 12:07:47
Откуда: Москва

Re: Exim + MySQL Auto White List

Непрочитанное сообщение Oloremo » 2008-07-15 14:36:52

dikens3 писал(а):Файл должен быть немного другой:

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

domain.off: domain.off
domain2.ru: domain2.ru
...
В документации написано:
“lsearch”: Данный файл - текстовый файл, по которому линейно ищется строка, начинающаяся с искомого ключа, законченную двоеточием, или пробелом, или концом строки. Используется первое найденное совпадение. пустое место между ключом и двоеточием разрешается. Остаток строки, после удаления начального и конечного пустого пространства является данными.
.....
Я идиот.
Извиняюсь.
Большое спасибо что обяьснили.

Пойду искать тот тип поиска, который мне нужен.