2014年9月5日金曜日

[Postfix] 知らなかった!「virtual.db」のデコード方法


ども! なのまるです!

他人が建てたサーバーを運用するってことはよくあることなんですが・・・
この設定ファイルって何のため?っていう事があったのでその解決法です!


もくじ



きっかけ

Splunk触っていたら、あるPostfixに「warning」が大量に出ている・・・
Sep  5 04:15:10 mailsrv postfix/cleanup[4272]: warning: database /etc/postfix/virtual.db is older than source file /etc/postfix/virtual

ん??なんだ?と思ってGoogle先生に聞いてみたら、
「/etc/postfix/virtual.db」が「/etc/postfix/virtual」より古いんだって!(そのまんまw)

じゃ、調べてみる!
-rw-r--r-- 1 root root 11984 Jun 1 2011 virtual
-rw-r--r-- 1 root root 12288 Oct 17 2010 virtual.db

うわっ!本当だ!∑(゚ω゚ノ)ノ 古い・・・
おそらく、RPMで更新した時に「/etc/postfix/virtual」だけ、更新されたんでしょう。

て、ことは「/etc/postfix/virtual」はデフォルトの状態だった。はず・・・(・・;)自信ない・・・

これは、virtual.dbがバイナリファイルの為デコードなりしないとわからないためです!

こんな風に再作成して、試してみました!
-rw-r--r-- 1 root root 11984 Jun 1 2011 virtual
-rw-r--r-- 1 root root 12288 Sep 5 10:40 virtual.db
-rw-r--r-- 1 root root 12288 Oct 17 2010 virtual.db.20140905

うん。違っているらしいwww
diff virtual.db.20140905 virtual.db
Binary files virtual.db.20140905 and virtual.db differ


virtual.dbのデコード

で、思ったのはこの「virtual.db」をデコードして中身を比較してみればいいんだと!
どうやって、デコードするの?

検索したらあった!
Recover/Extract a postfix virtual file from a known good virtual.db | ryanschwartz.net

こんなコマンド!
[/path/to/postfix] % db_dump -p virtual.db > outfile

ん?db_dumpなんてないってw
No such file or directory

また、調べたw
【Vine Linuxで自宅サーバー】各種トラブル対策

db_dumpコマンドが使えない場合の対処法
パッケージ db4-utils がインストールされているか確かめる。

はい!ありませんでしたw

インストール!
sudo yum install db4-utils
これで使えるようになりました!
で、ここで初めてチェック!
-rw-r--r-- 1 root root 11984 Jun 1 2011 virtual
-rw-r--r-- 1 root root 12288 Sep 5 10:40 virtual.db
-rw-r--r-- 1 root root 12288 Oct 17 2010 virtual.db.20140905

デコード
[root@mailsrv postfix]# db_dump virtual.db.20140905
VERSION=3
format=bytevalue
type=hash
db_pagesize=4096
HEADER=END
DATA=END
[root@mailsrv postfix]# db_dump virtual.db
VERSION=3
format=bytevalue
type=hash
db_pagesize=4096
HEADER=END
DATA=END

うん、一緒!
て、ことでめでたくpostfixをreloadしました!
sudo service postfix reload


まとめ


  • これで、postfixのdbファイルと戦える!
  • db_dumpはdb4-utilsパッケージに入ってます!
  • わざわざ、こんなことしなくても「touch」コマンドでタイムススタンプ変えればよかった!w(オチ)


参考図書


photo credit: aranarth via photopin cc

Zenback