URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 61486
[ Назад ]

Исходное сообщение
"Определить длину строки в MTA Exim 4.50"

Отправлено astenax , 03-Ноя-05 11:56 
Как можно определить длину строки средствами самого Exim? Кто-нибудь сталкивался с такой необходимостью?

Содержание

Сообщения в этом обсуждении
"Определить длину строки в MTA Exim 4.50"
Отправлено SubGun , 03-Ноя-05 15:18 
Неа. А для чего тебе?

"Определить длину строки в MTA Exim 4.50"
Отправлено astenax , 03-Ноя-05 15:53 
>Неа. А для чего тебе?

Просто необходимо проверять локального получателя. Локальный адрес состоит из 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. Вот поэтому я хотел бы проверит хотя бы длину строки, если по другому не получается сделать. Может быть еще какими-либо способами можно проверить корректность локального адреса?