2010年1月20日

メールが送れないっ!! (Postfix + SASL)

気がつくとうちのメールサーバから外部にメールが送れない.
よくよく見ると, メールのログに
warning: SASL authentication failure: Could not open /etc/sasl2/sasldb2: gdbm_errno=5
のエラーが.

早速Prof. Googleに教えを請うと, ズバリヒット.

Bug 299390 - sys-libs/gdbm-1.8.3-r4: enabling LFS seems to break with db's generated by non-LFS gdbm
http://bugs.gentoo.org/show_bug.cgi?format=multiple&id=299390

なるほど, sys-libs/gdbmが1.8.3-r3から1.8.3-r4になったときにLFS(Large File Support)サポートが
有効になったので, 32ビット環境では, データベースファイルに互換性がなくなったってことね.

運の良いことに, LFSなしのDBをLFSありのDBに変換してくれるツールを作ってくれている人がいた.
それを使おう.

ソース: http://bugs.gentoo.org/attachment.cgi?id=215326
やること:
0. cd /somewhere/src
1. wget -O converter.c http://bugs.gentoo.org/attachment.cgi?id=215326
2. emerge '=gdbm-1.8.3-r3'
3. cp /usr/lib/libgdbm.a .
4. emerge '=gdbm-1.8.3-r4'
5. gcc -o converter -O2 -g converter.c libgdbm.a -ldl
6. ./converter /etc/sasl2/sasldb2
7. mv /etc/sasl2/sasldb2 /etc/sasl2/sasldb2.old
8. mv /etc/sasl2/sasldb2.upgrade.tmp /etc/sasl2/sasldb2

DBのサイズが, かなり小さくなるのね.
ともあれ, メールが送信できるようになった.
ツールの投稿者に感謝!


コメントする