电子邮件 – 使用username @ domain格式时,Dovecot用户查找失败

前端之家收集整理的这篇文章主要介绍了电子邮件 – 使用username @ domain格式时,Dovecot用户查找失败前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在FreeBSD服务器上安装了Dovecot v2.0.11,并且用户查找传入的电子邮件地址失败,但系统用户的查找成功.

Dovecot设置为使用系统用户,所以我的dovecot.conf有

userdb {
  driver = passwd
}

passdb {
  driver = passwd
}

我启用了auth调试.

例如,我有一个名为webmaster的用户,使用“webmaster”的doveadm用户的工作方式如下:

#doveadm user webmaster
userdb: webmaster
  system_groups_user: webmaster
  uid       : 1020
  gid       : 1020
  home      : /home/webmaster

但是,使用doveadm用户查找webmaster@myregisteredname.com失败如下:

# doveadm user webmaster@myregisteredname.com
userdb lookup: user webmaster@myregisteredname.com doesn't exist

这导致webmaster@myregisteredname.com的传入邮件以“未知用户错误退回.

这是在/ var / log / maillog中记录的失败:

Apr 16 20:13:35 www dovecot: auth: passwd(webmaster@myregisteredname.com): unknown user

这是在/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

用户及其主目录从另一台服务器导入,用户使用vipw工具进行设置.我确信在导入时我错过了一些没有“链接”系统用户和dovecot查找的内容.

关于什么可能是什么的任何想法?

编辑:
使用BillThor的建议,我更新了dovecot.conf,如下所示:

#doveconf -n passdb userdb
passdb {
  args = username_format=%n
  driver = passwd
}
userdb {
  args = username_format=%n
  driver = passwd
}

但是,现在,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

而且,它不再适用于没有域名的用户

#doveadm user webmaster
doveadm(root): Error: userdb lookup(webmaster): Disconnected unexpectedly
doveadm(root): Fatal: userdb lookup Failed for webmaster

当我收到上述消息时,以下内容位于/ 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

解决方法

使用passdb的dovecot中的用户ID不包括域.用户应使用的用户标识是本地部分,而不是完整的电子邮件地址.

传递和失败的检查按预期工作.在密码db定义确实有效之前设置auth_username_format =%n.但该域未经过验证.

猜你在找的HTML相关文章