Страница 1 из 1
Написание кондишена
Добавлено: 2007-10-19 14:05:45
borisen
Добрый день.
Возникла необходимость написать (точнее подправить) кондишен... Но оказалось что у меня в эту сторону достаточно кривые руки
Итак есть вот что
Код: Выделить всё
condition = "${if and {{!eq {$received_protocol}{spam-scanned}} \
{!eq {$received_protocol}{local}} } {1}{0}}"
нада добиться чтоб этот кондишен проверял еще одно условие и если все условия = тру, то все ок

собственно это условие примерно такое: "Если адресат (recipient) есть в списке (файлик в текстовом формате с перечнем почтовых ящиков) то условие = тру, если нет то условие и весь кондишен = фалс"
Пробовал так:
Код: Выделить всё
condition = "${if and {{!eq {$received_protocol}{spam-scanned}} \
{!eq {$received_protocol}{local}} {!eq {$local_part@$domain}{lsearch;/etc/mail/users}} }{1}{0}}"
Не отрабатывает, точнее не дает нужный результат. Пробовал и с знаком "!" и без него...
Помогите пожалуйста, ибо в кондишенах совсем слаб, или ткните носом где о них доступно написано
Заранее благодарен...
Re: Написание кондишена
Добавлено: 2007-10-19 14:09:47
dikens3
Не изобретай велосипед:
Код: Выделить всё
condition = "${if and {{!eq {$received_protocol}{spam-scanned}} \
{!eq {$received_protocol}{local}} } {1}{0}}"
domains = +local_domains
local_parts = чё там хотел(типа: lsearch;/etc/mail/users)
Re: Написание кондишена
Добавлено: 2007-10-19 14:19:17
borisen
Нет, ну а если такая ситуация:
user1@domain1.ru есть в списке
user1@domain2.ru нет в списке
То предложенная Вами схема ошибочно пропустит
user1@domain2.ru
Re: Написание кондишена
Добавлено: 2007-10-19 14:23:09
dikens3
Ну я имел ввиду не нужно всё пихать в один кондишен, раздели на несколько, понимать проще.
Вместо условия local_parts напиши свой кондишен. Можешь убрать проверку доменов.
Re: Написание кондишена
Добавлено: 2007-10-19 14:27:26
borisen
Каких-то особых указаний, что должны два кондишена отработать именно так как я описывал в первом посте, не нужно делать?
Да и вообще посоветуйте где можно почерпнуть знаний\умений по кондишенам...
Re: Написание кондишена
Добавлено: 2007-10-19 14:40:22
dikens3
Там нет ничего сложного:
В начале кондишена всегда стоит действие (warn, deny, accept и т.д.)
Оно будет выполнено после выполнения(т.е. true) всех условий в кондишене.
Здесь я описывал немного.
http://forum.lissyara.su/viewtopic.php? ... lit=verify
Re: Написание кондишена
Добавлено: 2007-10-19 14:52:34
borisen
dikens3 писал(а):Ну я имел ввиду не нужно всё пихать в один кондишен, раздели на несколько, понимать проще.
Вместо условия local_parts напиши свой кондишен. Можешь убрать проверку доменов.
Сделал так:
Код: Выделить всё
condition = "${if and {{!eq {$received_protocol}{spam-scanned}} \
{!eq {$received_protocol}{local}} } {1}{0}}"
condition = ${if match {$local_part@$domain} {lsearch;/etc/mail/dspam_users} {yes}{no}}
Собственно как ты и говорил - два кондишена.
при рестарте ексима:
Код: Выделить всё
Starting exim.
2007-10-19 14:50:47 Exim configuration error in line 363 of /usr/local/etc/exim/configure:
"condition" option set for the second time
Re: Написание кондишена
Добавлено: 2007-10-19 15:04:09
Alex Keda
уловие - в роутере?
инетерсно, почему об этом надо догадываться по коссвенным призанкам?
==========
в роутере - мона тока раз указывать.
прилепляй в тот, третьим...
Re: Написание кондишена
Добавлено: 2007-10-19 15:07:54
borisen
Извините, не знал что это существенно... Да ето речь идет о роутере...
но как его туда прилепить?
моя попытка:
Код: Выделить всё
condition = "${if and {{!eq {$received_protocol}{spam-scanned}} \
{!eq {$received_protocol}{local}} {!eq {$local_part@$domain}{lsearch;/etc/mail/users}} }{1}{0}}"
не дает нужного результата...

Re: Написание кондишена
Добавлено: 2007-10-19 15:11:19
Alex Keda
а какой даёт?
Re: Написание кондишена
Добавлено: 2007-10-19 15:23:34
borisen
Кто дает?

вот эта моя попытка написания кондишена?
Если да, то ексим не реагирует на ее присутствие.
тоесть не зависимо от того есть
user1@domain1.ru в списке или нет, этот роут не срабатывает...
Re: Написание кондишена
Добавлено: 2007-10-19 17:11:33
borisen
Ну что никто не поможет?
Re: Написание кондишена
Добавлено: 2007-10-19 23:34:44
borisen
Прет ребята

Я все таки добился своей цели...
знач так, кондишен который мне был нужен
Код: Выделить всё
condition = "${if and { \
{!eq {$received_protocol}{spam-scanned}} \
{!eq {$received_protocol}{local}} \
{match_address {$local_part@$domain}{wildlsearch;/etc/mail/dspam_users}} \
} {1}{0}}"
вот собственно четвертая строчка это та строчка которой не хватало...
И так роут который нужен для ДСПАМ, чтоб он работал исключительно с теми ящиками которые указаны в файлике /etc/mail/dspam_users
Код: Выделить всё
dspam_spamscan_router:
driver = accept
domains = +local_domains
no_verify
condition = "${if and { \
{!eq {$received_protocol}{spam-scanned}} \
{!eq {$received_protocol}{local}} \
{match_address {$local_part@$domain}{wildlsearch;/etc/mail/dspam_users}} \
} {1}{0}}"
transport = dspam_spamcheck_transport
require_files = /usr/local/bin/dspam
address_test = false
ПС: а вообще нужно читать мануалы... и учить буржуйский язык...
ППС: всем спасибо за помощь!
Re: Написание кондишена
Добавлено: 2007-10-22 12:06:06
Andy2k
Черт, скоро сломаю себе моск
Написал кондишен по мотивам изысканий автора темы.
Выглядит так:
Код: Выделить всё
condition = ${if and { \
{eq{$local_part}{to_all}{yes}{no}} \
{match_address {$sender_address}{wildlsearch;/usr/local/etc/exim/to_all_users}} \
} {1}{0}}
На что в логах exim такая ругань:
Код: Выделить всё
2007-10-22 12:58:29 failed to expand condition "${if and { {eq{$local_part}{to_all}{yes}{no}}
{match_address {$sender_address}{wildlsearch;/usr/local/etc/exim/to_all_users}} } {1}{0}}"
for all_mysql router: missing } at end of condition inside "and" group
никак не пойму - где ему скобки не хватает
ЗЫ: Скобки считал, стекла протирал, по колесам стучал - не помогает

Re: Написание кондишена
Добавлено: 2007-10-22 12:22:17
dikens3
condition = ${if and { \
{eq{$local_part}{to_all}{yes}{no}} \
{match_address {$sender_address}{wildlsearch;/usr/local/etc/exim/to_all_users}} \
} {1}{0}}
Re: Написание кондишена
Добавлено: 2007-10-22 12:35:34
Andy2k
А чего там не так?

{yes}{no} - лишние?
Re: Написание кондишена
Добавлено: 2007-10-22 18:07:57
Wombat
Try this one
Код: Выделить всё
{if and{{eq{$local_part}{to_all}{true}{false}}{match_address {$sender_address}{wildlsearch;/usr/local/etc/exim/to_all_users}}}{1}{0}}