我的用户在使用 IMAP 邮箱时遇到了问题。IMAP 进程挂起并超时。超时后,用户可能会看到一个空的邮箱。
但真正的问题似乎是 slapd 和 famd 之间的通信。
背景信息:
系统:
- 德比安·兰尼
- courier-imap 4.4.0-2
- 家庭 2.7.0-13.3
- slapd 2.4.11-1
nsswitch.conf 包含:
密码:文件 ldap 组:文件 ldap 影子:文件 ldap
courier 的 imap 配置文件的功能中包含“IDLE”,但删除它(并摆弄 IMAP_ENHANCEDIDLE)没有任何作用。从阅读中,我以为这会阻止 courier imap 使用 fam,但我想不会。
对 imap 进程进行跟踪(当它挂起时)显示它挂在与 fam 的通信上。因此我重新启动了 fam(花了几个小时修复了这个问题)并继续进行故障排除以找到问题的根源。
由于程序仍然挂起,因此我继续寻找。
stracing famd 显示它与 slapd 的通信挂起了。踢掉 slapd 解决了一点问题。slapd 对其他查询有响应,但随着时间的推移速度变慢了。
最奇怪的是,这些问题刚刚开始出现。我认为我升级的唯一软件包可能相关内容如下:
基础文件 5lenny4 libmysqlclient15off 5.0.51a-24+lenny2 libssl0.9.8 0.9.8g-15+lenny3 openssl 0.9.8g-15+lenny3 tzdata 2009l-0lenny1 udev 0.125-7+lenny3
看起来(我尚未证实这一点)famd 和 slapd 之间的连接是长期的(通过 nscd)。
哎呀,写到这里我才意识到 nscd 是另一个我还没有测试过的东西。我想我会研究一下。
编辑:刚刚确认踢出 nscd 也能解决问题。
答案1
不要为此目的使用系统用户。当所有文件都归一个用户所有时,请使用“虚拟”,并让 courier 直接访问 ldap 服务器。
nss-ldap 库不太可靠。
还有一件事:考虑使用 dovecot 而不是 courier。它就像 courier 一样,只是更好一些。