The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Помогите разобраться с exim"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"Помогите разобраться с exim"  
Сообщение от Dimka email(??) on 01-Фев-07, 11:34 
Всем привет,

хочу вот такой конструкцией отмести все письма на ящик, у которого превышен лимит
во время SMTP сессии

maildir_overquota:
        driver = redirect
        condition = ${if eq{} \
                {${lookup pgsql{SELECT isoverquota('${quote_pgsql:$local_part}','${quote_pqsql:$domain}') }}}\
                {yes}{no}}
        data = :fail:Mailbox quota exceeded
        allow_fail

А оно не работает, подскажите почему?
-----------------------------
mail=> CREATE OR REPLACE FUNCTION isoverquota(character varying, character varying) returns text
mail-> AS $_$
mail$> SELECT login from mailbox where (localpart = $1 AND domain = $2 AND overquota=1);
mail$> $_$
mail-> LANGUAGE sql;
--------------------------------
overquota =1 означает что ящик переполнен.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Помогите разобраться с exim"  
Сообщение от bass (??) on 01-Фев-07, 13:58 
>Всем привет,
>
>хочу вот такой конструкцией отмести все письма на ящик, у которого превышен
>лимит
>во время SMTP сессии
>
>maildir_overquota:
>        driver = redirect
>        condition = ${if eq{}
>\
>            
>    {${lookup pgsql{SELECT isoverquota('${quote_pgsql:$local_part}','${quote_pqsql:$domain}') }}}\
>            
>    {yes}{no}}
>        data = :fail:Mailbox quota
>exceeded
>        allow_fail
>
>А оно не работает, подскажите почему?
>-----------------------------
>mail=> CREATE OR REPLACE FUNCTION isoverquota(character varying, character varying) returns text
>mail-> AS $_$
>mail$> SELECT login from mailbox where (localpart = $1 AND domain = $2 AND overquota=1);
>mail$> $_$
>mail-> LANGUAGE sql;
>--------------------------------
>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 разрешает идти дальше.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Помогите разобраться с exim"  
Сообщение от Dimka email(??) on 01-Фев-07, 14:08 
Спасибо, но уже по другому сделал - в 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 разрешает
>идти дальше.


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру