我在外部数据库中有用户。到目前为止 - ssh、postfix、dovecot 和其他一些 - 使用条目没有问题。
我有邮件目录里面/home/[用户]如果主目录存在 - 一切正常 - 发送、接收。
如果主目录不存在Postfix/Dovecot打印错误,ssh-登录后导致创建了全新的主目录-它使用pam_mkhomedir 文件/etc/pam.d/[在几个文件中] 中的条目。
Postfix/Dovecot- 成功使用帕姆使用数据库后端,但忽略带有pam_mkhomedir- 我读了很多关于将其放在哪个文件以及什么位置的提示。
也许是将文件命名为 /etc/pam.d/[file] 的问题?
答案1
Postfix 不负责创建主目录。使用内置local
投递代理时,Postfix 假定主目录已经存在。
如果您使用 Dovecot 作为 LDA,那么 Dovecot 也依赖于主目录存在的事实。
使用虚拟用户,您可以设置变量lda_mailbox_autocreate = yes
,以便 Dovecot 自动创建必要的目录。
由于 Dovecot(和 Postfix)不会“登录”用户来发送邮件,因此pam_mkhomedir
永远不会触发。在这种情况下,PAM 仅用于身份验证。
答案2
只是为了帮助那些像我一样在谷歌上搜索 Dovecot 问题时偶然发现这个问题的人:pam_mkhomedir
如果你这样设置,Dovecot 就可以使用了。文档位于http://wiki2.dovecot.org/PasswordDatabase/PAM#PAM_sessions
在典型的 Debian/Ubuntu 系统上,您可以将其放入/etc/pam.d/dovecot
:
#%PAM-1.0
@include common-auth
@include common-account
@include common-session
(该mkhomedir
模块在内部调用common-session
)
然后/etc/dovecot/conf.d/auth-system.conf.ext
在该部分中编辑以下内容:
passdb {
driver = pam
# [session=yes] ...
#args = dovecot
}
让他们args
说:
args = session=yes dovecot