Considere o que você está perguntando por um momento. Você deseja incluir o diretório pessoal do usuário no mail_location
. Na superfície, parece uma solicitação razoável - mas você deve perguntar - como a Dovecot conhece o diretório pessoal do usuário?
Os usuários do sistema são armazenados em / etc / passwd - esse arquivo contém
username:password:uid:gid:comment:home:shell
(Nota: em vez de uma senha, você pode ter x
com a senha armazenada em / etc / shadow; ou *
para desativar a conta; o comentário é realmente um 'gecos field ')
Se o Dovecot ler este arquivo - ele é fornecido com o diretório pessoal do usuário - assim que ele tiver essa informação, ele poderá usá-lo em outro lugar (isto é, poderá usar '~ / to signify the home directory, and will set
% h' para o mesmo) .
Se, no entanto, você estiver usando usuários virtuais - em vez de usuários do sistema - uma das ideias fundamentais é que nem todo usuário virtual precisa ser um usuário do sistema. Nesse caso, o Dovecot não tem como saber se um usuário virtual que compartilha o mesmo nome de um usuário do sistema é realmente o mesmo usuário ou não (também não pode usar o UID, pois é possível ter vários usuários virtuais mapeados para o mesmo UID). Não assumirá nada além do que é fornecido no seu userdb.
Um Userdb pode fornecer as seguintes informações ao Dovecot:
- uid: UID do usuário (ID do usuário UNIX), substitui a configuração global mail_uid.
- gid: GID do usuário (ID do grupo UNIX), substitui a configuração global mail_gid.
- home: o diretório inicial do usuário substitui a configuração global mail_home. Embora não seja obrigatório, é altamente recomendado até mesmo para usuários virtuais.
- mail: localização de email, substitui a configuração global mail_location.
- Campos extras opcionais que são passados para o processo IMAP / POP3 em variáveis de ambiente.
Na sua configuração, você está usando um arquivo passwd - ou seja, um arquivo com o mesmo formato do arquivo passwd do sistema, mas que você configurou para essa finalidade (ou seja, não é o arquivo passwd do sistema). O Dovecot aceita o seguinte formato de arquivo passwd (e ignora os campos gecos e shell):
user:password:uid:gid:(gecos):home:(shell):extra_fields
Você pode substituir certos padrões, por usuário, especificando (espaço delimitado) key=value
campos extras (com chaves com prefixo userdb_
na maioria dos casos). Por exemplo, userdb_mail=Maildir:~/mail
substituirá mail_location
.
Apenas para reiterar, usando usuários virtuais (e não usando o arquivo passwd do sistema), você disse à Dovecot que esses usuários podem não ter qualquer relação com os usuários do sistema e, portanto, só usará as informações fornecidas por você , sem assumir mais nada.
Finalmente, para tentar responder à sua pergunta:
- Você pode usar várias variáveis em
mail_location
- elas estão definidas na página Variáveis do Dovecot . - A variável
%h
ou, preferencialmente,~/
pode ser usada para retornar o diretório inicial que o Dovecot recuperou de sua consulta do UserDB (e definemail_home
) - Você deve especificar um diretório inicial para todos os usuários no seu UserDB
- Você pode substituir
mail_location
retornando userdb_mail da sua consulta userdb.
Então, basicamente, defina home no seu userdb se você quiser usar o diretório home no Dovecot, porque ele não pode saber o que você não diz.