今天过了一个传统的生日 三十而立
Dec 21
作者: 肖建彬 | 可以转载, 转载时务必以超链接形式标明文章原始出处和作者信息及版权声明
网址:http://www.xiaojb.com/archives/mailtech/unable-to-open-berkeley-db.shtml

同事在迁移邮件系统的时候,发现邮件系统在新机器上报告这样的日志:
warning: SASL authentication problem: unable to open Berkeley db /etc/sasldb2: No such file or directory

我们使用的authdaemond的认证方式,所以出现这种情况肯定是sasl判断到最后使用了默认的sasldb来验证。由于我好久没看邮件系统,而且这个问题我碰到了多次,在blog上也没有记录,于是重新解决了一遍。思路如下:

1、要判断使用的sasl的版本
我是自己编译的sasl,安装目录是/home/postfix/sasl,使用ldd查看一下postfix使用的是系统的sasl2,还是自己编译的。
[root@squid5 ~]# ldd /home/postfix/sbin/postfix
libmysqlclient.so.15 => /lib/libmysqlclient.so.15 (0×00a40000)
libm.so.6 => /lib/tls/libm.so.6 (0×00647000)
libsasl2.so.2 => /home/postfix/sasl/lib/libsasl2.so.2 (0×00558000)
libssl.so.4 => /lib/libssl.so.4 (0×002c8000)
libcrypto.so.4 => /lib/libcrypto.so.4 (0×001dc000)
libpcre.so.0 => /lib/libpcre.so.0 (0×001b8000)
libdb-4.2.so => /lib/tls/i686/libdb-4.2.so (0×00717000)
libnsl.so.1 => /lib/libnsl.so.1 (0×006d3000)
libresolv.so.2 => /lib/libresolv.so.2 (0×006be000)
libc.so.6 => /lib/tls/libc.so.6 (0×002fc000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0×0068e000)
libdl.so.2 => /lib/libdl.so.2 (0×00641000)
/lib/ld-linux.so.2 (0×004f9000)
libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0×007fc000)
libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0×00835000)
libcom_err.so.2 => /lib/libcom_err.so.2 (0×0066c000)
libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0×00812000)
libz.so.1 => /usr/lib/libz.so.1 (0×0067c000)
libpthread.so.0 => /lib/tls/libpthread.so.0 (0×006fd000)
2、查看sasl的配置smtpd.conf
系统的路径应该是/usr/lib/sasl2/smtpd.conf
内容应该如下:
pwcheck_method: authdaemond
mech_list:PLAIN LOGIN
使用了authdaemond应该还可以指定socket文件的位置,不过我忘了。
如果自己编译的,这个文件的位置应该是 ~/lib/sasl2

3、authdaemond的socket文件的权限
我使用的是Courier-Authlib,socket文件默认的路径应该是~/var/socket,所有要认证的程序的执行用户,都要有访问这个socket的权限。

Tags: , , ,

Leave a Reply