ども! なのまるです!
他人が建てたサーバーを運用するってことはよくあることなんですが・・・
この設定ファイルって何のため?っていう事があったのでその解決法です!
もくじ
きっかけ
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
-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
-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
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
-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