Как можно определить длину строки средствами самого Exim? Кто-нибудь сталкивался с такой необходимостью?
Неа. А для чего тебе?
>Неа. А для чего тебе?Просто необходимо проверять локального получателя. Локальный адрес состоит из 10 цифр. Вот и охота отбрасывать ообщения не подходящие под маску. Можно, конечно, воспользоваться regexp-ами, но они как-то криво работат. Правда, скорее всего это я чего-то не догоняю. Но когда тестирую вот такой фильтр /^23453\d{4}$/ с помощью программы pcretest, то все отлично работает. "Левые" адреса не пропускаются. Беру вставляю это выражение в конфиг:
divert_email:
driver = redirect
allow_fail = false
allow_defer = false
domains = +local_domains
condition = ${if match {$local_part}{^23453\d{4}$}{yes}{no}}
local_part_prefix = 23453
data = ${lookup {$local_part_prefix} lsearch* {/etc/exim4/alias.conf}И нихера не работает. При тестированиии exim -d -v 2345334265@somwhere.org получаю:
checking "condition"
LOG: MAIN PANIC
failed to expand condition "${if match {$local_part}{^23453\d{4}$}{yes}{no}}" for divert_email router: missing or misplaced {
or }
divert_email router skipped: condition failureХотя по всем докам выражение ^23453\d{4}$ является верным и должно представлять из себя 10 цифр начинающихся с 23453. Вот поэтому я хотел бы проверит хотя бы длину строки, если по другому не получается сделать. Может быть еще какими-либо способами можно проверить корректность локального адреса?