cig*_*man 16 email freebsd postfix dovecot
我在 FreeBSD 服务器上安装了 Dovecot v2.0.11,用户查找传入电子邮件地址失败,但查找系统用户成功。
Dovecot 设置为使用系统用户,所以我的 dovecot.conf 有
userdb {
driver = passwd
}
Run Code Online (Sandbox Code Playgroud)
和
passdb {
driver = passwd
}
Run Code Online (Sandbox Code Playgroud)
我启用了身份验证调试。
例如,我有一个名为 webmaster 的用户,使用 doveadm 用户作为“webmaster”的工作方式如下:
#doveadm user webmaster
userdb: webmaster
system_groups_user: webmaster
uid : 1020
gid : 1020
home : /home/webmaster
Run Code Online (Sandbox Code Playgroud)
但是使用 doveadm 用户查找 webmaster@myregisteredname.com 失败如下:
# doveadm user webmaster@myregisteredname.com
userdb lookup: user webmaster@myregisteredname.com doesn't exist
Run Code Online (Sandbox Code Playgroud)
这导致 webmaster@myregisteredname.com 的传入邮件因“未知用户”错误而退回。
这是 /var/log/maillog 中记录的失败:
Apr 16 20:13:35 www dovecot: auth: passwd(webmaster@myregisteredname.com): unknown user
Run Code Online (Sandbox Code Playgroud)
这是 /var/log/debug.log 中记录的失败:
Apr 16 20:13:35 www dovecot: auth: Debug: master in: USER 1 webmaster@myregisteredname.com service=doveadm
Apr 16 20:13:35 www dovecot: auth: Debug: passwd(webmaster@myregisteredname.com): lookup
Apr 16 20:13:35 www dovecot: auth: Debug: master out: NOTFOUND 1
Run Code Online (Sandbox Code Playgroud)
用户及其主目录是从另一台服务器导入的,并且用户是使用 vipw 工具设置的。我确信我在导入时遗漏了一些不是“链接”系统用户与 dovecot 查找的内容。
关于那可能是什么的任何想法?
编辑:使用 BillThor 的建议,我更新了 dovecot.conf 如下:
#doveconf -n passdb userdb
passdb {
args = username_format=%n
driver = passwd
}
userdb {
args = username_format=%n
driver = passwd
}
Run Code Online (Sandbox Code Playgroud)
但是,现在 doveadm 用户以不同的方式失败:
#doveadm user webmaster@pantronx.com
doveadm(root): Error: userdb lookup(webmaster@myregisteredname.com): Disconnected unexpectedly
doveadm(root): Fatal: userdb lookup failed for webmaster@myregisteredname.com
Run Code Online (Sandbox Code Playgroud)
而且,它不再适用于没有域的用户:
#doveadm user webmaster
doveadm(root): Error: userdb lookup(webmaster): Disconnected unexpectedly
doveadm(root): Fatal: userdb lookup failed for webmaster
Run Code Online (Sandbox Code Playgroud)
当我收到上述消息时,以下内容在 /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
Run Code Online (Sandbox Code Playgroud)
Bil*_*hor 17
dovecot 中使用 passdb 的用户 ID 不包括域。用户应该使用的用户 ID 是本地部分,而不是完整的电子邮件地址。
通过和失败的检查按预期工作。auth_username_format=%n在密码 db 定义生效之前进行设置。该域未经过验证。
小智 14
我使用的是 Ubuntu Server 12.04,并尝试了上述解决方案。但是,我发现最简单的方法是在 10-auth.conf 中设置
auth_username_format = %n
Run Code Online (Sandbox Code Playgroud)
我使用 PAM 进行身份验证,这是 Ubuntu 12.04 中的默认设置。
| 归档时间: |
|
| 查看次数: |
33089 次 |
| 最近记录: |