メールサーバ大往生・ddclient インストール

我が家のメールサーバがお亡くなりになった。南無阿弥陀仏。ディスクが壊れてしまったらしく,リブートさせると fsck でエラーとなって起動しない。このサーバ上にはメールデータが蓄積されているだけでなく,自作プログラム,Web ページのソースコードなどの CVS リポジトリがある。気が向いたらバックアップを採っているんだけど,ここのところサボっていてそろそろと思っていたところへこのざまである。

新たなメールサーバとして,以前 Web サーバに使っていた ThinkPad X20 を流用することにした。なんとかメールデータ等の失われては困るファイルをこの新サーバにコピーできないか思案した。骨を拾ってやらねばならぬ。FreeBSD ブート途中,fsck エラーで停止している状態はシングルユーザモードであり,ファイルシステムは壊れた状態である。このため Read only でルートファイルシステムがマウントされている。再度 fsck を掛けてみたが,破損した LBA がいくつもあり,結局ファイルシステムはクリーンにならない。しようがないので,クラッシュ覚悟で強制的に書き込み許可で再マウントして,ブートプロセスを継続させたら起動した。scp で必要なファイルをネットワーク・コピーすることができた。幸いにも重要なファイルは破損していなかった。

新サーバにメールサーバ関連ソフト (qpopper, fetchmail, procmail, MHonArc),スパム撃退ソフト (Spamassassin, miltergreylist) をインストールした。DynDNS のアップデート環境も旧メールサーバにあったので,ddup をもインストールしようとしたが,FreeBSD 7.0-RELEASE の ports から ddup は削除されているようであった。困った。Google で調べたところ,最近は ddup よりも ddclient のほうが主流のようであり,こちらを使うことにした。ddclient には,ルータに付与されている IP アドレスで DNS 更新できる工夫があり,感心した。デーモンとしてこれを動作させ,定期的にアドレス更新を実行させることも可能である。ddup 運用のように,ルータに IP を問い合わせて ddup を実行する自前のプログラムは不要になった。

ddclient の設定はまず /usr/local/etc/ddclient.conf に以下を記述する。

daemon=300      # check every 300 seconds
syslog=yes      # log update msgs to syslog
mail=admin      # mail all msgs to root
mail-failure=admin # mail failed update msgs to root
pid=/var/run/ddclient.pid # record PID in file.
ssl=yes	        # use ssl-support.  Works with ssl-library
use=web         # これがルータ付与IPで更新する場合,重要
login=foo		# DynDNS ログイン名
password=bar	# DynDNS パスワード
mx=mailExchange # default MX
wildcard=yes	# add wildcard CNAME?
## server, protocol は変更不要 
server=members.dyndns.org,		\
protocol=dyndns2			\
hoge.homeip.net   # 自分のドメイン名

次に /etc/rc.conf に ddclient_enable="YES" を追加する。これでリブートするか,スーパユーザで ddclient -daemon=0 -verbose -noquiet を発行すると DynDNS 更新登録が実行される。SUCCESS が返却されれば成功である。上記 conf では 300 秒ごとに更新チェックするようになっている。