Здравствуйте, Alexander

понедельник 9 сентября 2013 г., 14:17:30, вы писали:

> Здравствуйте, Alexander.

> Вы писали 9 сентября 2013 г., 19:56:33:

>> Здравствуйте, Exim-users.

>> Переезжал на новый сервер с exim. На нем есть такой роутер

>> virtual_domains:
>>   driver = redirect
>>   allow_fail
>>   data = ${lookup pgsql{SELECT concat('/var/mail/',maildir) FROM 
>> public.mailbox \
>>                 WHERE local_part = '${quote_pgsql:$local_part}' \
>>                 AND domain = '${quote_pgsql:$domain}' \
>>                 AND active = 't'}}
>>   local_part_suffix = -*
>>   local_part_suffix_optional
>>   retry_use_local_part
>>   directory_transport = virtual_delivery
>>   reply_transport = address_reply
>>   pipe_transport = address_pipe

>> Выяснилось, что quote_pgsql эскейпит '%' и '_'.
>> Допустимо ли в условии WHERE поменять '=' на like или как-то по-другому надо 
>> строить запрос?
>> Вообще убрать quote_pgsql и делать проверки самим exim?

> 1) не знал что постгресс умеет такие дисковые операции...

> 2)  на  больших  объемах почты оно может в тупую жрать проц и дисковые
> IO  поскольку  как  я понимаю каждый раз считается объем всех файлов в
> maildir,  а  не  парсится  maildirsize.  А  с учетом того что файлов в
> maildir может быть много результат будет плачевный.

Может,  я  где-то наверно выразился. Там всего-лишь ищутся виртуальные
пользователи. Размеры maildir'ов не считаются.
Насколько я понял у меня вот такая ситуация 
http://www.exim.org/lurker/message/20120106.225316.cce8b71d.en.html
Т.к.  решение  не  обсуждалось, предположил, что участникам того треда
оно понятно, а я чего-то не знаю и не понимаю.
У  меня  сейчас  единственная  проблема  в  том, что есть несколько учетных
записей с _ в localpart и exim их не находит из-за quote_pgsql.

Вот! Похоже, моим решением будет http://bugs.exim.org/show_bug.cgi?id=932
Т.е. роутер будет выглядеть так

virtual_domains:
  driver = redirect
  allow_fail
  data = ${lookup pgsql{SELECT concat('/var/mail/',maildir) FROM public.mailbox 
\
                WHERE local_part = E'${quote_pgsql:$local_part}' \
                AND domain = E'${quote_pgsql:$domain}' \
                AND active = 't'}}
  local_part_suffix = -*
  local_part_suffix_optional
  retry_use_local_part
  directory_transport = virtual_delivery
  reply_transport = address_reply
  pipe_transport = address_pipe



> 3)  я  написал  скрипт на перле который парсит maildirsize и кэширует
> данные избирательно в зависимости от текущего объема maildir. Работает
> с exim через unix socket. Если надо могу выслать.





-- 
С наилучшими пожеланиями (73),
AID1-UANIC AID-EUNIC
Тел: +38 (044) 4619175, 4943810
_______________________________________________
Exim-users mailing list
[email protected]
http://mailground.net/mailman/listinfo/exim-users

Ответить