Portál AbcLinuxu, 8. května 2025 07:00

Dotaz: Dovecot 2.0.x (imaps) + ověřování přes PAM

Pavel Čejka avatar 14.1.2011 18:31 Pavel Čejka | skóre: 28 | blog: tosinezaslouzijmeno
Dovecot 2.0.x (imaps) + ověřování přes PAM
Přečteno: 466×
Odpovědět | Admin

Zdar všem,

experimentuji s novým Dovecotem 2.0.9, stará verze 1.x funguje dobře, ale nepřišel jsem na to, jak nastavit více SSL klíčů než jeden.

Cílem je připojovat se pomocí telefonů, notebooků a stolních PC k jednomu IMAPS s důvěryhodnými certifikáty jak z internetu, tak z vnitřní sítě a VPN. Po lokální síti a VPN se klienty připojují na jedno jméno, z internetu na jiné.

Šlo by to řešit konfigurací DNS, ale to se mi nelíbí. Dovecot 2.0.x nabízí možnost použít různé klíče/certifikáty pro různé IP adresy http://wiki2.dovecot.org/SSL/DovecotConfiguration

Jenže jsem narazil na problém s PAM, nedaří se mi přes Dovecot ověřit heslo, SQL používat nechci, uživatelů nebude mnoho.

Jan 14 15:53:29 auth: Debug: client in: AUTH    1       PLAIN   service=imap    secured lip=192.168.0.254       rip=192.168.0.5 lport=993rport=55417
Jan 14 15:53:29 auth: Debug: client out: CONT   1
Jan 14 15:53:29 auth: Debug: client in: CONT<hidden>
Jan 14 15:53:29 auth: Debug: pam(username,192.168.0.5): lookup service=imap
Jan 14 15:53:29 auth: Debug: pam(username,192.168.0.5): #1/1 style=1 msg=Password:
Jan 14 15:53:29 auth: Debug: client out: OK     1       user=username
Jan 14 15:53:29 auth: Debug: master in: REQUEST 997064705       19729   1       ffffffffffffffffffffffffffffffff
Jan 14 15:53:29 auth: Debug: master out: USER   997064705       username
Jan 14 15:53:29 imap-login: Info: Login: user=<username>, method=PLAIN, rip=192.168.0.5, lip=192.168.0.254, mpid=19730, TLS
Jan 14 15:53:29 imap(username): Error: user username: Couldn't drop privileges: User is missing UID (see mail_uid setting)
Jan 14 15:53:29 imap(username): Error: Internal error occurred. Refer to server log for more information.
...
Jan 14 15:54:28 auth: Debug: client in: AUTH    1       PLAIN   service=imap    secured lip=192.168.0.254       rip=192.168.0.5 lport=993rport=55421
Jan 14 15:54:28 auth: Debug: client out: CONT   1
Jan 14 15:54:28 auth: Debug: client in: CONT<hidden>
Jan 14 15:54:28 auth: Debug: pam(username,192.168.0.5): lookup service=imap
Jan 14 15:54:28 auth: Debug: pam(username,192.168.0.5): #1/1 style=1 msg=Password:
Jan 14 15:54:28 auth: Debug: client out: OK     1       user=username
Jan 14 15:54:28 auth: Debug: master in: REQUEST 204996609      19924   1       ffffffffffffffffffffffffffffffff
Jan 14 15:54:28 auth: Debug: master out: USER   204996609      username
Jan 14 15:54:28 imap-login: Info: Login: user=<username>, method=PLAIN, rip=192.168.0.5, lip=192.168.0.254, mpid=19925, TLS
Jan 14 15:54:28 imap(username): Error: user username: Couldn't drop privileges: User is missing UID (see mail_uid setting)
Jan 14 15:54:28 imap(username): Error: Internal error occurred. Refer to server log for more information.

Zvýrazněný řádek je zřejmě klíč k záhadě. Otázkou je, proč nenašel UID? Jaké UID? Mám založené uživatele dovecot i dovenull, jak bylo požadováno a stejný uživatel, kterým se zkouším přihlásit přes starší verzi dovecotu se přihlásí.

V messages se dá najít toto:

Jan 14 15:53:28 koprolit dhcpd: DHCPREQUEST for 192.168.0.129 from bc:ae:c5:2f:12:b3 (Asus_G53JW) via eth1
Jan 14 15:53:28 koprolit dhcpd: DHCPACK on 192.168.0.129 to bc:ae:c5:2f:12:b3 (Asus_G53JW) via eth1
Jan 14 15:53:29 koprolit auth: pam_unix(imap:session): session opened for user username by (uid=0)
Jan 14 15:53:29 koprolit auth: pam_unix(imap:session): session closed for user username
Jan 14 15:53:29 koprolit auth: pam_unix(imap:session): session opened for user username by (uid=0)
Jan 14 15:53:29 koprolit auth: pam_unix(imap:session): session closed for user username

Konfiguraci jsem se snažil zkrouhnout do nejjednodušší formy. Je možné, že jsem něco důležitého vynechal a nevím o tom.

auth_debug = yes
auth_verbose = yes
verbose_ssl = yes
disable_plaintext_auth = no

listen = *
log_path = /var/log/dovecot.log
mail_debug = yes
mail_location = maildir:~/Maildir

passdb {
        driver = pam
        args = session=yes imap
}

ssl_ca   = </etc/ssl/dovecot/cacert.pem
ssl_cert = </etc/ssl/dovecot/server.pem
ssl_key  = </etc/ssl/dovecot/server.key.pem

protocols = imap

protocol imap {
}

Stroj je prozatím schovaný ve vnitřní síti a žádná služba není přístupná zvenku.


Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Řešení 1× (Pavel Čejka (tazatel))
Pavel Čejka avatar 18.1.2011 16:07 Pavel Čejka | skóre: 28 | blog: tosinezaslouzijmeno
Rozbalit Rozbalit vše Re: Dovecot 2.0.x (imaps) + ověřování přes PAM
Odpovědět | | Sbalit | Link | Blokovat | Admin

Problém vyřešen.

Chci-li ověřovat uživatele přes PAM (a asi i cokoli jiného), tak musím zároveň říct, kde je databáze uživatelů, třeba passwd.

Příslušná část dovecot.conf pak může vypadat třeba takto.

userdb {
        driver = passwd
        args = blocking=no
}

passdb {
        driver = pam
        args = session=yes imap
}

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.