Спасибо, но уже по другому сделал - в ACL прописал:
deny condition=${lookup pgsql{SELECT overquota_reject('${quote_pgsql:$local_part}', '${quote_pgsql:$domain}')}}
message = Overquota in a mailboxГде:
create function overquota_reject(text,text)
RETURNS text AS $_$ begin if exists(select * from mailbox
where localpart=$1 and domain=$2 and overquota=1) then return 'yes';
else return 'no'; end if; end; $_$ LANGUAGE plpgsql;
У меня ночью скрипт шерстит и пишет признак overquota=1 пользователю
при оверквоте. Другое дело, что если пользователь выкачает всю почту,
очистит почту, все равно до ночи ему никто письмо не пришлет.
Вот думаю как пропатчить вход в хорде на обнуление этого признака, ну
и соответственно как сделать обнуление признака при заборе через тот же
бат...
------------------------------------------------------------------
>зависит от того где стоит роутер, его синтаксис и правильно ли сделан
>запрос внутри условия.
>
>посмотрите exim в debug режиме. у вас вообще есть обращение к этому
>роутеру? если да, то смотрите что возвращает. debug пишет всё довольно
>подробно и понятно.
>
>вот у меня этот роутер в самом начале локальных роутеров
>
>quota_router:
>no_verify
>driver = redirect
>data = "${if eqi {${perl{quotacheck}}}{yes}{:fail:Mailbox overquota}{$local_part@$domain}}"
>allow_fail
>
>И работает так: процедурка на перле сверяется с imap сервером о квоте
>и если возвращает "yes" (превышена квота), то отправитель получает отлуп с
>сообщением Mailbox overquota. если с квотой всё в порядке, то идём
>в следующий роутер. Если пользовательский ящик не найден, то allow_fail разрешает
>идти дальше.