Mapeamento de Domínios de Usuários e Usuários Virtuais do Dovecot

2

Eu compilei, configurei e executei o Dovecot com o recurso de usuários virtuais.

Veja aqui parte do meu arquivo de configuração /etc/dovecot.conf :

mail_location = maildir:/home/%d/%n/Maildir

auth default {
    mechanisms = plain login

    userdb passwd-file {
        args = /home/%d/etc/passwd
    }
    passdb passwd-file {
        args = /home/%d/etc/shadow
    }

    socket listen {
        master {
            path = /var/run/dovecot/auth-worker
            mode = 0600
        }
    }
}

Eu enfrentei um problema que não consigo resolver. Existe alguma maneira de criar o mapeamento de domínios dos usuários e fornecer o nome de usuário em mail_location ?

Exemplos: 1. atualmente tenho /home/domain.com/user/Maildir 2. Gostaria de ter o /home/USER/domain.com/user/Maildir

Posso conseguir isso de alguma forma?

Cumprimenta Stojko

    
por Stojko 24.04.2012 / 02:19

2 respostas

1

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 define mail_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.

    
por 24.04.2012 / 14:09
0

De acordo com este link Você pode usar "várias variáveis na configuração mail_location"

%u: Full username.
%n: User part in user@domain, same as %u if there's no domain.
%d: Domain part in user@domain, empty if there's no domain.

por exemplo,

mail_location = maildir:/home/%n/%d/%n/Maildir

deve apontar para / home / user / domain / user / Maildir

    
por 24.04.2012 / 08:06