Temos a configuração do opnldap em nosso servidor Ubuntu e recebemos esta mensagem para um usuário:
auth: pam_unix(dovecot:account): account has expired (account expired)
Sep 3 19:05:03 auth: pam_unix(dovecot:auth): authentication failure; logname= uid=0 euid=0 tty=dovecot ruser=XXXX rhost=::1 user=XXXX
Alterei a senha com ldappasswd com sucesso, mas o erro persiste. Fazendo algumas pesquisas, parece que shadowLastChange não está sendo atualizado.
Como podemos resolver isso?
/usr/share/slapd/slapd.conf
access to attrs=userPassword,shadowLastChange
by dn="@ADMIN@" write
by anonymous auth
by self write
by * none
access to dn.base="" by * read
# The admin dn has full write access, everyone else
# can read everything.
access to *
by dn="@ADMIN@" write
by * read
OK - este parece ser um problema do PAM.
Se eu editar /etc/nsswitch.conf para:
shadow: compat
Não recebo a mensagem de que a conta expirou.
Se eu mudar para:
shadow: files ldap
Eu faço. Mas em ambos os casos, ainda recebo o erro dovecot.
Responder1
EUfazerodeio reviver uma pergunta morta, mas como este é o principal resultado da pesquisa para "falha de autenticação dovecot pam ldap", deixe-me adicionar este conhecimento extra:
A única coisa que vi em meus testes que atualiza os shadowAccount
atributos é o passwd
comando quando você modifica a senha de um usuário no LDAP... A maioria das outras ferramentas não se importa muito com a shadowAccount
classe e seus atributos, e ganhou não toque neles. No entanto, só acho que as shadowAccount
classes precisam ser adicionadas aos usuáriosse eles vão fazer login no host, desde quefazCuidado. Se você está apenas fazendo algo como autenticação de e-mail (Dovecot), então não adianta muito. EUpoderiaesteja errado aqui, mas ainda não vi nada além de um login de host consultar os shadowAccount
atributos para qualquer coisa.
Agora, se você estiver autenticando o DovecotatravésPAM (o que, presumo que você provavelmente esteja, já que o Dovecot está consultando e você está alterando nsswitch
), então tenha em mente que, embora sim, o PAM prestará atenção a esses atributos extras, você ainda precisará das ferramentas corretas para alterá-los ... o que significa que tudo o que está alterando as senhas dos usuários também precisa passar pelo PAM. Por mais impopular que seja, se você não está exigindo logins de host, apenas serviços como Dovecot ou outros, não há necessidade de envolver o PAM, pois ele verificará muito mais coisas que provavelmente serão irrelevantes. (Na melhor das hipóteses, poderia impor outras coisas como, sim, expirações de senha, mas pessoalmente eu não imporia coisas assim quando o serviço no qual você faz login tivernenhuma provisão para alterar uma senhaassim) É provavelmente mais fácil, a longo prazo, fazer com que serviços de login não-host/shell verifiquem o LDAP por conta própria, permitindo outras coisas, como filtros de pesquisaespecífico para esse serviço.
No entantoassumindovocê configurou o Dovecot para verificar o próprio LDAP e não depender do PAM. No final do Dovecot 10-auth.conf
há uma lista de linhas para diferentes mecanismos de !include
autenticação, como LDAP, SQL, etc.auth-system.conf.ext
antesoutros mecanismos, como LDAP. O que isto significa é que, uma vez que, nos meus testes, o Dovecot verifica estesna ordem em que são fornecidos, o Dovecot primeiro tentará autenticar o usuário com PAM e, se isso falhar, autenticará com LDAP. Portanto, você receberá um erro PAM informando, sim, o authentication failure
(assim como o primeiro indicandoo quefalha é). Se você alterasse essa ordem para que o método com maior probabilidade de sucesso (LDAP, seria de se supor) fosse consultado primeiro, não haveria necessidade de verificar com o PAM e, portanto, nenhum erro gerado pelo PAM.
Para resolver isso vocêpoderiacomente o !include auth-system.conf.ext
, mas isso pode potencialmente fazer com que os usuários do sistema (como root
ou postmaster
) sejam considerados inexistentes se você não os tiver configurado no LDAP.
Minha solução pessoal para este foi recortar essa linha e colá-la nofundo, assim:
#!include auth-deny.conf.ext
#!include auth-master.conf.ext
!include auth-ldap.conf.ext
#!include auth-sql.conf.ext
#!include auth-passwdfile.conf.ext
#!include auth-checkpassword.conf.ext
#!include auth-vpopmail.conf.ext
#!include auth-static.conf.ext
!include auth-system.conf.ext
Isto significa que o Dovecot iráprimeiroconsulte LDAP,entãoconsulte o PAM se o LDAP não der resultados, até onde meus testes mostraram.
Responder2
Nunca respondi minha própria pergunta antes, mas gostaria de compartilhar caso alguém mais se depare com isso. Tinha a ver com o saslauthd não instalado, configurado e em execução. Depois que fiz isso, o erro desapareceu.