A pesquisa de usuário do Dovecot falha ao usar o formato username @ domain

10

Eu tenho o Dovecot v2.0.11 instalado em um servidor FreeBSD e as pesquisas de usuário para endereços de e-mail recebidos estão falhando, mas as pesquisas para usuários do sistema são bem-sucedidas.

O Dovecot é configurado para usar usuários do sistema, então meu dovecot.conf tem

 userdb {
  driver = passwd
}

e

passdb {
  driver = passwd
}

Eu tenho a depuração de autenticação ativada.

Por exemplo, eu tenho um usuário chamado webmaster, e usar o usuário doveadm para "webmaster" funciona da seguinte maneira:

#doveadm user webmaster
userdb: webmaster
  system_groups_user: webmaster
  uid       : 1020
  gid       : 1020
  home      : /home/webmaster

No entanto, o uso do usuário do doveadm para pesquisar [email protected] falha da seguinte maneira:

# doveadm user [email protected]
userdb lookup: user [email protected] doesn't exist

Isso está resultando no recebimento de e-mails para [email protected] com um erro de "usuário desconhecido".

Aqui está a falha registrada em / var / log / maillog:

Apr 16 20:13:35 www dovecot: auth: passwd([email protected]): unknown user

Aqui está a falha registrada em /var/log/debug.log:

Apr 16 20:13:35 www dovecot: auth: Debug: master in: USER       1       [email protected]  service=doveadm
Apr 16 20:13:35 www dovecot: auth: Debug: passwd([email protected]): lookup
Apr 16 20:13:35 www dovecot: auth: Debug: master out: NOTFOUND  1

Os usuários e seus diretórios iniciais foram importados de outro servidor e os usuários foram configurados usando a ferramenta vipw. Tenho certeza que há algo que perdi na importação que não está "ligando" o usuário do sistema com a pesquisa dovecot.

Alguma idéia sobre o que essa coisa pode ser?

EDITAR: Usando o conselho do BillThor, atualizei o dovecot.conf da seguinte forma:

#doveconf -n passdb userdb
passdb {
  args = username_format=%n
  driver = passwd
}
userdb {
  args = username_format=%n
  driver = passwd
}

No entanto, agora, o usuário doveadm falha de uma maneira diferente:

#doveadm user [email protected]
doveadm(root): Error: userdb lookup([email protected]): Disconnected unexpectedly
doveadm(root): Fatal: userdb lookup failed for [email protected]

E não funciona mais para usuários sem domínio:

#doveadm user webmaster
doveadm(root): Error: userdb lookup(webmaster): Disconnected unexpectedly
doveadm(root): Fatal: userdb lookup failed for webmaster

Quando recebo as mensagens acima, o seguinte está em / var / log / maillog:

Apr 17 17:30:02 www dovecot: auth: Fatal: passdb passwd: Unknown setting: username_format=%u
Apr 17 17:30:02 www dovecot: master: Error: service(auth): command startup failed, throttling
    
por cigarman 16.04.2011 / 22:22

4 respostas

12

Userids no dovecot usando o passdb não incluem o domínio. O userid que o usuário deve usar é a parte local, não o endereço de e-mail completo.

As verificações que estão passando e falhando estão funcionando conforme o esperado. Definindo auth_username_format=%n antes que a definição do banco de dados de senha funcione. O domínio não é validado.

    
por 17.04.2011 / 05:05
12

Estou usando o Ubuntu Server 12.04 e experimentei as soluções acima. No entanto, achei que a maneira mais simples e fácil foi em 10-auth.conf para definir

auth_username_format = %n

Eu uso o PAM para a autenticação, que é o padrão no Ubuntu 12.04.

    
por 09.07.2014 / 10:28
2

Eu suspeito que o Dovecot 2.1 quebrou essa solução ou mudou o comportamento esperado.

Eu segui o mesmo erro de autorização para o userdb:

userdb {
  driver = passwd
}

Quando um usuário local (não virtual) recebe um email via exim- > lmtp, ele inclui o domínio. Definir auth_username_format =% Ln corrige a entrega local, mas quebra as entregas virtuais. A correção oferecida para adicionar args = username_format parece ser ignorada:

userdb {
  driver = passwd
  args = username_format=%n
}

e os registros incluem um aviso

Apr  4 11:24:57 moe dovecot: auth: Warning: userdb passwd: Move templates args to override_fields setting

Curiosamente, usar o passwd-file funciona , mas a auth está louca pelo fato de o arquivo passwd ser de propriedade de root.

userdb {
  driver = passwd-file
  args = username_format=%n /etc/passwd
}

Apr  4 11:26:12 moe dovecot: auth: Error: passwd-file /etc/passwd: User root has invalid UID '0'
Apr  4 11:26:12 moe dovecot: auth-worker(6855): Error: passwd-file /etc/passwd: User root has invalid UID '0'
    
por 04.04.2014 / 20:40
0

passwd-file: Unknown setting: username_format Para mim, o motivo foi o espaço extra:

passdb {
  driver = passwd-file
  args = scheme=SHA256-CRYPT **extra-space-here**username_format=%u /etc/dovecot/users
}

i.e. Eu tinha dois espaços entre CRYPT e uesrname.

    
por 30.06.2016 / 23:54