当我通过 IMAP 检查邮件时,我的网络邮件访问(代理 CAS)失败

当我通过 IMAP 检查邮件时,我的网络邮件访问(代理 CAS)失败

我使用提供 cas 票证的 web sso 门户。我“分类”了我的 webmail 和我的 imap 服务器 (cyrus-imapd)。

当我从 Webmail(代理 CAS)获取电子邮件时,一切正常。除非我使用经典 IMAP 客户端获取电子邮件,然后尝试再次从 Webmail 获取,否则我的身份验证会出错。

这似乎是一个已知问题。事实上(如果我理解得没错的话)sasl 缓存一开始就得到了一个类似 PT 的密码(来自 webmail),之后又得到了一个密码(来自传统 IMAP 客户端)。我没有找到纠正它的好方法。这就是我在这里发布问题的原因。我尝试使用 pam_ccreds,但 mail.log 中仍然有很多身份验证错误。

因此我尝试使用 2 个 saslauthd 实例和 2 个 imap 服务。以下是操作系统和软件配置:

  • 操作系统:Debian 8
  • sasl2-bin :2.1.26.dfsg1-13
  • cyrus-imapd:2.4.17+caldav~beta10-18

以下是我的尝试配置:

  • /etc/default/saslauthd

    START=yes
    DESC="SASL Authentication Daemon"
    NAME="saslauthd"
    MECHANISMS="pam"
    THREADS=5
    OPTIONS="-c -m /var/run/saslauthd/mux -r -n 0"
    
  • /etc/default/saslauthd-web

     START=yes
     DESC="SASL Authentication Daemon"
     NAME="saslauthd"
     MECHANISMS="pam"
     THREADS=5
     OPTIONS="-c -m /var/run/saslauthd/muxweb -r -n 0"
    
  • /etc/pam.d/imapweb

    auth sufficient /lib/x86_64-linux-gnu/security/pam_cas.so -simap://mail.example.com -f/etc/pam_cas.conf
    auth sufficient /lib/x86_64-linux-gnu/security/pam_ldap.so config=/etc/pam_ldap_imap.conf
    auth sufficient /lib/x86_64-linux-gnu/security/pam_unix.so
    account sufficient /lib/x86_64-linux-gnu/security/pam_ldap.so config=/etc/pam_ldap_imap.conf
    
  • /etc/pam.d/imap

    auth sufficient /lib/x86_64-linux-gnu/security/pam_ldap.so config=/etc/pam_ldap_imap.conf
    auth sufficient /lib/x86_64-linux-gnu/security/pam_unix.so
    account sufficient /lib/x86_64-linux-gnu/security/pam_ldap.so config=/etc/pam_ldap_imap.conf
    
  • /etc/cyrus.conf

    imap cmd="imapd -U 30" listen="X.X.X.X:imap" prefork=0 maxchild=100
    imapweb cmd="imapd -U 30 -C /etc/imapdweb.conf" listen="X.X.X.X:IMAPWEBPORT" prefork=0 maxchild=100
    
  • /etc/imapd.conf

    ...
    sasl_pwcheck_method: auxprop saslauthd
    imap_sasl_saslauthd_path: /var/run/saslauthd/mux
    imapweb_sasl_saslauthd_path: /var/run/saslauthd/muxweb
    sasl_auxprop_plugin: sasldb
    ...
    

我重新启动了 saslauthd 和 cyrus-imapd 服务。

当我使用每个 saslauthd 套接字运行 testsaslauthd 命令时,它运行得很好:

testsaslauthd -u USER -p PASSWORD -f /var/run/saslauthd/mux/mux -s imap
0: OK "Success."
testsaslauthd -u USER -p PASSWORD -f /var/run/saslauthd/muxweb/mux -s imapweb
0: OK "Success."

但是当我从我的 webmail 主机在 imap 服务器上的 imap 端口上运行 telnet 时,身份验证失败。在 imapweb 端口上也是一样。然而,进入 imap 日志,我看到堆栈跟踪,显示我使用了良好的 imap 服务(imap 为 imap 端口,imapweb 为“IMAPPORTWEB”)

您有什么想法可以解释为什么我的身份验证不起作用吗?接受 CAS 和经典 IMAP 访问的正确方法是什么?

相关内容