2009/10/02

2009-10-02:再起動なしのホスト名変更

cron とかで送られてくるメールの送信元ホスト名を変更したい、対象は現在進行形でサービス中のサーバなので再起動はなしにしたい、さてどうしよう、という話題。
答えを見つけるまでに2時間くらい試行錯誤してしまった。
ホスト名なんてそうは変えないものだし、再起動ヤダというわがままも少ないのか、ググっても同様事例を見つけられなかったので、メモを残しておくことにした次第。

相手は CentOS 5.3。
RedHat 系なので、/etc/sysconfig/network ファイルの HOSTNAME を書き変えて、sudo /etc/init.d/network restart じゃないの? と思ったら、そう一筋縄にはいかない。
答えは

$ sudo su -
# echo "newhostname" > /proc/sys/kernel/hostname
# /etc/init.d/sendmail restart

だった。
この /proc に直接書き込んでしまう、というのに辿りつくまで時間がかかってしまったよ。

しかし、hostname “newhostname” でのホスト名変更では、sendmail 再起動しても送信元ホスト名が変わってくれないのだなぁ。なんでかは謎。

ちなみに、今日知ったびっくり事実。

/etc/init.d/network はホスト名を変更してくれない

すっかり勘違いしていた。
何度もスクリプトを読み返したんだけど、hostname 実行するところないのね。/etc/sysconfig/network を読みこんではいるが、NETWORKING の設定ろ見るだけのようだ。
これって以前から変わった動作? それとも以前からこうだった?

サーバ起動時の /etc/rc.sysinit の中では、/etc/sysconfig/network 内の HOSTNAME を hostname コマンドで実行しているけど、起動時動作のホスト名設定はここだけのよう。

ちょっと調べるのに時間かかってしまったけど、サーバの再起動せずに(できれば /etc/init.d/network restart もせずに)ホスト名変更をさせたかったので、いい答えを見つけることができてよかったよかった。