我希望这是一个有趣的问题。
我在 Debian 6 下运行一组虚拟机,以构建邮件/协作服务器。我主要使用 dovecot、postfix、openldap 和 heimdal。邮件使用 maildir 存储在 NFSv4 共享上。
我的用户是系统用户,但使用 LDAP 和 libpam-ldap 和 libnss-ldap 来缓存凭据信息。
一切都按预期进行,嗯,几乎。
由于 NFS 默认使用 kerberos,如果我的用户没有收到他们的 kerberos 票证,他们将无法访问他们的邮件存储。
例如,如果我什么都不做,当我尝试使用任何 imap 客户端登录时,dovecot 会出现以下错误:
3 月 31 日 09:33:07 titan dovecot:imap-login:登录:user=,method=PLAIN,rip=127.0.0.1,lip=127.0.0.1,安全
3 月 31 日 09:33:07 titan dovecot:dovecot:严重:chdir(/home/emails/team/arodier/)失败:权限被拒绝(euid=1003(arodier)egid=1001(red2team)缺少 +x perm:/home/emails)
3 月 31 日 09:33:07 titan dovecot:dovecot:child 5089(imap)返回错误 89(严重故障)
但是,如果我只是在用户控制台上登录“阿罗迪耶”,看到我收到了一张票,用klist就能看到了:
凭证缓存:FILE:/tmp/krb5cc_1001_ywvktf
主体:[电子邮件保护]发行 到期 本金
3月31日 09:25:55 3月31日 19:25:53 krbtgt/[电子邮件保护]
3 月 31 日 09:25:57 3 月 31 日 19:25:53 nfs/[电子邮件保护]
一旦我简单地登录到控制台,我就可以使用任何 IMAP 客户端访问我的电子邮件。
问题是:
我应该如何配置 libpam(或 dovecot?)以在成功验证后初始化/接收 kerberos 票证?
谢谢您的回答。
答案1
由于您使用的是密码验证,因此您应该能够使用pam-krb5(与 Debian 中的打包方式相同libpam-krb5
)代表您的用户获取 Kerberos TGT。您需要配置 pam,以便服务 dovecot 使用(可能/etc/pam.d/dovecot
)或/etc/pam.d/common-*
文件(/usr/share/doc/libpam-krb5/README.Debian
有关详细信息,请参阅)。
但是,既然您提到,如果您从控制台登录到服务器,则表示您已经设置了 TGT,那么可能是您已经libpam-krb5
安装并正在使用。如果是这样,那么可能只需检查 Dovecot 的配置以确保它正确使用 PAM(特别是会话配置,我相信它将是负责设置 TGT 的部分)。我正在查看的注释 dovecot.conf 文件显示:
# session=yes makes Dovecot open and immediately close PAM session. Some
# PAM plugins need this to work, such as pam_mkhomedir.
因此看起来它可能默认没有启用。