我在几台 CentOS 7 机器上有 SASL 数据库,由 postfix 使用并使用 生成saslpasswd2
( saslpasswd2/LibSasl: 2.1.26 )。它们具有 Berkeley DB(哈希、版本 9、本机字节顺序)格式。
自从将我的开发系统更改为 Arch(最近从 Solus)以来,我无法再使用我的更新脚本测试更新这样的数据库(从 CentOS 同步):
$ echo "pass123" | /usr/sbin/saslpasswd2 -p -c -f sasldb2 -u some.domain [email protected]
saslpasswd2: generic failure
Arch 上的版本saslpasswd2
是 2.1.27,在 CentOS 机器和 Arch 机器上都已libdb 5.3
安装。从头开始创建 sasldb2 db 文件会在 CentOS 7 上提供 Berkeley 格式的数据库,在 Arch 上提供 GNU dbm 格式的数据库。
我可以将开发机器更改为在 rsync 同步时首先转换数据库,如果有记录表明 saslpasswd2 已删除对 BerkeleyDB 的支持,我也可以更新 CentOS 机器。但我更明白为什么会发生这种情况,也许可以通过修复 Arch 来支持 Berkeley Dbsaslpasswd2
是什么导致了这种通用故障,我该如何解决这个问题?
(该文件是可写的,我比较了两台机器上的哈希值)
答案1
我再次遇到这个问题并从头开始编译 libsasl (https://github.com/cyrusimap/cyrus-sasl/releases/download/cyrus-sasl-2.1.28/cyrus-sasl-2.1.28.tar.gz)。这样推荐(根据 tar 存档中的 doc/legacy/install.html)berkeleydb 格式受saslpasswd2
(和 `sasldblistusers2)支持。