我有一个运行 Debian Squeeze 的 Postfix 邮件服务器。saslauthd 支持安全 SMTP 的 SASL 身份验证,而 saslauthd 依赖于 pam,而 pam 又依赖于 winbind。
这种模式似乎每隔几周就会重现一次:
- 最初,/var/log/auth.log 中没有错误 - postfix SMTP 运行良好
一周或更长时间后日志中出现错误:
12 月 5 日 15:45:22 myhostname saslauthd[32586]: PAM 无法 dlopen(/lib/security/pam_winbind.so): /lib/security/pam_winbind.so: 无法打开共享对象文件:打开的文件过多 12 月 5 日 15:45:22 myhostname saslauthd[32586]: PAM 正在添加错误模块:/lib/security/pam_winbind.so 12 月
5 日 15:45:22 myhostname saslauthd[32586]: PAM 无法 dlopen(/lib/security/pam_deny.so): /lib/security/pam_deny.so: 无法打开共享对象文件:打开的文件过多
12 月 5 日 15:45:22 myhostname saslauthd[32586]: PAM 正在添加错误模块:/lib/security/pam_deny.so
12 月 5 日15:45:22 myhostname saslauthd[32586]: PAM _pam_load_conf_file: 无法打开 /etc/pam.d/common-auth
十二月 5 15:45:22 myhostname saslauthd[32586]: PAM 加载时出错(null) 十二月
5 15:45:22 myhostname saslauthd[32586]: PAM _pam_init_handlers: 读取 /etc/pam.d/other 时出错
十二月 5 15:45:22 myhostname saslauthd[32586]: PAM _pam_init_handlers: [严重错误 - 立即中止]
十二月 5 15:45:22 myhostname saslauthd[32586]: 读取 PAM 配置文件时出错
十二月 5 15:45:22 myhostname saslauthd[32586]: PAM pam_start: 无法初始化处理程序
12 月 5 日 15:45:22 myhostname saslauthd[32586]: DEBUG: auth_pam: pam_start 失败: 严重错误 - 立即中止
12 月 5 日 15:45:22 myhostname saslauthd[32586]: do_auth: 身份验证失败: [user=dteed] [service=smtp] [realm=] [mech=pam] [reason=PAM 启动错误]
12 月 5 日 15:45:32 myhostname saslauthd[32586]: server_exit: master 已退出: 32586
12 月 5 日 15:45:32 myhostname saslauthd[1696]: detach_tty: master pid 为: 1696
12 月 5 日15:45:32 myhostname saslauthd[1696]: ipc_init: 正在监听套接字:/var/run/saslauthd/mux
此时身份验证将始终失败。可以在 testsaslauthd 中验证。只需重新启动 saslauthd 即可解决问题,并持续一两周。
我搜索了打开文件过多的错误,但找不到任何确切的信息来说明这是什么意思。它抱怨的某些 pam 模块无法打开,这与 saslauthd 处理 winbind 上的 SASL 身份验证的工作无关。
这是 /etc/pam.d/smtp :
account required pam_permit.so
auth sufficient pam_winbind.so debug
auth required pam_deny.so
我不想以调试(前台)方法运行 saslauthd。我认为我不需要更多 saslauthd 进程 - 我正在运行 5 个,这在以前的低功率服务器上已经足够了。安全 SMTP 是我们用户不广泛使用的选项,但每隔几分钟可能就会有一个连接使用它。
答案1
这似乎是 samba 的 winbind 中报告的一个错误,尽管是 saslauthd 发出了投诉。以下是错误报告:
https://bugzilla.samba.org/show_bug.cgi?id=7265
在发布此版本之前,一种解决方法是每隔几天(在 cron 中)重新启动 winbind 和 saslauthd。