我已将 Postfix 配置为使用纯文本与 SASL 协同工作,前者在请求身份验证时会自动向后者提交一个默认领域。
假设域名是 example.com 并且用户是 foo,以下是我目前在 Debian 系统上的配置方式。
在 Postfix 配置文件中/etc/main.cf
:
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $mydomain
SMTP 配置文件/etc/postfix/smtpd.conf
包含:
pwcheck_method: saslauthd
mech_list: PLAIN
SASL 守护进程在以下位置配置了 sasldb 机制/etc/default/saslauthd
:
MECHANIMS="sasldb"
SASL 数据库文件包含单个用户,如下所示sasldblistusers2
:
[email protected]: userPassword
身份验证无需提供域即可正常工作,因为 postifx 会帮我完成这一操作。但是,我不知道如何告诉 Cyrus IMAP 守护程序执行相同的操作。
我在 SASL 数据库中创建了一个用户cyrus
,出于管理目的,该用户使用主机域名的领域,而不是。我使用此帐户为用户example.com
创建了一个邮箱:cyradm
foo
cm user.foo
IMAP 配置如下/etc/imapd.conf
:
allowplaintext: yes
sasl_minimum_layer: 0
sasl_pwcheck_method: saslauthd
sasl_mech_list: PLAIN
servername: mail.example.com
如果我启用跨领域身份验证(loginrealms: example.com
),则尝试使用imtest
以下选项进行身份验证:
imtest -m login -a [email protected] localhost
不过,我希望能够在不必指定领域的情况下进行身份验证,如下所示:
imtest -m login -a foo localhost
我认为使用virtdomains
(将其设置为userid
或on
)defaultdomain: example.com
就可以做到这一点,但我无法使其工作。
我总是遇到这个错误:
cyrus/imap[11012]: badlogin: localhost [127.0.0.1] plaintext foo SASL(-13): authentication failure: checkpass failed
我的理解是,cyrus-imapd
在尝试验证用户身份时永远不会尝试提交领域foo
。
我的问题:我如何才能cyrus-imapd
自动将域名作为领域发送?
感谢您的见解!
答案1
关于添加此功能有一些古老的讨论,但显然没有办法指定默认的身份验证领域。
Cyrus IMAP 的开发基本上已经停滞了十多年(1998-2002 年是最后一次“重大”开发)。是的,仍然在进行更新(最后一次更新是在 2012 年 4 月 19 日,距今已有一年多)。
我不会屏息期待这个被添加。