使用 Kerberos/GSSAPI 的 Dovecot IMAP 身份验证代理

使用 Kerberos/GSSAPI 的 Dovecot IMAP 身份验证代理

我正在尝试将 Dovecot 设置为身份验证反向代理,在已经运行的 IMAP 服务器前面完成以下操作:

  • 让 Dovecot 使用 Kerberos/GSSAPI 验证用户(以允许单点登录)。
  • 如果正确验证,则使用常规 AUTH=PLAIN 方法使用经过验证的用户名通过 Dovecot 代理连接到现有 IMAP 服务器,但使用随机/空密码。我想要的正是这个,因为我将让后端 IMAP 服务器信任验证代理,但它仍然需要使用虚拟密码进行 PLAIN IMAP 登录。

我走了多远?

我面临的主要挑战是两者的结合。Kerberos/GSSAPI 身份验证页面以以下内容开始:

Kerberos 身份验证机制不需要passdb,但您需要一个,userdb以便 Dovecot 可以查找用户特定信息,例如存储其邮箱的位置。

嗯,这对我来说就像一个双重反功能:我passdb首先需要一个代理,并且我不希望它知道“比如他们的邮箱存储在哪里”,因为它应该将所有内容代理到后端服务器上。

那么,有人能给我指出正确的方向吗?

(我刚刚开始使用 Dovecot,所以请耐心等待。另外,顺便说一句,使用 Dovecot 并不是必需的。我用作后端的 IMAP 服务器是 Kopano Gateway,它似乎缺乏 SSO 支持但它确实让我绕过密码验证

答案1

设置 passdb 属性以包含pass=主密码。Dovecot 需要密码才能尝试代理。使用 GSSAPI 显然没有密码,因此请提供您的主密码(或者使用 kopano,如果您已bypass_auth设置,则可以输入任何密码)。请参阅Dovecot 文档,特别是“主密码”部分。

答案2

最后用Alex 在另一个答案中给出的提示一些最后的帮助在 Dovecot 邮件列表中,Dovecot 原作者 Timo 做出了回应。

下面是完整的示例dovecot.conf。主要技巧是节args中的整行passdb。没有password=something 或者 nopassword=y,它会认为邮件存储在本地,并且代理未打开,因此您会看到错误Error: mail_location not set and autodetection failed: Mail storage autodetection failed with home=(not set)。评论中内联了更多小警告。

protocols = imap

passdb {
  driver = static
  args = proxy=y host=127.0.0.1 port=1143 pass=masterpass nopassword=y
}

# Deliberately omitted userdb, because this is a proxy.

# Kerberos authentication settings
auth_mechanisms = gssapi
auth_gssapi_hostname = mailhost.mydomain.tld
auth_realms = MY-REALM.DOMAIN.TLD
auth_default_realm = MY-REALM.DOMAIN.TLD
# This keytab file contains keys for principal imap/[email protected]
# Unlike SSL keys/certs, do not use '= <', but plain '=' to path of file.
auth_krb5_keytab = /etc/dovecot/imap.keytab
# Pass only local username part to the backend.
auth_username_format = %n

# Logging to foreground with some verbose logging for authentication.
log_path = /dev/stderr
auth_verbose = yes

# Require StartTLS or plain TLS for any interaction.
ssl = required
ssl_cert = </path/to/cert.crt
ssl_key = </path/to/key.pem
ssl_prefer_server_ciphers = yes
ssl_min_protocol = TLSv1.2
ssl_cipher_list = ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384

然后日志将显示:

imap-login: Info: proxy(username): started proxying to 127.0.0.1:1143: user=<username>, method=GSSAPI, rip=1.2.3.4, lip=9.9.9.9, TLS, session=<iJvnvg6P8KEKAAYE>

相关内容