Страница 1 из 1

Dovecot mail_location

Добавлено: 2008-09-30 22:05:09
prud
Имееются exim+dovecot+postgresql.
Задача - обеспечить возможность оперативного и простого выноса части ящиков одного почтового домена на другой винт.
Способ в лоб - симлинк, но оно меня не очень устраивает, ибо на инсерт добавляющий юзера в базу надо навешивать костыли.
После некоторых раздумий добавил в таблицу ящиков скажем текстовое поле mailcluster, в экзиме запрос пути к майлдиру стал выглядеть примерно вот так:

Код: Выделить всё

#кусок configure
...
 ...select '/var/mail/' ||mailcluster||'$domain'||'/'||'$local_part'  ....
... 
по дефолту mailcluster - пустое значение, но если в инсерте добавляющем юзера очень большая квота или еще чего-нибудь, то значение
будет скажем 'newbighdd/' - куда уже заранее смонтировано...
В экзиме все работает.

А вот в довекоте и не понял как так сделать, сначала подумал - нужно пользовать userdb prefetch:

Код: Выделить всё

#кусок dovecot.conf
...
passdb sql {
  args = /etc/dovecot-sql.conf
}
userdb prefetch {
}
userdb sql {
  args = /etc/dovecot-sql.conf
}
....
а в password_query возвращать хитрый userdb_home

Код: Выделить всё

#кусок dovecot-sql.conf
...
password_query = select '/var/mail/' || mailcluster || '%d' || '/'||'%n' AS userdb_home ,..........
....
который уже можно пользовать как %h в директиве mail_location

Код: Выделить всё

#кусок dovecot.conf
....
mail_location=maildir:%h
....
- нет, не работает...

Заранее благодарю.

Re: Dovecot mail_location

Добавлено: 2008-10-01 18:13:39
prud
Разобрался сам, накосячил в базе - после добавления еще одного текстового поля не присвоил для начала во всех строках в качестве значения умолчальную нулевую строку.